Yarn下分片和分块源代码分析
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下分片和分块源代码分析的更多相关文章
- 【转载】linux环境下tcpdump源代码分析
linux环境下tcpdump源代码分析 原文时间 2013-10-11 13:13:02 CSDN博客 原文链接 http://blog.csdn.net/han_dawei/article/d ...
- linux环境下tcpdump源代码分析
Linux 环境下tcpdump 源代码分析 韩大卫@吉林师范大学 tcpdump.c 是tcpdump 工具的main.c, 本文旨对tcpdump的框架有简单了解,只展示linux平台使用的一部分 ...
- Flink on Yarn模式启动流程源代码分析
此文已由作者岳猛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Flink on yarn的启动流程可以参见前面的文章 Flink on Yarn启动流程,下面主要是从源码角 ...
- Android4.42-Setting源代码分析之蓝牙模块Bluetooth(下)
接着上一篇Android4.42-Settings源代码分析之蓝牙模块Bluetooth(上) 继续蓝牙模块源代码的研究 THREE.蓝牙模块功能实现 switch的分析以及本机蓝牙重命名和可见性的分 ...
- MapReduce源代码分析之JobSubmitter(一)
JobSubmitter.顾名思义,它是MapReduce中作业提交者,而实际上JobSubmitter除了构造方法外.对外提供的唯一一个非private成员变量或方法就是submitJobInter ...
- 转:RTMPDump源代码分析
0: 主要函数调用分析 rtmpdump 是一个用来处理 RTMP 流媒体的开源工具包,支持 rtmp://, rtmpt://, rtmpe://, rtmpte://, and rtmps://. ...
- Hadoop源代码分析
http://wenku.baidu.com/link?url=R-QoZXhc918qoO0BX6eXI9_uPU75whF62vFFUBIR-7c5XAYUVxDRX5Rs6QZR9hrBnUdM ...
- Kafka 源代码分析之LogManager
这里分析kafka 0.8.2的LogManager logmanager是kafka用来管理log文件的子系统.源代码文件在log目录下. 这里会逐步分析logmanager的源代码.首先看clas ...
- Yarn下Map数控制
public List<InputSplit> getSplits(JobContext job) throws IOException { long minSize = Math.max ...
随机推荐
- jquery 写ajax
function down(t){ $.ajax({ url : 'selectWordDate', data : { date_time : t }, dataType : 'json' ...
- RTT设备与驱动之硬件定时器
硬件定时器可以对外部时钟进行计数,利用内部时钟进行定时. 函数 描述 rt_device_t rt_device_find(const char* name); 查找定时器设备 rt_err_t rt ...
- [转]jQuery TextBox Water Mark with asp.net
本文转自:http://naspinski.net/post/jQuery-TextBox-Water-Mark-with-aspnet.aspx I stole majority of this c ...
- 监听outlook新邮件
using System; using System.Linq; using Microsoft.Office.Interop.Outlook; using System.Collections.Ge ...
- spring boot 配置redis
先配置属性: # database name spring.redis.database=0 # server host spring.redis.host=127.0.0.1 # server pa ...
- C++中string erase函数的使用
erase函数的原型如下:(1)string& erase ( size_t pos = 0, size_t n = npos );(2)iterator erase ( iterator p ...
- 浅析正则表达式模式匹配的 String 方法
在JavaScript代码中使用正则表达式进行模式匹配经常会用到String对象和RegExp对象的一些方法,例如replace.match.search等方法,以下是对一些方法使用的总结. Stri ...
- poj 1741 两点距离小于K(树DP)
http://blog.csdn.net/woshi250hua/article/details/7723400 求两点间距离小于等于k的方案数 理一下思路: 求通过点A与另一点连接符合条件的个数 = ...
- intellijidea课程 intellijidea神器使用技巧 5-2 localhistory
Ctrl shift A ==>localhistory ==> show history 查看文件本地历史记录(idea每次修改在本地会生成历史记录) Ctrl shift A == ...
- 安装BI Publisher Desktop报错:“Template Builder Installer Failed:Unexpected Error”
原因:office的版本未安装正确,应该安装X86版本的,如果是X64的会出现,重新安装X86版本的office后解决问题.