zookeeper 集群搭建
zk集群规划
10个客户端节点: 3个zk节点
10-5-个客户端节点: 5 + 2OB 节点 = 7 zk节点
50-100个客户端节点: 5 + 6OB = 11zk节点
环境准备:
172.16.230.121 namenode1
172.16.230.122 namenode2
172.16.230.123 datanode1 zk
172.16.230.124 datanode2 zk
172.16.230.125 datanode3 zk
下载zookeeper
wget http://archive.apache.org/dist/zookeeper/zookeeper-3.5.5/apache-zookeeper-3.5.5-bin.tar.gz
tar -zxvf apache-zookeeper-3.5.5-bin.tar.gz
mv apache-zookeeper-3.5.5 /data/zookeeper
修改配置文件
mkdir /data/zookeeper/logs mkdir /data/zookeeper/data cd /data/zookeeper/conf mv zoo_sample.cfg zoo.cfg vim /data/zookeeper/conf/zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 clientPort=2181 #将单个客户端(由IP地址标识)可以与ZooKeeper集成中的单个成员建立的并发连接数(在套接字级别)限制为多少 maxClientCnxns=2000 #服务器允许客户端进行协商的最大会话超时(以毫秒为单位)。默认为tickTime的20倍 maxSessionTimeout=60000000 #ZooKeeper自动清除功能会将autopurge.snapRetainCount最新快照和相应的事务日志分别保留在dataDir和dataLogDir中 autopurge.snapRetainCount=10 #触发清除任务的时间间隔(以小时为单位) autopurge.purgeInterval=1 #为了避免查找,ZooKeeper以preAllocSize千字节的块为单位在事务日志文件中分配空间。默认块大小为64M preAllocSize=131072 #使用快照和事务日志(请考虑预写日志)记录其事务 snapCount=3000000 #负责接受客户端连接。默认值为“是” leaderServes=yes dataDir=/data/zookeeper/data dataLogDir=/data/zookeeper/log 4lw.commands.whitelist=* server.1=datanode1:2888:3888 server.2=datanode2:2888:3888 server.3=datanode3:2888:3888
查看 /data/zookeeper/bin/zkENV.sh中 jvm 默认HEAP
#注释掉ZK_SERVER_HEAP,使用自己定义的jvm , 默认jvm 使用1G。
ZK_SERVER_HEAP="${ZK_SERVER_HEAP:-1000}"
export SERVER_JVMFLAGS="$SERVER_JVMFLAGS"
# default heap for zookeeper client
ZK_CLIENT_HEAP="${ZK_CLIENT_HEAP:-256}"
export CLIENT_JVMFLAGS="$CLIENT_JVMFLAGS"
新建 /data/zookeeper/conf/zookeeper-env.sh 启动后会加载。
JAVA_HOME=/data/jdk ZOO_LOG_DIR=/data/zookeeper/logs ZOO_LOG4J_PROP="WARN,ROLLINGFILE" SERVER_JVMFLAGS="-server -Xms1G -Xmx1G -Xmn400m -Xss228k -XX:+UseG1GC -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:+DisableExplicitGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/logs/hadoop -XX:ErrorFile=/data/logs/hadoop/hs_err_pid%p.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -Xloggc:/data/logs/hadoop/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=32 -XX:GCLogFileSize=64m"
# -Xms1G 初始化内存, -Xmx1G 最大内存1G
# -Xmn400m 新生代, 最大内存的3/8
# -Xss228K 线程占用的堆内存
创建myid文件
172.16.230.121 echo "1" > /data/zookeeper/data/myid 172.16.230.122 echo "2" > /data/zookeeper/data/myid 172.16.230.123 echo "3" > /data/zookeeper/data/myid
加入环境变量
[hadoop@datanode1 bin]$ cat ~/.bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/.local/bin:$HOME/bin:/data/zookeeper/bin export PATH
source ~/.bash_profile
启动:
zkServer.sh start
zkServer.sh status
zookeeper 动态配置, 添加observer
vim /data/zookeeper/conf/zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 dataDir=/tmp/zookeeper clientPort=2181 #将单个客户端(由IP地址标识)可以与ZooKeeper集成中的单个成员建立的并发连接数(在套接字级别)限制为多少 maxClientCnxns=2000 #服务器允许客户端进行协商的最大会话超时(以毫秒为单位)。默认为tickTime的20倍 maxSessionTimeout=60000000 #ZooKeeper自动清除功能会将autopurge.snapRetainCount最新快照和相应的事务日志分别保留在dataDir和dataLogDir中 autopurge.snapRetainCount=10 #触发清除任务的时间间隔(以小时为单位) autopurge.purgeInterval=1 #为了避免查找,ZooKeeper以preAllocSize千字节的块为单位在事务日志文件中分配空间。默认块大小为64M preAllocSize=131072 #使用快照和事务日志(请考虑预写日志)记录其事务 snapCount=3000000 #负责接受客户端连接。默认值为“是” leaderServes=yes dataDir=/data/zookeeper/data dataLogDir=/data/zookeeper/log 4lw.commands.whitelist=* server.1=datanode1:2888:3888 server.2=datanode2:2888:3888 server.3=datanode3:2888:3888
#启动动态配置 reconfigEnabled=true dynamicConfigFile=/data/zookeeper/conf/zoo_replicated1.cfg.dynamic
动态配置文件/data/zookeeper/conf/zoo_replicated1.cfg.dynamic
server.1=datanode1:2888:3888;2181 server.2=datanode2:2888:3888;2181 server.3=datanode3:2888:3888;2181 server.4=datanode4:2888:3888:observer;2181 server.5=datanode5:2888:3888:observer;2181
datanode4 datanode5 创建myid文件
172.16.230.124 echo "4" > /data/zookeeper/data/myid 172.16.230.125 echo "5" > /data/zookeeper/data/myid
datanode6扩容:
动态配置文件/data/zookeeper/conf/zoo_replicated1.cfg.dynamic
server.1=datanode1:2888:3888;2181
server.2=datanode2:2888:3888;2181
server.3=datanode3:2888:3888;2181
# 添加server.6###############
server.6=datanode6:2888:3888;2181
##############################
server.4=datanode4:2888:3888:observer;2181
server.5=datanode5:2888:3888:observer;2181
datanode6 创建myid文件
172.16.230.126
echo "6" > /data/zookeeper/data/myid
登陆121 节点(执行reconfig -add)
zkCli.sh reconfig -add 6=datanode6:2888:3888;2181
删除datanode6(执行reconfig -remove)
reconfig -remove 6
systemctl 自启动
[Unit] Description=ZooKeeper Service After=network.target [Service] Type=forking Environment=JAVA_HOME=/data/jdk ExecStart=/data/zookeeper/bin/zkServer.sh start ExecReload=/data/zookeeper/bin/zkServer.sh restart ExecStop=/data/zookeeper/bin/zkServer.sh stop Restart=always [Install] WantedBy=default.target
https://zookeeper.apache.org/doc/r3.5.9/zookeeperAdmin.html#sc_systemReq
https://zookeeper.apache.org/doc/r3.5.9/zookeeperReconfig.html
相关文章
- 安装zookeeper(单机,伪集群)
- zookeeper curator CRUD
- Zookeeper知识点
- Linux搭建单机多进程zookeeper集群
- Zookeeper常用节点命令
- Zookeeper集群搭建
- KAFKA集群安装与配置(带Zookeeper)2023版
- Mac安装zookeeper(图文解说详细版)
- 江帅帅:这么流行的 ZooKeeper,原来是这样设计的!
- 多台阿里云服务器上搭建ZooKeeper集群
- Apache Curator与Zookeeper版本兼容性异常:org.apache.zookeeper.KeeperException$UnimplementedException: KeeperErrorCode =Unimplemented
- 大数据KRaft教程之Kafka 宣布KRaft 已准备好,不再需要运行 Zookeeper
- Zookeeper 基础、工作流、ZAP协议
- zookeeper ACL权限
- Hadoop学习---Zookeeper+Hbase配置学习
- zookeeper作为soa服务器集群的协调调度服务器
- ZooKeeper系列之二:Zookeeper常用命令
- zookeeper源码分析之五服务端(集群leader)处理请求流程
- zookeeper集群搭建
- Kafka+ZooKeeper高可用集群部署