【大数据】基础知识 3

小白学数据,只为记录学习进程,对每个问题有新的理解会及时更正。
一、HIVE中常用的存储格式
1.Textfile存储格式
textfile是按行存储的方式,没有进行压缩,磁盘开销大,并且上传文件到HDFS是通过put方式

2.ORC存储格式
ORC是按行和按列结合的存储格式,若有1w条数据,ORC模式先把1w行的表拆分成100行一个的小表,再对每个小表进行按列存储。

create table test_orc
(
id		int,
name	string,
price	float
)
row format delimited fields terminated by '\t'
stored as orc

3.Parquet存储格式
支持较好的查询,压缩,但是写入速度较慢

create table test_orc
(
id		int,
name	string,
price	float
)
row format delimited fields terminated by '\t'
stored as parquet

占用内存从大到小:textfile > parquet > orc
sql读取速度: orc > parquet > textfile

二、mapreduce的运行流程
1.map端按照块的大小对数据进行拆分,默认一个块是128M,设分成了n个块
2.对每个拆分数据,启动一个MapTask任务,每个MapTask任务并发进行,互不干扰
3.每个MapTask任务把数据处理成一个个键值对,然后按照键值,把每个拆分后的数据分区,每个map有m个分区,这样便形成了n组分区好的数据,每组里面有m个分区
4.reduce阶段,每个reduce去拉不同map产生的相同分区的数据,产生m个reduce
5.每个reduce启动一个ReduceTask任务去处理这些数据,各个ReduceTask也是并发进行,互不干扰
6.将每个ReduceTask产生的数据合并输出

三、MapTask任务详解
1、Read(读取)阶段:默认使用TextInputFormat,读取切分好的数据,并将数据解析成键值对,输入到map阶段
2、Map阶段:根据业务逻辑重新计算键值对,形成新的键值对,并将数据输出到环形缓冲区
3、Collect(收集)阶段:将输入的键值对,执行分区排序,根据key,value和reduce的数量,来进行分区,再在区内排序,对key值按照字典顺序排序,排序方法:快排
4、溢写阶段:当环形缓冲区被占用了80%,这些数据会被溢写到磁盘中,不影响后续的数据进入环形缓冲区
5、Combine(合并)阶段:将多个溢出的文件进行合并排序,排序方法:归并排序

四、ReduceTask任务详解
当所有的Map任务结束后,开启Reduce任务
1、Copy(拷贝)阶段:Reduce端主动去拷贝Map端处理好的数据到ReduceTask本地磁盘,优先拷贝到内存中,当超出内存阈值,拷贝到磁盘中
2、Merge(合并)阶段:去内存和磁盘中的数据进行合并,防止内存使用过多,或者磁盘文件过多
3、Sort(排序)阶段:将MapTask按照key局部排序好的数据,对key再进行全局归并排序,使得相同key的数据聚集在一起,把相同的key对应的数据,输入给一个reduce
4、Reduce阶段:根据业务逻辑,处理这些数据,并使用TextOutputFormat方法,,输出数据

五、Shuffle机制详解
Shuffle机制用于将MapTask任务产生的文件,传输到ReduceTask,介于Map和Reduce之间
1、Collect(收集)阶段:将MapTask产生的数据输出到一个大小为100M的环形缓冲区
2、溢写阶段:当环形缓冲区占用超过80%时,处罚溢写,在溢写之前,会对数据进行分区排序
3、merge(合并)阶段:合并多次溢写出来的数据,采用归并排序
4、压缩阶段:把每个MapTask产生的数据进行压缩
5、Copy(拷贝)阶段:Reduce端拷贝压缩的数据到内存中,如果内存不够,拷贝到磁盘中
6、Merge(合并)阶段:把不同分区的数据进行合并,磁盘和磁盘合并,内存和内存合并
7、Sort(排序)阶段:在合并的同时进行排序操作,因为采用的是归并排序,最终形成一个分区对应一块数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值