目前我有一个Hadoop集群,有3个节点(ubuntu(
我想用Hadoop Streaming运行python/R脚本,但我不确定仅仅执行HS是否真的能让所有节点工作
如果可能的话,请告诉我在集群上运行流媒体
感谢
Hadoop流是一个内置的jar/实用程序,允许您创建和运行Map/Reduce作业,并将任何可执行文件或脚本作为映射程序和/或reducer。
$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-streaming.jar
-input myInputDirs
-output myOutputDir
-mapper /bin/cat
-reducer /bin/wc
在上面的命令中,mapper和reducer都是可执行文件,它们从stdin(逐行(读取输入并将输出发送到stdout。该实用程序将创建一个Map/Reduce作业,将作业提交到适当的集群,并监视作业的进度,直到作业完成。
-input:目录/文件名映射器的输入位置。
-output:目录名reducer的输出位置。
-mapper:可执行文件或脚本或JavaClassName必需的mapper可执行文件。
-reducer:可执行文件或脚本或JavaClassName必需的reducer可执行文件。
-file file name:使映射程序、还原程序或组合程序可在计算节点上本地执行。
示例1:一个用户定义的python可执行文件作为映射程序。选项"-file myPythonScript.py"会将python可执行文件作为作业提交的一部分发送到集群计算机。
$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-streaming.jar
-input myInputDirs
-output myOutputDir
-mapper myPythonScript.py
-reducer /bin/wc
-file myPythonScript.py
示例2:将Java类作为参数发送到映射器和/或reducer
$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-streaming.jar
-input myInputDirs
-output myOutputDir
-mapper org.apache.hadoop.mapred.lib.IdentityMapper
-reducer /bin/wc
来源:Hadoop Streaming jar