首页 > 解决方案 > 如何在 Hadoop 集群上运行 Hadoop Streaming?

问题描述

目前我有一个具有 3 个节点的 Hadoop 集群(ubuntu)

我想用 Hadoop Streaming 运行 python / R 脚本,但我不确定只是执行 HS 是否真的让所有节点都工作

如果可能,请指导我在集群上运行 Streaming

谢谢

标签: hadoopcluster-computinghadoop-yarnhadoop-streaming

解决方案


Hadoop 流是一个内置的 jar/实用程序,它允许您使用任何可执行文件或脚本作为映射器和/或减速器来创建和运行 Map/Reduce 作业。

$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: directory-name reducer 的输出位置。

-mapper:可执行文件或脚本或 JavaClassName 必需的 Mapper 可执行文件。

-reducer:可执行文件或脚本或 JavaClassName 必需的 Reducer 可执行文件。

-file 文件名:使 mapper、reducer 或 combiner 可执行文件在计算节点上本地可用。

示例 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 类作为参数发送到映射器和/或化简器

$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


推荐阅读