设为首页 收藏本站
查看: 691|回复: 0

[经验分享] Hadoop Streaming 实战: 文件分发与打包

[复制链接]

尚未签到

发表于 2016-12-6 08:51:12 | 显示全部楼层 |阅读模式
  如果程序运行所需要的可执行文件、脚本或者配置文件在Hadoop集群的计算节点上不存在,则首先需要将这些文件分发到集群上才能成功进行计算。
  Hadoop提供了自动分发文件和压缩包的机制,只需要在启动Streaming作业时配置相应的参数。
1. –file 将本地文件分发到计算结点
2. –cacheFile 文件已经存放在HDFS中,希望计算时在每个计算节点上将文件当作本地文件处理
3. –cacheArchive 将存放在HDFS中的压缩包分发并解压
  -file实战: 使用-file分发本地可执行文件和其他文件
  a. 待计算的数据放入hdfs
$ hadoop fs -put localfile /user/hadoop/hadoopfile
  b. 编写map、reduce脚本,记得给脚本加可执行权限。
mapper.sh
#!/bin/shwc -l
  reducer.sh
  #!/bin/sha=0while read idolet a+=$idoneecho $a
  hello.txt文件内容:
  hello
  world
  
c. 运行:
$ hadoop streaming –input /user/hadoop/hadoopfile -output /user/hadoop/result -mapper ./mapper.sh -reducer ./reducer.sh-file mapper.sh -file reducer.sh -file hello.txt -jobconf mapred.reduce.tasks=1 -jobconf mapre.job.name="sum_test"
  d. 查看结果:
$ hadoop fs –cat /user/hadoop/result/part-00000
  -cacheFile实战
  a. 待计算的数据和文件放入hdfs
$ hadoop fs -put hello.txt /user/hadoop/
  b.运行命令(mapper.sh和reducer.sh脚本内容同上):
$ hadoop streaming –input /user/hadoop/hadoopfile -output /user/hadoop/result -mapper ./mapper.sh -reducer ./reducer.sh-file mapper.sh -file reducer.sh -cacheFilehdfs://host:port/user/hadoop/hello.txt#./hello.txt-jobconf mapred.reduce.tasks=1 -jobconf mapre.job.name="sum_test"
可以通过配置文件hadoop-site.xml中的fs.default.name配置参数的值得到文件所在的host和port。
  c. 查看结果:
$ hadoop fs –cat /user/hadoop/result/part-00000
  
-cacheArchive 实战
  a. 创建一个目录test,目录中包含文件mapper.txt,reducer,hello.txt
修改mapper.sh:
#!/bin/sha=`wc -l`#使用参数b=`wc -l $1 | awk '{print $1}'`let c=a+becho $c
b.压缩文件夹并将压缩文件放入hdfs:
$ cd test
$ tar –zcvf test.tar.gz *
$ hadoop fs –put test.tar.gz /user/hadoop/test/
  c.运行命令:
$ hadoop streaming –input /user/hadoop/hadoopfile -output /user/hadoop/result -mapper “./test/mapper.sh ./test/hello.txt” -reducer ./test/reducer.sh-cacheArchive hdfs://host:port/user/hadoop/test/test.tar.gz#test -jobconf mapred.reduce.tasks=1 -jobconf mapre.job.name="sum_test"
  d. 查看结果:
$ hadoop fs –cat /user/hadoop/result/part-00000
  首先将本地test目录中的所有文件和目录打包压缩,然后上传到HDFS中。启动streaming任务时使用-cacheArchive选项将test.tar.gz分发到计算节点并解压到test目录,然后在当前工作目录创建到test目录的链接,-mapper选项指定为mapper程序及其运行参数,-reducer选项指定reducer程序。本地打包时要进入目录test而不是在test的上层目录打包,否则要通过test/test/mapper.sh才能访问到mapper.shl文件。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-310285-1-1.html 上篇帖子: Hadoop学习六:Hadoop-Hdfs源码 classification包 下篇帖子: Hadoop 统计专利被引用次数(二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表