Как использовать карту Кассандры Reduce С или без свиньи?


Может кто-нибудь объяснить, как MapReduce работает с Кассандрой .6? Я прочитал пример подсчета слов, но я не совсем понимаю, что происходит на конце Кассандры против Конца "клиента".

Https://svn.apache.org/repos/asf/cassandra/trunk/contrib/word_count/

Например, допустим, я использую Python и Pycassa, как бы я загрузил новую функцию map reduce, а затем вызвал ее? Должна ли моя функция map reduce быть java, установленной на Кассандре сервер? Если да, то как мне вызвать его из Pycassa?

Есть также упоминание о свинье, делающей все это проще, но я полный нуб Hadoop, так что это не очень помогло.

Ваш ответ может использовать бережливость или что-то еще, я только что упомянул Pycassa для обозначения клиентской стороны. Я просто пытаюсь понять разницу между тем, что работает в кластере Кассандры, и реальным сервером, который делает запросы.

3   14  

3 ответа:

Из того, что я слышал (и из здесь), способ, которым разработчик пишет программу MapReduce, использующую Cassandra в качестве источника данных, выглядит следующим образом. Вы пишете обычную программу MapReduce (пример, на который вы ссылаетесь, относится к версии pure-Java), и jars, которые теперь доступны, предоставляют CustomInputFormat, который позволяет исходному источнику быть Cassandra (вместо стандартного, который является Hadoop).

Если вы используете Pycassa, я бы сказал, что вам не повезло до тех пор, пока (1) сопровождающий этого проекта добавляет поддержку MapReduce или (2) вы бросаете некоторые функции Python вместе, которые пишут программу Java MapReduce и запускают ее. Последнее, безусловно, немного халтурно, но поможет вам встать и идти.

Преимущество использования прямого InputFormat от cassandra заключается в том, что он эффективно передает данные, что является очень большим выигрышем. Каждое входное разделение покрывает диапазон маркеров и скатывается с диска на его полной полосе пропускания: нет поиска, нет сложных запросов. Я не думаю, что он знает о локальности-чтобы каждый tasktracker предпочитал входные расщепления от процесса cassandra на одном и том же узле.

Вы можете попробовать использовать Pig с потоковым методом в качестве Хака, пока не появится более прямая поддержка потоковой передачи hadoop место.

Он знает о локальности; Cassandra InputFormat переопределяет getLocations (), чтобы сохранить локальность данных