hadoop源码
文章平均质量分 80
young-ming
路漫漫其修远兮 吾将上下而求索
个人QQ:284407890
个人github:https://github.com/xmingyang
展开
-
mapreduce源码分析总结
一 MapReduce概述 Map/Reduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的,Google已经将它完整的MapReduce论文公开发布了。其中对它的定义是,Map/Reduce是一个编程模型(programmingmodel),是一个用于处理和生成大规模数据集(processing and generating large dat转载 2013-09-15 00:04:37 · 1356 阅读 · 2 评论 -
FairScheduler源码资源抢占
FairScheduler类private class UpdateThread extends Thread { @Override public void run() { while (!Thread.currentThread().isInterrupted()) { try { Thread.sleep(updateIn原创 2015-10-26 09:49:05 · 1248 阅读 · 0 评论 -
FairScheduler源码任务分配
FairSchedulerprivate synchronized void nodeUpdate(RMNode nm) { if (LOG.isDebugEnabled()) { LOG.debug("nodeUpdate: " + nm + " cluster capacity: " + clusterResource); } eventLog.log(原创 2015-10-26 09:43:20 · 1065 阅读 · 0 评论 -
FairScheduler源码计算fair share
FairScheduler发生资源抢占有两个触发条件1、根据配置的最低资源量保障,如果超过minSharePreemptionTimeout时间,一直获取不到最低资源量,则发生抢占,minSharePreemptionTimeout源码中默认是long.max_value,可配置文件配置2、根据fairShare量,如果超过fairSharePreemptionTimeout时间,一直获取原创 2015-10-26 09:57:19 · 1627 阅读 · 0 评论 -
回顾从hdfs数据读过程看RPC
Client端 org.apache.hadoop.hdfs; DistributedFileSystem 客户端与namenode端协议使用ClientProtocol public FSDataInputStream open(Path f, final int bufferSize) throws IOException { statistics.inc原创 2015-08-20 14:49:16 · 2233 阅读 · 0 评论 -
Namenode计算client与datanode距离方法pseudoSortByDistance分析
在Hadoop读数据的过程中,会从与Client端最这距离的datanode的block副本去读数据,那这个距离怎么计算?策略是与Client同一个datanode结点的优先权最高,其次是本机架结点,否则随机。我们知道在读数据的时候Client首先会与namenode打交道,向namenode发送RPC请求获取block及对应的datanode位置列表,由Namenode端计算距离后按距离由近及远原创 2013-08-29 15:31:52 · 1187 阅读 · 0 评论 -
mapreduce源码分析作业提交、初始化、分配、计算过程之初始化篇
作业初始化 mapreduce源码分析作业提交、初始化、分配、计算过程之提交篇最后讲到Client远程RPC调用Jobtracker的submitJob方法,mapreduce作业初始化就从此处作为切入口。 jobtracker 里的submitJob方法:public synchronized JobStatus submitJob(JobID jobId) throws IOE原创 2013-09-09 11:08:58 · 1278 阅读 · 0 评论 -
Hadoop处理跨block行源码分析记录
Hadoop的block大小默认为64M,将一个大文件按64M切分block,分发到各个datanode存储,那么必然会造成一行数据分布到不同block,不同的datanode,那Hadoop是如何处理的这种情况?以TextInputFormat格式为例,LineRecordReader设计的足够健壮,当读到该分片最后一条未遇到终止符,会继续读取下一个分片的数据,直到读取出完整的数据行,下一个原创 2013-09-08 10:33:55 · 1278 阅读 · 0 评论 -
mapreduce源码分析作业分配过程
前面提到作业初始化将创建一系列的TaskInProgress缓存到内存,等待各个tasktracker结点向jobtracker发送心跳请求任务,由jobtracker端的调度器分配任务,默认JobQueueTaskScheduler,具体实现对应assignTasks方法assignTasks核心算法 :对个某个tasktracker,计算可用的slot数目,调度器会尽量将任务均匀分布各原创 2013-09-15 21:37:18 · 1074 阅读 · 0 评论 -
yarn作业初始化源码
初始化创建MAP TASK,REDUCE TASK,然后再为各类TASK向RM申请CONTAINER资源 //初始化创建MAP TASK,REDUCE TASK,然后再为各类TASK向RM申请CONTAINER资源 MRAppMaster protected Job createJob(Configuration conf, JobStateInternal forcedState,原创 2014-09-09 09:10:29 · 1147 阅读 · 0 评论 -
YARN AM与RM通信
AppMaster向RM请求资源//APPMASTER向RM发送心跳,更新资源请求结构,从分配好的内存结构取出分配的资源,具体任务分配是后台异步的由NM发送心跳驱动MRAppMaster:serviceinit // service to allocate containers from RM (if non-uber) or to fake it (uber) conta原创 2014-09-09 12:11:01 · 2742 阅读 · 0 评论 -
YARN NM与RM通信
NM端//NM发送心跳,增加一个NODE_UPDATE事件,简单返回一个respone,异步驱动型,事件再驱动assignContainers,从资源请求结构里取出需求分配资源//AsyncDispatcher原理//一个event队列,一个eventtype.class 到处理器对应关系(仅仅是一个class对应一个处理器,class是个Enum可能会有很多种值,具体逻辑在处理器内部)原创 2014-09-09 12:09:19 · 2252 阅读 · 0 评论 -
yarn作业提交过程源码
Client 端://最终通过ApplicationClientProtocol协议提交到RM端的ClientRMService内package org.apache.hadoop.mapred;jobclient包内YarnRunner public JobStatus submitJob(JobID jobId, String jobSubmitDir, Credentials原创 2014-09-09 09:08:14 · 2434 阅读 · 0 评论 -
mapreduce源码分析作业提交、初始化、分配、计算过程之提交篇
作业的提交jobclient请求jobtracker获取jobid,生成相关hdfs目录,计算输入分片信息,生成jar,xml,split文件,copy至jobtracker文件系统,最后rpc远程调用jobtracker的submitJob方法job.waitForCompletion方法 public boolean waitForCompletion(boolean verbo原创 2013-09-08 14:18:13 · 985 阅读 · 0 评论 -
FairScheduler源码队列饥饿
小于最低资源保障量的队列,呈饥饿状态。 protected Resource resToPreempt(FSLeafQueue sched, long curTime) { long minShareTimeout = sched.getMinSharePreemptionTimeout(); long fairShareTimeout = sched.getFairShare原创 2015-10-26 10:01:29 · 482 阅读 · 0 评论