一、Hadoop
1、入门
1.1 hadoop常用端口号
hdfs页面 | yarn | 历史服务器 | hdfs内部通信端口号 | |
2.x | 50070 | 8088 | 19888 | 9000/8020 |
3.x | 9870 | 8088 | 19888 | 9820/9000/8020 |
1.2 常用配置文件
core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml workers、works
2、hdfs
2.1 读写流程
2.2 小文件的危害(数据倾斜)
(1) 存储
每个小文件最少占用150个字节,如果内存为128g,那最多可以存储128g/150字节=9.1亿个文件。
(2) 计算。每个文件单独切片,1个maptask分配1g内存,所以小文件过多会占用大量的计算资源
2.3 小文件解决办法
(1) har归档
(2) CombineTextInputformat
(3) JVM重用
2.4 文件副本数
默认3个,企业中常用也是3个
2.5 块大小
1.x:64m,2.x:128m,本地:32m,企业:128m、256m、512m
块大小取决于磁盘读写速度
普通机械硬盘:100m
ssd 固态硬盘普通:300-400m
ssd 固态硬盘高级:500-600m
3、mapreduce
3.1 shuffle及其优化
shuffle是map方法之后,reduce方法之前,不是单纯的map之后reduce之前
(1) Map方法之后,数据首先进入到分区方法,把数据标记好分区,然后把数据发送到环形缓冲区;环形缓冲区默认大小100m,环形缓冲区达到80%时,进行溢写;溢写前对数据进行排序,排序按照对key的索引进行字典顺序排序,排序的手段快排;溢写产生大量溢写文件,需要对溢写文件进行归并排序;对溢写的文件也可以进行Combiner操作,前提是汇总操作,求平均值不行。最后将文件按照分区存储到磁盘,等待 Reduce端拉取。
(2) 每个Reduce拉取Map端对应分区的数据。拉取数据后先存储到内存中,内存不够了,再存储到磁盘。拉取完所有数据后,采用归并排序将内存和磁盘中的数据都进行排序。在进入 Reduce方法前,可以对数据进行分组操作。
4、yarn
4.1 工作机制
4.2 调度器
(1) FIFO调度器
单队列,先进先出,生产环境中很少使用
(2) 容量调度器
支持多队列,执行顺序优先满足先进入的任务,资源不够可以借
(3) 公平调度器
支持多队列,每个任务公平享有队列资源,资源不够可以借
4.3 企业中怎么使用
默认一个default
如果对并行度要求高的:公平,如果对并行度要求不高:容量
企业中都是多队列,按照部门+业务的方式设置队列,达到解耦的效果,当出现大型活动或促销的时候,可以暂时停止一个不紧急的业务队列,也就是进行降级使用