
Hadoop源码分析
文章平均质量分 88
海兰
正在构思中
展开
-
第二部分 Common的实现 第2章 Hadoop配置信息处理 2.1 配置文件简介
《Hadoop技术内幕:深入解析Hadoop Common和HDFS架构设计与实现原理》第2章Hadoop配置信息处理,本章从Windows和基于Java Properties配置文件开始,分析了Hadoop使用的基于健–值对构成的、结构相对简单的XML配置文件,以及相应的处理类Configuration,特别是Configuration类中的资源加载、资源合并和属性扩展等比较重要的处理过程。转载 2013-07-18 11:17:08 · 2045 阅读 · 1 评论 -
[hadoop2.7.1]I/O之SequenceFile最新API编程实例(写入、读取)
根据上一篇的介绍,在hadoop2.x之后,hadoop中的SequenceFile.Writer将会逐渐摒弃大量的createWriter()重载方法,而整合为更为简洁的createWriter()方法,除了配置参数外,其他的参数统统使用SequenceFile.Writer.Option来替代,具体有:这些参数能够满足各种不同的需要,参数之间不存在顺序关系,这样减少了代码编写工作量,更为直观,便于理解,下面先来看看这个方法,后边将给出一个具体实例。原创 2015-11-06 22:13:34 · 6204 阅读 · 4 评论 -
[hadoop2.7.1]I/O之MapFile(排过序的SequenceFile)读、写、重建index实例
MapFile是排序后的SequenceFile,MapFile由两部分组成,分别是data和index。index文件的数据索引,主要记录了每个Record的key值,以及该Record在文件中的偏移位置。在MapFile被访问的时候,索引文件会被加载到内存,通过索引映射关系可迅速定位到指定Record所在文件位置,因此,相对SequenceFile而言,MapFile的检索效率是高原创 2015-11-08 10:02:53 · 2495 阅读 · 1 评论 -
[hadoop2.7.1]I/O之Writable的实现类及子接口
Hadoop引入org.apache.hadoop.io.Writable接口,是所有可序列化对象必须实现的接口。在hadoop2.71.中,它共有6个子接口。 WritableComparable,顾名思义,它提供类型比较的能力,WritableComparables 能够通过 Comparators进行互相比较。主要是针对MapReduce而设计的,中间有个排序很重要。在 Hadoop Map-Reduce framework中,任何key值类型都要实现这个接口。原创 2015-10-20 14:21:58 · 2423 阅读 · 4 评论 -
[hadoop2.7.1]I/O之一步一步解析Text(实例)
通过上一篇的讲述,我们知道hadoop中的Text类,跟java中的String类很相似,在其定义的方法上,也多有相近之处,当然,由于用途、UTF编码的不同,两者之间还是有很大的区别。下面要讲实例除了测试Text的方法之外,着重跟java.lang.String进行比较。首先,我们先写生成String串的方法注意:默认的equals方法是直接返回==的结果,所以也是比较数组是否是同一个,等同于使用==比较,是两个数组是否是同一个,而不是是否相等。原创 2015-11-04 16:36:33 · 3312 阅读 · 0 评论 -
[hadoop2.7.1]I/O之压缩
先来看下类图:原创 2015-11-13 13:41:26 · 1293 阅读 · 0 评论 -
[hadoop2.7.1]I/O之一步一步解析Text(基础知识及与String比较)
hadoop中的Text类,跟java中的String类很相似,在其定义的方法上,也多有相近之处,当然,由于用途的不同,两者之间还是有很大的区别的,那么,在分析Text类之前,先来回顾下java.lang.String类。hadoop中的Text类和java中的String类都是使用标准的Unicode,但是在编码方式上却有不同之处,hadoop中的Text类使用UTF-8,而java中的String类使用的是UTF-16。接下来,对于Unicode做一个较为详细的阐述。原创 2015-11-03 15:33:22 · 5250 阅读 · 0 评论 -
[hadoop2.7.1]I/O之“泥坯块”SequenceFile前序知识
概述 SequenceFile由一系列的二进制key/value组成,如果为key小文件名,value为文件内容,则可以将大批小文件合并成一个大文件。可以看做是一个容器,它将这些小文件组织起来统一存储。 为什么要这么做呢? 首先要了解,在这里小文件是指文件size比HDFS上block size(hadoop中默认为64M)小的文件,可能会小得多。下面从处理性能和存储能力两个方面分别进行解析。原创 2015-11-05 17:21:14 · 2363 阅读 · 0 评论 -
[hadoop2.7.1]I/O之序列化(serializer)
先来看下org.apache.hadoop.io.serializer的类图(hadoop2.7.1):原创 2015-12-03 10:33:36 · 2535 阅读 · 0 评论 -
[hadoop2.7.1]I/O之序列化(WritableSerialization)示例
首先先引入hadoop2.7.1中的一个工具类GenericsUtil,顾名思义,是用来处理java泛型的一个工具类,这个类很简单,但很实用。原创 2015-12-11 15:38:34 · 1621 阅读 · 0 评论 -
[hadoop2.7.1]I/O之tfile
在这儿做个记录吧org.apache.hadoop.io.file.tfile.TFile@Public@EvolvingA TFile is a container of key-value pairs. Both keys and values are type-less bytes. Keys are restricted to 64KB, value length原创 2015-12-03 09:35:42 · 1390 阅读 · 0 评论 -
[hadoop2.7.1]I/O之Writable源码及相关注解
由于Hadoop的MapReduce和HDFS都有通信的需求,需要对通信的对象进行序列化。Hadoop并没有采用Java的序列化,而是基于java.io里的DataOutput和DataInput引入了它自己的系统,一个简单高效的序列化协议。org.apache.hadoop.io中定义了大量的可序列化对象,他们都实现了Writable接口。原创 2015-10-16 09:31:19 · 1837 阅读 · 0 评论 -
[hadoop2.7.1]I/O之IntWritable测试实例(详尽)
用到的工具:hamcrest,junitIDE:MyEclipse 2013 SR1原创 2015-11-01 14:27:37 · 2689 阅读 · 0 评论 -
DOM操作XML文档
源代码:package com.st.demo; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.Docu原创 2013-07-23 12:38:32 · 1293 阅读 · 0 评论 -
2.3 Configurable接口
2.3 Configurable接口Configurable是一个很简单的接口,也位于org.apache.hadoop.conf包中,其类图如图2-3所示。从字面理解,Configurable的含义是可配置的,如果一个类实现了Configurable接口,意味着这个类是可配置的。也就是说,可以通过为这个类的对象传入一个Configuration实例,提供对象工作需转载 2013-07-18 11:20:23 · 2093 阅读 · 1 评论 -
1.2 准备源代码阅读环境
1.2 准备源代码阅读环境在研究一个开源项目之前,都需要安装与配置基本的开发环境和源代码的阅读环境。这一系列内容包括:安装与配置JDK、安装开发调试IDE、安装与配置相关辅助工具等。1.2.1 安装与配置JDK在分析Hadoop的源代码前,需要做一些准备工作,其中搭建Java环境是必不可少的。Hadoop的运行环境要求Java 1.6以上的版本。打开http://www.o转载 2013-07-18 10:14:54 · 3490 阅读 · 2 评论 -
Hadoop技术内幕:深入解析Hadoop Common和HDFS架构设计与实现原理 第1章 源代码环境准备 1.1 什么是Hadoop
第一部分 环境准备本部分内容源代码环境准备第1章 源代码环境准备数据!数据!数据!今天,我们正被数据包围。全球43亿部电话、20亿位互联网用户每秒都在不断地产生大量数据,人们发送短信给朋友、上传视频、用手机拍照、更新社交网站的信息、转发微博、点击广告等,使得机器产生和保留了越来越多的数据。数据的指数级增长对处于市场领导地位的互联网公司,如Facebook、谷转载 2013-07-18 09:45:16 · 8202 阅读 · 1 评论 -
1.4 小结
1.4 小结大数据以及相关的概念、技术是业界和学界最近关注的热点内容,Hadoop在其中扮演了十分重要的角色。本节首先对Hadoop进行了简单的介绍,展示了蓬勃发展的Hadoop生态系统和Hadoop的简单历史。并在此基础上,向读者介绍了阅读分析Hadoop所必需的开发环境的搭建过程,包括:安装与配置JDK、安装与配置Eclipse、安装与配置辅助工具的工作。最后,在上述环境中,从零开始建转载 2013-07-18 11:14:23 · 1898 阅读 · 3 评论 -
2.4 小结
2.4 小结配置系统是复杂软件必不可少的一部分,作为Hadoop Common部分介绍的第一个组件,org.apache.hadoop.conf.Configuration在Hadoop各个子项目中发挥着重要的作用。本章从Windows和基于Java Properties配置文件开始,分析了Hadoop使用的基于健–值对构成的、结构相对简单的XML配置文件,以及相应的处理类Configur转载 2013-07-18 11:21:30 · 1568 阅读 · 2 评论 -
第3章 序列化与压缩 3.1序列化
《Hadoop技术内幕:深入解析Hadoop Common和HDFS架构设计与实现原理》第3章序列化与压缩,本章涉及了org.apache.hadoop.io包下最重要的两部分内容:序列化和压缩。本节为大家介绍序列化。第3章 序列化与压缩传统的计算机系统通过I/O操作与外界进行交流,Hadoop的I/O由传统的I/O系统发展而来,但又有些不同,Hadoop需要处理P、T级别的数转载 2013-07-19 08:28:06 · 2495 阅读 · 1 评论 -
3.2 压缩
3.2 压缩一般来说,计算机处理的数据都存在一些冗余度,同时数据中间,尤其是相邻数据间存在着相关性,所以可以通过一些有别于原始编码的特殊编码方式来保存数据,使数据占用的存储空间比较小,这个过程一般叫压缩。和压缩对应的概念是解压缩,就是将被压缩的数据从特殊编码方式还原为原始数据的过程。压缩广泛应用于海量数据处理中,对数据文件进行压缩,可以有效减少存储文件所需的空间,并加快数据在网络上转载 2013-07-19 08:32:32 · 2183 阅读 · 1 评论 -
3.3 小结
3.3 小结本章涉及了org.apache.hadoop.io包下最重要的两部分内容:序列化和压缩。序列化广泛应用于分布式数据处理中,是交换数据必备的能力。Hadoop没有使用Java内建的序列化机制,而是引入了紧凑、快速、轻便和可扩展的Writable接口。Writable接口通过write()和readFields()方法声明了序列化和反序列化的功能。在此基础上,分析了Writ转载 2013-07-19 08:33:21 · 1219 阅读 · 0 评论 -
1.3 准备Hadoop源代码
1.3 准备Hadoop源代码在Hadoop的官方网站(http://hadoop.apache.org/)中,可以找到Hadoop项目相关的信息,如图1-14所示。 1.3.1 下载Hadoop前面在介绍Hadoop生态系统的时候,已经了解到Hadoop发展初期的系统中包括Common(开始使用的名称是Core)、HDFS和MapReduce三部分,现转载 2013-07-18 10:43:50 · 6041 阅读 · 0 评论 -
2.2 Hadoop Configuration详解
2.2 Hadoop Configuration详解Hadoop没有使用java.util.Properties管理配置文件,也没有使用Apache Jakarta Commons Configuration管理配置文件,而是使用了一套独有的配置文件管理系统,并提供自己的API,即使用org.apache.hadoop.conf.Configuration处理配置信息。2.2.1转载 2013-07-18 11:19:35 · 30102 阅读 · 5 评论 -
[hadoop2.7.2]搭建eclipse源码阅读环境
有的小伙伴在问我如何在windows下搭建一个eclipse的hadoop源码阅读环境,今天就以hadoop2.7.2为例,简单介绍下如何搭建。环境及工具如下:1、系统:windows72、eclipse版本:eclipse-jee-mars-1-win323、jdk版本:1.74、maven版本:3.3.35、protoc版本:2.5.06、hadoop:2.7.2原创 2016-03-03 14:42:54 · 4831 阅读 · 2 评论