为了账号安全,请及时绑定邮箱和手机立即绑定

Hadoop技术内幕:深入解析Hadoop和HDFS 1.3准备 Hadoop 源代码

标签:
Hadoop

在 Hadoop 的官方网站(http://hadoop.apache.org/)中,可以找到 Hadoop 项目相关的信

息,如图 1-14 所示

webp

图 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 所示

webp

图 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 所示。

webp

图 1-16 创建 Eclipse 项目文件

注意 该过程需要使用 UNIX 的在线编辑器 sed,所以一定要在 Cygwin 环境里执行上述命

令,否则会出错。

命令运行结束后,就可以在 Eclipse 中创建项目了。打开 Eclipse 的 File New JavaProject,创建一个新的 Java 项目,选择项目的位置为 Hadoop 的根目录,即 E:hadoop-1.0.0,然后单击“Finish”按钮,就完成了 Eclipse 项目的创建,如图 1-17 所示。

webp

图 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 项目的任务就完成了。

webp

图 1-18 创建 ANT_HOME 变量

webp

图 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

等模块的单元测试代码。

webp

图 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等。




作者:爱我的程序人生
链接:https://www.jianshu.com/p/76a17f3c1982


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消