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. Tomcat在处理GET和POST请求时产生的乱码问题

    最近一直在做关于Servlet的事情,常常出现乱码,很是烦人,处理乱码的方法有时候有效,有时候没有效果,今天抽个时间小结一下,以防以后再出现这种问题. 一般的处理乱码的方式都是用: request.s ...

  2. VBS 学习

    VBS其他功能 获取系统用户名 DimWshNetwork Set WshNetwork =CreateObject("WScript.Network") strTaccount ...

  3. javascript获取浏览器高度与宽度信息

    网页可见区域宽:document.body.clientWidth网页可见区域高:document.body.clientHeight网页可见区域宽:document.body.offsetWidth ...

  4. inventor安装失败怎样卸载安装inventor 2018?

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

  5. 性能测试工具LoadRunner26-LR之lr脚本插入DOS命令

    基础命令 1.dir 无参数:查看当前所在目录的文件和文件夹 /s:查看当前目录其所有子目录的文件和文件夹 /a:查看包括隐含文件的所有文件 /ah:只显示隐含文件 /w:以紧凑方式显示文件和文件夹 ...

  6. (转)AIX 用户和组管理

    AIX 用户和组管理 原文:https://www.ibm.com/developerworks/cn/aix/library/au-aixuseradmin/ 管理 IBM AIX 中的用户和组是管 ...

  7. 打开/关闭网卡无线WIFI模块

    @echo off title ------(Please run as Administrators)Please select------ :begin echo ---------------- ...

  8. Web.Config详细说明

    (一).Web.Config是以XML文件规范存储,配置文件分为以下格式 1.配置节处理程序声明    特点:位于配置文件的顶部,包含在<configSections>标志中. 2.特定应 ...

  9. 粗看ES6之字符串

    标签: javascript es6 字符串新增特性 新增二个方法 - startsWith/endsWith 字符串模板 - 反单引号的应用 startsWith 判断字符串以是否以某某开头,返回一 ...

  10. 冒泡排序,冒泡性能优化--java实现

    冒泡排序说明: 一次比较两个元素,如果他们的顺序错误就把他们交换过来. 重复地进行直到没有再需要交换,也就是说已经排序完成. 越小的元素会经由交换慢慢“浮”到数列的顶端. 冒泡排序算法的运作如下: 比 ...