如何在Hadoop集群上运行Hadoop流媒体?

问题描述 投票:0回答:1

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

我想用Hadoop Streaming来运行python R脚本,但我不知道仅仅执行HS是否真的能让所有节点都能工作。

如果可以的话,请给我一个方向,让我在集群上运行Streaming。

谢谢你

hadoop cluster-computing yarn hadoop-streaming
1个回答
0
投票

Hadoop Streaming是一个内置的jarutility,它允许你使用任何可执行文件或脚本作为mapper或reducer来创建和运行MapReduce作业。

$HADOOP_HOME/bin/hadoop  jar $HADOOP_HOME/hadoop-streaming.jar \
    -input myInputDirs \
    -output myOutputDir \
    -mapper /bin/cat \
    -reducer /bin/wc

在上面的命令中,mapper和reducer都是可执行文件,它们从stdin中读取输入(逐行)并将输出发送到stdout。该实用程序将创建一个 MapReduce 作业,将该作业提交给适当的群集,并监控该作业的进度,直到它完成。

-input: directoryfile-name 映射器的输入位置。

-output: directory-name reducer的输出位置。

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

-reducer: 可执行文件或脚本或JavaClassName Required Reducer可执行文件。

-file文件名:使映射器、还原器或组合器的可执行文件在计算节点上本地可用。

例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类作为参数给mapper或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 Hadoop Streaming jar

© www.soinside.com 2019 - 2024. All rights reserved.