第1章 阅读源代码前的准备
一般而言,在深入研究一个系统的技术细节之前,先要进行一些基本的准备工作,比如,准备源代码阅读环境,搭建运行环境并尝试使用该系统等。对于Hadoop而言,由于它是一个分布式系统,且由多种守护进程组成,具有一定的复杂性,如果想深入学习其设计原理,仅仅进行以上几项准备工作是不够的,还要学习一些调试工具的使用方法,以便对Hadoop源代码进行调试、跟踪。边用边学,这样才能事半功倍。
本章的编写目的是帮助读者构建一个“高效”的Hadoop源代码学习环境,包括Hadoop源代码阅读环境、Hadoop使用环境和Hadoop源代码编译调试环境等,这主要涉及如下内容:
❑在Linux和Windows环境下搭建Hadoop源代码阅读环境的方法;
❑Hadoop的基本使用方法,主要包括Hadoop Shell和Eclipse插件两种工具的使用;
❑Hadoop源代码编译和调试方法,其中,调试方法包括使用Eclipse远程调试和打印调试日志两种。
考虑到大部分用户在单机上学习Hadoop源代码,所以本章内容均是基于单机环境的。本章大部分内容较为基础,已经掌握这部分内容的读者可以直接跳过本章。
1.1 准备源代码学习环境
对于大部分公司而言,实验和生产环境中的服务器集群部署的都是Linux操作系统。考虑到Linux在服务器市场中具有统治地位,Hadoop从一开始便是基于Linux操作系统开发的,因而对Linux有着非常完美的支持。尽管Hadoop采用了具有跨平台特性的Java作为主要编程语言,但由于它的一些功能实现用到了Linux操作系统相关的技术,因而对其他平台的支持不够友好,且没有进行过严格测试。换句话说,其他操作系统(如Windows)仅可作为开发环境[1],不可作为生产环境。对于学习源代码而言,操作系统的选择显得不是非常重要,读者可根据个人爱好自行决定。本节以64 bit Linux和32 bit Windows两种操作系统为例,介绍如何在单机上准备Hadoop源代码学习环境。
1.1.1 基础软件下载
前面提到Hadoop采用的开发语言主要是Java,因而搭建Hadoop环境所需的最基础的软件首先应该包括Java基础开发包JDK和Java编译工具Ant。考虑到源代码阅读和调试的便利性,本书采用功能强大的集成开发环境Eclipse。此外,如果读者选择Windows平台搭建学习环境,还需要安装Cygwin以模拟Linux环境,这是因为Hadoop采用Bash Shell脚本管理集群。搭建Hadoop阅读环境需要的各种软件以及下载方式如表1-1所示。
[1]截至本书结稿时,Apache Hadoop SVN中已经出现了针对Windows操作系统的分支,具体见http://svn.apache.org/repos/asf/hadoop/common/branches/下的branch-1-win和branch-trunk-win,且Hortonworks公司发布了Windows安装版本,具体见http://hortonworks.com/partners/microsoft/
[2]注意,Indigo及以上版本与Hadoop Eclipse插件可能存在兼容问题。