前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >MapReduce工作笔记——Job上传普通文件和大文件

MapReduce工作笔记——Job上传普通文件和大文件

作者头像
莫斯
发布于 2020-09-10 02:34:54
发布于 2020-09-10 02:34:54
1.1K00
代码可运行
举报
文章被收录于专栏:备份备份
运行总次数:0
代码可运行

0. 前言

我们在配置MR Streaming任务的时候,通常会上传mapper、reducer以及其他会用到的一些文件,在MapReduce工作笔记——Hadoop shell 常用文件操作命令中提到过使用put数据上传HDFS。在执行MR Job 的时候,Hadoop会将其配置的文件数据打包成jar,两种上传的目标是不一样的,前者是数据,后者是配置,本文章将主要介绍普通脚本文件的上传以及大文件的上传。

1. 上传普通文件

上传本地文件可以使用-file 运用示例:

Code.1.1 file 上传示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hadoop streaming \
  -mapper "./mapper.py" \
  -reducer "./reducer.py" \
  -file "$MY_PATH/reducer.py" \
  -file "$MY_PATH/mapper.py" \
  -file "test.txt"

使用-file 上传后的目录存在相对路径之下,在配置-mapper 以及-reducer 时候,直接使用相对路径以及文件名即可。

2. 上传大文件

上文中提到过这些上传的文件会打包到job 的jar 包中,但是如果遇到有jar包大小时,文件大小总和超过设置的大小会报错,这时候就需要使用-cacheFile大文件上传, 使用 -cacheArchive 上传压缩文件

2.1 cacheFile上传至Hdfs

Code.2.1 cacheFile示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-cacheFile /home/cache-test/testfile.txt#test
#如果有多个文件,选项可以写成:
-cacheFile /home/cache-test/testfile1.txt#test1 
-cacheFile /home/cache-test/testfile2.txt#test2

这里的任务的当前工作目录下有一个“test”符号链接,它指向testfile.txt文件在本地的拷贝。

2.2 cacheArchive上传压缩文件

cacheArchive支持zip、tar、tgz、tar.gz和jar等压缩文件解压上传。

Code.2.2 cacheArchive示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-cacheArchive /home/cache-test/testfile2.tar.gz#test

在上面的例子里,url中#后的部分是建立在任务当前工作目录下的符号链接的名字,此处为test,test指向data解压后的目录。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/11/29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0. 前言
  • 1. 上传普通文件
  • 2. 上传大文件
    • 2.1 cacheFile上传至Hdfs
    • 2.2 cacheArchive上传压缩文件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档