1、12.1 在 Linux 上安装与配置 Hadoop 在 Linux 上安装 Hadoop 之前,需要先安装两个程序:JDK 1.6 或更高版本;SSH(安全外壳协议),推荐安装 OpenSSH。下面简述一下安装这两个程序的原因:Hadoop 是用 Java 开发的,Hadoop 的编译及 MapReduce 的运行都需要使用 JDK。Hadoop 需要通过 SSH 来启动 salve 列表中各台主机的守护进程,因此 SSH 也是必须安装的,即使是安装伪分布式版本(因为 Hadoop 并没有区分集群式和伪分布式)。对于伪分布式,Hadoop 会采用与集群相同的处理方式,即依次序启动文件 con
2、f/slaves 中记载的主机上的进程,只不过伪分布式中 salve 为 localhost(即为自身),所以对于伪分布式 Hadoop,SSH 一样是必须的。2.1.1 安装 JDK 1.6安装 JDK 的过程很简单,下面以 Ubuntu 为例。(1)下载和安装 JDK确保可以连接到互联网,输入命令:sudo apt-get install sun-java6-jdk输入密码,确认,然后就可以安装 JDK 了。这里先解释一下 sudo 与 apt 这两个命令,sudo 这个命令允许普通用户执行某些或全部需要root 权限命令,它提供了详尽的日志,可以记录下每个用户使用这个命令做了些什么操作;
3、同时 sudo 也提供了灵活的管理方式,可以限制用户使用命令。sudo 的配置文件为/etc/sudoers。apt 的全称为 the Advanced Packaging Tool,是 Debian 计划的一部分,是 Ubuntu 的软件包管理软件,通过 apt 安装软件无须考虑软件的依赖关系,可以直接安装所需要的软件,apt 会自动下载有依赖关系的包,并按顺序安装,在 Ubuntu 中安装有 apt 的一个图形化界面程序synaptic(中文译名为“新立得”),大家如果有兴趣也可以使用这个程序来安装所需要的软件。(如果大家想了解更多,可以查看一下关于 Debian 计划的资料。)(2)配置
4、环境变量输入命令:2sudo gedit /etc/profile输入密码,打开 profile 文件。在文件的最下面输入如下内容:#set Java Environmentexport JAVA_HOME= (你的 JDK 安装位置,一般为/usr/lib/jvm/java-6-sun)export CLASSPATH=“.:$JAVA_HOME/lib:$CLASSPATH“export PATH=“$JAVA_HOME/:$PATH“这一步的意义是配置环境变量,使你的系统可以找到 JDK。(3)验证 JDK 是否安装成功输入命令:java -version查看信息:java versio
5、n “1.6.0_14“Java(TM) SE Runtime Environment (build 1.6.0_14-b08)Java HotSpot(TM) Server VM (build 14.0-b16, mixed mode)2.1.2 配置 SSH 免密码登录同样以 Ubuntu 为例,假设用户名为 u。1)确认已经连接上互联网,输入命令sudo apt-get install ssh2)配置为可以无密码登录本机。首先查看在 u 用户下是否存在.ssh 文件夹(注意 ssh 前面有“.”,这是一个隐藏文件夹),输入命令:ls -a /home/u一般来说,安装 SSH 时会自动在
6、当前用户下创建这个隐藏文件夹,如果没有,可以手动创建一个。接下来,输入命令:ssh-keygen -t dsa -P -f /.ssh/id_dsa解释一下,ssh-keygen 代表生成密钥;-t(注意区分大小写)表示指定生成的密钥类型;dsa是 dsa 密钥认证的意思,即密钥类型;-P 用于提供密语;-f 指定生成的密钥文件。(关于密3钥密语的相关知识这里就不详细介绍了,里面会涉及 SSH 的一些知识,如果读者有兴趣,可以自行查阅资料。)在 Ubuntu 中,代表当前用户文件夹,这里即/home/u。这个命令会在.ssh 文件夹下创建两个文件 id_dsa 及 id_dsa.pub,这是
7、SSH 的一对私钥和公钥,类似于钥匙及锁,把 id_dsa.pub(公钥)追加到授权的 key 里面去。输入命令:cat /.ssh/id_dsa.pub /.ssh/authorized_keys这段话的意思是把公钥加到用于认证的公钥文件中,这里的 authorized_keys 是用于认证的公钥文件。至此无密码登录本机已设置完毕。3)验证 SSH 是否已安装成功,以及是否可以无密码登录本机。输入命令:ssh -version显示结果:OpenSSH_5.1p1 Debian-6ubuntu2, OpenSSL 0.9.8g 19 Oct 2007Bad escape character r
8、sion.显示 SSH 已经安装成功了。输入命令:ssh localhost会有如下显示:The authenticity of host localhost (:1) cant be established.RSA key fingerprint is 8b:c3:51:a5:2a:31:b7:74:06:9d:62:04:4f:84:f8:77.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added localhost (RSA) to the list of known ho
9、sts.Linux master 2.6.31-14-generic #48-Ubuntu SMP Fri Oct 16 14:04:26 UTC 2009 i686To access official Ubuntu documentation, please visit:http:/ login: Mon Oct 18 17:12:40 2010 from masteradminHadoop:$4这说明已经安装成功,第一次登录时会询问你是否继续链接,输入 yes 即可进入。实际上,在 Hadoop 的安装过程中,是否无密码登录是无关紧要的,但是如果不配置无密码登录,每次启动 Hadoop,都
10、需要输入密码以登录到每台机器的 DataNode 上,考虑到一般的Hadoop 集群动辄数百台或上千台机器,因此一般来说都会配置 SSH 的无密码登录。2.1.3 安装并运行 Hadoop介绍 Hadoop 的安装之前,先介绍一下 Hadoop 对各个节点的角色定义。Hadoop 分别从三个角度将主机划分为两种角色。第一,划分为 master 和 slave,即主人与奴隶;第二,从 HDFS 的角度,将主机划分为 NameNode 和 DataNode(在分布式文件系统中,目录的管理很重要,管理目录的就相当于主人,而 NameNode 就是目录管理者);第三,从MapReduce 的角度,将主
11、机划分为 JobTracker 和 TaskTracker(一个 job 经常被划分为多个task,从这个角度不难理解它们之间的关系)。Hadoop 有官方发行版与 cloudera 版,其中 cloudera 版是 Hadoop 的商用版本,这里先介绍Hadoop 官方发行版的安装方法。Hadoop 有三种运行方式:单节点方式、单机伪分布方式与集群方式。乍看之下,前两种方式并不能体现云计算的优势,在实际应用中并没有什么意义,但是在程序的测试与调试过程中,它们还是很有意义的。你可以通过以下地址获得 Hadoop 的官方发行版:http:/www.apache.org/dyn/closer.cg
12、i/Hadoop/core/ 下载 Hadoop-0.20.2.tar.gz 并将其解压,这里会解压到用户目录下,一般为:/home/你的用户名/。单节点方式配置:安装单节点的 Hadoop 无须配置,在这种方式下,Hadoop 被认为是一个单独的 Java 进程,这种方式经常用来调试。伪分布式配置:你可以把伪分布式的 Hadoop 看做是只有一个节点的集群,在这个集群中,这个节点既是master,也是 slave;既是 NameNode 也是 DataNode;既是 JobTracker,也是 TaskTracker。伪分布式的配置过程也很简单,只需要修改几个文件,如下所示。进入 conf
13、文件夹,修改配置文件:Hadoop-env.sh:5export JAVA_HOME=“你的 JDK 安装地址”指定 JDK 的安装位置:conf/core-site.xml:fs.default.namehdfs:/localhost:9000这是 Hadoop 核心的配置文件,这里配置的是 HDFS 的地址和端口号。conf/hdfs-site.xml:dfs.replication1这是 Hadoop 中 HDFS 的配置,配置的备份方式默认为 3,在单机版的 Hadoop 中,需要将其改为1。conf/mapred-site.xml:mapred.job.trackerlocalhos
14、t:9001这是 Hadoop 中 MapReduce 的配置文件,配置的是 JobTracker 的地址和端口。需要注意的是,如果安装的是 0.20 之前的版本,那么只有一个配置文件,即为 Hadoop-site.xml。6接下来,在启动 Hadoop 前,需格式化 Hadoop 的文件系统 HDFS(这点与 Windows 是一样的,重新分区后的卷总是需要格式化的)。进入 Hadoop 文件夹,输入下面的命令:bin/Hadoop NameNode -format格式化文件系统,接下来启动 Hadoop。输入命令:bin/start-all.sh(全部启动)最后,验证 Hadoop 是否安装成功。打开浏览器,分别输入网址:http:/localhost:50030 (MapReduce 的 Web 页面)http:/localhost:50070 (HDFS 的 Web 页面)如果都能查看,说明 Hadoop 已经安装成功。对于 Hadoop 来说,安装 MapReduce 及 HDFS 都是必须的,但是如果有必要,你依然可以只启动HDFS(start-dfs.sh)或 MapReduce(start-mapred.sh)。关于完全分布式的 Hadoop 会在 2.3 节详述。