开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第34天,点击查看活动详情
大数据面试之Hadoop通用常见题目
1 Hadoop常用端口号
hadoop2.x | Hadoop3.x | |
---|---|---|
访问HDFS页面端口 | 50070 | 9870 |
访问MR执行情况端口(YARN任务调度访问端口) | 8088 | 8088 |
历史服务器 | 19888 | 19888 |
客户端访问集群通讯端口 | 9000/8020 | 9000/8020/9820 |
2 Hadoop配置文件以及简单的Hadoop集群搭建
1、配置文件:
Hadoop2.x :
core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、slaves
Hadoop3.x :
core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、workers
2、简单的集群搭建过程:
JDK安装
配置SSH免密登录
配置Hadoop核心文件
格式化NameNode
3 Hadoop解决数据倾斜方法
1、提前在Map端进行combine操作,减少传输的数据量
在Mapper加上combiner相当于提前进行reduce,也就是把一个Mapper中的相同key进行了聚合,减少Shuffle过程中传输的数据量,以及Reducer端的计算量。
但是这种方式有局限性,如果导致数据倾斜的key大量分布在不同的Mapper的时候,这种方法就不是很有效了。
2、导致数据倾斜的key大量分布在不同的Mapper的场景
(1)局部聚合加全局聚合。
第一次在Mapper阶段对那些导致了数据倾斜的key 加上1到n的随机前缀,这样本来相同的key 会被分到多个不同的Reducer中进行局部聚合,数量就会大幅降低。
第二次MapReduce,去掉key的随机前缀,进行全局聚合。
总结一下思想:二次MR操作。第一次将key随机散列到不同Reducer进行处理,从而达到负载均衡的目的;第二次再去掉key的随机前缀,按原key进行Reducer处理。
这个方法进行两次MapReduce,性能稍微差些。
(2)增加Reducer,提高并行度
JobConf.setNumReduceTasks(int x)
设置并行度
(3)自定义分区
根据数据分布情况,自定义散列函数,将key均匀分布到不同的Reducer。
声明:
文章中代码及相关语句为自己根据相应理解编写,文章中出现的相关图片为自己实践中的截图和相关技术对应的图片,若有相关异议,请联系删除。感谢。转载请注明出处,感谢。
落叶飘雪