在 Hadoop 的官方网站(http://hadoop.apache.org/)中,可以找到 Hadoop 项目相关的信
息,如图 1-14 所示
图 1-14 Apache Hadoop 官方网站
1.3.1 下载 Hadoop
前面在介绍 Hadoop 生态系统的时候,已经了解到 Hadoop 发展初期的系统中包括
Common(开始使用的名称是 Core)、HDFS 和 MapReduce 三部分,现在这些子系统都
已 经 独 立, 成 为 Apache 的 子 项 目。 但 在 Hadoop 1.0 的 发 行 包 中,Common、HDFS 和
MapReduce 还是打包在一起,我们只需要下载一个 hadoop-1.0.0.tar.gz 包即可。注意,
Hadoop 官方也提供 Subversion(SVN)方式的代码下载,SVN 地址为 http://svn.apache.org/repos/asf/hadoop/common/tags/release-0.1.0/。
熟悉 Subversion 的读者,也可以通过该地址下载 Hadoop1.0 版本代码,该 Tag 也包含了
上述三部分的代码。
Apache 提供了大量镜像网站,供大家下载它的软件和源码,上面提到的 hadoop-
1.0.0.tar.gz 的 一 个 下 载 地 址 为 http://apache.etoak.com/hadoop/common/hadoop-1.0.0,
如图 1-15 所示
图 1-15 Apache Hadoop 1.0 的一个下载页
该地址包含了 Hadoop 1.0 的多种发行方式,如 64 位系统上的 hadoop-1.0.0-1.adm64.rpm、不包含源代码的发行包 hadoop-1.0.0.bin.tar.gz 等。下载的 hadoop-1.0.0.tar.gz 是包括源代码的 Hadoop 发行包。
1.3.2 创建 Eclipse 项目
解压下载的 hadoop-1.0.0.tar.gz 包,假设解压后 Hadoop 的根目录是 E:hadoop-1.0.0,启动 Cygwin,进入项目的根目录,我们开始将代码导入 Eclipse。Hadoop 的 Ant 配置文件build.xml 中提供了 eclipse 任务,该任务可以为 Hadoop 代码生成 Eclipse 项目文件,免去创建 Eclipse 项目所需的大量配置工作。只需在 Cygwin 下简单地执行“ant eclipse”命令即可,如图 1-16 所示。
图 1-16 创建 Eclipse 项目文件
注意 该过程需要使用 UNIX 的在线编辑器 sed,所以一定要在 Cygwin 环境里执行上述命
令,否则会出错。
命令运行结束后,就可以在 Eclipse 中创建项目了。打开 Eclipse 的 File → New → JavaProject,创建一个新的 Java 项目,选择项目的位置为 Hadoop 的根目录,即 E:hadoop-1.0.0,然后单击“Finish”按钮,就完成了 Eclipse 项目的创建,如图 1-17 所示。
图 1-17 创建 Eclipse 项目
完成上述工作以后,Eclipse 提示一个错误 :“Unbound classpath variable: 'ANT_HOME/
lib/ant.jar' in project 'hadoop-1.0.0'”。
显然,我们需要设置系统的 ANT_HOME 变量,让 Eclipse 能够找到编译源码需要的
Ant 库,选中项目,然后打开 Eclipse 的 Project → Properties → Java Build Path,在 Libraries页编辑(单击“Edit”按钮)出错的项:ANT_HOME/lib/ant.jar,创建变量 ANT_HOME(在接下来第一个对话框里单击“Varliable”,第二个对话框里单击“New”按钮),其值为 Ant的安装目录,如图 1-18 所示。
由于本书只分析 Common 和 HDFS 两个模块,在 Project → Properties → Java Build Path
的 Source 页只保留两个目录,分别是 core 和 hdfs,如图 1-19 所示。
完成上述操作以后,创建 Eclipse 项目的任务就完成了。
图 1-18 创建 ANT_HOME 变量
图 1-19 保留 core 和 hdfs 两个源码目录
1.3.3 Hadoop 源代码组织
打开已经解压的 Hadoop 1.0 源代码,进入 src 目录,该目录包含了 Hadoop 中所有的代
码,如图 1-20 所示。
前面已经提到过,Hadoop 1.0 的发行包中,Common、HDFS 和 MapReduce 三个模块还
是打包在一起的,它们的实现分别位于 core、hdfs 和 mapred 子目录下。源代码目录 src 下还有若干值得关注的子目录,具体如下。
❑tools :包含 Hadoop 的一些实用工具的实现,如存档文件 har、分布式拷贝工具 distcp、MapReduce 执行情况分析工具 rumen 等。
❑benchmarks :包含对 Hadoop 进行性能测试的两个工具 gridmix 和 gridmix2,通过这
些工具,可以测试 Hadoop 集群的一些性能指标。
❑c++:需要提及的是 libhdfs,它通过 Java 的 C 语言库界面,实现了一套访问 HDFS 的 C 接口。
❑examples :为开发人员提供了一些使用 Hadoop 的例子,不过这些例子只涉MapReduce 的 API,本书中不会讨论这部分内容。
❑contrib:是 contribution 的缩写,包含大量 Hadoop 辅助模块的实现,如在亚马逊弹性 计算云上部署、运行 Hadoop 所需的脚本就在 contribec2 目录下。
❑test :包含项目的单元测试用例,在该目录中能找到 Common、HDFS 和 MapReduce ❑
等模块的单元测试代码。
图 1-20 Hadoop 源码组织
1.4 小结
大数据以及相关的概念、技术是业界和学界最近关注的热点内容,Hadoop 在其中扮演
了十分重要的角色。本节首先对 Hadoop 进行了简单的介绍,展示了蓬勃发展的 Hadoop 生
态系统和 Hadoop 的简单历史。并在此基础上,向读者介绍了阅读分析 Hadoop 所必需的开
发环境的搭建过程,包括:安装与配置 JDK、安装与配置 Eclipse、安装与配置辅助工具的工
作。最后,在上述环境中,从零开始建立了一个包含 Hadoop Common 和 HDFS 的源码环境,
为进一步学习 Hadoop 源代码做好准备。
这是给大家做的一个《Hadoop技术内幕》的分享,这本书是由我们的蔡斌和陈湘萍著作,大家想学Hadoop的可以在网上找这本书。
后续还会给大家上,敬请期待。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。 Hadoop也是后面其他技术的基础,学好了Hadoop才能更好地学好hive,hbase,spark,storm等。
【1】大家想了解Hadoop知识可以,关注我下方评论转发后,私信“资料”。
【2】部分资料有时间限制,抓紧时间吧!
感谢大家的支持!
网友评论