Hadoop 集群安装实践

目录

Hadoop 集群安装实践... 1

Hadoop集群规划... 1

安装准备... 4

Hadoop 集群安装... 8

启动Hadoop 集群并测试... 13


Hadoop集群规划

利用自家的无线路由器及MacBook Pro 本本进行搭建。

集群环境:

           VMwareWorkstation 建立6台虚拟机(采用Clone 方式迅速建立)。OS采用CentOS-6.4-x86_64服务器基本版本。

如图: wKiom1LHg7uwABU0AAEm98U1qFg487.jpg

规划说明:

虚拟机名

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

如图:

wKiom1LHg_vBl-fJAAC2vcJU_Bs140.jpg


FTP工具:SecureFXPortable

wKiom1LHhDyS07dhAAFRVe6YF6k763.jpg


安装准备

    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

wKiom1LHhHLgKgExAAAZ6bC1gf8236.jpg

    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

wKiom1LHhJGjkoESAAATH63JSEE934.jpg

环境变量配置:

编辑 /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

如图:

wKiom1LHhK3hH0McAAAZlo-gKMo002.jpg

注:如果操作系统预装JRE 可以修改软连接或使用alternatives 命令进行替换。

使用如上操作分别在余下虚拟机中安装JDK。

    4)、添加hadoop组和用户

[root@namenode  ~]# groupadd hadoop

[root@namenode  ~]# useradd hadoop -g hadoop

如图:

wKiom1LHhNSSLZ56AAAO6RrK3mQ202.jpg

修改密码:

wKioL1LHhNiCY1eCAAAZhBSQJwg253.jpg

    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/*

如图:

wKioL1LHhPvgW2q0AABTw2x3bwA023.jpg

本机测试:

wKioL1LHhTvC2hi_AAAN4MaXgu8758.jpg

设置namenode 无密码登陆其他主机。如下说明设置namenode 无密码登陆 secondarynamenode 主机。其他主机按此操作步骤设置

        a)、拷贝namenode上 .ssh/authorized_keys 拷贝到 secondarynamenode主机上对应目录。

wKiom1LHhV3R8GDEAAA_y1I3TZk970.jpg

b)、在 secondarynamenode  上设置.ssh 目录及子文件权限

wKiom1LHhfjTGkJvAAAP-oImRHQ878.jpg

c)、测试连接

wKioL1LHhgKRRCS3AAASJ813MB8905.jpg

Hadoop集群安装

本次安装采用Hadoop 的 1.0.2 版本。

   1)、到Apache Hadoop 官网上下载:hadoop-1.0.2.tar.gz

   2)、将 hadoop-1.0.2.tar.gz上传到namenode 上。并解压安装到/usr/local 目录下。

wKiom1LHhiGCt8GVAAAOxiSUzeY113.jpg

修改hadoop 安装主目录拥有者及权限:

wKioL1LHhiqg3AWSAAAW8ebtWE4433.jpg

   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

测试:

wKioL1LHhnTwjNpKAAAPoHKQ2n0668.jpg

   4)、配置$HADOOP_HOME/conf/hadoop-env.sh

[hadoop@namenode  ~]$ vi /usr/local/hadoop-1.0.2/conf/hadoop-env.sh

设置JAVA_HOME 环境变量:

wKiom1LHhpWTyDwlAAAsPYsiR-E205.jpg

   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>

wKioL1LHhrSTAF_FAAAzmQpHyas168.jpg

设置: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>

wKiom1LHhu2w_GodAAA-yUEcuVk028.jpg

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>

wKioL1LHhwHRQjGRAAAvu--KKvI878.jpg

   6)、配置masters 和 slaves

         a)、$HADOOP_HOME/conf/masters

配置secondarynamenode节点

[hadoop@namenode  ~]$ vi /usr/local/hadoop-1.0.2/conf/masters

wKioL1LHhzvzGVqeAAAF69-GvYM867.jpg

b)、$HADOOP_HOME/conf/slaves

配置datanode节点

[hadoop@namenode  ~]$ vi /usr/local/hadoop-1.0.2/conf/slaves

wKioL1LHh0-RL8bnAAAIN6iWHQk643.jpg

    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

wKioL1LHh5yhAawMAADfnOi-yIg208.jpg


    2)、在namenode 上启动Hadoop 集群

[hadoop@namenode  jdk1.6.0_45]$ start-all.sh

wKioL1LHh9ni55Z6AACM1u__kYw089.jpg

   3)、验证安装

在namenode和 secondarynamenode 及数据节点上查看守护进程:

wKiom1LHh_ihfYVLAAAMHnGHOyU718.jpg

wKioL1LHh_yQZId2AAAMBYMSeiM115.jpg

wKiom1LHiBfiCrqfAAAMSDdwBe0555.jpg

使用hadoop dfsadmin 进行验证:

wKiom1LHh3biThM_AACVnco8lyo234.jpg


           web 端查看 DFS 和 JobTraker 详情


wKioL1LHiCjgmMCJAAFvUXqH5Ac687.jpg

wKiom1LHiDWBpxq8AAJHCZtO5Fs719.jpg



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

wKiom1LHiFXRzXadAAA-WC48_ss294.jpg

问题。网上搜索是因为多次格式化导致的版本不一致的问题。我将各个节点的

Hadoop工作目录(即:/home/hadoop/hadoop)全部删除,重新namenode 格

式化。重新启动即可。