2015-01-30 2 views
0

Я очень новичок в hadoop.Как сделать 3-этапную карту Уменьшить поток?

В настоящее время у меня есть картер, редуктор и сумматор. И я мог бы сделать cat file | mapper.py | reducer.py | combiner.py, чтобы получить результат. И этап восстановления смущает парализуемость. Итак, может ли кто-нибудь сказать мне, как сделать это в потоке хаопа, учитывая, что у меня есть кластер хаопов?

+0

'' reducer' и combiner' код такой же, если операция является коммутативной и ассоциативной в редукторе. вы можете сослаться на [this] (http://blog.cloudera.com/blog/2013/01/a-guide-to-python-frameworks-for-hadoop/) –

ответ

1

hasoop streaming поддерживает stdin/stdout. Таким образом, вы можете использовать свой mapper.py, reducer.py и combiner.py

Рассмотрим подпись:

$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-streaming.jar \ 
    -input myInputDirs \ 
    -output myOutputDir \ 
    -mapper org.apache.hadoop.mapred.lib.IdentityMapper \ 
    -reducer org.apache.hadoop.mapred.lib.IdentityReducer \ 
    -D stream.map.output.field.separator=. \ 
    -D stream.num.map.output.key.fields=4 

Таким образом, вы можете использовать эту подпись для достижения первых двух шагов, т.е. mapper.py и редуктор .py.

--mapper mapper.py --reducer reducer.py 

Затем вы можете сделать сумматор, добавив еще один Hadoop потоковое только с шагом редуктора

<first part> | -- reducer 'combiner.py' 
+0

Означает ли это, что это означает «хаоп-банд хаоп-потоковой передачи». jar 'с картографом и редуктором в качестве нового картографа? – darwinsenior

+0

@darwinsenior Я не сказал, что редуктор - новый картограф. Я сказал, что mapper.py и reducer.py - это картограф и редуктор первого отправленного задания. Объединитель является редуктором второй поданной заявки - он прикован к работе после завершения первой работы. – javadba

Смежные вопросы