Классический пример MR - word count, наличествует в contrib\word_count\ дистрибутива кассандры. Запустить его под windows можно либо написав свой батник, либо установив cygwin с bash. В обоих случаях есть нюансы, связанные с тем что Cassandra эксплуатирует MR из Apache Hadoop, а тот в свою очередь при мэпе и редьюсе использует файловую систему и консольные команды posix, которых в windows нет. В частности, когда Hadoop будет писать в файловую систему результаты, будет вызываться chmod, и вы обязательно словите
Exception in thread "main" java.io.IOException: Cannot run program "chmod": CreateProcess error=2, ........................................
at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
at org.apache.hadoop.util.Shell.runCommand(Shell.java:149)
at org.apache.hadoop.util.Shell.run(Shell.java:134)
что значит "на вижу chmod".
Лучше всего chmod видеть в составе cygwin. Устанавливаете bash в cygwin, обязательно дополняете path переменных окружения путем к папке инсталлированного cygwin (path+=C:\cygwin\bin) и вперед!
В варианте запуска через стандарный sh-скрипт из bash (bin/word_count_setup и bin/word_count) нужно иметь ввиду, что в cygwin надо преобразовывать пути с помощью cygpath. Поэтому перед строчкой
$JAVA -Xmx1G -ea -cp $CLASSPATH WordCount
надо обязательно вставить
# Special-case path variables.
case "`uname`" in
CYGWIN*)
CLASSPATH=`cygpath -p -w "$CLASSPATH"`
;;
esac
Что еще надо помнить - хадуп использует org.apache.commons.logging для логирования, так что качайте и кладите commons-logging-1.1.1.jar в папку lib. А MapReduce использует org.apache.commons.httpclient для общения с нодами, поэтому берите именно commons-httpclient-3.1.jar, поскольку в 4.0 этот проект ушел из коммонс и начал собственную жизнь в http://hc.apache.org.
И еще небольшое замечание - если хотите запускать касандру из cygwin не забудьте установить пакет util-linux в cygwin. Там getopt, который вызывается в 129 строчке bin/cassandra.
Комментариев нет:
Отправить комментарий