CentOS7搭建Hadoop3.1.1的HA详细步骤

最近负责的项目准备上大数据平台存储,主要还是围绕Hadoop平台来实现,虽然打算上cdh版本的hadoop,但是为了前期方便开发还是先使用原声的hadoop进行开发,后期再准备更好的环境进行扩展。

环境准备

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

基础机器分配

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

hostname ip 说明

tidb1192.168.108.66namenode与datanode
tidb2192.168.108.67namenode与datanode
tidb3192.168.108.68namenode与datanode

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

每台机器安装内容如下:

tidb1tidb2tidb3
NameNode
DataNode
ResourceManager
NodeManager
Zookeeper
journalnode
zkfc

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

防火墙

三台机器都需要这么做

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

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

firewall

1.查看防火墙的状态

[root@tidb1 sbin]# firewall-cmd --state
running

2.停止防火墙

systemctl stop firewalld.service

3.禁止开机启动

systemctl disbale firewalld.service

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

iptabel

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

1.查看防火墙的状态

service iptables status

2.停止防火墙

service iptables stop
Redirecting to /bin/systemctl stop  iptables.service

3.禁止开机启动

chkconfig iptables off

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

Selinux

三台机器都需要这么做

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

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

1.查看SELinux当前状态:

getenforce

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

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

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

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

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

ip固定

三台机器都需要这么做

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

  • 有专门的人员路由器端进行固定分配,这样是最简单的操作步骤。建议这么做
  • 给专门的网卡进行固定ip,很多时候服务器是有双网卡与光口的,其参考以下步骤,仅供参考

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

ls /etc/sysconfig/network-scripts/

2.配置网卡ip

vi /etc/sysconfig/network-scripts/ifcfg-enp*
# 启用host-only网卡
cd /etc/sysconfig/network-scripts/
cp ifcfg-enp0s3  ifcfg-enp0s8

3.修改网卡为静态ip

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

在这里插入图片描述
4. 重启网卡

service network restart

配置hosts

三台机器都需要这么做

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

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

配置免登陆

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

1.生成秘钥

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

2.写入authorized_keys

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys`

3.注意权限问题

chmod 0600 ~/.ssh/authorized_keys

4.拷贝到其他服务器上

ssh-copy-id root@tidb2
ssh-copy-id root@tidb3

5.尝试是否能互相免登陆

ssh tidb2
ssh tidb3
ssh tidb1

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

  • 检查配置的免登陆秘钥是否正确,一般是秘钥出现错误导致的。
  • 秘钥没有问题,文件的权限是否正确 ,进行第三步权限的修改。
目录权限的问题,解决。
sudo chmod 700 ~
sudo chmod 700 ~/.ssh
sudo chmod 600 ~/.ssh/authorized_keys

标题准备需要安装的软件

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

1. 创建三个软件的存储位置
mkdir zookeeper
mkdir hadoop
mkdir java
2. 下载软件
移动到相应的目录下 下载软件
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-3.1.1/hadoop-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 

安装

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

rsync 安装

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

rpm -qa | grep rsync 检查是否安装无哦rsync 
yum install -y rsync 使用yum安装rsync 


Java环境的安装

1.进入解压的Java文件路径下

cd /home/bigdata/java/jdk1.8
pwd 找到路径信息

2.配置环境变量

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

3.同步到其他服务器

tidb2:
rsync -avup /etc/profile root@tidb2:/etc/
tidb3:
rsync -avup /etc/profile root@tidb3:/etc/

4.执行生效

三台都执行
 source /etc/profile 
如果是使用的个人用户需要执行
source ~/.bashrc

zookeeper安装

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

cd  /home/bigdata/zookeeper/zookeeper-3.4.13

在这里插入图片描述

2.增加zoo.cfg文件

cd /home/bigdata/zookeeper/zookeeper-3.4.13/conf
cp zoo_sample.cfg zoo.cfg
mv zoo_sample.cfg bak_zoo_sample.cfg  备份文件

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

# 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/current/zookeeperAdmin.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

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

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

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

4.创建需要的文件夹

mkdir -p /home/bigdata/zookeeper/zookeeper-3.4.13/tmp
echo 1 > /home/bigdata/zookeeper/zookeeper-3.4.13/tmp/myid

5.同步到其他服务器上

rsync -avup  /home/bigdata/zookeeper root@tibd2:/home/bigdata/ 
rsync -avup  /home/bigdata/zookeeper root@tibd3:/home/bigdata/ 

6.修改其他服务器上的myid

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

7.配置环境变量

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

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

小黑板,三台都需要执行
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 代表的是主节点

Hadoop 的安装

基础文件的创建

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

数据存储

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

journal 内容存储

mkdir -p /media/data1/hdfs/hdfsjournal

namenode 内容存储路径

mkdir -p /media/data1/hdfs/name

修改相关的配置文件

1.配置Java环境

编辑 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 配置日志文件

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

<?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>

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

<?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>

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

    <?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> 

5.yarn-site.xml vim /home/bigdata/hadoop/hadoop/etc/hadoop/yarn-site.xm

    <?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>

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

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

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

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

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

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

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

通过rsync 同步到其他机器上

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 上的编号进行删除,

启动

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

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

启动zookeeper

每台进入到安装的zookeeper目录下
./zkServer.sh start 

启动journalnode

进入到hadoop的安装目录下 然后进到sbin 目录下
./hadoop-daemon.sh start journalnode  启动journalnode 

格式化namenode

格式化

hadoop namenode -format

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

同步的内容:配置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/

格式化zkfc

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

./hdfs zkfs -formatZK

关闭journalnode

./hadoop-daemon.sh stop journalnode

启动 hadoop集群

hadoop 目录下的sbin目录执行
./start-all.sh  全部启动。

启动情况查看

  • 使用命令查看
[root@tidb1 bin]# ./hdfs haadmin -getServiceState nn1
standby
[root@tidb1 bin]# ./hdfs haadmin -getServiceState nn2
active
  • 界面查看
http://192.168.108.66:50070   # 注意这个端口是自定义的,不是默认端口
http://192.168.108.67:50070

备用节点
主节点

连接

(1)原链接
(2)CentOS-6环境下5台机器搭建HA步骤与注意事项

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值