小结

ETL是数据抽取(Extract)、清洗(Cleaning)、转换(Transform)、装载(Load)的过程。

在运行mapperReduce之前 要先对数据进行清洗 清洗掉不符合用户要求的数据 清洗的过程只需要运行mapper程序,不需要运行reduce程序.
一般用来清洗用户的行为日志文件.

MapperReduce 总结

1.输入数据接口 : Inputformat 默认使用的实现类是TextInputFormat

使用逻辑是 : 一次读取一行文本 ,将该行的起始偏移量作为key 行内容作为value,
每一行均为一条记录 被分隔符分割为key,value 默认的分割符是tab(\t)
NlineInputFormat按照指定的行数N来划分切片。
CombineTextInputFormat可以把多个小文件合成一个切片处理 提高处理效率
用户也可以自定义InputFormat

2.逻辑处理接口 :Mapper

用户根据业务需求实现其中三个方法: map() setup() cleanup();

3.partitioner 分区

默认实现HashPartitioner, 逻辑是根据key的哈希值和numReduces来返回一个分区号 也可以自定义分区

4.Comparable排序

当我们用自定义的对戏那个作为key来输出时,就必须实现WritableCompararble接口 重写其conpareTo()方法

5.Combiner 合并

可以提高程序执行效率,减少io传输.但是使用时必须不能影响原有的业务处理结果

6.reduce端的分组

reduceTask拿到输入数据(一个partition的所有数据)后, 首先对数据进行分组 分组的原则是key相同,然后对每一组kv数据调用一次reduce()方法,
并且将这一组kv中的第一个kv的key作为参数传给reduce 的key ,将这一组数据的value的迭代器传给reduce()的value参数.

7.逻辑处理接口

根据需求去实现 reduce() setup() cleanup()

8.数据输出接口

默认实现类是TextOutputFormat 功能逻辑是 : 将每一个KV向目标文本文件中输出为一行
用户可以自定义 OutputFormat

Hadoop数据压缩

压缩技术能够有效减少底层存储系统(HDFS)读写字节数. 压缩提高了网络宽带和磁盘空间的效率.
压缩mapperreduce 是一种优化策略 : 通过亚索编码对Mapper和Reduce的输出进行压缩,以减少磁盘IO.提高mapperReduce运行速度 (但同样增加了cpu运算负担)
注意:压缩特性运用得当能提高性能,但运用不当也可能降低性能。

基本原则 :

(1) 运算密集型job,少用压缩
(2)IO密集型 的job 多用压缩

MP支持的压缩编码
(1)DEFAULT

hadoop 自带 不可以切分 压缩后和文本处理一样,不需要进行修改

(2)Gzip

hadoop 自带 压缩率高 压缩解压速度较快 不可以切分
文件在130M以内考虑使用Gzip 压缩后和文本处理一样,不需要进行修改

(3)bzip2

hadoop 自带 压缩/解压速度慢 可以切分
适用于速度要求不高但需要较高的压缩率的时候,可以作为mapreduce作业的输出格式/输出之后的数据比较大需要减少磁盘使用空间/对单个很大的文本文件想压缩减少储存空间,有需要切分 压缩后和文本处理一样,不需要进行修改

(4)LZO

需要进行安装 压缩/解压速度较快,压缩率合理 可以切分
hadoop中最流行的压缩 但是需要安装 ,为了支持切分需要建立索引
还需要指定inputFromat为lzo格式.
文件越大 lzo的优势越明显

(5)Snappy

需要进行安装 速度最快 压缩率合理 不可以切分
需要进行安装
当MapReduce作业中的map输出的数据比较大时 作为Map到
Reduce 中间的压缩格式 或者作为一个MapReduce作业的输出 和另外一个MapReduce作业的输入.
压缩后和文本处理一样,不需要进行修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值