hadoop - 如何在 Hadoop 集群上运行 Hadoop Streaming?
问题描述
目前我有一个具有 3 个节点的 Hadoop 集群(ubuntu)
我想用 Hadoop Streaming 运行 python / R 脚本,但我不确定只是执行 HS 是否真的让所有节点都工作
如果可能,请指导我在集群上运行 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
推荐阅读
- javascript - React - 将状态值从一个组件传递到另一个组件
- python - python嵌入,定义新类型,如何在c端创建新实例
- c++ - CMake CUDA C++ 链接错误 - 未定义引用`someFunction()`
- angular - 如何用甜蜜的警报打破界限
- geolocation - 获取支持 ARGeoTrackingConfiguration 的城市列表
- python - 更新列表的元素,其中列表是字典中的值
- javascript - 如何使用 Puppeteer 选择并输入具有动态生成属性的输入字段?
- flutter - 为什么没有 /lib 目录和没有 main.dart 文件?
- javascript - 赛普拉斯在执行时取消 XHR 调用
- javascript - 如何访问 iframe 的正文并获取其文本值?没有 JQUERY