Hadoop 2.6.0 FileSplit和InputSplit和FileInputFormat

InputSplit 有三个方法

1.getLengh(),为了获取字节长度

2.getLocations(),获取地址,在哪个节点

3.该方法返回空,返回类型是可支持在内存中存储,或者磁盘存储。可以看出未来mapreduce有希望支持内存存储数据。

@Evolving

public SplitLocationInfo[] getLocationInfo() throws IOException {
return null;
}

--------------------------------分割线--------------------------------

FileSplit

1.属性如下:

private Path file;

private long start;
private long length;
private String[] hosts;
private SplitLocationInfo[] hostInfos;

序列化方法

@Override
public void readFields(DataInput in) throws IOException {
file = new Path(Text.readString(in));
start = in.readLong();
length = in.readLong();
hosts = null;
}

可以看出,序列化后读取,是不需要知道hosts的。

--------------------------------分割线--------------------------------

FileInputFormat类

getSplits方法:

1.首先获取文件

2.计算需要拆分成几个split

3.对每个split调用FileSplit构造函数

public FileSplit(Path file, long start, long length, String[] hosts,
String[] inMemoryHosts)

来设置split的信息

4.返回一个list

5.该list的size,是用来确定map任务数量的。

时间: 2024-12-29 13:59:52

Hadoop 2.6.0 FileSplit和InputSplit和FileInputFormat的相关文章

Hadoop 2.2.0 常见问题之:Ubuntu 64环境下“Unable to load native-hadoop library for your platform”问题”

问题 最近在学习Hadoop(2.2.0),打算写一个MapReduce的小程序在Ubuntu 64位的环境下测试一把,一切环境配置完毕后,执行的过程中,控制台输出下面的内容: WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 原因 在网上搜索了一番,得出如下结论: "The reason

Hadoop 2.6.0 重要特性之 Docker Container Executor (DCE)

Docker Container Executor (DCE) 是 Hadoop 2.6.0 包含的一个重要特性:至此,大数据的巨人 Hadoop 也终于可以利用当前虚拟化/云计算领域的宠儿 Docker 的强大能力了. 对于 Docker 概念介绍的文章已经非常多了,因此本文就不再赘述,仅仅直接引用 Hadoop 社区里对其的描述:"Docker (https://www.docker.io/) combines an easy-to-use interface to Linux contai

hadoop 2.6.0 安装过程

最近才开始接触hadoop,最先要做的当然是安装hadoop 了,在安装hadoop之前需要作以下的一些准备 一个linux 环境,我使用vmware的虚拟机环境安装了centos 这个请自己百度一下吧,确实是太大了 jdk 1.6 以上的linux安装包 hadoop 2.6.0的安装包 注意,我使用的64位的linux,所以用的Java是64位的安装包 http://pan.baidu.com/s/1kT3PYLL hadoop 集群支持三种模式 1.单机模式 2.伪分布是模式 3.完全分布

安装hadoop 2.2.0

安装环境为 CentOS 64位系统, 大概分下面几个步奏, 0. 安装JDK1. 配置SSH2. 配置/etc/hosts3. 拷贝hadoop包到没台机器上4. 修改hadoop配置文件5. 关闭每台机器的防火墙6. 格式化namenode7. 运行hadoop 详细说每个步奏, 0. 安装jdk 下载JDK到每台机器上,解压后在.bash_profile中设置JAVA_HOME环境变量为JDK目录 1. 配置SSH hadoop是master/slaver 结构,配置SSH使得从maste

Hadoop 2.4.0新特性介绍

在2014年4月7日,Apache发布了Hadoop 2.4.0 .相比于hadoop 2.3.0,这个版本有了一定的改进,突出的变化可以总结为下列几点(官方文档说明): 1 支持HDFS访问控制列表(ACL,Access Control Lists) 这个特性解决了在一定情况下,文件权限访问的权限问题.其机制是基于Linux文件访问权限的特征,如果你熟悉Linux的文件访问机制,你就不用再去理解HDFS文件访问的特性了. 有了ACL特性后,对HDFS文件系统就具有了良性的扩展特性.HDFS-4

Centos 6.5 X64 环境下编译 hadoop 2.6.0 --已验证

Centos 6.5 x64 hadoop 2.6.0 jdk 1.7 protobuf-2.5.0 maven-3.0.5 set environment export JAVA_HOME=/home/linux/jdk export CLASSPATH=JAVA_HOME/lib/tools.jar export PROTOC_HOME=/home/linux/protobuf export MAVEN_HOME=/home/linux/maven export PATH=$PROTOC_H

linux编译64bitHadoop (eg: ubuntu14.04 and hadoop 2.3.0)

Hadoop官网提供的编译好的hadoop-2.3.0.tar.gz二进制包是在32位系统上编译的,在64系统上运行会有一些错误,比如: WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 此时需要自行编译hadoop 2.30 源码.本人编译的hadoop 2.30的二进制包经实验证明可以

CentOS 6.4 64位 源码编译hadoop 2.2.0

CentOS 6.4 64位 源码编译hadoop 2.2.0 搭建环境:Centos 6.4 64bit 1.安装JDK 参考这里2.安装mavenmaven官方下载地址,可以选择源码编码安装,这里就直接下载编译好的wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.zip解压文件后,同样在/etc/profie里配置环境变量vim /etc/profieexport

hadoop 2.5.0安装和配置

安装hadoop要先做以下准备: 1.jdk,安装教程在 http://www.cnblogs.com/stardjyeah/p/4640917.html 2.ssh无密码验证,配置教程在 http://www.cnblogs.com/stardjyeah/p/4641524.html 3.linux静态ip配置,教程在 http://www.cnblogs.com/stardjyeah/p/4640691.html 准备好以后就可以进行hadoop 2.5.0安装和配置了 1)