2015年6月11日
摘要: 延迟调度的主要目的是提高数据本地性(data locality),减少数据在网络中的传输。对于那些输入数据不在本地的MapTask,调度器将会延迟调度他们,而把slot分配给那些具备本地性的MapTask。 延迟调度的大体思想如下: 若该job找到一个node-local的MapTask,则... 阅读全文
posted @ 2015-06-11 10:23 有无之中 阅读(1693) 评论(0) 推荐(0) 编辑
  2015年5月27日
摘要: 接着上一篇来说。上篇说了hadoop网络拓扑的构成及其相应的网络位置转换方式,本篇主要讲通过两种方式来配置机架感知。一种是通过配置一个脚本来进行映射;另一种是通过实现DNSToSwitchMapping接口的resolve()方法来完成网络位置的映射。 hadoop自身是没有机架感知能力的,必... 阅读全文
posted @ 2015-05-27 21:39 有无之中 阅读(4763) 评论(0) 推荐(0) 编辑
  2015年5月24日
摘要: hadoop网络拓扑结构在整个系统中具有很重要的作用,它会影响DataNode的启动(注册)、MapTask的分配等等。了解网络拓扑对了解整个hadoop的运行会有很大帮助。 首先通过下面两个图来了解与网络拓扑有关的类。 NetworkTopology用来表示hadoop集群的网络拓扑结构。... 阅读全文
posted @ 2015-05-24 10:28 有无之中 阅读(2509) 评论(0) 推荐(0) 编辑
  2014年12月2日
摘要: 在client向DataNode写入block之前,会与NameNode有一次通信,由NameNode来选择指定数目的DataNode来存放副本。具体的副本选择策略在BlockPlacementPolicy接口中,其子类实现是BlockPlacementPolicyDefault。该类中会有多个... 阅读全文
posted @ 2014-12-02 11:43 有无之中 阅读(1544) 评论(0) 推荐(0) 编辑
  2014年11月26日
摘要: 上篇说了block在DataNode配置有多个${dfs.data.dir}时的存储策略,本文主要介绍TaskTracker在配置有多个${mapred.local.dir}时的选择策略。1 mapred-site.xml2 3 mapred.local.dir4 /mnt/locald... 阅读全文
posted @ 2014-11-26 21:36 有无之中 阅读(2571) 评论(0) 推荐(0) 编辑
摘要: 最近工作需要,看了HDFS读写数据块这部分。不过可能跟网上大部分帖子不一样,本文主要写了${dfs.data.dir}的选择策略,也就是block在DataNode上的放置策略。我主要是从我们工作需要的角度来读这部分代码的。 1 hdfs-site.xml2 3 dfs.data.dir4... 阅读全文
posted @ 2014-11-26 18:27 有无之中 阅读(3966) 评论(0) 推荐(0) 编辑
摘要: 上一篇分析了split的生成,现在接着来说具体的split具体内容及其相关的文件和类。以FileSplit(mapred包下org/apache/hadoop/mapreduce/lib/input/FileSplit.java)为例,它继承了InputSplit接口,包括以下属性:1 publ... 阅读全文
posted @ 2014-11-26 15:37 有无之中 阅读(2118) 评论(0) 推荐(0) 编辑
  2014年11月21日
摘要: 作业从JobClient端的submitJobInternal()方法提交作业的同时,调用InputFormat接口的getSplits()方法来创建split。默认是使用InputFormat的子类FileInputFormat来计算分片,而split的默认实现为FileSplit(其父接口为... 阅读全文
posted @ 2014-11-21 22:11 有无之中 阅读(6060) 评论(0) 推荐(0) 编辑
  2014年11月9日
摘要: 接着上篇来说。hadoop首先调度辅助型task(job-cleanup task、task-cleanup task和job-setup task),这是由JobTracker来完成的;但对于计算型task,则是由作业调度器TaskScheduler来分配的,其默认实现为JobQueueTas... 阅读全文
posted @ 2014-11-09 17:54 有无之中 阅读(1285) 评论(0) 推荐(0) 编辑
  2014年10月27日
摘要: 接着上篇来说,TaskTracker端的transmitHeartBeat()方法通过RPC调用JobTracker端的heartbeat()方法来接收心跳并返回心跳应答。还是先看看这张图,对它的大概流程有个了解。 下面来一段一段的分析该方法。 1 public synchronized He... 阅读全文
posted @ 2014-10-27 21:05 有无之中 阅读(1904) 评论(0) 推荐(0) 编辑