从零开始搭建本地虚拟机HadoopHA + HbaseHA 完全分布式集群

注:本人主机 8G 运行内存

多台服务器搭建 Hadoop HA + Hbase HA 完全分布式集群可参考:https://blog.csdn.net/qq_43616898/article/details/104674407

目录:

   一.工具介绍
   二.Hadoop HA 概述
   三.集群规划
   四.虚拟机准备
   五.集群环境准备
   六.SSH免密
   七.安装JDK
   八.搭建 Zookeeper 集群
   九.搭建 Hadoop HA集群
   十.HDFS HA 测试
   十一.Yarn HA 测试
   十二. 搭建 HBase HA集群
   十三.Hbase HA 启动测试
   十四.完结

一. 工具介绍

链接:https://pan.baidu.com/s/1rB8HoV2XD0cqeydpidK3hw
提取码:ce1y
在这里插入图片描述

SecureCRT: ssh 远程连接工具,类似于xshell

Filezilla: 文件上传工具,类似于xftp

VirtualBox: 和VMware 一样的虚拟机,因为VM比较耗内存,这里选择更加轻量一些的VirtualBox

centos7.ova: 准备好的虚拟电脑,直接导入即可

二. Hadoop HA 概述

1. Hadoop HA(High Availability 高可用) 概述:

​  同一个HDFS集群,运行两个互为主备的NameNode节点。一台Namenode为主节点,处于Active状态,一台NameNode为备节点,处于Standby状态。

​  其中只有Active NameNode对外提供读写服务,Standby NameNode会根据Active NameNode的状态变化,在必要时切换成Active状态,避免单点故障问题

2. Hadoop HA 架构图

在这里插入图片描述
在这里插入图片描述

ZKFC(ZookeeperFailoverController): ZKFC 与 NameNode 是一一对应, 是 NameNode的一个守护进程
作用: 负责和Zookeeper进行通常,并时刻检测NameNode 的健康状态

NameNode主备切换:
 如果active 状态的NameNode 是健康的,zkfc 会与zookeeper 建立一个持久session, 并且active状态的NameNode 在Zookeeper 中记录了一个“锁”,这样可以防止其他NameNode 成为active 的NameNode

​  当active 状态的NameNode 出现状况时,zkfc 与Zookeeper 的持久会话就会丢失,同时zkfc 会通知Zookeeper 删除 “锁”,此时,其他的NameNode 会去抢夺"锁",切换到active 状态

防止脑裂(两个NameNode 同时对外提供服务):
 为了防止脑裂的情况的发生,在stangby 状态的NameNode 切换之前,其对应的zkfc 会先向出状况的NameNode 远程发送自杀命令

三.集群规划

说明: 该集群所在虚拟主机桥接的无线网

主机名ip用户名运行进程安装软件
hadoop01192.168.1.5hadoopNameNode、zkfc(DFSZKFailoverController)jdk、hadoop
hadoop02192.168.1.6hadoopNameNode、zkfc(DFSZKFailoverController)jdk、hadoop
hadoop03192.168.1.7hadoopResourceManager 、HMasterjdk、hadoop、hbase
hadoop04192.168.1.8hadoopResourceManager 、HMasterjdk、hadoop、hbase
hadoop05192.168.1.11hadoopDataNode、HRegionServer、NodeManager、JournalNode、QuorumPeerMainjdk、hadoop、zookeeper、hbase
hadoop06192.168.1.12hadoopDataNode、HRegionServer、NodeManager、JournalNode、QuorumPeerMainjdk、hadoop、zookeeper、hbase
hadoop07192.168.1.13hadoopDataNode、HRegionServer、NodeManager、JournalNode、QuorumPeerMainjdk、hadoop、zookeeper、hbase

在这里插入图片描述

Hdfs:

  • NameNode: 负责管理DataNode

  • DataNode: 用来存储上传到hdfs上的数据(数据会被切割成多个block,hdfs2.x 每一个block默认为128M)

  • zkfc: NameNode 的一个守护进程,负责监控NameNode健康状态,并于Zookeeper 通信

  • Journal: 负责 NameNode 间 edits(元数据操作日志) 的同步,依赖于Zookeeper 集群

    ​ 一般与zookeeper部署在一起

Hbase:

  • HMaster: 不负责存储数据,管理regionServer 的运行状态,负责regionServer 的负载均衡

  • HRegionServer: 负责数据的存储,数据库中的数据会被分成多个Region, 最终数据会被存储到Hdfs上

    ​ 一般与DataNode部署在一起

yarn:

  • ResourceManager: 负责调度 NodeManager

  • NodeManager: 为MapReduce 提供运算环境

    ​ 一般与DataNode部署在一起

zookeeper:

  • QuorumPeerMain: Zookeeper 主进程

四. 虚拟机准备

1. 安装 VirtualBox

因为 VMware 较为耗费内存,所以使用VirtualBox

在这里插入图片描述

直接点击下一步即可,别忘了选择安装目录
在这里插入图片描述

2. 配置VirtualBox

运行界面
在这里插入图片描述

设置虚拟电脑存储位置

【左上角】 管理–>全局设定–>常规–> 默认虚拟机位置

在这里插入图片描述

设置虚拟机与主机之间鼠标切换热键

【左上角】 管理–>全局设定–>热键–>虚拟电脑*
在这里插入图片描述

3. 导入虚拟电脑

【左上角】 管理–>导入虚拟电脑

1) 选中centos7.ova 文件所在

在这里插入图片描述

2) 修改虚拟电脑配置,并导入

  • 因为 创建的虚拟电脑比较多,我这里选中分配512M 内存,根据自己情况而定
    在这里插入图片描述
    在这里插入图片描述

3) 网络配置

鼠标右键点击刚刚导入的虚拟电脑 设置—>网络—>网卡1—>桥接
在这里插入图片描述

4. 启动测试

双击虚拟电脑,或者点击虚拟电脑–>鼠标右键–>正常启动

用户: root 密码:123456

在这里插入图片描述

默认ip 为 192.168.1.4 【因为我的主机连接的是wifi】

在这里插入图片描述
在这里插入图片描述

5. 导入其他6台虚拟电脑

运行测试: 连开七台虚拟电脑,风扇在疯狂转动

在这里插入图片描述

6. 修改ip 地址

操作主机: hadoop01

vi /etc/sysconfig/network-scripts/ifcf-enp0s3

在这里插入图片描述
这是我主机无线局域网的网关,根据自己情况而定

GATEWAY="192.168.1.1"

保存退出,重启网络服务

systemctl restart network

在这里插入图片描述

网络测试:

在这里插入图片描述

7.以上述同样方法修改其他6台虚拟主机的ip
hadoop02    192.168.1.6
hadoop03    192.168.1.7
hadoop04    192.168.1.8
hadoop05    192.168.1.11
hadoop06    192.168.1.12
hadoop07    192.168.1.13
8. SecureCRT 远程连接

1) 解压

先创建一个文件夹SecureCRT,将压缩包中的内容解压到创建的文件夹即可

在这里插入图片描述

2)运行

点击运行即可

在这里插入图片描述

3)创建一个存储session 的目录

在这里插入图片描述

4) 创建连接

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5) 七台主机ssh连接效果

在这里插入图片描述

6)secureCRT 输入中文,可能会有乱码

【菜单栏】 选项—> 会话选项

在这里插入图片描述

以后操作虚拟电脑就使用SeureCRT

五. 集群环境准备

1. 修改主机名
  • 操作主机: hadoop01

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RvPREzRo-1587456315697)(./31.png)]

vi /etc/hostname

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GlUouid4-1587456315698)(./32.png)]

wq #保存退出
  • 退出root用户
exit
  • 重新登录,主机名已经发生改变

在这里插入图片描述

2. 以上述方式修改其他六台虚拟电脑的主机的hostname
192.168.1.6 ---> hadoop02   
192.168.1.7 ---> hadoop03    
192.168.1.8 ---> hadoop04    
192.168.1.11 --> hadoop05    
192.168.1.12 --> hadoop06    
192.168.1.13 --> hadoop07    

在这里插入图片描述

3. 设置ip 映射

各个节点之间的远程登录是通过主机名进行登录

  • 操作主机: hadoop01
vi /etc/hosts
192.168.1.5   hadoop01  
192.168.1.6   hadoop02   
192.168.1.7   hadoop03    
192.168.1.8   hadoop04    
192.168.1.11  hadoop05    
192.168.1.12  hadoop06    
192.168.1.13  hadoop07  

在这里插入图片描述

  • 网络测试:
    在这里插入图片描述
4. 配置其他6台虚拟主机的ip映射
vi /etc/hosts
192.168.1.5   hadoop01  
192.168.1.6   hadoop02   
192.168.1.7   hadoop03    
192.168.1.8   hadoop04    
192.168.1.11  hadoop05    
192.168.1.12  hadoop06    
192.168.1.13  hadoop07  
5. 创建hadoop 用户

以主机hadoop01 为例

在这里插入图片描述

6. 为其他6台虚拟主机创建 hadoop 用户
useradd hadoop
passwd hadoop
7. 为hadoop 用户赋予 root权限

以主机hadoop01 为例

 vi /etc/sudoers

在这里插入图片描述
强制保存退出

wq!   
8. 为其他6台虚拟主机的hadoop 用户赋予 root 权限
vi /etc/sudoers
 
#找到:
root   ALL=(ALL) ALL
# 配置:用户名  ALL=(ALL) ALL
hadoop    ALL=(ALL) ALL

# 强制保存退出
wq!

以后登录只用 hadoop 用户

9. 目录结构

七台虚拟主机目录结构一样,提前创建好
在这里插入图片描述

10.文件上传

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qlPACByj-1587456315704)(./40.png)]

与secureCRT 一样,解压后,直接运行即可

将需要的文件上传到/home/hadoop/opt/install-package 目录下

注:只上传到hadoop01 主机上即可,其他几台机子不用上传
在这里插入图片描述

在这里插入图片描述

六. SSH 免密

所有主机,以 hadoop 用户身份登录

1. 说明

Hdfs:

  hdfs 启动时,NameNode1 首先启动成为 active 状态,它会远程登录NameNode2所在的主机,并启动NameNode2, 接着它会远程登录 DataNode 所在主机,并启动DataNode

 所以: hadoop01 需要远程登录 hadoop02, hadoop05,hadoop06, hadoop07

hadoop02 需要远程登录 hadoop01, hadoop05,hadoop06, hadoop07 (主备切换时)

yarn:

  yarn 启动时,ResourceManager1 会远程登录NodeManager所在的主机,并启动 NodeManager

但是 ResourceManager1 不会去启动 ResourceManager2(需要手动启动)

 所以: hadoop03 需要远程登录 hadoop05,hadoop06, hadoop07

hadoop04 需要远程登录 hadoop05,hadoop06, hadoop07 (主备切换时)

Hbase:

 Hbase 启动时,HMaster1 会远程登录HRegionServer 所在的主机,并启动 HRegionServer ,但是 HMaster1 不会去启动 HMaster2(需要手动启动)

  所以: hadoop03 需要远程登录 hadoop05,hadoop06, hadoop07

hadoop04 需要远程登录 hadoop05,hadoop06, hadoop07 (主备切换时)

为了传输数据方便,这里将会把七台机器全都互相配置了免密登录(7x7=49 次)

再次强调,登录的是hadoop 用户

我为所有的 hadoop 用户建立的连接进行了重命名
在这里插入图片描述

2. 生成密钥

一路回车,不用输入密码

ssh-keygen -t rsa

在这里插入图片描述

家目录下会多出来一个 .ssh 文件

在这里插入图片描述

3. 分发公钥
 ssh-copy-id hadoop01
 ssh-copy-id hadoop02
 ssh-copy-id hadoop03
 ssh-copy-id hadoop04
 ssh-copy-id hadoop05
 ssh-copy-id hadoop06
 ssh-copy-id hadoop07

在这里插入图片描述

4.免密ssh 远程登录测试

在这里插入图片描述

5. 为其他6台虚拟主机做以上相同操作

1) 生成密钥
2) 分发密钥
3)远程登录测试

七 安装JDK

1. 解压JDK
  • 操作主机—hadoop01
cd /home/hadoop/opt/install-package/
tar -zxvf jdk-linux-8u211-x64.tar.gz -C ../jdk/

在这里插入图片描述

2. JDK 目录结构

在这里插入图片描述

3. 配置环境变量
sudo vi /etc/profile

文件末尾添加

export JAVA_HOME=/home/hadoop/opt/jdk/jdk1.8.0_211
export PATH=$PATH:$JAVA_HOME/bin
wq #保存退出
# 使配置生效
source /etc/profile   

在这里插入图片描述

4. 将jdk 从 hadoop01 拷贝给其他六台机子
scp -r /home/hadoop/opt/install-package/jdk-linux-8u211-x64.tar.gz hadoop02:/home/hadoop/opt/install-package/
scp -r /home/hadoop/opt/install-package/jdk-linux-8u211-x64.tar.gz hadoop03:/home/hadoop/opt/install-package/
scp -r /home/hadoop/opt/install-package/jdk-linux-8u211-x64.tar.gz hadoop04:/home/hadoop/opt/install-package/
scp -r /home/hadoop/opt/install-package/jdk-linux-8u211-x64.tar.gz hadoop05:/home/hadoop/opt/install-package/
scp -r /home/hadoop/opt/install-package/jdk-linux-8u211-x64.tar.gz hadoop06:/home/hadoop/opt/install-package/
scp -r /home/hadoop/opt/install-package/jdk-linux-8u211-x64.tar.gz hadoop07:/home/hadoop/opt/install-package/

在这里插入图片描述

5.其他六台虚拟主机同样进行jdk 的配置

1) 解压jdk

2)配置jdk环境变量

八. 搭建 Zookeeper 集群

将zookeeper 分别部署在 hadoop05, hadoop06, hadoop07

1. 将zookeeper 压缩包从hadoop01 拷贝到 hadoop05

目录结构,之前我们已经提前建好了

  • 操作主机: hadoop01
cd /home/hadoop/opt/install-package/
scp -r zookeeper-3.4.10.tar.gz hadoop05:/home/hadoop/opt/install-package/

在这里插入图片描述

2. 解压zookeeper
  • 操作主机: hadoop05
 cd /home/hadoop/opt/install-package/
 tar -zxvf zookeeper-3.4.10.tar.gz  -C ../zookeeper/

在这里插入图片描述

3. zookeeper 目录结构

在这里插入图片描述

4. 修改配置名
cd /home/hadoop/opt/zookeeper/zookeeper-3.4.10/conf/
mv zoo_sample.cfg  zoo.cfg

在这里插入图片描述

5. 修改配置文件
vi zoo.cfg
# 数据存放目录**
dataDir=/home/hadoop/opt/zookeeper/zookeeper-3.4.10/zkData

#server.id=主机名:2888:3888   
#2888:3888 leader 选举的通信端口   id 号随意设置,必须要是唯一的
server.1=0.0.0.0:2888:3888
server.2=hadoop06:2888:3888
server.3=hadoop07:2888:3888

wq # 保存退出

在这里插入图片描述

6. 创建 zkData 目录
mkdir /home/hadoop/opt/zookeeper/zookeeper-3.4.10/zkData
7. 修改zookeeper 日志存放路径
cd /home/hadoop/opt/zookeeper/zookeeper-3.4.10/bin

vi zkEnv.sh
ZOO_LOG_DIR="/home/hadoop/opt/zookeeper/zookeeper-3.4.10/logs"

在这里插入图片描述

wq # 保存退出
8. 将配置好的zookeeper 发送给其他两台机器
scp -r /home/hadoop/opt/zookeeper/zookeeper-3.4.10  hadoop06:/home/hadoop/opt/zookeeper
scp -r /home/hadoop/opt/zookeeper/zookeeper-3.4.10  hadoop07:/home/hadoop/opt/zookeeper
9. 修改其他两台zookeeper节点的zoo.cfg 配置文件
  • 操作主机: hadoop06
vi /home/hadoop/opt/zookeeper/zookeeper-3.4.10/conf/zoo.cfg
server.1=hadoop05:2888:3888
server.2=0.0.0.0:2888:3888
server.3=hadoop07:2888:3888
  • 操作主机: hadoop07
vi /home/hadoop/opt/zookeeper/zookeeper-3.4.10/conf/zoo.cfg
server.1=hadoop05:2888:3888
server.2=hadoop06:2888:3888
server.3=0.0.0.0:2888:3888
10. 创建zookeeper 对应的id 文件

此id 就是我们上面配置的

  • 操作主机: hadoop05
cd /home/hadoop/opt/zookeeper/zookeeper-3.4.10/zkData
echo 1 > myid
  • 操作主机: hadoop06
cd /home/hadoop/opt/zookeeper/zookeeper-3.4.10/zkData
echo 2 > myid
  • 操作主机: hadoop07
cd /home/hadoop/opt/zookeeper/zookeeper-3.4.10/zkData
echo 3 > myid
11. 配置环境变量–三台虚拟主机都要配置
sudo vi /etc/profile

文件末尾添加

export ZOOKEEPER_HOME=/home/hadoop/opt/zookeeper/zookeeper-3.4.10/
export PATH=$PATH:$ZOOKEEPER_HOME/bin
wq #保存退出
# 使配置生效
source /etc/profile   
12. zookeeper 集群启动测试
  • 集群启动
# hadoop05
zkServer.sh start

# hadoop06
zkServer.sh start

# hadoop07
zkServer.sh start
  • 集群状态查看:
#hadoop05
zkServer.sh status

#hadoop06
zkServer.sh status

#hadoop07
zkServer.sh status

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
说明:

  • zookeeper 集群中的节点有两种身份: fllower 和 leader, 谁是fllower和谁是leader 不是固定的,是通过内部选举机制确定的

  • zookeeper 主进程: QuorumPeerMain

注意: zookeeper 集群必须启动至少超过半数的节点,集群才能正常工作

  • eg: 这里有三台节点,至少启动两台
13. 客户端连接测试
  • 操作主机: hadoop05
zkCli.sh

# 查看帮助文档
help

# 退出客户端
quit

在这里插入图片描述

14. 关闭zookeeper 集群
  • 操作主机: hadoop05
zkServer.sh stop
  • 操作主机: hadoop06
zkServer.sh stop
  • 操作主机: hadoop07
zkServer.sh stop

九 . 搭建Hadoop HA集群

1. 解压
  • 操作主机: hadoop01
cd /home/hadoop/opt/install-package/
tar -zxvf hadoop-2.7.2.tar.gz -C ../hadoop/

在这里插入图片描述

2. 修改配置文件— hadoop-env.sh

在这里插入图片描述

 cd /home/hadoop/opt/hadoop/hadoop-2.7.2/etc/hadoop
 
 vi hadoop-env.sh
 
 # 修改JAVA_HOME
 export JAVA_HOME=/home/hadoop/opt/jdk/jdk1.8.0_211
 
 wq # 保存退出

在这里插入图片描述

3. 修改配置文件—core-site.xml

替换原有的configuration 标签

vi core-site.xml

core-site.xml

<configuration>

    <!-- 指定hdfs的nameservice为ns1 (每一个nameservice 下有多个namenode) -->
    <!-- 可能存在多个 nameserice, 访问的时候通过 nameserve的 名字访问 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://ns1/</value>
   </property>

    <!-- 指定hadoop工作目录-->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/opt/hadoop/hadoop-2.7.2/tmp</value>
    </property>

    <!-- 指定zookeeper地址 主机名:端口号-->
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>hadoop05:2181,hadoop06:2181,hadoop07:2181</value>
    </property>

   <!-- 客户端连接重试次数。 -->
   <property>
       <name>ipc.client.connect.max.retries</name>
       <value>100</value>
   </property>
    
    <!-- 两次重新建立连接之间的时间间隔,单位为毫秒。 -->
   <property>
        <name>ipc.client.connect.retry.interval</name>
        <value>5000</value>
   </property>

</configuration>
wq  #保存退出

在这里插入图片描述

4. 修改配置文件—hdfs-site.xml
vi hdfs-site.xml

hdfs-site.xml

<configuration>

      <!--生成副本数量: 我这里有三台 datanode, 生成3-->
      <property>
        <name>dfs.replication</name>
        <value>3</value>
      </property>

        <!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
        <property>
            <name>dfs.nameservices</name>
            <value>ns1</value>
        </property>

        <!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
        <property>
            <name>dfs.ha.namenodes.ns1</name>
            <value>nn1,nn2</value>
        </property>

        <!-- nn1的RPC通信地址 -->
        <property>
            <name>dfs.namenode.rpc-address.ns1.nn1</name>
            <value>hadoop01:9000</value>
        </property>
        <!-- nn1的http通信地址 -->
        <property>
            <name>dfs.namenode.http-address.ns1.nn1</name>
            <value>hadoop01:50070</value>
        </property>


        <!-- nn2的RPC通信地址 -->
        <property>
            <name>dfs.namenode.rpc-address.ns1.nn2</name>
            <value>hadoop02:9000</value>
        </property>
        <!-- nn2的http通信地址 -->
        <property>
            <name>dfs.namenode.http-address.ns1.nn2</name>
            <value>hadoop02:50070</value>
        </property>

        <!-- JournalNode用来存放元数据,依赖于zookeeper -->
        <!-- 指定NameNode的元数据在JournalNode上的存放位置 -->

        <property>
            <name>dfs.namenode.shared.edits.dir</name>                                               <value>qjournal://hadoop05:8485;hadoop06:8485;hadoop07:8485/ns1</value>
        </property>

        <!-- 指定JournalNode在本地磁盘存放edits数据的位置 -->
        <property>
            <name>dfs.journalnode.edits.dir</name>
            <value>/home/hadoop/opt/hadoop/hadoop-2.7.2/journaldata</value>
        </property>

        <!-- 开启NameNode失败自动切换 true: 开启-->
        <property>
            <name>dfs.ha.automatic-failover.enabled</name>
            <value>true</value>
        </property>

        <!-- 配置失败自动切换实现方式,使用的 hadoop 内部的类 -->
        <property>
            <name>dfs.client.failover.proxy.provider.ns1</name>
         <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
        </property>

        <!-- 配置隔离机制方法-->
        <!-- 配置防止脑裂的机制(即出现两个 namenode 同时对外提供服务的情况)-->
        <!-- sshfence:远程登录杀死出现状况的 namenode-->
        <!-- 如果远程ssh登录的端口号不是 22  sshfence(用户名:端口号) -->
        <!-- shell: 远程登录超时等无响应的后续解决方案(自定义脚本)-->
        <!-- shell(/bin/true): 因为没有定义脚本,返回true直接切换-->
        <property>
            <name>dfs.ha.fencing.methods</name>
            <value>
                sshfence
                shell(/bin/true)
            </value>
        </property>

        <!-- 使用sshfence隔离机制时需要ssh免登陆 -->
        <property>
            <name>dfs.ha.fencing.ssh.private-key-files</name>
            <value>/home/hadoop/.ssh/id_rsa</value>
        </property>

        <!-- 配置sshfence隔离机制超时时间 单位:ms    30000ms == 30s-->
        <property>
            <name>dfs.ha.fencing.ssh.connect-timeout</name>
            <value>30000</value>
        </property>

</configuration>
wq # 保存退出
5. 修改配置文件— mapred-site.xml.template
  • 修改配置名
 mv mapred-site.xml.template mapred-site.xml
  • 修改配置文件
vi mapred-site.xml

mapred-site.xml

<configuration>
    <!-- 指定mr框架为yarn方式 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
wq # 保存退出
6. 修改配置文件—yarn-site.xml
vi yarn-site.xml
yarn-site.xml
 <configuration>

        <!-- 是否开启RM高可用 -->
        <property>
            <name>yarn.resourcemanager.ha.enabled</name>
            <value>true</value>
        </property>

        <!-- 指定RM的集群id: 这里有两个 resourcemanager,设置一个组id(自定义)-->
        <property>
            <name>yarn.resourcemanager.cluster-id</name>
            <value>yrc</value>
        </property>

        <!-- 设置resourcemanager分组下的 RM的名字(自定义) -->
        <property>
            <name>yarn.resourcemanager.ha.rm-ids</name>
            <value>rm1,rm2</value>
        </property>

        <!-- 指定RM1的地址 -->
        <property>
            <name>yarn.resourcemanager.hostname.rm1</name>
            <value>hadoop03</value>
        </property>
     
        <!-- 指定RM2的地址 -->
        <property>
            <name>yarn.resourcemanager.hostname.rm2</name>
            <value>hadoop04</value>
        </property>

        <!-- 指定zookeeper集群地址 -->
        <property>
            <name>yarn.resourcemanager.zk-address</name>
            <value>hadoop05:2181,hadoop06:2181,hadoop07:2181</value>
        </property>

        <!-- reducer取数据的方式是mapreduce_shuffle -->
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>

</configuration>
wq # 保存退出
7. 修改配置文件—slaves

作用: slaves 主要用来指明从节点所在位置

  • Namenode读取slaves 获取 Datanode 所在主机的地址

  • Resourcemanager 读取 slaves 获取NodeManager 所在主机的地址

所以,slaves 该如何,配置要根据自己的实际情况而定,这里DataNode 和 NodeManager 都在同一台主机

vi slaves

把文件内之前存在的内容删除

hadoop05
hadoop06
hadoop07
wq # 保存退出
8. 将配置好的hadoop 分发给其他几台主机
cd /home/hadoop/opt/hadoop/
scp -r hadoop-2.7.2/  hadoop02:/home/hadoop/opt/hadoop/
scp -r hadoop-2.7.2/  hadoop03:/home/hadoop/opt/hadoop/
scp -r hadoop-2.7.2/  hadoop04:/home/hadoop/opt/hadoop/
scp -r hadoop-2.7.2/  hadoop05:/home/hadoop/opt/hadoop/
scp -r hadoop-2.7.2/  hadoop06:/home/hadoop/opt/hadoop/
scp -r hadoop-2.7.2/  hadoop07:/home/hadoop/opt/hadoop/
9. 配置环境变量–七台机子都配置

说明: 配置环境变量只是为了方便执行hadoop 相关的命令,不配置也行,不过每次执行命令都要进入到bin目录

sudo vi /etc/profile

文件末尾添加

export HADOOP_HOME=/home/hadoop/opt/hadoop/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
wq #保存退出
# 使配置生效
source /etc/profile   

在这里插入图片描述

十. HDFS HA 启动测试

务必严格按照下面顺序启动

1. 启动zookeeper 集群
  • 操作主机: hadoop05, hadoop06, hadoop07

  • 如果启动过了(能会报端口被占用的异常),确保 QuorumPeerMain 进程正常运行就行

# hadoop05
zkServer.sh start

# hadoop06
zkServer.sh start

# hadoop07
zkServer.sh start

集群状态查看:

# hadoop05
[hadoop@hadoop05 opt]$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/hadoop/opt/zookeeper/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower

[hadoop@hadoop05 opt]$ jps
2310 Jps
2236 QuorumPeerMain

# hadoop06
[hadoop@hadoop06 hadoop]$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/hadoop/opt/zookeeper/zookeeper-3.4.10/bin/../conf/zoo.cfg
jps
Mode: leader

[hadoop@hadoop06 hadoop]$ jps
2256 Jps
2197 QuorumPeerMain


# hadoop07
[hadoop@hadoop07 hadoop]$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/hadoop/opt/zookeeper/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower
[hadoop@hadoop07 hadoop]$ jps
2185 QuorumPeerMain
2238 Jps
2. 启动journalNode
  • 操作主机: hadoop05, hadoop06, hadoop07

只有hadoop集群第一次启动时需要该操作, 以后hdfs启动时journalNode会自动启动

# hadoop05
hadoop-daemon.sh start journalnode

# hadoop06
hadoop-daemon.sh start journalnode

# hadoop07
hadoop-daemon.sh start journalnode

集群状态查看:

# hadoop05
[hadoop@hadoop05 opt]$ hadoop-daemon.sh start journalnode
starting journalnode, logging to /home/hadoop/opt/hadoop/hadoop-2.7.2/logs/hadoop-hadoop-journalnode-hadoop05.out

[hadoop@hadoop05 opt]$ jps
2384 Jps
2236 QuorumPeerMain
2335 JournalNode

# hadoop06
[hadoop@hadoop06 hadoop]$ hadoop-daemon.sh start journalnode
starting journalnode, logging to /home/hadoop/opt/hadoop/hadoop-2.7.2/logs/hadoop-hadoop-journalnode-hadoop06.out

[hadoop@hadoop06 hadoop]$ jps
2197 QuorumPeerMain
2281 JournalNode
2330 Jps

# hadoop07
[hadoop@hadoop07 hadoop]$ hadoop-daemon.sh start journalnode
starting journalnode, logging to /home/hadoop/opt/hadoop/hadoop-2.7.2/logs/hadoop-hadoop-journalnode-hadoop07.out

[hadoop@hadoop07 hadoop]$ jps
2263 JournalNode
2312 Jps
2185 QuorumPeerMain

3. 格式化HDFS
  • 操作主机: hadoop01
hdfs namenode -format 

在这里插入图片描述

4. 将hadoop.tmp.dir配置生成的文件拷贝给另外一个NameNode
  • 操作主机: cluster01

  • 确保两个Namenode的初始fsimage 一致

cd /home/hadoop/opt/hadoop/hadoop-2.7.2

在这里插入图片描述

 scp -r tmp hadoop02:/home/hadoop/opt/hadoop/hadoop-2.7.2/

在这里插入图片描述

5. 格式化 ZKFC
  • 操作主机: cluster01
hdfs zkfc -formatZK
6. 启动HDFS
  • 操作主机: cluster01
start-dfs.sh
7. 报错(如果你没有此错误可跳过)

现在集群已经起来了,因为hadoop01 的NameNode出现了状况, hadoop02 的NameNode变成了Active 状态,可以在主机浏览器输入 192.168.1.6:50070 查看,也可以在hadoop05,hadoop06,hadoop07,输入jps查看进程

集群已经启动,hadoop02, hadoop05,06,07 进程都无异常,但是hadoop01没有NameNode进程

在这里插入图片描述

1) 查看日志
cd /home/hadoop/opt/hadoop/hadoop-2.7.2/logs/
cat hadoop-hadoop-namenode-hadoop01.log 

在这里插入图片描述

2) 日志上说,tmp 目录不存在,果然tmp 目录消失了(一脸懵逼)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b5hZ0ZQC-1587456315729)(./72.png)]

3) 解决办法: 将tmp 目录从hadoop02拷贝一份给hadoop01
  • 操作主机: hadoop02
[hadoop@hadoop02 hadoop-2.7.2]$ jps
2256 NameNode
2352 DFSZKFailoverController
2419 Jps
# 关闭集群
stop-dfs.sh
cd /home/hadoop/opt/hadoop/hadoop-2.7.2

scp -r tmp hadoop01:/home/hadoop/opt/hadoop/hadoop-2.7.2/

重新启动hdfs

  • 操作主机: hadoop01
start-dfs.sh

在这里插入图片描述
集群状态查看:

# hadoop01
[hadoop@hadoop01 hadoop-2.7.2]$ jps
3411 Jps
3064 NameNode
3342 DFSZKFailoverController

# hadoop02
[hadoop@hadoop02 hadoop-2.7.2]$ jps
3010 Jps
2934 DFSZKFailoverController
2830 NameNode

# hadoop05
[hadoop@hadoop05 opt]$ jps
2756 JournalNode
2820 Jps
2663 DataNode
2236 QuorumPeerMain

# hadoop06
[hadoop@hadoop06 hadoop]$ jps
2197 QuorumPeerMain
2681 JournalNode
2745 Jps
2588 DataNode

# hadoop07
[hadoop@hadoop07 hadoop-2.7.2]$ jps
2712 JournalNode
2776 Jps
2185 QuorumPeerMain
2619 DataNode

所有进程成功启动

总结:集群出现问题,就找相对应的日志进行查看

8. http 访问
  • 端口:50070

在这里插入图片描述
在这里插入图片描述

9. hdfs HA 测试

初始 hadoop01 NameNode 为Active, hadoop02 NameNode 为 standby

1) 操作: 关闭hadoop01 正在运行的 NameNode

  • 操作主机:hadoop01
hadoop-daemon.sh stop namenode

2) 再次访问 NameNode1 已经无法访问了,NameNode2 成为了Active状态

在这里插入图片描述
在这里插入图片描述

3) 再次启动NameNode1

  • 操作主机: hadoop01
hadoop-daemon.sh start namenode

再次访问,NameNode1 已经变为了standby 状态

在这里插入图片描述

说明: 两台NameNode, 同一时间只有一台为Active状态对外提供服务,另外一台为Standby,Active出问题,StandBy 就会变为Active 继续对外提供服务,排除了单点故障,实现了高可用(HA)

10. 文件上传测试
  • 操作主机: hadoop01

操作: 创建一个文件上传到 Hdfs 上

cd /home/hadoop/opt/hadoop

mkdir my-test-data

cd my-test-data

echo hello > test.txt
[hadoop@hadoop01 my-test-data]$ cat test.txt 
hello

将test.txt 上传到 fdfs 的根目录下 / 相当于 hdfs://hadoop01:9000/

hadoop fs -put test.txt /

找到处于active 状态的那台NameNode 进行查看

在这里插入图片描述

上传到hdfs 上的文件会被分成多个Block(自己设置的副本数量),每一个Block默认为128M(hadoop2.x)

其他命令

[hadoop@hadoop01 my-test-data]$ hadoop fs -help
Usage: hadoop fs [generic options]
        [-appendToFile <localsrc> ... <dst>]
        [-cat [-ignoreCrc] <src> ...]
        [-checksum <src> ...]
        [-chgrp [-R] GROUP PATH...]
        [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
        [-chown [-R] [OWNER][:[GROUP]] PATH...]
        [-copyFromLocal [-f] [-p] [-l] <localsrc> ... <dst>]
        [-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
        [-count [-q] [-h] <path> ...]
        [-cp [-f] [-p | -p[topax]] <src> ... <dst>]
        [-createSnapshot <snapshotDir> [<snapshotName>]]
        [-deleteSnapshot <snapshotDir> <snapshotName>]
        [-df [-h] [<path> ...]]
        [-du [-s] [-h] <path> ...]
        [-expunge]
        [-find <path> ... <expression> ...]
        [-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
        [-getfacl [-R] <path>]
        [-getfattr [-R] {-n name | -d} [-e en] <path>]
        [-getmerge [-nl] <src> <localdst>]
        [-help [cmd ...]]
        [-ls [-d] [-h] [-R] [<path> ...]]
        [-mkdir [-p] <path> ...]
        [-moveFromLocal <localsrc> ... <dst>]
        [-moveToLocal <src> <localdst>]
        [-mv <src> ... <dst>]
        [-put [-f] [-p] [-l] <localsrc> ... <dst>]
        [-renameSnapshot <snapshotDir> <oldName> <newName>]
        [-rm [-f] [-r|-R] [-skipTrash] <src> ...]
        [-rmdir [--ignore-fail-on-non-empty] <dir> ...]
        [-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]
        [-setfattr {-n name [-v value] | -x name} <path>]
        [-setrep [-R] [-w] <rep> <path> ...]
        [-stat [format] <path> ...]
        [-tail [-f] <file>]
        [-test -[defsz] <path>]
        [-text [-ignoreCrc] <src> ...]
        [-touchz <path> ...]
        [-truncate [-w] <length> <path> ...]
        [-usage [cmd ...]]

十一.Yarn HA 启动测试

1. 启动Zookeeper 集群

之前已经启动过了

2.启动yarn
  • 操作主机: hadoop03
start-yarn.sh start

在这里插入图片描述

因为ResourceManager1 不会去远程启动ResourceManager2, 需要我们手动启动

  • 操作主机: hadoop04
yarn-daemon.sh start resourcemanager

集群状态查看:

# hadoo03
[hadoop@hadoop03 install-package]$ jps
2277 ResourceManager
2538 Jps


# hadoo04
[hadoop@hadoop04 install-package]$ jps
2344 Jps
2315 ResourceManager

# hadoo05
[hadoop@hadoop05 opt]$ jps
2937 NodeManager
2236 QuorumPeerMain
3036 Jps

# hadoo06
[hadoop@hadoop06 hadoop]$ jps
2962 Jps
2197 QuorumPeerMain
2863 NodeManager

# hadoo07
[hadoop@hadoop07 hadoop-2.7.2]$ jps
2993 Jps
2185 QuorumPeerMain
2893 NodeManager
3. http 访问
  • 端口: 8088
    在这里插入图片描述

在这里插入图片描述

4. yarn HA 测试
  • 初始 hadoop03 ResourceManager为Active, hadoop04 ResourceManager为 standby

1) 操作: 关闭hadoop03 正在运行的 ResourceManager

  • 操作主机:hadoop03
yarn-daemon.sh stop resourcemanager

2) 再次访问 ResourceManager1已经无法访问了,ResourceManager2成为了Active状态

在这里插入图片描述
在这里插入图片描述

3) 再次启动ResourceManager01

  • 操作主机: hadoop03
yarn-daemon.sh start resourcemanager
[hadoop@hadoop03 install-package]$ jps
2736 Jps
2681 ResourceManager
  • 再次访问,Resourcemanager1已经变为了standby 状态

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fb4GkaXe-1587456315739)(./85.png)]

5. MapReduce 测试

操作主机:hadoop03

cd /home/hadoop/opt/hadoop/hadoop-2.7.2/share/hadoop/mapreduce

求pi 的值 : 1个规模组,每个组内有1个计算样例

hadoop jar hadoop-mapreduce-examples-2.7.2.jar pi 1 1

在这里插入图片描述

说明:

  • 该运算模型,规模越大,结果越精确, 我这里开的比较小,所以结果差的比较远

  • 因为MapReduce 运算比较耗费内存,如果开的样例过大可能会报错

    eg: Stack trace: ExitCodeException exitCode=1:

  • 进行mapReduce 运算的主机 会产生一个 RunJar 的进程

6. 关闭 hdfs 和 yarn

至此,Hadoop HA 集群算是搭建完毕了

  • 操作主机: hadoop01
stop-dfs.sh
  • 操作主机: hadoop03
stop-yarn.sh
  • 操作主机: hadoop04
yarn-daemon.sh stop resourcemanager

十二.搭建HBase HA 集群

说明: 这里将Hbase 部署在 hadoop03, hadoop04,本来Hbase 也是应该部署到另外两台主机上去的,但是我的主机资源有限,如果你的主机配置较好的的话,可以另外导入两台虚拟电脑,同样可以按照以下步骤进行操作

1. 将Hbase压缩包,从hadoop01 拷贝到 hadoop03
  • 操作主机: hadoop01
cd /home/hadoop/opt/install-package

scp -r hbase-1.3.1-bin.tar.gz hadoop03:/home/hadoop/opt/install-package
2. 解压
  • 操作主机:hadoop03
cd /home/hadoop/opt/install-package
tar -zxvf hbase-1.3.1-bin.tar.gz -C ../hbase/
3. 修改配置文件–hbase-env.sh

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xRtRKLsl-1587456315742)(./87.png)]

vi hbase-env.sh

1)修改JAVA_HOME

JAVA_HOME=/home/hadoop/opt/jdk/jdk1.8.0_211

在这里插入图片描述

2) 不使用hbase提供的zookeeper

export HBASE_MANAGES_ZK=false

在这里插入图片描述

3) 如果使用的是JDK8+ 需要注释掉以下两句

# Configure PermSize. Only needed in JDK7. You can safely remove it for JDK8+
export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"

在这里插入图片描述

wq # 保存退出
4. 修改配置文件–hbase-site.xml
vi hbase-site.xml

hbase-site.xml

<configuration>

    <!-- 指定hbase在HDFS上存储的路径 -->
   <property>
      <name>hbase.rootdir</name>
      <value>hdfs://ns1/hbase</value>
    </property>

    <!-- 指定hbase是分布式的 -->
    <property>
       <name>hbase.cluster.distributed</name>
       <value>true</value>
     </property>

    <!-- 指定zk的地址,多个用“,”分割 -->
     <property>
         <name>hbase.zookeeper.quorum</name>
         <value>hadoop05:2181,hadoop06:2181,hadoop07:2181</value>
     </property>

    <!-- HMaster 与 HRegionServer 最大时间差 -->
    <property>         
        <name>hbase.master.maxclockskew</name>        
        <value>180000</value> 
    </property>

</configuration>
wq # 保存退出
5. 修改配置文件–regionservers

与hadoop 中的slaves 文件一样,这里用来指定RegionServer 所在主机的ip

vi regionservers 

清除原有的内容

hadoop05
hadoop06
hadoop07
6. 指明 hadoop 信息

hbase 的分布式存储依赖于hadoop,上面通过hbase-site.xml 的 hbase.rootdir 属性指明了hbase在hdfs上的存储位置,但是hbase并不知道hadoop的访问路径,将hadoop 的 core-site.xml, hdfs-site.xml 拷贝一份放到hbase的conf目录下

  • 操作主机: hadoop01
cd /home/hadoop/opt/hadoop/hadoop-2.7.2/etc/hadoop
scp -r core-site.xml  hadoop03:/home/hadoop/opt/hbase/hbase-1.3.1/conf
scp -r hdfs-site.xml  hadoop03:/home/hadoop/opt/hbase/hbase-1.3.1/conf

在这里插入图片描述

7. 将配置好的hbase 分发给其他几台主机
cd /home/hadoop/opt/hbase

scp -r hbase-1.3.1/ hadoop04:/home/hadoop/opt/hbase/
scp -r hbase-1.3.1/ hadoop05:/home/hadoop/opt/hbase/
scp -r hbase-1.3.1/ hadoop06:/home/hadoop/opt/hbase/
scp -r hbase-1.3.1/ hadoop07:/home/hadoop/opt/hbase/
8. 配置环境变量
  • 五台机子都要配置
sudo vi /etc/profile

文件末尾添加

export HBASE_HOME=/home/hadoop/opt/hbase/hbase-1.3.1
export PATH=$PATH:$HBASE_HOME/bin
wq #保存退出
# 使配置生效
source /etc/profile   

在这里插入图片描述

十三.Hbase HA 启动测试

1. 启动zookeeper

之前没有关闭就不用启动了

2. 启动hdfs
  • 操作主机 hadoop01
start-dfs.sh
[hadoop@hadoop01 hadoop-2.7.2]$ jps
5764 DFSZKFailoverController
5837 Jps
5486 NameNode
3. 启动HMaster1
  • 操作主机: hadoop03
start-hbase.sh 

在这里插入图片描述

4. 启动HMaster2
  • 操作主机: hadoop04
hbase-daemon.sh start master

集群状态查看:

# hadoop03
[hadoop@hadoop03 hbase]$ jps
3318 HMaster
3495 Jps

# hadoop04
[hadoop@hadoop04 bin]$ jps
2810 HMaster
2956 Jps

# hadoop05
[hadoop@hadoop05 zookeeper-3.4.10]$ jps
3761 QuorumPeerMain
4307 Jps
4039 JournalNode
3944 DataNode
4142 HRegionServer

# hadoop06
[hadoop@hadoop06 bin]$ jps
3795 HRegionServer
3415 QuorumPeerMain
3976 Jps
3690 JournalNode
3595 DataNode

# hadoop07
[hadoop@hadoop07 zookeeper-3.4.10]$ jps
3536 QuorumPeerMain
3827 JournalNode
3732 DataNode
3931 HRegionServer
4108 Jps
5. http 访问
  • 端口号: 16010

在这里插入图片描述
在这里插入图片描述

6. hbase HA 测试

初始 hadoop03 HMaster为Active, hadoop04 HMaster为 Backup

1) 操作: 关闭hadoop03 正在运行的 HMaster

  • 操作主机:hadoop03
hbase-daemon.sh stop master

[hadoop@hadoop03 hbase]$ jps
3713 Jps

2) 再次访问 HMaster1 已经无法访问了,HMaster2成为了Active状态

在这里插入图片描述
在这里插入图片描述

3) 重新启动HMaster1

  • 操作主机: hadoop03
hbase-daemon.sh start master
[hadoop@hadoop03 hbase]$ jps
3833 Jps
3754 HMaster
  • 此时 HMaster1 已经变为 Backup 状态, HMaster2 变为了 Active状态

在这里插入图片描述
在这里插入图片描述

7. 数据存储测试
  • 操作主机: hadoop03
hbase shell

在这里插入图片描述

# 创建表 user, 有一个列族: info, 数据最多保持最近的三个版本
create 'user', {NAME => 'info', VERSIONS => '3'}
# 向user表中插入信息,row key为rk0001,列族info中添加name列标示符,值为zhangsan
put 'user', 'rk0001', 'info:name', 'zhangsan'
# 获取user表中row key为rk0001的所有信息
get 'user', 'rk0001'

在这里插入图片描述

8. hdfs 上查看 hbase 存储的数据

在这里插入图片描述

十四. 完结

停止集群:停止HBase—>停止Hadoop —>停止ZooKeeper集群

启动集群:启动 ZooKeeper集群—>启动 Hadoop—>启动 HBase

在这里插入图片描述

大数据真心玩不起,刚刚搭建完集群,内存就用完了,java IDE 打开都成问题,更别说MapReduce 进行数据运算了,无奈~,不过好在,咱是搞javaEE的

# hadoop03
hbase-daemons.sh stop master

# hadoop04
stop-hbase.sh 
hbase-daemons.sh stop regionserver

# hadoop01
stop-dfs.sh

# hadoop05
zkServer.sh stop

# hadoop06
zkServer.sh stop

# hadoop07
zkServer.sh stop
sudo shutdown -h now

【附录】

组件节点默认端口配置用途说明
HDFSDataNode50010dfs.datanode.addressdatanode服务端口,用于数据传输
HDFSDataNode50075dfs.datanode.http.addresshttp服务的端口
DFSDataNode50475dfs.datanode.https.addresshttps服务的端口
HDFSDataNode50020dfs.datanode.ipc.addressipc服务的端口
HDFSNameNode50070dfs.namenode.http-addresshttp服务的端口
HDFSNameNode50470dfs.namenode.https-addresshttps服务的端口
HDFSNameNode8020fs.defaultFS接收Client连接的RPC端口,用于获取文件系统metadata信息。
HDFSjournalnode8485dfs.journalnode.rpc-addressRPC服务
HDFSjournalnode8480dfs.journalnode.http-addressHTTP服务
HDFSZKFC8019dfs.ha.zkfc.portZooKeeper FailoverController,用于NN HA
YARNResourceManager8032yarn.resourcemanager.addressRM的applications manager(ASM)端口
YARNResourceManager8030yarn.resourcemanager.scheduler.addressscheduler组件的IPC端口
YARNResourceManager8031yarn.resourcemanager.resource-tracker.addressIPC
YARNResourceManager8033yarn.resourcemanager.admin.addressIPC
YARNResourceManager8088yarn.resourcemanager.webapp.addresshttp服务端口
YARNNodeManager8040yarn.nodemanager.localizer.addresslocalizer IPC
YARNNodeManager8042yarn.nodemanager.webapp.addresshttp服务端口
YARNNodeManager8041yarn.nodemanager.addressNM中container manager的端口
YARNJobHistory Server10020mapreduce.jobhistory.addressIPC
YARNJobHistory Server19888mapreduce.jobhistory.webapp.addresshttp服务端口
HBaseMaster16000hbase.master.portIPC
HBaseMaster16010hbase.master.info.porthttp服务端口
HBaseRegionServer60020hbase.regionserver.portIPC
HBaseRegionServer60030hbase.regionserver.info.porthttp服务端口
HBaseHQuorumPeer2181hbase.zookeeper.property.clientPortHBase-managed ZK mode,使用独立的ZooKeeper集群则不会启用该端口。
HBaseHQuorumPeer2888hbase.zookeeper.peerportHBase-managed ZK mode,使用独立的ZooKeeper集群则不会启用该端口。
HBaseHQuorumPeer3888hbase.zookeeper.leaderportHBase-managed ZK mode,使用独立的ZooKeeper集群则不会启用该端口。
HiveMetastore9083/etc/default/hive-metastore中export PORT=来更新默认端口
HiveHiveServer10000/etc/hive/conf/hive-env.sh中export HIVE_SERVER2_THRIFT_PORT=来更新默认端口
ZooKeeperServer2181/etc/zookeeper/conf/zoo.cfg中clientPort=对客户端提供服务的端口
ZooKeeperServer2888/etc/zookeeper/conf/zoo.cfg中server.x=[hostname]:nnnnn[:nnnnn],标蓝部分follower用来连接到leader,只在leader上监听该端口。
ZooKeeperServer3888/etc/zookeeper/conf/zoo.cfg中server.x=[hostname]:nnnnn[:nnnnn],标蓝部分用于leader选举的。只在electionAlg是1,2或3(默认)时需要。
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐