2021SC@SDUSC hadoop源码分析(五)

2021SC@SDUSC

接下来一段时间我将会对hadoop中的tool部分进行分析理解

Hadooop Streaming

hadoop streaming

Hadoop流是Hadoop发行版附带的实用程序。该实用程序允许您使用任何可执行文件或脚本作为映射程序和/或缩减程序来创建和运行映射/缩减作业。例如:

mapred streaming \
  -input myInputDirs \
  -output myOutputDir \
  -mapper /bin/cat \
  -reducer /usr/bin/wc

hadoop streaming是如何工作的

上面中的mapper跟reducer,它们从stdin读取输入(一行一行)并将输出发送到stdout。该实用程序将创建一个映射/缩减作业,将作业提交到适当的集群,并监视作业的进度,直到作业完成。

当为映射器指定可执行文件时,每个映射器任务将在映射器初始化时作为单独的进程启动可执行文件。当映射器任务运行时,它将其输入转换成行,并将这些行馈送到进程的stdin。同时,映射器从进程的stdout中收集面向行的输出,并将每一行转换成键/值对,作为映射器的输出进行收集。默认情况下第一个制表符前的一行的前缀是键该行的其余部分(不包括制表符)将是价值。如果行中没有制表符,则整行被视为键,该值为空。但是,这可以通过设置进行自定义-输入格式命令选项。

当一个可执行文件被指定给减压器时,每个减压器任务将作为一个单独的进程启动该可执行文件,然后减压器被初始化。当reducer任务运行时,它将其输入键/值对转换成行,并将这些行馈送到进程的stdin。同时,reducer从进程的stdout收集面向行的输出,将每一行转换成键/值对,作为reducer的输出进行收集。默认情况下,直到第一个制表符的行的前缀是键,该行的其余部分(不包括制表符)是值。但是,这可以通过设置进行自定义-outputformat命令选项。

将Java类指定为映射器/缩减器

mapred streaming \
  -input myInputDirs \
  -output myOutputDir \
  -inputformat org.apache.hadoop.mapred.KeyValueTextInputFormat \
  -mapper org.apache.hadoop.mapred.lib.IdentityMapper \
  -reducer /usr/bin/wc

用job submissions提交打包文件

mapred streaming \
  -input myInputDirs \
  -output myOutputDir \
  -mapper myPythonScript.py \
  -reducer /usr/bin/wc \
  -file myPythonScript.py

mapred streaming \
  -input myInputDirs \
  -output myOutputDir \
  -mapper myPythonScript.py \
  -reducer /usr/bin/wc \
  -file myPythonScript.py \
  -file myDictionary.txt

为jobs提供其他插件

-inputformat JavaClassName
 -outputformat JavaClassName
 -partitioner JavaClassName
 -combiner streamingCommand or JavaClassName

为输入格式提供的类应该返回文本类的键/值对。如果没有指定输入格式类,则默认使用文本输入格式。由于TextInputFormat返回LongWritable类的键,这些键实际上不是输入数据的一部分,因此这些键将被丢弃;只有值将通过管道传输到流映射器。

为输出格式提供的类应该采用文本类的键/值对。如果没有指定输出格式类,则默认使用文本输出格式。

通用命令选项

指定文件

 

指定Map-Only job

指定Reducers的数量

 自定义如何拆分Key/value Pairs

 

使文件对任务可用

使归档对任务可用

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值