本教程为Hadoop高可用安装过程及部分错误的解决方案。(主要错误在于zookeeper的启动并罗列了几种解决方案)

安装方案:

Hadoop高可用安装教程(新手必入)

1、分发jdk到node02、03、04

-scp jdk-7u67-linux-x64.rpm node02:pwd
-scp jdk-7u67-linux-x64.rpm node03:pwd
-scp jdk-7u67-linux-x64.rpm node04:pwd
并在Xshell的全部会话栏里一起ll,看jdk是否发送成功。

2、给node02、03、04分别安装jdk

分别在node02、03、04上执行rpm安装命令
-rpm -i jdk-7u67-linux-x64.rpm
在node03上cd /etc,在此目录下把profile文件分发到node02、03、04上。
scp profile node02:pwd
利用Xshell全部会话栏,source /etc/profile
利用Xshell全部会话栏,jps,看02、03、04这三台机子的jdk是否装好

3、同步所有服务器的时间

-date 查看机子当前的时间。
时间不能差太大,否则集群启动后某些进程跑不起来。

(1)yum进行时间同步器的安装
-yum -y install ntp
Hadoop高可用安装教程(新手必入)
(2)执行同步命令
-ntpdate time1.aliyun.com 和阿里云服务器时间同步
Hadoop高可用安装教程(新手必入)
Hadoop高可用安装教程(新手必入)

4、装机之前的配置文件检查

(1)-cat /etc/sysconfig/network,查看HOSTNAME是否正确

此时出错:

修改一个机子的hostname另外三台就一起变化

解决方案:

Hadoop高可用安装教程(新手必入)
(2)-cat /etc/hosts
查看IP映射是否正确
若不正确,可以改文件,也可以把node01上的用scp分发过去。
(3)-cat /etc/sysconfig/selinux里是否
SELINUX=disabled
Hadoop高可用安装教程(新手必入)
(4)service iptables status查看防火墙是否关闭

5、NN与其他三台机子的免秘钥设置

(1) 在家目录下 ll –a看下有无.ssh文件,如果没有就ssh loalhost
一下(铁憨憨才会ssh localhost后忘记exit)。
Hadoop高可用安装教程(新手必入)
Hadoop高可用安装教程(新手必入)
Hadoop高可用安装教程(新手必入)
(2)cd .ssh ,并ll查看一下
(3)把node01的公钥发给其他三台机子

(4)同理给其他节点发送公钥并在各个节点上把node01的公钥追加上
scp id_dsa.pub node03:pwd/node01.pub
scp id_dsa.pub node04:pwd/node01.pub
在node01上分别ssh node02,ssh node03,ssh node04,看是否能免**登录,每次ssh都别忘了exit
node01上免**登录其他三台机器:
Hadoop高可用安装教程(新手必入)
(5)在node02的.ssh目录下看是否有node01.pub
如果有,那就追加到authorized_keys:cat node01.pub >> authorized_keys
并且在node01上ssh node02看是否免**了,别忘了exit,给node03、04都追加一下node01.pub,也就是在node03、04的.ssh目录下执行cat node01.pub >> authorized_keys
Hadoop高可用安装教程(新手必入)
Hadoop高可用安装教程(新手必入)

6、两个NN间互相免**

node01与node02间互相免**: node01可免**登录node02,那现
需node02上能免**登node01,所以
在node02上:
ssh-****** -t dsa -P ‘’ -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
ssh localhost验证一下
分发到node03上:scp id_dsa.pub node03:pwd/node04.pub
在node03的.ssh目录下,cat node04.pub >> authorized_keys,
在node04上ssh node03验证一下可否免**登录

7、修改namenode的一些配置信息

Hadoop高可用安装教程(新手必入)
Hadoop高可用安装教程(新手必入)
(1)vi hdfs-site.xml
(a)去掉snn的配置

dfs.namenode.secondary.http-address
node03:50090

(b)增加以下property


dfs.replication
3

dfs.nameservices mycluster dfs.ha.namenodes.mycluster nn1,nn2 dfs.namenode.rpc-address.mycluster.nn1 node01:8020 dfs.namenode.rpc-address.mycluster.nn2 node02:8020 dfs.namenode.http-address.mycluster.nn1 node01:50070 dfs.namenode.http-address.mycluster.nn2 node02:50070 dfs.namenode.shared.edits.dir qjournal://node01:8485;node02:8485;node03:8485/mycluster dfs.journalnode.edits.dir /var/mxy/hadoop/ha/jn dfs.client.failover.proxy.provider.mycluster org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider dfs.ha.fencing.methods sshfence dfs.ha.fencing.ssh.private-key-files /root/.ssh/id_dsa dfs.ha.automatic-failover.enabled true (2)vi core-site.xml fs.defaultFS hdfs://mycluster ha.zookeeper.quorum node02:2181,node03:2181,node04:2181

(3)vi slaves
node02
node03
node04
Hadoop高可用安装教程(新手必入)
(4)安装hadoop
cd /opt ,将其下的ldy目录分发到node02、03、04
scp –r mxy/ node02:pwd
scp –r mxy/ node03:pwd
scp –r mxy/ node04:pwd
Hadoop高可用安装教程(新手必入)
(5)将hdfs-site.xml和core-site.xml分发到node02、03、04
-scp hdfs-site.xml core-site.xml node02:pwd
-scp hdfs-site.xml core-site.xml node03:pwd
-scp hdfs-site.xml core-site.xml node04:pwd
分发以名字缩写命名的文件夹成功:Hadoop高可用安装教程(新手必入)
检查是否成功:
Hadoop高可用安装教程(新手必入)

8、安装zookeeper

有无software,没有便创建
Hadoop高可用安装教程(新手必入)
Hadoop高可用安装教程(新手必入)
(1)解压安装zookeeper
tar xf zookeeper-3.4.6.tar.gz -C /opt/mxy
Hadoop高可用安装教程(新手必入)
(2)修改zookeeper的配置文件:cd /opt/mxy/zookeeper-3.4.6/conf
给zoo_sample.cfg改名:cp zoo_sample.cfg zoo.cfg
Hadoop高可用安装教程(新手必入)
Hadoop高可用安装教程(新手必入)
(3)vi zoo.cfg
改dataDir=/var/ldy/zk
并在末尾追加
server.1=node02:2888:3888
server.2=node03:2888:3888
server.3=node04:2888:3888
Hadoop高可用安装教程(新手必入)
其中2888主从通信端口,3888是当主挂断后进行选举机制的端口
(4)把zookeeper分发到其他节点,此时需要密码是正常的,未做免**操作
scp -r zookeeper-3.4.6/ node03:pwd
scp -r zookeeper-3.4.6/ node04:pwd
Hadoop高可用安装教程(新手必入)
并用ll /opt/mxy检查下看分发成功没
Hadoop高可用安装教程(新手必入)
(5)给每台机子创建刚配置文件里的路径
mkdir -p /var/mxy/zk
对node02来说:echo 1 > /var/ldy/zk/myid
cat /var/mxy/zk/myid
对node03来说:echo 2 > /var/mxy/zk/myid
cat /var/mxy/zk/myid
对node04来说:echo 3 > /var/mxy/zk/myid
cat /var/ldy/zk/myid
Hadoop高可用安装教程(新手必入)
(6)在/etc/profile里面配置
export ZOOKEEPER_HOME=/opt/mxy/zookeeper-3.4.6
export PATH=PATH:/usr/java/jdk1.7.067/bin:PATH:/usr/java/jdk1.7.0_67/bin:HADOOP_HOME/bin:HADOOPHOME/sbin:HADOOP_HOME/sbin:ZOOKEEPER_HOME/bin
Hadoop高可用安装教程(新手必入)
(7)然后在把/etc/profile分发到其他node03、node04
scp /etc/profile node03:/etc
scp /etc/profile node04:/etc
Hadoop高可用安装教程(新手必入)
此时出错:node0304输入zkCli.s,按Tab不可以把名字补全zkCli.sh
解决方案:在node02、03、04里source /etc/profie

(8)启动zookeeper
全部会话:zkServer.sh start
接着用zkServer.sh status查看每个zookeeper节点的状态
注意:如果启动不起来,请把/etc/profile里的JAVA_HOME改
成绝对路径。

此时出错:

Hadoop高可用安装教程(新手必入)

分析原因及解决方法:

(1)端口被占用。在前台显示问题zkServer.sh start-foreground
若显示如下图片:
Hadoop高可用安装教程(新手必入)
则执行netstat -alnp | grep 2181 查看被占用端口,执行kill -9 4840 杀死占用端口的进程,重启zookeeper

(2)打开zkServer.sh 找到status
STAT=echo stat | nc localhost $(grep clientPort "$ZOOCFG" | sed -e 's/.*=//') 2> /dev/null| grep Mode
在nc与localhost之间加上 -q 1 (是数字1而不是字母l)
如果已存在则去掉
注:zookeeper3.4.5以后的版本的zkServer.sh脚本文件里根本没有这一行

(3)创建数据目录,也就是在你zoo.cfg配置文件里dataDir指定的那个目录下创建myid文件,并且指定id,改id为你zoo.cfg文件中server.1=localhost:2888:3888中的 1.只要在myid头部写入1即可.

(4)防火墙未关闭。
查看防火墙状态:service iptables status
关闭防火墙:service iptables stop
查看防火墙开机启动状态:chkconfig iptables --list
关闭防火墙开机启动:chkconfig iptables off
注:防火墙已经确认关闭,所以也不是这步出了问题。

(5)没有建立主机和ip之间的映射关系。命令为 vi /etc/hosts 在文件的末端加入各个主机和ip地址之间的映射关系就可以了。
server.1=node02:2888:3888
server.2=node03:2888:3888
server.3=node04:2888:3888
server要从1开始
注:这一步已经反复检查未曾出错

(6)单个机子逐步查看启动,此集群务必保证有3台机子同时正常启动,

(7)删除zookeeper 本地log的Version-2文件夹:rm -rf version-2,重启zookeeper 状态就正常了

(8)将data目录下的.pid文件删除后重新启动。

解决方案:

最后询问同学,发现配置hdfs-site.xml的时候,复制老师的代码未将添加上

9、启动journalnode(使两台namenode间完成数据同步)

在03、04、05三台机子上分别把journalnode启动起来
hadoop-daemon.sh start journalnode
用jps检查下进程启起来了没

10、随意挑一台namenode上执行hdfs namenode –format

另一台namenode不用执行,否则clusterID变了,找不到
集群了。
Hadoop高可用安装教程(新手必入)
然后,启动刚刚格式化的那太namenode
hadoop-daemon.sh start namenode
Hadoop高可用安装教程(新手必入)

11、给另一namenode同步数据

hdfs namenode -bootstrapStandby
Hadoop高可用安装教程(新手必入)

此时错误:

第二台namenode无法同步

解决方案:

hdfs namenode –bootstrapStandby
↑把NameNode的数据同步到node02上↑
hadoop-daemon.sh start namenode
↑启动node02上的namenode作为standby

12、格式化zkfc

hdfs zkfc -formatZK
Hadoop高可用安装教程(新手必入)
在node02上执行zkCli.sh打开zookeeper客户端看hadoop-ha是否打开

13、在node01上启动hdfs集群

start-dfs.sh
注意:如果那个节点没起来到hadoop目录下去看那个
node的日志文件log
然后全部会话jps看一下都起来些什么进程

14、用浏览器访问node01:50070和node02:50070

`Hadoop高可用安装教程(新手必入)

15、关闭

关闭集群命令:stop-dfs.sh
关闭zookeeper命令:zkServer.sh stop

16、为MapReduce做准备

把mapred-site.xml.template留个备份,并且改下名字
cp mapred-site.xml.template mapred-site.xml
(1)在mapred-site.xml里添加如下property

mapreduce.framework.name
yarn

(2)在yarn-site.xml里添加如下property

yarn.nodemanager.aux-services
mapreduce_shuffle


yarn.resourcemanager.ha.enabled
true


yarn.resourcemanager.cluster-id
cluster1


yarn.resourcemanager.ha.rm-ids
rm1,rm2


yarn.resourcemanager.hostname.rm1
node03


yarn.resourcemanager.hostname.rm2
node04


yarn.resourcemanager.zk-address
node02:2181,node03:2181,node04:2181

(3)把mapred-site.xml和yarn-site.xml 分发到node02、03、04
scp mapred-site.xml yarn-site.xml node02:pwd
scp mapred-site.xml yarn-site.xml node03:pwd
scp mapred-site.xml yarn-site.xml node04:pwd
(4)由于node03和node04都是resourcemanager,所以它俩应该相互免**
a)node03上免**登录node04:
在node03的.ssh目录下生成**:ssh-****** -t dsa -P ‘’ -f ./id_dsa
并追加到自己authorized_keys:cat id_dsa.pub >> authorized_keys
用ssh localhost验证看是否需要密码,别忘了exit
将node03 的公钥分发到node04:scp id_dsa.pub node06:pwd/node05.pub
在node04的.ssh目录下,追加node03.pub:cat node05.pub >> authorized_keys
在node03上ssh node04,看是否免**
b)node04上免**登录node03:
在node04的.ssh目录下生成**:ssh-****** -t dsa -P ‘’ -f ./id_dsa
并追加到自己authorized_keys:cat id_dsa.pub >> authorized_keys
用ssh localhost验证看是否需要密码,别忘了exit
将node04 的公钥分发到node03:scp id_dsa.pub node03:pwd/node04.pub
在node03的.ssh目录下,追加node04.pub:cat node04.pub >> authorized_keys
在node04上ssh node03,看是否免**
(5)a)启动zookeeper,全部会话zkServer.sh start
b)在node01上启动hdfs,start-dfs.sh
c)在node01上启动yarn,start-yarn.sh
d)在node03、04上分别启动resourcemanager,
yarn-daemon.sh start resourcemanager
e)全部会话jps,看进程全不全
(6)在浏览器访问node03:8088,查看resourcemanager管理的内容
Hadoop高可用安装教程(新手必入)

17、测试wordcount

(1)cd /opt/mxy/hadoop-2.6.5/share/hadoop/mapreduce
(2)在hdfs里建立输入目录和输出目录
hdfs dfs -mkdir -p /data/in
hdfs dfs -mkdir -p /data/out
(3)将要统计数据的文件上传到输入目录并查看
hdfs dfs -put ~/500miles.txt /data/input
hdfs dfs -ls /data/input
(4)运行wordcount(注意:此时的/data/out必须是空目录
hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount /data/in /data/out/result
Hadoop高可用安装教程(新手必入)
(5)查看运行结果
hdfs dfs -ls /data/out/result
hdfs dfs -cat /data/out/result/part-r-00000
Hadoop高可用安装教程(新手必入)

18、关闭集群

node01: stop-dfs.sh
node01: stop-yarn.sh (停止nodemanager)
node03,node04: yarn-daemon.sh stop resourcemanager
node02、03、04:zkServer.sh stop

19、在Windows下配置hadoop的环境

(1)把压缩包解压后的这三个文件夹放到一个usr文件夹里,把usr放到一个你知道的地方。
Hadoop高可用安装教程(新手必入)
(2)“此电脑”右键-属性-高级系统设置

Hadoop高可用安装教程(新手必入)

(3)更改环境变量,增加HADOOP_HOME

Hadoop高可用安装教程(新手必入)
(4)并且给path后追加HADOOP_HOME的bin目录。

注意:Windows里path的路径分隔符是分号,而不是冒号。
(5)然后再新建一个变量HADOOP_USER_NAME

Hadoop高可用安装教程(新手必入)
(6)安装ecipse-mars,此版本的eclipse带插件,可以可视化
的看到hadoop的一些东西,比较方便

(7)如果eclipse界面下方没有小象图标,则做后续三步调出

Hadoop高可用安装教程(新手必入)

Hadoop高可用安装教程(新手必入)
Hadoop高可用安装教程(新手必入)

Hadoop高可用安装教程(新手必入)
(8)这样在eclipse左侧列表的DFS location里新建一个目录,对应hdfs里也就建好了,可以用浏览器查看一下。
(9)在eclipse里导入自己建一个包库
(10)把jar包导入刚建的包库
(11)把刚建的包库引入到project里
(12)把JUnit包库引入到project里
(13)利用xftp把hdfs-site.xml,core-site.xml等几个xml放到
project的src目录。

相关文章: