public class FileSplit extends InputSplit implements Writable {
private Path file;
private long start;
private long length;
private String[] hosts; public FileSplit() {
} public FileSplit(Path file, long start, long length, String[] hosts) {
this.file = file;
this.start = start;
this.length = length;
this.hosts = hosts;
} public Path getPath() {
return this.file;
} public long getStart() {
return this.start;
} public long getLength() {
return this.length;
} public String toString() {
return this.file + ":" + this.start + "+" + this.length;
} public void write(DataOutput out) throws IOException {
Text.writeString(out, this.file.toString());
out.writeLong(this.start);
out.writeLong(this.length);
} public void readFields(DataInput in) throws IOException {
this.file = new Path(Text.readString(in));
this.start = in.readLong();
this.length = in.readLong();
this.hosts = null;
} public String[] getLocations() throws IOException {
if (this.hosts == null) {
return new String[0];
}
return this.hosts;
}
}

代码比较简单, 四部分组成  文件路径 ,启始位置,长度,Host列表

Host为什么是个列表

看分片的时候创建函数

splits.add(makeSplit(path, length - bytesRemaining,
                                splitSize, blkLocations[blkIndex].getHosts()));

再来看块的源代码

public class BlockLocation {
private String[] hosts;
private String[] names;
private String[] topologyPaths;
private long offset;
private long length;
private boolean corrupt; public BlockLocation() {
this(new String[0], new String[0], 0L, 0L);
} public BlockLocation(String[] names, String[] hosts, long offset,
long length) {
this(names, hosts, offset, length, false);
} public BlockLocation(String[] names, String[] hosts, long offset,
long length, boolean corrupt) {
if (names == null)
this.names = new String[0];
else {
this.names = names;
}
if (hosts == null)
this.hosts = new String[0];
else {
this.hosts = hosts;
}
this.offset = offset;
this.length = length;
this.topologyPaths = new String[0];
this.corrupt = corrupt;
} public BlockLocation(String[] names, String[] hosts,
String[] topologyPaths, long offset, long length) {
this(names, hosts, topologyPaths, offset, length, false);
} public BlockLocation(String[] names, String[] hosts,
String[] topologyPaths, long offset, long length, boolean corrupt) {
this(names, hosts, offset, length, corrupt);
if (topologyPaths == null)
this.topologyPaths = new String[0];
else
this.topologyPaths = topologyPaths;
} public String[] getHosts() throws IOException {
if ((this.hosts == null) || (this.hosts.length == 0)) {
return new String[0];
}
return this.hosts;
} public String[] getNames() throws IOException {
if ((this.names == null) || (this.names.length == 0)) {
return new String[0];
}
return this.names;
} public String[] getTopologyPaths() throws IOException {
if ((this.topologyPaths == null) || (this.topologyPaths.length == 0)) {
return new String[0];
}
return this.topologyPaths;
} public long getOffset() {
return this.offset;
} public long getLength() {
return this.length;
} public boolean isCorrupt() {
return this.corrupt;
} public void setOffset(long offset) {
this.offset = offset;
} public void setLength(long length) {
this.length = length;
} public void setCorrupt(boolean corrupt) {
this.corrupt = corrupt;
} public void setHosts(String[] hosts) throws IOException {
if (hosts == null)
this.hosts = new String[0];
else
this.hosts = hosts;
} public void setNames(String[] names) throws IOException {
if (names == null)
this.names = new String[0];
else
this.names = names;
} public void setTopologyPaths(String[] topologyPaths) throws IOException {
if (topologyPaths == null)
this.topologyPaths = new String[0];
else
this.topologyPaths = topologyPaths;
} public String toString() {
StringBuilder result = new StringBuilder();
result.append(this.offset);
result.append(',');
result.append(this.length);
if (this.corrupt) {
result.append("(corrupt)");
}
for (String h : this.hosts) {
result.append(',');
result.append(h);
}
return result.toString();
}
}

Yarn下分片和分块源代码分析的更多相关文章

  1. 【转载】linux环境下tcpdump源代码分析

    linux环境下tcpdump源代码分析 原文时间 2013-10-11 13:13:02  CSDN博客 原文链接  http://blog.csdn.net/han_dawei/article/d ...

  2. linux环境下tcpdump源代码分析

    Linux 环境下tcpdump 源代码分析 韩大卫@吉林师范大学 tcpdump.c 是tcpdump 工具的main.c, 本文旨对tcpdump的框架有简单了解,只展示linux平台使用的一部分 ...

  3. Flink on Yarn模式启动流程源代码分析

    此文已由作者岳猛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Flink on yarn的启动流程可以参见前面的文章 Flink on Yarn启动流程,下面主要是从源码角 ...

  4. Android4.42-Setting源代码分析之蓝牙模块Bluetooth(下)

    接着上一篇Android4.42-Settings源代码分析之蓝牙模块Bluetooth(上) 继续蓝牙模块源代码的研究 THREE.蓝牙模块功能实现 switch的分析以及本机蓝牙重命名和可见性的分 ...

  5. MapReduce源代码分析之JobSubmitter(一)

    JobSubmitter.顾名思义,它是MapReduce中作业提交者,而实际上JobSubmitter除了构造方法外.对外提供的唯一一个非private成员变量或方法就是submitJobInter ...

  6. 转:RTMPDump源代码分析

    0: 主要函数调用分析 rtmpdump 是一个用来处理 RTMP 流媒体的开源工具包,支持 rtmp://, rtmpt://, rtmpe://, rtmpte://, and rtmps://. ...

  7. Hadoop源代码分析

    http://wenku.baidu.com/link?url=R-QoZXhc918qoO0BX6eXI9_uPU75whF62vFFUBIR-7c5XAYUVxDRX5Rs6QZR9hrBnUdM ...

  8. Kafka 源代码分析之LogManager

    这里分析kafka 0.8.2的LogManager logmanager是kafka用来管理log文件的子系统.源代码文件在log目录下. 这里会逐步分析logmanager的源代码.首先看clas ...

  9. Yarn下Map数控制

    public List<InputSplit> getSplits(JobContext job) throws IOException { long minSize = Math.max ...

随机推荐

  1. JVM调优总结-Xmx -Xms -Xmn -Xss

    堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内存限制:系统的可用物理内存限制.32位系统下,一般限制在1.5G~2G:64为操作 ...

  2. tomcat直接访问webinfo里的jsp

    <servlet> <servlet-name>requestScope.jsp</servlet-name> <jsp-file>/WEB-INF/r ...

  3. 获取url传的参数转变为对象的方法

    function GetRequest() { var url = location.search; //获取url中"?"符后的字串 var theRequest = new O ...

  4. maya安装不了

    AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...

  5. Sublime_text 3 安装 Package Control

    作者博文地址:https://www.cnblogs.com/liu-shuai/ 一.自动安装: 1.通过快捷键 ctrl+` 或者 View > Show Console 菜单打开控制台 2 ...

  6. Python列表边遍历边修改问题解决方案:alist[:]

    最近在看python,遇到个简单的问题:删除列表中指定的重复元素,发现一些实用并且有趣的东西. 1.错误示范 alist = [1,1,2,2,3,3,2,2,1,1] for i in alist: ...

  7. GCC & Maker

    All we did must depend on compiler, and then What we did can run on machine. What does compiler do b ...

  8. android ContentProvider共享数据

    ContentProvider共享数据 ContentProvider对外共享数据需要: 1.定义一个ContentProvider类,需要继承android的ContentProvider基类 2. ...

  9. 最小正子序列(序列之和最小,同时满足和值要最小)(数据结构与算法分析——C语言描述第二章习题2.12第二问)

    #include "stdio.h" #include "stdlib.h" #define random(x) (rand()%x) void creat_a ...

  10. 进一步了解this和super

    知乎上看到一问题很好,拿了与大家分享,原地址:https://www.zhihu.com/question/31548104. 问: JAVA 中this 和super与覆写冲突的问题? 实例一: 输 ...