Как использовать Cassandra's Map Reduce с или без свиньи? - PullRequest
15 голосов
/ 29 апреля 2010

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

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

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

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

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

Ответы [ 3 ]

10 голосов
/ 29 апреля 2010

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

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

2 голосов
/ 21 августа 2010

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

1 голос
/ 13 июня 2010

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

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

...