您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页hadoop第四天

hadoop第四天

来源:二三四教育网

partitioner每一条执行一次getpartition,
获取映射关系
reduce数量=partionner数量
getPartition()的返回值就是reduce结果的
partionner数量只能为1或者>=分区数量

一台机器只能启动一个NodeManager
一台机器可以启动多个YarnChild
测试功能是小数据
测试性能是大数据
mapreduce是迭代式编程模型
自定义bean的时候可以不用创建两个构造,用无参构造+set();一次new+多次set();
combiners:map可能产生大量输出,combiner在map端做一次合并,减少了数据在网络上的传递
数据量大的时候用combiners效率高
可以用combiners来过滤数据

如果没有指定partitioner那么会用默认的partitioner HashPartitioner
如果有多个partitioner但是只设置一个生成一个reducer会产生数据倾斜
shuffle原理
环形缓冲区就是三个数组,里面有复杂的关联
shuffle内排序按照key2
执行分区排序分组
如果有conmbiner先执行分区,然后排序,执行combiner 最后分组
通知机制是用心跳机制实现的
shufle面试必问
倒排索引:全文解锁数据结构
combiner是不是可插拔的要看它和reducer的逻辑相不相同,在生产环境会出问题
reducer的数量可以通过patitionner设置,mapper的数量通过split来计算,面试常问
block是物理切分
split是逻辑切分
计算map的数量:调用writeSplits()
LIst<InputSplit> splits = inputformat.getSplits(job);
computeSplitSize(blocksize=128M,minSize=1,maxSize=Long的最大值2得63次方-1)
默认情况下split的大小和切片的大小一样128M
blocksize大小一般不调整,所以一般调整maxsize和minsize
为什么默认split和block块一样大?
因为一台机器上的yarnchild要读取数据,yarnchild中的mapper读数据直接读block,
如果split>block块,那么在机器一上读一块,机器二上读一块,跨机器读数据走网络了,效率低

hadoop

Copyright © 2019- how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务