Hadoop 集群安装实践
目录
Hadoop集群规划
利用自家的无线路由器及MacBook Pro 本本进行搭建。
集群环境:
VMwareWorkstation 建立6台虚拟机(采用Clone 方式迅速建立)。OS采用CentOS-6.4-x86_64服务器基本版本。
规划说明:
虚拟机名 | OS | 内存 | 硬盘 | IP | 主机名 | 用途 |
hadoop-namenode | CentOS | 1GB | 10GB | 192.168.0.120 | namenode | NamenNode、JobTracker |
hadoop-secondarynamenode | CentOS | 1GB | 10GB | 192.168.0.121 | secondarynamenode | SecondaryNameNode |
hadoop-datanode01 | CentOS | 1GB | 20GB | 192.168.0.122 | datanode01 | DataNode |
hadoop-datanode02 | CentOS | 1GB | 20GB | 192.168.0.123 | datanode02 | DataNode |
hadoop-datanode03 | CentOS | 1GB | 20GB | 192.168.0.124 | datanode03 | DataNode |
hadoop-datanode04 | CentOS | 1GB | 20GB | 192.168.0.125 | datanode04 | 备用,用于实验添加节点 |
与虚拟机的交互工具:
终端工具:SecureCRTPortable
如图:
FTP工具:SecureFXPortable
安装准备
1)、ip 和主机名
根据集群规划设置各个虚拟机的IP 和 HostName。
设置静态IP:
$ vi /etc/sysconfig/network-scripts/ifcfg-eth0 |
设置如下:
DEVICE=eth0 HWADDR=00:0C:29:7C:60:F6 TYPE=Ethernet UUID=770bae04-34dd-4930-8b24-0439d7778261 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static IPADDR=192.168.0.120 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 |
配置hostname:
$ vi network |
设置如下:
NETWORKING=yes #HOSTNAME=localhost.localdomain HOSTNAME=namenode |
配置域名解析:
192.168.0.120 namenode 192.168.0.121 secondarynamenode 192.168.0.122 datanode01 192.168.0.123 datanode02 192.168.0.124 datanode03 192.168.0.125 datanode04 |
最后重启虚拟机:
reboot |
分别按以上步骤根据集群规划配置余下虚拟机的ip 和 主机名。
2)、关闭防火墙
关闭所有虚拟机OS的防火墙。
[root@namenode ~]# service iptables stop [root@namenode ~]# chkconfig iptables off |
3)、安装JDK
下载:jdk-6u45-linux-x64.bin
分别上传到6台虚拟机中的/usr/local/java 目录下。解压安装如下:
[root@namenode ~]# cd /usr/local/java/ [root@namenode java]# chmod 700 jdk-6u45-linux-x64.bin [root@namenode java]# ./jdk-6u45-linux-x64.bin |
环境变量配置:
编辑 /etc/profile 加入:JAVA_HOME、CLASSPATH等。
[root@namenode java]# vi + /etc/profile |
如:
#jdk setting JAVA_HOME=/usr/local/java/jdk1.6.0_45 CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar PATH=$PATH:$JAVA_HOME/bin export JAVA_HOME export CLASSPATH export PATH |
编辑后生效:
[root@namenode java]# source /etc/profile |
验证安装:
[root@namenode java]# java -version |
如图:
注:如果操作系统预装JRE 可以修改软连接或使用alternatives 命令进行替换。
使用如上操作分别在余下虚拟机中安装JDK。
4)、添加hadoop组和用户
[root@namenode ~]# groupadd hadoop [root@namenode ~]# useradd hadoop -g hadoop |
如图:
修改密码:
5)、设置ssh无密码登陆
在namenode主机上设置:
[hadoop@namenode ~]$ ssh-keygen -t rsa -P '' [hadoop@namenode ~]$ cp .ssh/id_rsa.pub .ssh/authorized_keys [hadoop@namenode ~]$ chmod 700 .ssh [hadoop@namenode ~]$ chmod -R 600 .ssh/* |
如图:
本机测试:
设置namenode 无密码登陆其他主机。如下说明设置namenode 无密码登陆 secondarynamenode 主机。其他主机按此操作步骤设置。
a)、拷贝namenode上 .ssh/authorized_keys 拷贝到 secondarynamenode主机上对应目录。
b)、在 secondarynamenode 上设置.ssh 目录及子文件权限
c)、测试连接
Hadoop集群安装
本次安装采用Hadoop 的 1.0.2 版本。
1)、到Apache Hadoop 官网上下载:hadoop-1.0.2.tar.gz
2)、将 hadoop-1.0.2.tar.gz上传到namenode 上。并解压安装到/usr/local 目录下。
修改hadoop 安装主目录拥有者及权限:
3)、配置Hadoop 环境变量
在hadoop用户主目录下/home/hadoop/.bash_profile 配置$HADOOP_
HOME,并将$HADOOP_HOME/bin 加入到$PATH变量中。
[hadoop@namenode ~]$ vi .bash_profile |
编辑如下:
# User specific environment and startup programs PATH=$PATH:$HOME/bin HADOOP_HOME=/usr/local/hadoop-1.0.2 PATH=$PATH:$HADOOP_HOME/bin export PATH |
测试:
4)、配置$HADOOP_HOME/conf/hadoop-env.sh
[hadoop@namenode ~]$ vi /usr/local/hadoop-1.0.2/conf/hadoop-env.sh |
设置JAVA_HOME 环境变量:
5)、设置Hadoop 守护进程的相关环境参数
a)、$HADOOP_HOME/conf/core-site.xml
[hadoop@namenode ~]$ vi /usr/local/hadoop-1.0.2/conf/core-site.xml |
编辑如下:
<configuration> <property> <name>fs.default.name</name> <value>hdfs://namenode:8020</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/hadoop/tmp</value> </property> </configuration> |
设置:fs.default.name 和hadoop.tmp.dir
b)、$HADOOP_HOME/conf/hdfs-site.xml
[hadoop@namenode ~]$ vi /usr/local/hadoop-1.0.2/conf/hdfs-site.xml |
编辑如下:
<configuration> <property> <name>dfs.name.dir</name> <value>/home/hadoop/hadoop/dfs/name,/home/hadoop/hadoop/dfs/name-backup</value> </property> <property> <name>dfs.data.dir</name> <value>/home/hadoop/hadoop/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> </configuration> |
c)、$HADOOP_HOME/conf/mapred-site.xml
<configuration> <property> <name>mapred.job.tracker</name> <value>namenode:8021</value> </property> <property> <name>mapred.local.dir</name> <value>/home/hadoop/hadoop/mapred/local</value> </property> </configuration> |
6)、配置masters 和 slaves
a)、$HADOOP_HOME/conf/masters
配置secondarynamenode节点
[hadoop@namenode ~]$ vi /usr/local/hadoop-1.0.2/conf/masters |
b)、$HADOOP_HOME/conf/slaves
配置datanode节点
[hadoop@namenode ~]$ vi /usr/local/hadoop-1.0.2/conf/slaves |
7)、使用hadoop用户将namenode 上的/usr/local/hadoop 目录拷贝到其他节点
相应目录下。
[hadoop@namenode local]$ scp -r /usr/local/hadoop-1.0.2/ root@secondarynamenode:/usr/local/ [hadoop@namenode local]$ scp -r /usr/local/hadoop-1.0.2/ root@datanode01:/usr/local/ [hadoop@namenode local]$ scp -r /usr/local/hadoop-1.0.2/ root@datanode02 :/usr/local/ [hadoop@namenode local]$ scp -r /usr/local/hadoop-1.0.2/ root@datanode03 :/usr/local/ [hadoop@namenode local]$ scp -r /usr/local/hadoop-1.0.2/ root@datanode04 :/usr/local/ |
修改其他节点/usr/local/hadoop-1.0.2 目录的拥有者及文件权限:
[root@secondarynamenode ~]# cd /usr/local [root@secondarynamenode local]# chown -R hadoop:hadoop hadoop-1.0.2/ [root@secondarynamenode local]# chmod -R 770 hadoop-1.0.2 [root@datanode01 ~]# cd /usr/local [root@datanode01 local]# chown -R hadoop:hadoop hadoop-1.0.2/ [root@datanode01 local]# chmod -R 770 hadoop-1.0.2 [root@datanode02 ~]# cd /usr/local [root@datanode02 local]# chown -R hadoop:hadoop hadoop-1.0.2/ [root@datanode02 local]# chmod -R 770 hadoop-1.0.2 root@datanode03 ~]# cd /usr/local [root@datanode03 local]# chown -R hadoop:hadoop hadoop-1.0.2/ [root@datanode03 local]# chmod -R 770 hadoop-1.0.2 [root@datanode04 ~]# cd /usr/local [root@datanode04 local]# chown -R hadoop:hadoop hadoop-1.0.2/ [root@datanode04 local]# chmod -R 770 hadoop-1.0.2 |
启动Hadoop集群并测试
1)、在namenode 上格式化namenode
[hadoop@namenode ~]$ hadoop namenode -format |
2)、在namenode 上启动Hadoop 集群
[hadoop@namenode jdk1.6.0_45]$ start-all.sh |
3)、验证安装
在namenode和 secondarynamenode 及数据节点上查看守护进程:
使用hadoop dfsadmin 进行验证:
web 端查看 DFS 和 JobTraker 详情
4、Hadoop 集群安装问题总结
1)、配置好/etc/hosts及 主机名
2)、关闭防火墙
3)、在$HADOOP_HOME/conf/hadoop-env.sh必须配置JAVA_HOME
4)、在配置sshRSA 无密码登陆时注意文件权限问题
5)、在安装时遇到了:
2013-12-14 15:51:17,573 ERROR org.apache.hadoop.hdfs.DFSClient: Exception closing file /home/hadoop/hadoop/tmp/mapred/system/jobtracker.info : org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /home/hadoop/hadoop/tmp/mapred/system/jobtracker.info could only be replicated to 0 nodes, instead of 1 |
问题。网上搜索是因为多次格式化导致的版本不一致的问题。我将各个节点的
Hadoop工作目录(即:/home/hadoop/hadoop)全部删除,重新namenode 格
式化。重新启动即可。