Hadoop Streaming与hadoop
时间: 2024-11-28 18:12:52 浏览: 5
Hadoop Streaming是Hadoop生态系统中的一个重要组件,它允许用户编写自定义的mapper和reducer程序来处理大规模的数据,即使这些程序不是用Java编写的。它扩展了Hadoop MapReduce框架的功能,使得非Hadoop原生的语言(如Python、Perl、Ruby等)也能参与到Hadoop的工作流程中。
以下是Hadoop Streaming的基本使用示例:
1. 使用简单的命令行工具对文本数据进行分词计数[^1]:
```shell
$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-streaming.jar \
-input myInputDirs \
-output myOutputDir \
-mapper /usr/bin/sed 's/ //g' \
-reducer /usr/bin sort | uniq -c
```
这里,`-mapper`指定了用于预处理输入数据的脚本(在这个例子中,去除空格),`-reducer`指定的是用于聚合结果的命令(在这里,`sort | uniq -c`用于计数每个不同的单词出现的次数)。
2. 更高级的使用场景中,可以通过添加配置参数调整任务设置,比如控制reduce任务的数量:
```shell
$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-streaming.jar \
-input myInputDirs \
-output myOutputDir \
-mapper org.apache.hadoop.mapred.lib.IdentityMapper \
-reducer /bin/wc \
-jobconf mapred.reduce.tasks=2
```
这会启动两个reduce任务来并行处理工作负载。
阅读全文