hadoop随手笔记(3)

4 篇文章 0 订阅
4 篇文章 0 订阅

(1)FairScheduler调度器

当只有一个job在集群中运行时,这个job可以使用整个集群的资源,但是当有其他的jobs提交到集群上的时候,那么在有其他的jobs提交到集群上的时候,那么在那个时刻空闲的内存slot就可以被分配给心提交上来的jobs,所以在一定时间内,每个job都得到了比较平均的cpu使用时间。

(2)TaskTracker的数量和DataNode的数量相同,TaskTracker会定期向JobTracker发送心跳,从而将自己运行的Task的最新状态通知给JobTracker,同时也接收JobTracker返回的指令,从而执行进一步的操作。TaskTracker不仅要和JobTracker通信,也会与其他的TaskTracker进行通信,比如运行Reducer任务的TaskTracker会通过HTTP协议和运行完的mapper任务的TaskTracker进行通信来获得mapper任务的输出。

(3)MapTask产生的部分输出会存储到一个内存buffer中,这个buffer默认的大小为100M,它所对应的配置项为io.sort.mb,可以在提交job的时候修改这个配置项的值,当数据量很大的时候我们可以将这个值调大来减少将数据spill写入到磁盘的次数,从而减少了MapTask与磁盘的交互次数,如果MapTask的性能瓶颈在磁盘上,这样可以大大提高MapTask的处理性能。当缓存中存储的值达到设置的值是,MapTask会单独启动一个线程将内存的buffer写到磁盘上,形成单独的一个spill文件,但是在写入磁盘如果buffer被填满,那么MapTask将会被堵塞。在MapTask正常退出之前,这些spill文件会合并成一个已经分区而且已经排好序的更大的输出文件,其中Combine过程是对MapTask输出的结果进行合并从而减少输出数据所占的磁盘空间,可以降低Mapper输出数据传递给Reduce时的网络开销。


(4)ReduceTask执行过程


当job中的第一个Mapper任务执行完成后,所有的Reduce任务就会被启动,然后尝试从Mapper的输出中获取自己需要的那部分数据,就是Copy过程,也就是shuffle过程,由于Mapp而任务会很多,所以会使用并行的线程来完成数据的copy,默认情况是5.将数据从Mappe热点主机copy到Reduce的本地或者内存当中,默认情况下reduce回直接开始从磁盘读取数据。

(5)在hadoop中Eileen方便集群中各个组件之间的通信,采用了RPC通信协议,考虑到通信效率以及自身的负载情况,在内部实现了一个基于IPC模型的RPC,IPC模型中所有方法要求参数和返回值必须是java的基本类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值