MapReduce 大数据学习第三天

reduce个数 mapred.reduce.tasks

多了:

shuffle开销大,输出大量小文件

少了:

单次执行慢,出错再试错成本高

MapReduce和HDFS采用Java实现,默认提供Java编程接口,streaming框架允许程序使用任何语言,方便已有程序向Hadoop平台移植

Map和reduce都是标准输入标准输出,但是外面可以套一个Java的壳让它对语言不再强依赖

cat input | mapper | sort | reducer > output

看看本地可不可以跑通,sort是在模拟shuffle

c/c++编写的程序可以快一点效率高

streaming默认只能处理文本数据,如果处理二进制数据可以把二进制的key和value进行base64编码转换成文本

这样的话两次数据拷贝解析(分割)会花费一段时间带来额外开销,但是由于这种开发方式本来就注重时效性,所以可以忽略

MapReduce制定参数

-input 指定作业的输入文件的HDFS的路径,支持用*通配符支持指定多个文件或目录,可反复使用

-output 指定作业输出文件的HDFS路径,必须不存在,并且有权限创建,只能使用一次

-mapper 需要有,执行map阶段,通过什么方式执行map进程 例如 "python mapper.py"前面是运行程序,后面是脚本

-reducer 可以没有,比如简单的过滤就可以没有

-file 分发用,小的文件 map和reduce的执行文件,要用的输入文件

类似的还有 -casheFile, -casheArchive分别用于向计算节点分发HDFS文件和HDFS压缩文件(已经在hdfs上),前面一个是已经有的文件,后面是一个文件体系

-jobconf (D)

配置参数

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.otput.field.separator map的输出分隔符

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值