在伪分布式下完成Hadoop高可用安装

首先我们来认识一下Hadoop,Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。其中最核心的设计包括HDFS和MapReduce HDFS(Hadoop Distributed File System )Hadoop分布式文件系统,它其实是将一个大文件分成若干块保存在不同服务器的多个节点中。通过联网让用户感觉像是在本地一样查看文件,为了降低文件丢失造成的错误,它会为每个小文件复制多个副本(默认为三个),以此来实现多机器上的多用户分享文件和存储空间。下图为HDFS 的基本结构在这里插入图片描述
而分布式文件系统通常需要3个及以上的实体机或者虚拟机组件的机群才可以配置,这里我们采用伪分布式搭建Hadoop环境,即在一台单机上运行,但用不同的Java进程模仿分布式运行中的各类结点:(NameNode,DataNode,JobTracker,TaskTracker,SecondaryNameNode)
然后介绍一下什么是Hadoop高可用模式,Hadoop高可用是为了解决单点故障的一种方式,对于只有一个NameNode的集群,如果NameNode机器出现故障(比如宕机或是软件、硬件升级),那么整个集群将无法使用,直到NameNode重新启动,这就是单点故障
如下图,为伪分布式的基础上安装高可用模式的安装方案,
HA安装方案
第一步:分发jdk到node04.05.06(该过程在虚拟机连接的XshelI里完成,并在XshelI的全部会话栏里一起II, 看jdk是否发送成功。)代码如下图,注意:丶这一符号是数字1左边这个键,
-scp jdk-7u67-linux-x64.rpm node04:丶pwd丶
-scp jdk-7u67-linux-x64.rpm node05:丶pwd丶
-scp jdk-7u67-linux-x64.rpm node06:丶pwd丶

第二步:给node04、05、06分别安装jdk
分别在node04、05、06上执行rpm安装命令
-rpm -i jdk-7u67-linux-x64.rpm
在node03上cd /etc,在此目录下把profile文件分发到node04、05、06上。
scp profile node04:丶pwd丶
利用Xshell全部会话栏,source /etc/profile,看04、05、06这三台机子的jdk是否装好。
第三步:同步所有服务器的时间
-date 查看机子当前的时间。
时间不能差太大,否则集群启动后某些进程跑不起来。
若时间不同步,怎么办?
(1).yum进行时间同步器的安装
-yum -y install ntp
(2).执行同步命令
-ntpdate time1.aliyun.com
和阿里云服务器时间同步
第四步:装机之前的配置文件检查
1.-cat /etc/sysconfig/network
查看HOSTNAME是否正确
2.-cat /etc/hosts
查看IP映射是否正确
若不正确,可以改文件,也可以把node03上的用scp分发过去。
3. -cat /etc/sysconfig/selinux
selinux检查是否为disabled
SELINUX=disabled
4、service iptables status
检查下防火墙有没有关
P.S:注意是SELINUX的状态而不是SELINUXTYPE,如果弄错对象会导致开机出现kernel panic错误而无法开机
第五步:NN与其他三台机子的免秘钥设置
在初始目录下用l -a命令查看是否有.ssh目录,如果没有,就用ssh localhost登录再exit退出,再次查看即可。
而后用cd .ssh进入并用ll命令查看,再用scp id_dsa.pub node0X:丶pwd丶/node03.pub把node03的公钥发送到其他三台服务器上,其中node0X代表要发送的其他三台服务器上。
发送完毕后进入到其他三台服务器的.ssh目录下查看第一台服务器的公钥是否存在。
如果存在,就用cat node0X.pub >> authorized_keys命令把第一台服务器的公钥追加到其他三台机子的authorized_keys上。
追加完毕后ssh登录一下第一台机子,看是否能免密钥登录。
而后在第一台服务器上用ssh命令登录其他三台机子,如果能免密钥登录则说明设置成功。
第六步:两个NameNode之间互免密钥
现在我们已经可以在1号机上免密钥登录2 3 4号机,接下来需要设置2 3 4号机免密钥登录1号机,以2号机为例:
在2号机上:
ssh-keygen -t dsa -P ‘’ -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
用ssh localhost命令验证一下
分发到1号机上:scp id_dsa.pub node02:丶pwd丶/node03.pub
在1号机的.ssh目录下,cat node03.pub >> authorized_keys,
在node03上ssh node01验证一下可否免密钥登录
第七步: 修改NameNode的一些配置
共需要修改三个配置文件,分别为hdfs-site.xml core-site.xml slaves,在修改之前,需进入它们所在的目录,即cd /opt/wsc/hadoop-2.6.5/etc/hadoop
一.配置hdfs-site.xml,使用vi hdfs-site.xml命令,而后按I开始配置
1.去掉snn的配置
dfs.namenode.secondary.http-address
node01:50090
2.增加以下property
dfs.nameservices mycluster dfs.replication 3
dfs.ha.namenodes. mycluster nn1,nn2
dfs.namenode.rpc-address. mycluster.nn1 node01:9000
dfs.namenode.http-address. mycluster.nn1 node01:50070
dfs.namenode.rpc-address. mycluster.nn2 node02:9000
dfs.namenode.http-address. mycluster.nn2 node02:50070
dfs.namenode.shared.edits.dir qjournal://node01:8485;node04:8485;node05:8485/mycluster
dfs.journalnode.edits.dir /var/yyx/hadoop/ha/jn dfs.ha.automatic-failover.enabled.cluster true dfs.client.failover.proxy.provider.cluster org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider< /value> dfs.ha.fencing.methods sshfence dfs.ha.fencing.ssh.private-key-files /root/.ssh/id_rsa
二.配置core-site.xml,使用vi core-site.xml命令,而后按I开始配置
<!– 集群名称mycluster–>
fs.defaultFS
hdfs://mycluster
<!– zookeeper布署的位置–>
ha.zookeeper.quorum
node07:2181,node08:2181,node09:2181
三.配置slaves,使用vi slaves命令进行配置
node04
node05
node06
四.安装hadoop
cd /opt 进入目录,将其下的wsc(自己命名的文件目录)目录分发到node02、03、04
scp –r wsc/ node02:丶pwd丶
scp –r wsc/ node03:丶pwd丶
scp –r wsc/ node04:丶pwd丶
五.将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丶
第八步:安装zookeeper
1.解压安装zookeeper
tar xf zookeeper-3.4.6.tar.gz -C /opt/wsc
即在opt/wsc目录下解压zookeeper
2.修改zookeeper的配置文件
cd /opt/wsc/zookeeper-3.4.6/conf
给zoo_sample.cfg改名
cp zoo_sample.cfg zoo.cfg

用vi zoo.cfg进行配置
改dataDir=/var/wsc/zk
并在末尾追加
server.1=node04:2888:3888
server.2=node05:2888:3888
server.3=node06:2888:3888
其中2888主从通信端口,3888是当主挂断后进行选举机制的端口

3.把zookeeper分发到其他节点
scp -r zookeeper-3.4.6/ node03:丶pwd丶
scp -r zookeeper-3.4.6/ node04:丶pwd丶
并用ll /opt/yyx检查下看分发成功没

4.给每台机子创建刚配置文件里的路径
mkdir -p /var/wsc/zk
对node02来说:
echo 1 > /var/wsc/zk/myid //即将node02命名为1
cat /var/wsc/zk/myid给每台机子配置其编号
echo 2 > /var/wsc/zk/myid //即将node02命名为2
cat /var/wsc/zk/myid
对node04来说:
echo 3 > /var/wsc/zk/myid //即将node02命名为3
cat /var/wsc/zk/myid
5.在/etc/profile里面配置
export ZOOKEEPER_HOME=/opt/yyx/zookeeper-3.4.6
export PATH=PATH:/usr/java/jdk1.7.067/bin:HADOOP_HOME/bin:HADOOPHOME/sbin: ZOOKEEPER_HOME/bin
6.然后在把/etc/profile分发到其他node05、node06
scp /etc/profile node03:/etc
scp /etc/profile node04:/etc
在node02、03、04里source /etc/profie,这步千万别忘
验证source这句是否完成,输入zkCli.s,按Tab可以把名字补全zkCli.sh

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

第九步:启动journalnode
在02、03、04三台机子上输入以下命令把journalnode启动起来
hadoop-daemon.sh start journalnode
使用jps命令,如果出现了journalnode就说明已经启动。
任选一台namenode上执行hdfs namenode –format命令,另一台namenode不用执行,否则会找不到集群。
而后用hadoop-daemon.sh start namenode命令启动之前格式化的namenode,并用hdfs namenode -bootstrapStandby命令为另一台namenode同步数据。
第十步:格式化zkfc
用hdfs zkfc -formatZK命令格式化zkfc,而后在node02上执行zkCli.sh命令打开zookeeper客户端看hadoop-ha是否打开。
第十一步:启动hdfs集群
在node01上启动hdfs集群:
用start-dfs.sh命令
注意:如果那个节点没起来到hadoop目录下去看那个
node的日志文件log
输入完后用jps命令查看进程。
而后用浏览器访问node01:50070和node02:50070
访问完毕后关闭集群:stop-dfs.sh,关闭zookeeper:zkServer.sh stop
第十二步:为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丶

由于node05和node06都是resourcemanager,因此需为它们相互免密钥
node03上免密钥登录node04:
在node03的.ssh目录下生成密钥
ssh-keygen -t dsa -P ‘’ -f ./id_dsa
并追加到自己authorized_keys
cat id_dsa.pub >> authorized_keys
用ssh localhost验证看是否需要密码,别忘了exit
将node03 的公钥分发到node04
scp id_dsa.pub node04:pwd/node03.pub
在node04的.ssh目录下,追加node03.pub
cat node03.pub >> authorized_keys
在node03上ssh node04,看是否免密钥

node04上免密钥登录node03可同理操作。

操作完后,执行以下操作:
1.启动zookeeper,全部会话zkServer.sh start
2.在node01上启动hdfs,start-dfs.sh
3.在node01上启动yarn,start-yarn.sh
4.在node03、04上分别启动resourcemanager,
yarn-daemon.sh start resourcemanager
5.全部会话jps,看进程全不全

在浏览器访问node03:8088,查看resourcemanager管理的内容

第十三步:尝试运行wordcount
这里以500mils的歌词为例:
1.cd /opt/wsc/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
5.查看运行结果
hdfs dfs -ls /data/out/result
hdfs dfs -cat /data/out/result/part-r-00000
运行完后关闭集群:
node01: stop-dfs.sh
node01: stop-yarn.sh (停止nodemanager)
node03,node06: yarn-daemon.sh stop resourcemanager
Node02、03、04:zkServer.sh stop

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值