hadoop-3.4.6高可用安装

在伪分布式的基础上安装hadoop高可用
hadoop-3.4.6安装方案在这里插入图片描述步骤:
1.分发jdk到node03,node04,node05
在这里插入图片描述
在Xshell的全部会话栏里,输入ll,查看jkd是否发送成功

2.给node03,node04,node05分别安装jdk
①在node03,node04,node05上执行rpm安装命令:
rpm -i jkd-7u67-linux-x64.rpm
②在node02上cd /etc,在此目录下把profile文件分发到node03,node04,node05上:
scp profile node03:‘pwd’
scp profile node04:‘pwd’
scp profile node05:‘pwd’
在Xshell的全部会话栏里,输入:source /etc/profile,然后输入:jps,查看node03,node04,node05这三台机子的jdk是否安装好:
在这里插入图片描述
3.同步所有服务器的时间
①利用 date命令查看机子的当前时间
时间不能差太大,否则集群启动后某些进程跑不起来。
②若时间不同步
1)yum进行时间同步器的安装
yum -y install ntp
2)执行同步命令
ntpdate time1.aliyun.com
和阿里云服务器时间同步

4.装机之前的配置文件检查
①查看hostname是否正确
cat /etc/sysconfig/network
②查看IP映射是否正确
cat /etc/hosts
③查看selinux里是否为disabled
cat /etc/sysconfig/selinux
④查看防火墙是否关闭
service iptables status

5. namenode与其他三台机子的免密钥设置
①在家目录下 ll -a 看下有无.ssh 文件,如果没有就ssh localhost一下
ssh-keygen -t dsa -P ‘’-f ~/.ssh/id_dsa
cat ~/.ssh/id dsa.pub >> ~/.ssh/authorized_keys
②cd .ssh,并 ll 查看
③把node02的公钥发给其他三台机子
scp id_dsa.pub node03:‘pwd’/node02.pub
scp id_dsa.pub node04:‘pwd’/node02.pub
scp id_dsa.pub node05:‘pwd’/node02.pub
④在node03,node04,node05追加一下node02.pub
cat node02,pub >> authorized_keys

6.两个namenode之间相互免密钥
在node03上:
ssh-keygen -t dsa -P ‘’-f ~/.ssh/id_dsa
cat ~/.ssh/id dsa.pub >> ~/.ssh/authorized_keys
然后ssh localhost验证一下
然后将id_dsa分发到node02:
scp id_dsa.pub node02:‘pwd’/node03.pub
在node02的 .ssh 文件下:
cat node03.pub >> authorized_keys
在node03上ssh node02 验证一下是否可免密钥登录

7.修改namenode的一些配置信息
1)vi hdfs-site.xml
①去掉snn的配置
在这里插入图片描述
②增加以下property
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
综上之后,hdfs-site.xml的内容为:

<configuration>
<property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
<property>
  <name>dfs.nameservices</name>
  <value>mycluster</value>
</property>
<property>
  <name>dfs.ha.namenodes.mycluster</name>
  <value>nn1,nn2</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  <value>node02:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn2</name>
  <value>node03:8020</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn1</name>
  <value>node02:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn2</name>
  <value>node03:50070</value>
</property>
<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://node02:8485;node03:8485;node04:8485/mycluster</value>
</property>
<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/var/yh/hadoop/ha/jn</value>
</property>
<property>
  <name>dfs.client.failover.proxy.provider.mycluster</name>  
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
  <name>dfs.ha.fencing.methods</name>
  <value>sshfence</value>
</property>
<property>
  <name>dfs.ha.fencing.ssh.private-key-files</name>
  <value>/root/.ssh/id_dsa</value>
</property>
<property>
   <name>dfs.ha.automatic-failover.enabled</name>
   <value>true</value>
 </property>
</configuration>

2)vi core-site.xml
在这里插入图片描述
core-site.xml的内容:

<configuration>
   <property>
	<name>fs.defaultFS</name>
	<value>hdfs://mycluster</value>
   </property>
   <property>
	<name>ha.zookeeper.quorum</name>
        <value>node03:2181,node04:2181,node05:2181</value>
    </property>

</configuration>

3)vi slaves

node03
node04
node05

在这里插入图片描述

4)安装hadoop
①cd /opt,将解压后的hadoop(寻找到haodoop所在的目录)分发到node03,node04,node05:
scp -r yh/ node03:‘pwd’
scp -r yh/ node04:‘pwd’
scp -r yh/ node05:‘pwd’
②将hdfs-site.xml和core-site.xml分发到node03,node04,node05:
scp hdfs-site.xml core-site.xml node03:‘pwd’
scp hdfs-site.xml core-site.xml node04:‘pwd’
scp hdfs-site.xml core-site.xml node05:‘pwd’

8.安装zookeeper(在node03,node04,node05
1)将zookeeper的压缩包上传之后解压安装zookeeper:
tar xf zookeeper-3.4.6.tar.gz -C /opt/yh

2)修改zookeeper的配置文件
cd /opt/yh/zookeeper-3.4.6/conf
给zoo_sample.cfg改名:
cp zoo_sample.cfg zoo.cfg
然后vi zoo.cfg
改dataDir=/var/yh/zk
并在末尾追加
server.1 = node03:2888:3888
server.2 = node04:2888:3888
server.3 = node05:2888:3888
其中2888主从通信端口,3888是当主挂断后进行选举机制的端口

3)把zookeeper分发到其他机子
scp -r zookeeper-3.4.6/ node04:‘pwd’
scp -r zookeeper-3.4.6/ node05:‘pwd’
利用ll /opt/yh检查一下分发成功没有

4)给每台机子创建刚配置文件的路径

mkdir -p /var/yh/zk

对node03来说: .
echo 1 > /var/yh/zk/myid
cat /var/yh/zk/myid

对node04来说:
echo 2 > /var/yh/zk/myid
cat /var/yh/zk/myid

对node05来说:
echo 3 > /var/yh/zk/myid
cat /var/yh/zk/myid

给每台机子配置其编号(必须是阿拉伯数字)

5)在/etc/profile里面配置
export ZOOKEEPER HOME=/opt/yh/zookeeper-3.4.6
export PATH= P A T H : / u s r / j a v a / j d k 1.7. 0 6 7 / b i n : PATH:/usr/java/jdk1.7.0_67/bin: PATH:/usr/java/jdk1.7.067/bin:HADOOP_HOME/bin: H A D O O P H O M E / s b i n : HADOOP_ HOME/sbin: HADOOPHOME/sbin:ZOOKEEPER_HOME/bin

6)然后把/etc/profile分发到node04,node05上
scp /etc/profile node04:/etc
scp /etc/profile node05:/etc

在node03,node04,node05里source /etc/ profie
验证source这句是否完成,输入zkCli.s,按Tab可以把名字补全zkCli.sh

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

8) 启动之后
会有2个follower以及1个leader

9.启动journalnode
在node02,node03,node04上分别把journalnode启动起来:
hadoop-daemon.sh start journalnode
在这里插入图片描述

10.格式化任一namenode
1)格式化任一一个namenode
随意挑一台namenode上执行hdfs_namenode -format另一台namenode不用执行,否则clusterlD变 了,找不到集群了。
在这里插入图片描述

2)启动格式化后的namenode
hadoop-daemon.sh start namenode
在这里插入图片描述

3)同步另一台namenode的数据
hdfs namenode -bootstrapStandby
在这里插入图片描述

11.格式化zkfc
hdfs zkfc -formatZK
在这里插入图片描述
在node03上执行zkCli. sh打开zookeeper客户端看hadoop-ha是否打开:
在这里插入图片描述

12.启动hdfs集群
start-dfs.sh
在这里插入图片描述
然后全部会话 jps 进程:
node02:
在这里插入图片描述
node03:
在这里插入图片描述
node04:
在这里插入图片描述
node05:
在这里插入图片描述
用浏览器访问集群:
在这里插入图片描述
在这里插入图片描述

13.关闭集群
关闭集群命令:
stop-dfs.sh
在这里插入图片描述
关闭zookeeper命令:
zkServer.sh stop

14.为MapReduce做准备
1)把mapred-site.xml.template留个备份
cp mapred-site.xml.template mapred-site.xml

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

<property>
< name> mapreduce.framework.name </name>
<value>yarn</value>
</property>

mapred-site.xml的显示如下:
在这里插入图片描述

3)在yarn-site.xml里添加如下property
在这里插入图片描述
在这里插入图片描述
yarn-site.xml显示如下:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
<property>
   <name>yarn.resourcemanager.ha.enabled</name>
   <value>true</value>
 </property>
 <property>
   <name>yarn.resourcemanager.cluster-id</name>
   <value>cluster1</value>
 </property>
 <property>
   <name>yarn.resourcemanager.ha.rm-ids</name>
   <value>rm1,rm2</value>
 </property>
 <property>
   <name>yarn.resourcemanager.hostname.rm1</name>
   <value>node04</value>
 </property>
 <property>
   <name>yarn.resourcemanager.hostname.rm2</name>
   <value>node05</value>
 </property>
 <property>
   <name>yarn.resourcemanager.zk-address</name>
   <value>node03:2181,node04:2181,node05:2181</value>
 </property>
 </configuration>

4)把mapred-site.xml 和 yarn-site.xml分发到node03,node04,node05
scp mapred-site.xml yarn-site.xml node03: ‘pwd’
scp mapred-site.xml yarn-site.xml node04: ‘pwd’
scp mapred-site.xml yarn-site.xml node05: ‘pwd’

5)在node04和node05上免密钥
在node04的.ssh目录下生成密钥
ssh-keygen -t dsa -P " -f ./id_dsa
并追加到自己authorized_keys,
cat id_ dsa.pub >> authorized_keys
将node04的公钥分发到node05
scp. id_ dsa.pub node05: ‘pwd’/node04.pub
在node05的ssh目录下,追加node04.pub
cat node04.pub > > authorized_keys
在node04上ssh node05,看是否免密钥.

在node05的.ssh目录下生成密钥
ssh-keygen -t dsa -P " -f ./id_dsa
并追加到自己authorized_keys,
cat id_ dsa.pub >> authorized_keys
将node05的公钥分发到node04
scp id _dsa.pub node04: ‘pwd’/node05.pub
在node04的.ssh目录下,追加node05.pub
cat node05.pub >> authorized_keys
在node05.上ssh node04,看是否免密钥

6)启动各项
①启动zookeeper,全部会话
zkServer.sh start
②在node02上启动hdfs
start-dfs.sh
③在node02.上启动yarn
start-yarn.sh
④4.在node04、05上分别启动resourcemanager
yarn-daemon.sh start resourcemanager
⑤全部会话jps,看进程全不全
node02的jps:
在这里插入图片描述
node03的jps:
在这里插入图片描述
node04的jps:
在这里插入图片描述
node05的jps:
在这里插入图片描述
网页访问node05:8088,查看resourcemanager管理的内容:
在这里插入图片描述

7)关闭各项
①关闭zookeeper,全部会话
zkServer.sh stop
②在node02上关闭hdfs
stop-dfs.sh
③在node02.上关闭yarn
stop-yarn.sh
④4.在node04、05上分别关闭resourcemanager
yarn-daemon.sh stop resourcemanager

15.总结
单词拼写我强调一下,有时候就是小问题、细节的问题(代码中空格大小写注意一下)
在更新完这些.xml的文件后记得
source /etc/profile
另外,在碰到无提示的问题时,可以cd到logs目录下
( 我的cd到logs文件目录的命令是 cd /opt/yh/hadoop-2.6.5/logs)
然后ll查看一下有没有你需要的“.logs” 文件 然后tail -100 ********.logs到".logs"文件下查看是什么错误
(例如tail到node02的journalnode的文件下命令是:tail -100 hadoop-root-journalnode-node02.log)
上课跟着老师的节奏,不要太快也不要太慢(慢的话记得课后跟上老师的进度)一般的问题问一下老师,大问题可以你百度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值