于2018-01-24由小牛君创建
视频参见:\视频\4BackupNode\7hadoop-0.21.0部署流程.exe
1.ssh无密码登录本地或远程节点
HDFS是一个集群系统,因此很多情况下需要通过ssh远程控制其他节点,将集群中的节点设置成无密码的ssh登录,便于实现远程节点的自动控制。
(1)namenode0无密码登录本机。
$ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
直接回车后会在~/.ssh/中生成两个文件:id_dsa和id_dsa.pub。这两个是成对出现,类似钥匙和锁。再把id_dsa.pub追加到授权key里面(当前并没有authorized_keys文件)。
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
完成后可以测试无密码访问本机。
$ ssh localhost hostname
执行以上命令,如果设置成功,将会自动显示本机的Hostname。
(2)namenode0无密码登录其他节点。
下面以namenode0无密码登录datanode00为例,其他节点间的无密码登录可以参照其步骤。远程复制namenode0的id_dsa.pub文件到datanode00的/home/user/目录:
$ scp ~/.ssh/id_dsa.pub 192.168.1.13:/home/user/
登录192.168.1.13并执行如下命令,把namenode0上的id_dsa.pub文件追加到datanode00的authorized_keys内。
$ cat ~/id_dsa.pub >> ~/.ssh/authorized_keys
修改datanode00的authorized_keys权限,authorized_keys权限应为600,其父目录和祖父目录应为755。
$ chmod 600 authorized_keys
关闭防火墙。
$ sudo ufw disable
注意:这步非常重要。如果不关闭,会出现找不到datanode的问题。
(3)验证。
重启namenode0,在namenode0上执行。
$ssh datanode00 hostname
如果设置成功,将会自动显示datanode00的Hostname。
2.Ucarp安装与配置
视频参见:\视频\4BackupNode\7-1ucarp安装流程.exe
Ucarp是一个虚拟IP软件,在NameNode和BackNode上均安装有Ucarp。
NameNode启动的时候,将以Ucarp上配置的虚拟IP地址对外提供服务,一旦NameNode宕机,BackNode上的Ucarp将自动接替NameNode上的虚拟IP对外提供服务,所有的一切对于访问虚拟IP的客户端来说是透明的。下面以在namenode0(NameNode)上安装Ucarp为例进行说明。
(1)安装rpm包。
在namenode1(BackupNode)上执行,Ucarprpm包的默认安装目录为/usr/sbin/ucarp。$sudo rpm -ivh ucarp-1.5.2-1.el5.i386.rpm
(2)复制Ucarp脚本。
将相关的三个Ucarp配置脚本/etc/ucarp.sh,/etc/vip-up.sh,/etc/vip-down.sh复制到/etc/下。/etc/ucarp.sh为Ucarp的启动脚本。192.168.1.11为namenode0(NameNode)的真实IP,192.168.1.9为对外的虚拟IP。
如果在namenode1(BackupNode)上安装Ucarp,需要将“--srcip”后面的值修改为namenode1(BackupNode)的真实IP:192.168.1.12,这是这两个节点安装Ucarp的唯一区别。
#! /bin/sh
echo "123456" | sudo -S ucarp --interface=eth0 --srcip=192.168.1.11
--vhid=1 --pass=mypassword --addr=192.168.1.9 --preempt --neutral
--advbase=1 --upscript=/etc/vip-up.sh --downscript=/etc/vip-down.sh
其中,script=本机IP。在Ucarp中有master和slave两种角色,当节点竞争到master角色时,将执行/etc/vip-up.sh,在本实验中,NameNode先启动Ucarp,毫无疑问它将竞争到master,/etc/vip-up.sh脚本将给NameNode的网卡添加IP地址192.168.1.9。
#! /bin/sh
echo "123456" | sudo -S /sbin/ip addr add 192.168.1.9/24 dev eth0
当master节点无法连接,将降级为slave节点,此时将执行/etc/vip-down.sh,去除原来添加的虚拟IP地址192.168.1.9。
#! /bin/sh
echo "123456" | sudo -S /sbin/ip addr del 192.168.1.9/24 dev eth0
注意:123456为用户密码,192.168.1.12为物理IP,192.168.1.9为虚拟IP,读者在实际使用中可以换成自定义的IP。
3.安装Hadoop
Hadoop的安装非常简单,将Hadoop的tar包解压后,进行相应配置即可,具体步骤描述如下。
(1)复制Hadoop安装包。
首先修改/usr/local目录的权限,使得普通用户可以进行读写。
$sudo chmod 777 /usr/local
接下来在user用户下将/home/user/soft目录下的hadoop-0.21.0.tar.gz复制到/usr/local目录下。
(2)解压Hadoop。
Hadoop的解压目录为/usr/local,在文件管理器中进入该目录,双击hadoop-0.21.0.tar.gz即可完成解压。主要文件和目录如下所示。
jar包:Hadoop运行所需的class文件打成的jar包。
bin目录:HDFS、MapReduce、balancer工具的启动或关闭脚本。
conf目录:HDFS和MapReduce的相关配置文件。
common目录:common源码包。
hdfs目录:HDFS源码包。
mapred目录:MapReduce源码包。
lib目录:程序依赖的jar包。
(3)添加Hadoop路径信息。
在/etc/profile末尾加入:
export HADOOP_HOME=/usr/local/hadoop-0.21.0
export PATH=$HADOOP_HOME/bin:$PATH
(4)配置$HADOOP_HOME/conf/下的masters和slaves文件。master配置文件
192.168.1.11
slaves配置文件
192.168.1.13
192.168.1.14
192.168.1.15
192.168.1.16
(5)配置/usr/local/hadoop-0.21.0/conf/hadoop-env.sh。
在末尾加入下面一行。
export JAVA_HOME=/home/user/jdk1.6.0_24
(6)配置/usr/local/hadoop-0.21.0/conf/core-site.sh。
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://0.0.0.0:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>
(7)配置/usr/local/hadoop-0.21.0/conf/hdfs-site.sh。
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<!-- special parameters for avatarnode -->
<configuration>
<property>
<name>dfs.http.address</name>
<value>0.0.0.0:50070</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/local/namenode</value>
</property>
<property>
<name>dfs.name.edits.dir</name>
<value>/usr/local/hadoop/local/editlog</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/block</value>
</property>
</configuration>
注意:fs.default.name与dfs.http.address的IP均配置为0.0.0.0,在本地所有IP地址上监听,客户端可以通过本机的实际IP和虚拟IP访问Active NameNode。
(8)创建相关目录。
/usr/local/hadoop/tmp
/usr/local/hadoop/local/namenode
/usr/local/hadoop/local/editlog
/usr/local/hadoop/block
//hadoop 临时目录
//镜像存储目录
//日志存储目录
//数据块存储目录
3.格式化
$/usr/local/hadoop-0.21.0/bin/hadoop namenode -format
4.启动测试
运行下面的命令测试NameNode(namenode0)能否正常启动。
$/usr/local/hadoop-0.21.0/bin/hadoop namenode
启动截图。
图6-31ActiveNameNode启动图
使用jps命令查看NameNode的启动情况。
$jps
在线咨询
免费热线
资料发放
技术答疑
关注微信