唐宋元明清 唐宋元明清
首页
  • 基础

    • Java基础
  • 工具

    • hutool
    • commons
  • 框架

    • Spring Boot相关
  • 设计模式

    • 设计模式入门
  • Hadoop

    • Hadoop分布式搭建
    • Hadoop高可用搭建
    • 集群端口
    • 代码demo
  • Zookeeper

    • Zookeeper集群搭建
  • Hive

    • Hive集群搭建
    • Hive相关
    • HSQL
  • Kafka

    • Kafka集群搭建
  • HBase

    • HBase集群搭建
    • HBase基础学习
  • Spark

    • Spark环境搭建
    • Spark相关知识
  • Flink

    • Flink环境搭建
    • Flink学习
  • Flume

    • Flume安装配置
    • Flume高可用集群安装
    • Flume相关学习
  • Sqoop

    • Sqoop安装配置
    • Sqoop使用
  • 其他

    • docker
  • Oracle

    • Oracle相关知识杂记
    • 系统函数篇
    • 与MySQL语法区别
  • MySQL

    • MySQL知识点
  • Python

    • Python简单语法
    • Python操作Office
    • Python类库学习
    • Python爬虫
  • Shell

    • Shell基础
    • Shell命令行
  • Scala

    • 语法学习
  • 正则表达式

    • 正则基础
  • 调度

    • 调度工具
  • 前端

    • 前端相关
  • 杂记

    • 常用工具或网站
    • 琐碎知识
  • 摘录

    • 摘录
GitHub (opens new window)
首页
  • 基础

    • Java基础
  • 工具

    • hutool
    • commons
  • 框架

    • Spring Boot相关
  • 设计模式

    • 设计模式入门
  • Hadoop

    • Hadoop分布式搭建
    • Hadoop高可用搭建
    • 集群端口
    • 代码demo
  • Zookeeper

    • Zookeeper集群搭建
  • Hive

    • Hive集群搭建
    • Hive相关
    • HSQL
  • Kafka

    • Kafka集群搭建
  • HBase

    • HBase集群搭建
    • HBase基础学习
  • Spark

    • Spark环境搭建
    • Spark相关知识
  • Flink

    • Flink环境搭建
    • Flink学习
  • Flume

    • Flume安装配置
    • Flume高可用集群安装
    • Flume相关学习
  • Sqoop

    • Sqoop安装配置
    • Sqoop使用
  • 其他

    • docker
  • Oracle

    • Oracle相关知识杂记
    • 系统函数篇
    • 与MySQL语法区别
  • MySQL

    • MySQL知识点
  • Python

    • Python简单语法
    • Python操作Office
    • Python类库学习
    • Python爬虫
  • Shell

    • Shell基础
    • Shell命令行
  • Scala

    • 语法学习
  • 正则表达式

    • 正则基础
  • 调度

    • 调度工具
  • 前端

    • 前端相关
  • 杂记

    • 常用工具或网站
    • 琐碎知识
  • 摘录

    • 摘录
GitHub (opens new window)
  • Hadoop

    • Hadoop分布式搭建
    • Hadoop高可用搭建
    • 集群端口
    • 代码demo(mr hbase hive redis)
  • Zookeeper

    • Zookeeper集群搭建
      • 关于Zookeeper的节点为什么是奇数
      • 1. 解压安装:
      • 2. 配置
      • 3. 集群启动 测试服务
      • 4. HA故障自动转换
        • 1) 修改集群所有节点(NameNode和DataNode)的hdfs配置文件和核心配置文件:
        • 2) 启动测试
  • Hive

    • Hive集群搭建
    • Hive相关
    • HSQL
  • Kafka

    • Kafka集群搭建
  • HBase

    • HBase集群搭建
    • HBase基础学习
  • Spark

    • Spark环境搭建
    • Spark相关知识
    • Spark内核学习
  • Flink

    • Flink环境搭建
    • Flink学习
  • Flume

    • Flume安装配置
    • Flume高可用集群安装
    • Flume相关学习
    • Flume把数据导入hive(文件方式)
  • 数据集成工具

    • Sqoop安装配置
    • Sqoop使用
    • 其他ETL工具
  • Impala

    • Impala
  • 调度

    • 调度工具
  • 其他

    • docker
  • 大数据
  • Zookeeper
Ai
2022-02-27
目录

Zookeeper集群搭建

这个是在之前的基础上搭建 hadoop完全分布式搭建:https://www.cnblogs.com/Hephaestus/p/12213719.html hadoop高可用搭建:https://www.cnblogs.com/Hephaestus/p/12420370.html 集群规划:

namenode datanode journalnode Zookeeper(必须为奇数)
hadoop100 是(nn2)
hadoop101 是(nn1) 是 是 是
hadoop102 是 是 是
hadoop103 是 是 是

# 关于Zookeeper的节点为什么是奇数

(参考链接:https://www.cnblogs.com/ysocean/p/9860529.html#_label0)

  • 容错率 需要保证集群能够有半数进行投票

2台服务器,至少2台正常运行才行(2的半数为1,半数以上最少为2),正常运行1台服务器都不允许挂掉,但是相对于 单节点服务器,2台服务器还有两个单点故障,所以直接排除了。 3台服务器,至少2台正常运行才行(3的半数为1.5,半数以上最少为2),正常运行可以允许1台服务器挂掉 4台服务器,至少3台正常运行才行(4的半数为2,半数以上最少为3),正常运行可以允许1台服务器挂掉 5台服务器,至少3台正常运行才行(5的半数为2.5,半数以上最少为3),正常运行可以允许2台服务器挂掉

  • 防脑裂 脑裂集群的脑裂通常是发生在节点之间通信不可达的情况下,集群会分裂成不同的小集群,小集群各自选出自己的leader节点,导致原有的集群出现多个leader节点的情况,这就是脑裂。

3台服务器,投票选举半数为1.5,一台服务裂开,和另外两台服务器无法通行,这时候2台服务器的集群(2票大于半数1.5票),所以可以选举出leader,而 1 台服务器的集群无法选举。 4台服务器,投票选举半数为2,可以分成 1,3两个集群或者2,2两个集群,对于 1,3集群,3集群可以选举;对于2,2集群,则不能选择,造成没有leader节点。 5台服务器,投票选举半数为2.5,可以分成1,4两个集群,或者2,3两集群,这两个集群分别都只能选举一个集群,满足zookeeper集群搭建数目。

以上分析,我们从容错率以及防止脑裂两方面说明了3台服务器是搭建集群的最少数目,4台发生脑裂时会造成没有leader节点的错误

# 1. 解压安装:

下载地址: 解压: tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /soft/module/ (自己要安装的目录) 文件夹重命名: mv apache-zookeeper-3.5.7 zookeeper-3.5.7

# 2. 配置

  • 1) 进入到zookeeper-3.5.7/conf目录下 cp zoo_sample.cfg zoo.cfg 编辑 vim zoo.cfg,加入
dataDir=/soft/module/zookeeper-3.5.7/zkData
dataLogDir=/soft/module/zookeeper-3.5.7/logs
clientPort=2181

########hadoop101、102、103为 3个datanode节点########
# 注: 文件可以这样写(不用0.0.0.0)(前提是把/etc/hosts前两行注释掉,否则会产生冲突)
server.1=hadoop101:2888:3888
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888

分发文件 xsync.sh zookeeper-3.5.7

  • 进入到zookeeper-3.5.7/conf目录下 ,mkdir zkData(上面配置文件zoo.cfg的路径) echo "1" > myid写入内容1(注意和配置文件中的server.1对应) 在其它节点分别执行操作 echo "2" > myid echo "3" > myid(和zoo.cfg对应!!! id必须在集群环境中服务器标识中是唯一的,且大小在1~255之间)

# 3. 集群启动 测试服务

  • 启动 bin/zkServer.sh start
  • 查看状态 bin/zkServer.sh status 这种情况的一种可能是Zookeeper集群有节点未启动
  • 连接zookeeper服务 bin/zkCli.sh -server 8.8.8.103:2181 (自己的ip、端口号和zoo.cfg对应)

拒绝连接 1).防火墙没关 2).配置文件问题 3).zk集群不是正常的关闭 (例如执行kill 命令zk的进程) 解决: 直接修改clientPort端口号,然后再启动,再关闭,把clientPort修改回来 注意,使用zookeeper需正常停止!!!不然,重启linux都不一定能解决问题! 4).主机IP和端口号一定要正确!!! (我就是端口号错了…)

# 4. HA故障自动转换

  • # 1) 修改集群所有节点(NameNode和DataNode)的hdfs配置文件和核心配置文件:

    vim /soft/module/hadoop-2.9.2/etc/hadoop/hdfs-site.xml
<!-- 当namnode故障,是否自动启动另一个namenode(默认值为false)-->
<property>
		<!--这个之前好像错了 -->
        <name>dfs.ha.automatic-failover.enabled </name>
        <value>true</value>
</property>

vim /soft/module/hadoop-2.9.2/etc/hadoop/core-site.xml

<!-- 指定zookeeper地址 -->
<property>
    <name>ha.zookeeper.quorum</name>
    <!-- 端口号和配置文件zoo.cfg 对应 -->
    <value>hadoop101: 2181,hadoop102: 2181,hadoop103: 2181</value>
</property>

查看 mapred-site.xml yarn-site.xml主机名啥的不要出错 分发配置文件: xsync /soft/module/hadoop-2.9.2/etc/hadoop

# 2) 启动测试

  • jps查看是否关闭所有服务, 没有的话关闭

  • 在所有节点上删除 dfs/data dfs/name tmp logs目录

  • 所有datanode节点启动zookeeper集群 ./bin/zkServer.sh start

  • 格式化zk集群: nn1上执行 bin/hdfs zkfc -formatZK

  • 所有datanode节点启动journalnode集群 ./sbin/hadoop-daemon.sh start journalnode

  • 格式化namenode: nn1上执行 ./bin/hdfs namenode -format

  • 启动datanode和namenode 所有datanode节点执行 ./sbin/hadoop-daemon.sh start datanode nn1 执行 ./sbin/hadoop-daemon.sh start namenode nn2 执行 ./bin/hdfs namenode -bootstrapStandby ./sbin/hadoop-daemon.sh start namenode 此时可以再UI界面看到

  • 启动zkfc服务 在nn1和nn2执行 ./sbin/hadoop-daemon.sh start zkfc 这时namenode1和namenode2会自动选举出active节点, 可以看到

  • 验证 处于active状态的节点 执行 kill -9 xxxxx(jps查看的namenode进程id), 可以看到

编辑 (opens new window)
上次更新: 2022/04/13, 21:51:31
代码demo(mr hbase hive redis)
Hive集群搭建

← 代码demo(mr hbase hive redis) Hive集群搭建→

Theme by Vdoing | Copyright © 2022-2025 Ai | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×