收藏 分享(赏)

7-Hadoop Streaming 实战: 文件分发与打包.docx

上传人:scg750829 文档编号:8098536 上传时间:2019-06-08 格式:DOCX 页数:4 大小:26.27KB
下载 相关 举报
7-Hadoop Streaming 实战: 文件分发与打包.docx_第1页
第1页 / 共4页
7-Hadoop Streaming 实战: 文件分发与打包.docx_第2页
第2页 / 共4页
7-Hadoop Streaming 实战: 文件分发与打包.docx_第3页
第3页 / 共4页
7-Hadoop Streaming 实战: 文件分发与打包.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、Hadoop Streaming 实战: 文件分发与打包分类: hadoop2011-05-06 14:56432 人阅读评论(0)收藏举报如果程序运行所需要的可执行文件、脚本或者配置文件在 Hadoop 集群的计算节点上不存在,则首先需要将这些文件分发到集群上才能成功进行计算。Hadoop 提供了自动分发文件和压缩包的机制,只需要在启动 Streaming 作业时配置相应的参数。 1. file 将本地文件分发到计算结点 2. cacheFile 文件已经存放在 HDFS 中,希望计算时在每个计算节点上将文件当作本地文件处理 3. cacheArchive 将存放在 HDFS 中的压缩包分发

2、并解压-file 实战: 使用-file 分发本地可执行文件和其他文件a. 待计算的数据放入 hdfs $ hadoop fs -put localfile /user/hadoop/hadoopfile b. 编写 map、reduce 脚本,记得给脚本加可执行权限。 mapper.sh view plaincopy to clipboardprint?1. #!/bin/sh 2. wc -l #!/bin/shwc -lreducer.shview plaincopy to clipboardprint?1. #!/bin/sh 2. a=0 3. while read i 4. do

3、5. let a+=$i 6. done 7. echo $a #!/bin/sha=0while read idolet a+=$idoneecho $ahello.txt 文件内容: helloworldc. 运行: $ 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

4、.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 ./ma

5、pper.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/resul

6、t/part-00000 -cacheArchive 实战a. 创建一个目录 test,目录中包含文件 mapper.txt,reducer,hello.txt 修改 mapper.sh: view plaincopy to clipboardprint?1. #!/bin/sh 2. a=wc -l 3. #使用参数 4. b=wc -l $1 | awk print $1 5. let c=a+b 6. echo $c #!/bin/sha=wc -l#使 用 参 数b=wc -l $1 | awk print $1let c=a+becho $cb.压缩文件夹并将压缩文件放入 hdfs:

7、 $ 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

8、 -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 文件。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报