Hadoop 安装与配置
本文主要介绍在 Ubuntu 环境下 Hadoop0.20.2 的安装及配置:
步聚一、机器分配及用途
hdfs-m--------------172.16.11.197 (Master--NameNode)
hdfs-s1-------------172.16.11.149 (Slave1--DataNode)
hdfs-s2-------------172.16.11.97 (Slave2--DataNode)
步聚二、 IP 地址及别名配置
为了能够使用别名来访问服务器,需要在 /etc/hosts 文件中进行 IP 地址及别名对应关系的配置。
在主服务器上的 /etc/hosts 文件中进行的配置如下:
$ vi /etc/hosts
172.16.11.197 hdfs-m
172.16.11.149 hdfs-s1
172.16.11.97 hdfs-s2
在从服务器上的 /etc/hosts 文件中的配置如下(以 hdfs-s1 为例, hdfs-s2 同理):
$ vi /etc/hosts
172.16.11.197 hdfs-m
172.16.11.149 hdfs-s1
在完成上述配置服务器的配置后,在 hdfs-m 上进行 ping hdfs-s1 来验证别名与 IP 地址是否已经建立起了对应关系。如果能够拼通则表明配置成功。
步骤三、 ssh 配置
在 hdfs-m 上进行如下操作:
$ ssh-keygen -t rsa
以 root 用户执行时,会在 /root/.ssh 目录中生成 id_rsa 、 id_rsa.pub 文件。
$cp id_rsa.pub authorized_keys
拷贝一份 id_rsa.pub 为 authorized_keys 。
在 hdfs-s1/hdfs-s2 上进行如下操作:
$ cd /root
$mkdir .ssh
创建 .ssh 目录,用于存放公钥信息。
创建完成之后,在 hdfs-m 上进行如下操作 , 操作目录 :/root/.ssh/
$scp authorized_keys hdfs-s1:/root/.ssh/
将 authorized_keys 文件通过远程 ssh 的方式拷贝至 hdfs-s1 机器中的 /root/.ssh/ 目录下。
在完成之后,在 hdfs-m 上通过如下命令进行测试,以验证是否已经成功配置了 ssh 环境。
$ ssh hdfs-s1
$ ifconfig
在运行完上述命令后,即可以看到 IP 地址已经从 197 变为了 149 ,即已通过 SSH 登录 149 机器。
步骤四、安装 Hadoop
4.1 、 Hadoop 环境变量
下载 Hadoop0.20.2.tar.gz 包,并将其解压至 hdfs-m 机器上的 /usr/local/hadoop 目录下。
修改 hdfs-m 中 conf 目录下的 hadoop-env.sh ,并在其中配置 hadoop 的环境变量。
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export HADOOP_HOME=/usr/local/hadoop
在 conf 目录下打开 slaves 文件,在其中添加有几个数据结点,本文的配置如下所示:
$vi slaves
hdfs-s1
hdfs-s2
在 conf 目录下打开 masters 文件,在其中添加 namenode 结点,本文的配置如下所示:
$vi masters
hdfs-m
在完成上述配置后,即已经完成了架构的部署。即有一台 master 及多台 slaves 。
4.2 、 Hadoop 配置文件
在 Hadoop 安装的 conf 目录下,需要修改以下三个文件,即 core-site.xml , hdfs-site.xml 及 mapred-site.xml 。
在 conf 目录下配置 core-site.xml 文件:
$ vi core-site.xml
在 conf 目录下配置 hdfs-site.xml 文件:
$ vi hdfs-site.xml
在 conf 目录下配置 mapred-site.xml 文件:
$ vi mapred-site.xml
五、部署 Hadoop
前面讲的这么多 Hadoop 的环境变量和配置文件都是在 hdfs-m 这台机器上的,现在需要将 hadoop 部署到其他的机器上,保证目录结构一致。
$scp -r /usr/local/hadoop hdfs-s1:/usr/local/
$scp -r /usr/local/hadoop hdfs-s2:/usr/local/
至此,可以说, Hadoop 已经在各个机器上部署完毕了下面就让我们开始启动 Hadoop 吧。
六、格式化 Hadoop
启动之前,我们先要格式化 namenode ,先进入 /usr/local/hadoop 目录,执行下面的命令
$bin/hadoop namenode -format
10/10/18 00:12:48 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = ubuntu/127.0.1.1
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 0.20.2
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20 -r 911707; compiled by 'chrisdo' on Fri Feb 19 08:07:34 UTC 2010
************************************************************/
Re-format filesystem in /usr/local/hadoop/filesystem/name ? (Y or N) Y
10/10/18 00:12:53 INFO namenode.FSNamesystem: fsOwner=root,root,adm,dialout,fax,cdrom,tape,audio,dip,video,plugdev,fuse,lpadmin,netdev,admin,sambashare
10/10/18 00:12:53 INFO namenode.FSNamesystem: supergroup=supergroup
10/10/18 00:12:53 INFO namenode.FSNamesystem: isPermissionEnabled=true
10/10/18 00:12:53 INFO common.Storage: Image file of size 94 saved in 0 seconds.
10/10/18 00:12:53 INFO common.Storage: Storage directory /usr/local/hadoop/filesystem/name has been successfully formatted.
10/10/18 00:12:53 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at ubuntu/127.0.1.1
************************************************************/
不出意外,应该会提示格式化成功。如果不成功,就去 hadoop/logs/ 目录下去查看日志文件 . 注意这里的交互式问题一定要输入大写的 Y 。
七、启动 Hadoop
下面就该正式启动 hadoop 啦,在 bin/ 下面有很多启动脚本,可以根据自己的需要来启动。
* start-all.sh 启动所有的 Hadoop 守护。包括 namenode, datanode, jobtracker, tasktrack
* stop-all.sh 停止所有的 Hadoop
* start-mapred.sh 启动 Map/Reduce 守护。包括 Jobtracker 和 Tasktrack
* stop-mapred.sh 停止 Map/Reduce 守护
* start-dfs.sh 启动 Hadoop DFS 守护 .Namenode 和 Datanode
* stop-dfs.sh 停止 DFS 守护
在格式化完成后,即可以启动 hadoop.
root@ubuntu:/usr/local/hadoop/bin# ./start-all.sh
starting namenode, logging to /usr/local/hadoop/logs/hadoop-root-namenode-ubuntu.out
hdfs-s1: starting datanode, logging to /usr/local/hadoop/logs/hadoop-root-datanode-ubuntu.out
localhost: starting datanode, logging to /usr/local/hadoop/logs/hadoop-root-datanode-ubuntu.out
hdfs-s2: starting datanode, logging to /usr/local/hadoop/logs/hadoop-root-datanode-ubuntu.out
localhost: starting secondarynamenode, logging to /usr/local/hadoop/logs/hadoop-root-secondarynamenode-ubuntu.out
starting jobtracker, logging to /usr/local/hadoop/logs/hadoop-root-jobtracker-ubuntu.out
hdfs-s1: starting tasktracker, logging to /usr/local/hadoop/logs/hadoop-root-tasktracker-ubuntu.out
localhost: starting tasktracker, logging to /usr/local/hadoop/logs/hadoop-root-tasktracker-ubuntu.out
hdfs-s2: starting tasktracker, logging to /usr/local/hadoop/logs/hadoop-root-tasktracker-ubuntu.out
在成功启动后,在主服务器上通过如下地址进行访问:
http://hdfs-m:50070 即可以查看当前有几个数据结点,它们的状态如何。
http://hdfs-m:50030 即可以查看当前的 job 及 Task 的工作状态。