hadoop_streaming开发要点_提交作业jobconf常用配置


Hadoop streaming是和hadoop一起发布的实用程序。它允许用户创建和执行使用任何程序或者脚本(例如: python,ruby,shell,php)编写的map或者reduce的mapreduce jobs。


# 脚本程序run.sh
$HADOOP_CMD jar $STREAM_JAR_PATH \
-input $INPUT_FILE_PATH_1 \
-output $OUTPUT_PATH \
-mapper "python map.py" \
-reducer "python reduce.py" \
-jobconf "mapred.reduce.tasks=2" \ # reduce task的数量由mapred.reduce.tasks这个参数设定,默认值是1。
-file ./map.py \
-file ./reduce.py
input: 指定作业的输入文件的HDFS路径,支持使用*通配符,支持指定多个文件或目录,可多次使用

output: 指定作业的输出文件的HDFS路径,路径必须存在,执行作业用户必须有创建该目录的权限,只能使用一次

mapper: 用户自己写的mapper程序

reducer: 用户自己写的reduce程序

file: 允许用户设置task的文件和文件档案,类似的配置还有-cacheFile, -cacheArchive分别用于向计算节点分发HDFS文件和HDFS压缩文件
分发的文件有如下:
  • map和reduce的执行文件
  • map和reduce要用到的数据文件、配置文件


jobconf: 提交作业的一些配置属性
  • mapred.map.tasks:map task数目
  • mapred.reduce.tasks:reduce task数目
  • stream.num.map.output.key.fields:指定map task输出记录中key所占的域数目
  • num.key.fields.for.partition指定对key分出来的前几部分做partition而不是整个key

?
#?jobconf常用配置
?
mapred.job.name 作业名
mapred.job.priority 作业优先级
mapred.job.map.capacity 最多同时运行map任务数
mapred.job.reduce.capacity 最多同时运行reduce任务数
mapred.task.timeout 任务没有响应(输入输出)的最大时间
mapred.compress.map.output map的输出是否压缩
mapred.map.output.compression.codec map的输出压缩方式
mapred.output.compress reduce的输出是否压缩
mapred.output.compression.codec reduce的输出压缩方式
stream.map.output.field.separator map输出分隔符

0 个评论

要回复文章请先登录注册