如何在Hadoop集群上运行Hadoop流



目前我有一个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

最新更新