Hadoop Streaming shell 脚本命令汇总
2013-10-18 23:03
453 查看
Hadoop Streaming由于编程相对容易,开发效率比较快,在项目中比较采用这种方式进行JOB的开发,在提交JOB的时候,都会把相关的命令整合到一个shell 文件,这里作个汇总,虽然现在没有机会做Hadoop 相关的,记下来相信会有所帮助,无论是自己还是别人。
在编写JOB相关的脚本中,都会涉及集群输入和输出地址的定义,一般都是按照年月日并且按照文件大小进行切割,如果输入的路径下都是需要的文件,这个时候只需要定义路径的变量即可,可以利用正则匹配的方式来定义变量,如果路径下的文件需要筛选和拼接,可能会稍微麻烦点,但是Hadoop Streaming的命令对拼接的文件个数有限制,比如在map输入的时候,可以利用","将文件进行拼接,但是这里文件个数有限制,太长的话提交的时候会报错,具体数值我记不清了,大概不到2000个文件,一般情况下,当文件个数较少的时候,利用这种方式还是比较快的。下面脚本是实现一个完整的JOB提交。
在编写JOB相关的脚本中,都会涉及集群输入和输出地址的定义,一般都是按照年月日并且按照文件大小进行切割,如果输入的路径下都是需要的文件,这个时候只需要定义路径的变量即可,可以利用正则匹配的方式来定义变量,如果路径下的文件需要筛选和拼接,可能会稍微麻烦点,但是Hadoop Streaming的命令对拼接的文件个数有限制,比如在map输入的时候,可以利用","将文件进行拼接,但是这里文件个数有限制,太长的话提交的时候会报错,具体数值我记不清了,大概不到2000个文件,一般情况下,当文件个数较少的时候,利用这种方式还是比较快的。下面脚本是实现一个完整的JOB提交。
#!/bin/bash # Created by @author: xyl ###################################################################### # Hadoop Environment # STREAMING_JAR: hadoop streaming jar # HADOOPMAIN: hadoop main program STREAMING_JAR=/opt/hadoop/contrib/streaming/hadoop-streaming-0.20.2-cdh3u.jar HADOOPMAIN=/opt/hadoop/bin/hadoop DATE=`date +%Y%m%d -d "-1day"` YEAR=${DATE:0:4} MONTH=${DATE:4:2} DAY=${DATE:6:2} ###################################################################### # Hadoop Streaming Job Confs # INPUTMAINPATH: Data Input Path, Usually A Sessionlog Directory # INPUT: Join The Files in INPUTMAINPATH INPUTMAINPATH=/user/flume/loginfo/$YEAR/$MONTH/$DAY INPUT=$( $HADOOPMAIN fs -ls $INPUTMAINPATH/*.lzo | grep -E ".*nginx\.[0-9]*\.lzo$" \ | awk 'BEGIN{s=""}{s=s","$8}END{print substr(s,2)}') ###################################################################### # OUTPUT: Data Output Path In Hadoop # JOBNAME: Displayed MapReduce's Jobname, Better Add Job Owner's Name OUTPUT=/user/loganalysis/xyl/${DATE} JOBNAME="${DATE}-Displaypv""(xyl)" ###################################################################### # Check Whether Output Directory Exists if $($HADOOPMAIN fs -test -d $OUTPUT) then echo "Output Directory" $OUTPUT "already exists." $HADOOPMAIN fs -rmr $OUTPUT else echo "Output Directory will be created!" fi #$HADOOPMAIN fs -rmr $OUTPUT ###################################################################### # Main Hadoop Streaming Process $HADOOPMAIN jar ${STREAMING_JAR} \ -libjars /opt/loganalysis/libs/CustomOutputFormats.jar \ -Dmapred.job.name=$JOBNAME \ -Dmapred.reduce.tasks=1 \ -input ${INPUT} \ -output ${OUTPUT} \ -mapper mapper.py \ -reducer reducer.py \ -file /opt/xyl/hadoop/display/mapper.py \ -file /opt/xyl/hadoop/display/reducer.py \ -outputformat MultiFormats.MultiFilesOutput \ ;
相关文章推荐
- 动态清空 nohup 输出文件
- install scrapy with pip and easy_install
- Hadoop_2.1.0 MapReduce序列图
- 文本处理工具AWK详解
- Linux Shell常用技巧
- 单机版搭建Hadoop环境图文教程详解
- Shell编程的一些知识集合
- linux Shell学习笔记第五天
- Perl 获取shell命令的执行结果
- Linux shell操作mysql数据库深入解析
- awk简介与学习笔记收集第1/3页
- hadoop常见错误以及处理方法详解
- Linux Shell简介
- shell 中数学计算总结
- linux shell 中 2>&1的含义
- shell编程基础 单引号和双引号的区别
- 对Shell 脚本加密的方法
- sed或awk处理文件最后一行的实现方法
- Do All in Cmd Shell一切在命令行下完成第1/6页