分享

Hadoop 3.1.1实战之HA高可用安装

问题导读:

1.怎样在Centos7.6基础上实现Hadoop 3.1.1的HA高可用安装?
2.怎样配置集群之间的免密登录?
3.怎样配置HA高可用?


环境准备

三台服务器系统环境是建立在Centos7.6基础上。并且是建立在root账户上运行的,如果需要使用其他用户操作,注意权限的问题

基础机器分配

在三台新购买的服务器上进行搭建。服务器规划如下

hostname ip 说明
tidb1 192.168.108.66 namenode与datanode
tidb2 192.168.108.67 namenode与datanode
tidb3 192.168.108.68 namenode与datanode

搭建大数据集群基础机器配置是三台,真实环境部署建议namenode与datanode进行分开,两台机器专门做namenode节点,其他三台做datanode节点。

每台机器安装内容如下:

tidb1 tidb2 tidb3
NameNode
DataNode
ResourceManager
NodeManager
Zookeeper  √  √  √
journalnode  √  √  √
zkfc  √  √

在3.0版本以上,我们可以进行安装多个NameNode节点,来保证更高的高可用方案。但是作为基础的测试环境开发这样就是可以了,更多机器扩展也在此进行扩展即可。

防火墙

三台机器都需要这么做


部署集群之前将集群的防火墙进行关闭,否则部署出现,访问端口访问不到的情景。

centos 系统中存在两种防火墙,firewall 与iptables , 7.0以后默认是firewall 防火墙,但是也在网上看到其他朋友遇见过 7.0系统上存在两种防火墙策略导致布置程序端口一直访问不到的情况。

firewall

查看防火墙的状态

[mw_shl_code=shell,true][root@tidb1 sbin]# firewall-cmd --state
running[/mw_shl_code]

停止防火墙

[mw_shl_code=shell,true]systemctl stop firewalld.service
[/mw_shl_code]

禁止开机启动

[mw_shl_code=shell,true]systemctl disbale firewalld.service
[/mw_shl_code]

执行以上三步之后,程序再开机之后不再出现防火墙的配置问题。


iptabel

如果是这个防火墙的配置,我们也需要进行防火墙的关闭,如果熟悉的话其实打开对应的端口策略即可。


查看防火墙的状态

[mw_shl_code=shell,true]service iptables status
[/mw_shl_code]

停止防火墙

[mw_shl_code=shell,true]service iptables stop
Redirecting to /bin/systemctl stop  iptables.service[/mw_shl_code]

禁止开机启动

[mw_shl_code=shell,true]chkconfig iptables off[/mw_shl_code]

对于安装在其他系统上的集群环境,按照对应的策略进行关闭防火墙。

Selinux

三台机器都需要这么做

关于这个增强型Linux,网上很多都建议关闭,在这里搜索下了相关资料,主要是没有人进行专门的维护运营白名单导致的。

测试环境上我们也进行关闭,方便我们集群的搭建。正式上线根据运维的需要进行部署执行。

查看SELinux当前状态:

[mw_shl_code=shell,true]getenforce
[/mw_shl_code]

修改SELinux状态(临时修改,重启机器后失效)

[mw_shl_code=shell,true]setenforce 0   #将SELinux修改为Permissive状态(遇到违反安全策略的,会采取警告,允许通过)

  setenforce 1   #将SELinux状态修改为Enforcing状态(遇到违反安全策略的,不允许通过)[/mw_shl_code]

修改SELinuxw为禁用状态 (永久性,重启机器后保持生效)

[mw_shl_code=text,true] 打开文件:  /etc/selinux/config  修改 SELINUX = disabled  
重启机器后生效,重启机器命令:reboot[/mw_shl_code]

ip固定

三台机器都需要这么做

在企业环境中,如果是真实的服务器,不是利用云服务器,那么我们使用服务器之前需要进行ip的固定,不然服务器出现意外重启,会导致我们ip变动,集群就不能正常启动。
固定ip,两种执行方案:

有专门的人员路由器端进行固定分配,这样是最简单的操作步骤。建议这么做

给专门的网卡进行固定ip,很多时候服务器是有双网卡与光口的,其参考以下步骤,仅供参考

查看网卡(文件 ifcfg-enp* 为网卡文件)

[mw_shl_code=shell,true]ls /etc/sysconfig/network-scripts/[/mw_shl_code]

配置网卡ip

[mw_shl_code=shell,true]vi /etc/sysconfig/network-scripts/ifcfg-enp*
# 启用host-only网卡
cd /etc/sysconfig/network-scripts/
cp ifcfg-enp0s3  ifcfg-enp0s8[/mw_shl_code]

修改网卡为静态ip

[mw_shl_code=text,true]修改BOOTPROTO为static
修改NAME为enp0s8
修改UUID(可以随意改动一个值,只要不和原先的一样)
添加IPADDR,可以自己制定,用于主机连接虚拟机使用。
添加NETMASK=255.255.255.0 (网管 也可以和网段一样 x.x.x.255)[/mw_shl_code]

1684ba267a042549.jpg

重启网卡

[mw_shl_code=shell,true]service network restart
[/mw_shl_code]

配置hosts

三台机器都需要这么做


重点注意,配置主节点Namenode的时候,需要将localhost 两行 注释掉,不然会出现找不到hostname的问题。其他节点可以存在


[mw_shl_code=applescript,true]vim /etc/hosts

[root@tidb1 network-scripts]# cat /etc/hosts  
#127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.108.66 tidb1
192.168.108.67 tidb2
192.168.108.68 tidb3
[/mw_shl_code]


配置免登陆

老生常态,集群之间需要通过ssh,互相通信,那么需要设置免登陆的情况。


步骤如下:


生成秘钥

[mw_shl_code=shell,true]ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
[/mw_shl_code]

写入authorized_keys

[mw_shl_code=shell,true]cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys`[/mw_shl_code]

注意权限问题

[mw_shl_code=shell,true]chmod 0600 ~/.ssh/authorized_keys
[/mw_shl_code]

拷贝到其他服务器上

[mw_shl_code=shell,true]ssh-copy-id root@tidb2
ssh-copy-id root@tidb3[/mw_shl_code]

尝试是否能互相免登陆

[mw_shl_code=shell,true]ssh tidb2
ssh tidb3
ssh tidb1[/mw_shl_code]

在每条机器上,都需要进行操作,实现免登陆,如果存在免登陆失败

  • 检查配置的免登陆秘钥是否正确,一般是秘钥出现错误导致的。
  • 秘钥没有问题,文件的权限是否正确 ,进行第三步权限的修改。

[mw_shl_code=shell,true]目录权限的问题,解决。
sudo chmod 700 ~
sudo chmod 700 ~/.ssh
sudo chmod 600 ~/.ssh/authorized_keys[/mw_shl_code]

准备需要安装的软件

hadoop HA版本我们需要使用zookeeper来实现,所以需要准备的软件就有这样三个了 hadoop ,zookeeper,jdk1.8版本。


[mw_shl_code=shell,true]1. 创建三个软件的存储位置
mkdir zookeeper
mkdir hadoop
mkdir java
2. 下载软件
移动到相应的目录下 下载软件
wget http://mirror.bit.edu.cn/apache/ ... eeper-3.4.13.tar.gz
wget http://mirrors.hust.edu.cn/apach ... op-3.1.1-src.tar.gz
jdk 去oracle 网站进行下载再上传到我们服务器的目录上。

3. 进行相应的解压

tar -zxvf zookeeper-3.4.13.tar.gz
tar -zxvf hadoop-3.1.1-src.tar.gz
tar -zxvf jdk1.8.tar.gz
[/mw_shl_code]


安装

以上基础内容都配置好之后,我们就可以开始进行程序的安装了。首先在第一台机器上进行配置好之后在通过rsync 进行同步发送过去


rsync 安装

centos 上的安装,每台都需要进行安装


[mw_shl_code=shell,true]rpm -qa | grep rsync 检查是否安装无哦rsync
yum install -y rsync 使用yum安装rsync [/mw_shl_code]


Java环境的安装
进入解压的Java文件路径下

[mw_shl_code=shell,true]cd /home/bigdata/java/jdk1.8
pwd 找到路径信息[/mw_shl_code]

配置环境变量

[mw_shl_code=shell,true]JAVA_HOME=/home/bigdata/java/jdk1.8
JRE_HOME=/home/bigdata/java/jdk1.8/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
[/mw_shl_code]

同步到其他服务器

[mw_shl_code=shell,true]tidb2:
rsync -avup /etc/profile root@tidb2:/etc/
tidb3:
rsync -avup /etc/profile root@tidb3:/etc/[/mw_shl_code]

执行生效

[mw_shl_code=shell,true]三台都执行
source /etc/profile
如果是使用的个人用户需要执行
source ~/.bashrc
[/mw_shl_code]

zookeeper安装

进入到上面的解压的目录下

[mw_shl_code=shell,true]cd  /home/bigdata/zookeeper/zookeeper-3.4.13[/mw_shl_code]

1684bcaf399e769e.jpg

增加zoo.cfg文件

[mw_shl_code=shell,true]cd /home/bigdata/zookeeper/zookeeper-3.4.13/conf
cp zoo_sample.cfg zoo.cfg
mv zoo_sample.cfg bak_zoo_sample.cfg  备份文件[/mw_shl_code]

编辑zoo.cfg

修改之前 创建dataDir 文件 mkdir -p /home/bigdata/zookeeper/zookeeper-3.4.13/tmp
在原先的基础内容上增加server配置内容与配置dataDir文件内容

[mw_shl_code=applescript,true]
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
#修改的dataDir文件路径,配置临时文件路径内容即可,配置的文件路径需要提前创建好
# example sakes.
dataDir=/home/bigdata/zookeeper/zookeeper-3.4.13/tmp
# the port at which the clients will connect
clientPort=2181
# 配置server 几台机器就配置几台即可,注意server的数字,我们在后续需要用到
server.1=tidb1:2888:3888
server.2=tidb2:2888:3888
server.3=tidb3:2888:3888
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/ ... html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purg
[/mw_shl_code]

上面的基本配置信息内容如下:

tickTime: 心跳基本时间单位,毫秒级,ZK基本上所有的时间都是这个时间的整数倍。
initLimit: tickTime的个数,表示在leader选举结束后,followers与leader同步需要的时间,如果followers比较多或者说leader的数据灰常多时,同步时间相应可能会增加,那么这个值也需要相应增加。当然,这个值也是follower和observer在开始同步leader的数据时的最大等待时间(setSoTimeout)
syncLimit : tickTime的个数,这时间容易和上面的时间混淆,它也表示follower和observer与leader交互时的最大等待时间,只不过是在与leader同步完毕之后,进入正常请求转发或ping等消息交互时的超时时间。
dataDir : 内存数据库快照存放地址,如果没有指定事务日志存放地址(dataLogDir),默认也是存放在这个路径下,建议两个地址分开存放到不同的设备上
clientPort : 配置ZK监听客户端连接的端口clientPort=2181

[mw_shl_code=shell,true]server.serverid=host:tickpot:electionport  固定写法
server:固定写法
serverid:每个服务器的指定ID(必须处于1-255之间,必须每一台机器不能重复)
host:主机名
tickpot:心跳通信端口
electionport:选举端口
[/mw_shl_code]

创建需要的文件夹

[mw_shl_code=shell,true]mkdir -p /home/bigdata/zookeeper/zookeeper-3.4.13/tmp
echo 1 > /home/bigdata/zookeeper/zookeeper-3.4.13/tmp/myid[/mw_shl_code]

同步到其他服务器上

[mw_shl_code=shell,true]rsync -avup  /home/bigdata/zookeeper root@tibd2:/home/bigdata/
rsync -avup  /home/bigdata/zookeeper root@tibd3:/home/bigdata/ [/mw_shl_code]

修改其他服务器上的myid

[mw_shl_code=shell,true]tidb2:
vim /home/bigdata/zookeeper/zookeeper-3.4.13/tmp/myid  将1改为2
tidb3:
vim /home/bigdata/zookeeper/zookeeper-3.4.13/tmp/myid  将1改为3[/mw_shl_code]

配置环境变量

[mw_shl_code=shell,true]JAVA_HOME=/home/bigdata/java/jdk1.8
JRE_HOME=/home/bigdata/java/jdk1.8/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
ZOOKEEPER_HOME=/home/bigdata/zookeeper/zookeeper-3.4.13
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$ZOOKEEPER_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH ZOOKEEPER_HOME

source /etc/profile
[/mw_shl_code]

进行验证是否正常。

以上7个步骤执行完毕后,我们需要进行zookeeper的验证是否正确,将每台服务器上的zookpeer进行启动

[mw_shl_code=shell,true]小黑板,三台都需要执行
cd  /home/bigdata/zookeeper/zookeeper-3.4.13/bin
执行 ./zkServer.sh start
检查是否启动

方式1 :
使用命令jps 检查是否执行成功,jps 不存在的执行下安装  检查是否 有这个配置export PATH=$PATH:/usr/java/jdk1.8/bin
85286 QuorumPeerMain  代表执行成功

方式2:
./zkServer.sh status
[root@tidb1 bin]# ./zkServer.sh  status
ZooKeeper JMX enabled by default
Using config: /home/bigdata/zookeeper/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: follower 代表是从节点
Mode: Leader 代表的是主节点
[/mw_shl_code]

Hadoop 的安装
基础文件的创建

[mw_shl_code=text,true]安装过程中我们需要一些目录文件进行存储我们的数据,日志文件,数据存储文件都是保存在不同的目录中,需要提前准备好
[/mw_shl_code]

数据存储

[mw_shl_code=shell,true]每台机器上三个硬盘,需要三个目录进行创建
mkdir -p /media/data1/hdfs/data
mkdir -p /media/data2/hdfs/data
mkdir -p /media/data3/hdfs/data[/mw_shl_code]

journal 内容存储

[mw_shl_code=shell,true]mkdir -p /media/data1/hdfs/hdfsjournal
[/mw_shl_code]

namenode 内容存储路径

[mw_shl_code=shell,true]mkdir -p /media/data1/hdfs/name
[/mw_shl_code]

修改相关的配置文件

配置Java环境

[mw_shl_code=shell,true]编辑 hadoop中的hadoop-env.sh文件
vim  /home/bigdata/hadoop/hadoop/etc/hadoop/hadoop-env.sh
配置 jdk环境 ,在这里还可以配置jvm内存大小等内容
export JAVA_HOME=/home/bigdata/java/jdk1.8
#export HADOOP_NAMENODE_OPTS=" -Xms1024m -Xmx1024m -XX:+UseParallelGC"
#export HADOOP_DATANODE_OPTS=" -Xms512m -Xmx512m"
#export HADOOP_LOG_DIR=/opt/data/logs/hadoop 配置日志文件
[/mw_shl_code]

配置core-site.xmlvim /home/bigdata/hadoop/hadoop/etc/hadoop/core-site.xml

[mw_shl_code=xml,true]
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
   <!-- 制定hdfs的nameservice ,默认的链接地址 ,自己可以自定义的-->
    <property>  
        <name>fs.defaultFS</name>  
        <value>hdfs://cluster</value>  
    </property>
    <!--临时文件 存储目录   -->
   
    <property>  
        <name>hadoop.tmp.dir</name>  
        <value>/media/data1/hdfstmp</value>  
    </property>  
   
    <!--指定 zookeeper  ,还可以更多的设置超时时间等内容-->
    <property>  
        <name>ha.zookeeper.quorum</name>  
        <value>tidb1:2181,tidb2:2181,tidb3:2181</value>  
    </property>

</configuration>

[/mw_shl_code]

配置hdfs-site.xmlvim /home/bigdata/hadoop/hadoop/etc/hadoop/hdfs-site.xml

[mw_shl_code=xml,true]<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->


<configuration>
   <!--配置的 nameservice 的名字 ,需要与core-site.xml 中保持一致,并且利用其名称与namenode 设置唯一标识-->
    <property>
        <name>dfs.nameservices</name>
        <value>cluster</value>
    </property>
    <!--配置的权限问题-->
    <property>  
        <name>dfs.permissions.enabled</name>  
        <value>false</varsync -avup hadoop-3.1.1 root@tidb2:/home/bigdata/hadoop/lue>  
    </property>
    <!--配置cluster下面的namenode 名称-->
    <property>
        <name>dfs.ha.namenodes.cluster</name>
        <value>nn1,nn2</value>
    </property>
   
    <!--配置namenode的 地址与端口-->
    <property>
        <name>dfs.namenorsync -avup hadoop-3.1.1 root@tidb2:/home/bigdata/hadoop/de.rpc-address.cluster.nn1</name>
        <value>tidb1:9000</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.cluster.nn2</name>
        <value>tidb2:9000</value>
    </property>

    <property>
        <name>dfs.namenode.http-address.cluster.nn1</name>
        <value>tidb1:50070</value>
    </property>

    <property>
        <name>dfs.namenode.http-address.cluster.nn2</name>
        <value>tidb2:50070</value>
    </property>
    <!-- journal namenode 同步namenode 的元数据共享存储位置。也就是journal的列表信息->
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://tidb1:8485;tidb2:8485;tidb3:8485/cluster</value>
    </property>rsync -avup hadoop-3.1.1 root@tidb2:/home/bigdata/hadoop/

   <!--配置高可用方案内容,失败后自动切换的方式-->
    <property>
        <name>dfs.client.failover.proxy.provider.cluster</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
   
    <!--ssh方案配置-->
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
    </property>hdfs-site.xml
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
    </property>
    <!--journalnode 的保存文件路径-->
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/media/data1/hdfs/hdfsjournal</value>
    </property>
   
   <!--开启NameNode失败自动切换-->
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
    <!--namenode 文件路径信息-->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/media/data1/hdfs/name</value>
    </property>
    <!--datanode 数据保存路径,配置多个数据盘-->
    <property><property>
        <name>dfs.namenode.name.dir</name>
        <value>/media/data1/hdfs/name</value>
    </property>
        <name>dfs.datanode.data.dir</name>
        <value>/media/data1/hdfs/data,
               /media/data2/hdfs/data,
               /media/data3/hdfs/data
        </value>
    </property>
   
    <!--设置的副本数量,在程序汇总副本的系数是可以更改的-->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <!--开启webhdfs接口访问-->
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>

    <property>
        <name>dfs.journalnode.http-address</name>
        <value>0.0.0.0:8480</value>
    </property>
    <property>
        <name>dfs.journalnode.rpc-address</name>
        <value>0.0.0.0:8485</value>
    </property>
    <!--配置 zookeeper-->
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>tidb1:2181,tidb2:2181,tidb3:2181</value>
    </property>

</configuration>
[/mw_shl_code]

修改mapred-site.xml vim /home/bigdata/hadoop/hadoop/etc/hadoop/mapred-site.xml

[mw_shl_code=xml,true]
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
   <!--指定mr  配置yarn信息-->
    <property>
        <name>mapreduce.framework.name</name>  
        <value>yarn</value>  
    </property>
   
     <!-- 指定mapreduce jobhistory地址 -->
    <property>  
        <name>mapreduce.jobhistory.address</name>  
        <value>tidb1:10020</value>  
    </property>
   
    <!-- 任务历史服务器的web地址 -->
    <property>  
        <name>mapreduce.jobhistory.webapp.address</name>  
        <value>tidb1:19888</value>  rsync -avup hadoop-3.1.1 root@tidb2:/home/bigdata/hadoop/
    </property>
</configuration>
[/mw_shl_code]

yarn-site.xmlvim /home/bigdata/hadoop/hadoop/etc/hadoop/yarn-site.xm

[mw_shl_code=xml,true]<?xml version="1.0"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, softwarersync -avup hadoop-3.1.1 root@tidb2:/home/bigdata/hadoop/
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Site specific YARN configuration properties -->


<configuration>
   <!--配置 namenode 的ha id  namenode 节点上进行配置 ,可不配置-->
    <property>
      <name>yarn.resourcemanager.ha.id</name>  
      <value>rm1</value>  
    </property>
    <property>  
        <name>yarn.nodemanager.aux-services</name>  
        <value>mapreduce_shuffle</value>  rsync -avup hadoop-3.1.1 root@tidb2:/home/bigdata/hadoop/
    </property>
    <!-- Site specific YARN configuration properties -->
    <!--启用resourcemanager ha-->  
    <!--是否开启RM ha,默认是开启的-->  
    <property>  
       <name>yarn.resourcemanager.ha.enabled</name>  
       <value>true</value>  
    </property>  
    <!--声明两台resourcemanager的地址-->  
    <property>  
       <name>yarn.resourcemanager.cluster-id</name>  
       <value>rmcluster</value>  
    </property>  
    <!--制定rm的名字-->
    <property>  
       <name>yarn.resourcemanager.ha.rm-ids</name>  
       <value>rm1,rm2</value>  
    </property>  
    <!--指定rm的地址-->
    <property>  
       <name>yarn.resourcemanager.hostname.rm1</name>  
       <value>tidb1</value>  
    </property>  
    <property>  
       <name>yarn.resourcemanager.hostname.rm2</name>  
       <value>tidb2</value>  
    </property>  
   
    <!--指定zookeeper集群的地址-->   rsync -avup hadoop-3.1.1 root@tidb2:/home/bigdata/hadoop/
    <property>  
       <name>yarn.resourcemanager.zk-address</name>  
        <value>tidb1:2181,tidb2:2181,tidb3:2181</value>  
    </property>  
    <!--启用自动恢复,当任务进行一半,rm坏掉,就要启动自动恢复,默认是false-->   
    <property>  
       <name>yarn.resourcemanager.recovery.enabled</name>  
       <value>true</value>  
    </property>  
   
    <!--指定resourcemanager的状态信息存储在zookeeper集群,默认是存放在FileSystem里面。-->   
    <property>  
       <name>yarn.resourcemanager.store.class</name>  
       <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>  
    </property>

</configuration>
[/mw_shl_code]

workers/home/bigdata/hadoop/hadoop/etc/hadoop/workers

[mw_shl_code=shell,true]#将数据节点加入到workers里面,如果namenode与datanode 节点是分开的,在这里 namenode的节点就不加入到这里。
#没有分开那么就需要加入
tidb1
tidb2
tidb3[/mw_shl_code]

start-dfs.sh stop-dfs.shvim /home/bigdata/hadoop/hadoop/sbin/start-dfs.sh vim /home/bigdata/hadoop/hadoop/sbin/stop-dfs.sh

[mw_shl_code=shell,true]3.0版本以后需要增加以下内容
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
HDFS_JOURNALNODE_USER=root
HDFS_ZKFC_USER=root
[/mw_shl_code]

start-yarn.sh stop-yarn.shvim /home/bigdata/hadoop/hadoop/sbin/start-yarn.sh vim /home/bigdata/hadoop/hadoop/sbin/stop-yarn.sh

[mw_shl_code=shell,true]YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root[/mw_shl_code]

通过rsync 同步到其他机器上


[mw_shl_code=shell,true]rsync -avup hadoop-3.1.1 root@tidb2:/home/bigdata/hadoop/
rsync -avup hadoop-3.1.1 root@tidb3:/home/bigdata/hadoop/
同步完之后 如果配置的namenode的编号需要注意以下内容:
修改namenode上的id 编号,datanode 上的编号进行删除,
[/mw_shl_code]

启动

上面的所有文件准备好之后,我们开始进行启动了。


Zookeeper->JournalNode->格式化NameNode->创建命名空间zkfs->NameNode->Datanode->ResourceManager->NodeManager


启动zookeeper

[mw_shl_code=shell,true]每台进入到安装的zookeeper目录下
./zkServer.sh start [/mw_shl_code]

启动journalnode

[mw_shl_code=shell,true]进入到hadoop的安装目录下 然后进到sbin 目录下
./hadoop-daemon.sh start journalnode  启动journalnode [/mw_shl_code]

格式化namenode

格式化

[mw_shl_code=shell,true]hadoop namenode -format
[/mw_shl_code]

格式化同步内容到其他节点上,必须做,不然其他namenode启动不起来

[mw_shl_code=shell,true]同步的内容:配置hdfs-site.xml文件路径下的内容
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/media/data1/hdfs/name</value>
    </property>
   
进行同步   
rsync -avup current  root@tidb2:/media/data1/hdfs/name/
rsync -avup current  root@tidb3:/media/data1/hdfs/name/
[/mw_shl_code]

格式化zkfc

小黑板:只能在namenode上进行格式化namdenode1


[mw_shl_code=shell,true]./hdfs zkfs -formatZK

[/mw_shl_code]


关闭journalnode
[mw_shl_code=shell,true]./hadoop-daemon.sh stop journalnode
[/mw_shl_code]

启动 hadoop集群

[mw_shl_code=shell,true]hadoop 目录下的sbin目录执行
./start-all.sh  全部启动。[/mw_shl_code]

启动情况查看

使用命令查看

[mw_shl_code=shell,true][root@tidb1 bin]# ./hdfs haadmin -getServiceState nn1
standby
[root@tidb1 bin]# ./hdfs haadmin -getServiceState nn2
active
[/mw_shl_code]

界面查看

[mw_shl_code=text,true]http://192.168.108.66:50070   # 注意这个端口是自定义的,不是默认端口
http://192.168.108.67:50070
```大数据基础Hadoop  3.1.1 的高可用HA安装~踩坑记录大数据基础Hadoop  3.1.1 的高可用HA安装~踩坑记录
![备用节点](https://user-gold-cdn.xitu.io/20 ... h=672&f=png&s=91524)
![主节点](https://user-gold-cdn.xitu.io/20 ... =889&f=png&s=148610)
[/mw_shl_code]



最新经典文章,欢迎关注公众号


来源: csdn
作者: LuckQI_琪琪

原文链接:大数据基础Hadoop 3.1.1 的高可用HA安装~踩坑记录

https://blog.csdn.net/fengruiqi/article/details/86498890





已有(1)人评论

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条