Hadoop2源码分析-准备篇
1.概述
我们已经能够搭建一个高可用的Hadoop平台了,也熟悉并掌握了一个项目在Hadoop平台下的开发流程,基于Hadoop的一些套件我们也能够使用,并且能利用这些套件进行一些任务的开发。在Hadoop的应用级别上,我们接着往后面去研究学习,那就是Hadoop的源码了,作为Hadoop开发人员,我们得去学习和研究Hadoop得实现原理,底层框架的设计,编码的实现过程等等,下面就开始我们今天的Hadoop源码分析之旅。
2.准备
在分析源码之前,我们需要准备好分析源码的环境,以及如何去分析(分析的方法)。
2.1基础环境
本系列分析的源码是基于Hadoop-2.6.0-src,源码下载地址如下:
http://apache.osuosl.org/hadoop/common/hadoop-2.6.0/hadoop-2.6.0-src.tar.gz
JDK使用的是Oracle的JDK1.7,下载地址如下:
- Windows版下载地址:
http://download.oracle.com/otn-pub/java/jdk/7u75-b13/jdk-7u75-windows-x64.exe
- Linux版下载地址:
http://download.oracle.com/otn-pub/java/jdk/7u75-b13/jdk-7u75-linux-x64.tar.gz
Mac OS X版下载地址:
http://download.oracle.com/otn-pub/java/jdk/7u75-b13/jdk-7u75-macosx-x64.dmg
2.2操作系统
目前主流的3种操作系统,Windows,Linux,Mac OS X;下面依次来说明不同环境下的配置。
- Windows
直接安装下的 jdk-7u75-windows-x64.exe 文件,一路默认安装即可,安装完成后在 cmd 下输入 java -verison 若显示对应的版本好,即表示安装成功。若出现 “java 不是内部或外部命令”的错误提示,可在 Windows 的环境变量下设置JAVA_HOME,和PATH以及CLASSPATH等环境变量即可。如下图所示:
注:例外还需要Maven环境,和Linux壳,下载IDE(下面Mac OS X环境中提供的IDE,Windows也可以使用),这里不做赘述。
- Linux
Linux采用的是CentOS 6,由于Linux自带JDK,本文使用的Oracle的JDK,故我们先卸载系统自带的JDK,安装我们下载好的 jdk-7u75-linux-x64.tar.gz,具体步骤命令如下:
# 卸载自带JDK
rpm -qa | grep java
yum -y remove java*
在使用rpm -qa | grep java命令,查找JDK信息,若没有则表示卸载完成。接着是安装下载好的JDK,首先是解压并创建目录,命令如下所示:
tar -zxvf jdk-7u75-linux-x64.tar.gz
mkdir -p /usr/java && mv jdk-7u75-linux-x64 /usr/java/jdk1.
然后配置环境变量,内容如下:
export JAVA_HOME=/usr/java/jdk1.
export PATH=$PATH:$JAVA_HOME/bin
然后输入命令让环境变量立即生效,命令如下:
. /etc/profile
接着,我们输入:java -version 验证即可。
注:Linux环境下同样需要配置Maven环境,IDE可以使用下面Mac OS X的IDE。
- Mac OS X
Mac系统下面直接安装下载好的dmg文件,安装文件路径如图所示:
验证截图:
安装Maven环境:
下载地址如下所示:
安装命令如下所示:
$ cd /usr/local
$ sudo mv /Users/dengjie/Downloads/apache-maven-3.2.-bin.tar.gz ./
$ sudo tar -xvf apache-maven-3.2.-bin.tar.gz
配置:
$ vi /etc/profile
#Add below lines in the profile
export M2_HOME=/usr/local/apache-maven-3.2.
export PATH=$PATH:$M2_HOME/bin
#save and quit
$ . /etc/profile
验证截图:
IDE
IDE使用Redhat公司推出的JBoss Studio(Eclipse的升级版),下载地址如下:
JBoss Developer Studio 8.0.0.GA
3.源码准备
Hadoop2的源码分析,整个流程都是基于Mac OS X系统下来完成的。Linux系统基本配置可以参考Mac OS X配置,Windows系统IDE可以使用JBoss Studio(需要Windows系统下安装JDK)。
首先我们来预览一下Hadoop-2.6.0-src的源码目录结构,如下图所示:
3.1项目构建
分析hadoop2源码的方式有2种,一种方式是使用maven结构来分析阅读Hadoop的源码,另一种方式使用一般的Java Project来分析阅读。首先先赘述下一般的Java Project创建Hadoop的源码分析工程。如下图所示:
- Java Project
在完成Hadoop的源码导入后,我们还需要添加一些依赖 jar 包,在直接在Hadoop-2.6.0的share/hadoop目录下将依赖包取出添加到IDE环境变量。如下图所示:
另外,若需要的依赖 jar 不存在,可在Hadoop共享的Maven仓库去下载对应的依赖 jar,下载地址:
http://maven.outofmemory.cn/org.apache.hadoop/
- Maven结构
若使用Maven结构,可直接导入Hadoop的源码文件,Hadoop-2.6.0-src工程就算Maven结构的。导入过程如下图所示:
在点击 Finish 按钮后,会根据 pom.xml 文件中的依赖下载对应的 jar 到本地Maven仓库,首次导入需要下载的依赖 jar 包较多,时间会有点长,请耐心等待下载完成。
4.总结
整个Hadoop2源码的项目导入完成后,将近有100子项目,由于项目文件较多,在分析阅读的时候需要认真谨慎。在导入Hadoop2源码到IDE中的时候,项目结构我给出了2种方式:一般的Java Project结构和Maven结构,当然这个是可以根据自己实际情况来考虑,若是对Maven结构不熟悉的同学,可以直接使用一般的Java Project工程结构来分析Hadoop2的源码,这个是不影响学习源码分析的;若是对Maven结构敢兴趣,也可自行使用Maven结构来学习源码分析。
5.结束语
这篇Hadoop2源码分析的准备篇就和大家分享到这里,若是在大家在学习研究的过程中有什么问题,可以加群进行讨论或发送邮件给我,我会尽我所能为您解答,与君共勉!
Hadoop2源码分析-准备篇的更多相关文章
- Hadoop2源码分析-MapReduce篇
1.概述 前面我们已经对Hadoop有了一个初步认识,接下来我们开始学习Hadoop的一些核心的功能,其中包含mapreduce,fs,hdfs,ipc,io,yarn,今天为大家分享的是mapred ...
- Hadoop2源码分析-YARN 的服务库和事件库
1.概述 在<Hadoop2源码分析-YARN RPC 示例介绍>一文当中,给大家介绍了YARN 的 RPC 机制,以及相关代码的演示,今天我们继续去学习 YARN 的服务库和事件库,分享 ...
- Hadoop2源码分析-YARN RPC 示例介绍
1.概述 之前在<Hadoop2源码分析-RPC探索实战>一文当中介绍了Hadoop的RPC机制,今天给大家分享关于YARN的RPC的机制.下面是今天的分享目录: YARN的RPC介绍 Y ...
- Hadoop2源码分析-HDFS核心模块分析
1.概述 这篇博客接着<Hadoop2源码分析-RPC机制初识>来讲述,前面我们对MapReduce.序列化.RPC进行了分析和探索,对Hadoop V2的这些模块都有了大致的了解,通过对 ...
- Hadoop2源码分析-RPC探索实战
1.概述 在<Hadoop2源码分析-RPC机制初识>博客中,我们对RPC机制有了初步的认识和了解,下面我们对Hadoop V2的RPC机制做进一步探索,在研究Hadoop V2的RPC机 ...
- Hadoop2源码分析-RPC机制初识
1.概述 上一篇博客,讲述Hadoop V2的序列化机制,这为我们学习Hadoop V2的RPC机制奠定了基础.RPC的内容涵盖的信息有点多,包含Hadoop的序列化机制,RPC,代理,NIO等.若对 ...
- Android事件传递机制详解及最新源码分析——ViewGroup篇
版权声明:本文出自汪磊的博客,转载请务必注明出处. 在上一篇<Android事件传递机制详解及最新源码分析--View篇>中,详细讲解了View事件的传递机制,没掌握或者掌握不扎实的小伙伴 ...
- JUC源码分析-集合篇:并发类容器介绍
JUC源码分析-集合篇:并发类容器介绍 同步类容器是 线程安全 的,如 Vector.HashTable 等容器的同步功能都是由 Collections.synchronizedMap 等工厂方法去创 ...
- JUC源码分析-集合篇(十)LinkedTransferQueue
JUC源码分析-集合篇(十)LinkedTransferQueue LinkedTransferQueue(LTQ) 相比 BlockingQueue 更进一步,生产者会一直阻塞直到所添加到队列的元素 ...
随机推荐
- HTML5表单新属性
HTML5表单新属性 autofocus 自动聚焦 <input type="text" autofocus> placeholder占位文本 tel ...
- (多重背包)hdu--2191--悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
Problem Description 急!灾区的食物依然短缺!为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品, ...
- POJ3273--Monthly Expense(Binary Search)
Description Farmer John is an astounding accounting wizard and has realized he might run out of mone ...
- java基础-day26
第03天 java基础加强 今日内容介绍 u BeanUtils概述及使用 u XML简介及约束 u XML解析 第1章 XML简介 1.1 XML基本语法 1.1.1 XML概述 XML全称为 ...
- Linux 修改默认的 yum 源
官方的yum源在国内访问效果不佳. 需要改为国内比较好的阿里的 yum源,因为每次装的时候都得百度,所以这里记录一下. 修改方式: 1)cd /etc/yum.repos.d/ 这个目录下普通用户可能 ...
- hdu 5073 有坑+方差贪心
http://acm.hdu.edu.cn/showproblem.php?pid=5073 就是给你 n 个数,代表n个星球的位置,每一个星球的重量都为 1 开始的时候每一个星球都绕着质心转动,那么 ...
- hdu4048
题意:给定m个数,还有n,n表示有一个长度为n的环,现在要求从M个数中选出若干个数,要求选出的数最大公约数为1,填充在n个位置中,选出的数可以重复,求多少种种方案.旋转当成一样的 . 思路:假设现在选 ...
- poj2094
很不错的一道题,很让我见识到了差分序列的运用的神奇之处..一下是从北邮BBS看到的题解,写得很清楚..这边就直接转过来. uRLhttp://bbs.byr.cn/#!article/ACM_ICPC ...
- [翻译]第二天 - Visual Studio 中的 .NET Core 模版一览
原文: http://michaelcrump.net/part2-aspnetcore/ 免责声明:我不是 .NET Core 开发团队的一员,并且使用的是公开.可用的工具. 简介 该系列文章的完整 ...
- 【VB.NET】利用 ZXing.Net 生成二维码(支持自定义LOGO)
有任何疑问请去我的新博客提出 https://blog.clso.fun/posts/2019-03-03/vb-net-zxing-net-qr-maker.html ZXing .NET 的项目主 ...