知识点:安装配置ZooKeeper
重 点: 安装配置ZooKeeper
难 点:无
内 容:
ZooKeeper是一个开源分布式协调服务,其独特的Leader-Follower集群结构,很好的解决了分布式单点问题。目前主要用于诸如:统一命名服务、配置管理、锁服务、集群管理等场景。大数据应用中主要使用ZooKeeper的集群管理功能。
因为在项目中会使用到HBase,所以需要安装ZooKeeper。HBase是一个开源的、分布式的NoSQL数据库,它建立在Hadoop分布式文件系统(HDFS)之上。HBase具有高可靠性、高可扩展性、高性能等特点,它适合于存储和处理大规模数据。而ZooKeeper是一个分布式的协调服务,它能够提供分布式系统中的一致性和可靠性支持。在HBase中,ZooKeeper负责协调HBase集群中所有RegionServer的状态、负载均衡以及Master的选举等任务。因此,ZooKeeper在HBase中扮演了一个非常重要的角色,它确保了HBase集群的稳定性和可靠性。
任务主要内容为:ZooKeeper下载安装,环境变量的修改,配置ZooKeeper。
该异常是可以忽略的,因为该服务启动时会尝试连接所有节点,而其他节点尚未启动。通过后面部分可以看到,集群在选出一个Leader后,最后稳定 了。其他结点可能也出现类似问题,属于正常。
API操作HDFS时会出现异常:java.net.NoRouteToHostException: No route to host
API操作ZK时会出现异常:org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for xxxx
使用root权限登陆后,输入关闭防火墙命令(在所有节点执行以下操作):
# systemctl stop firewalld # systemctl disable firewalld 在node1节点上,进入/opt/software/目录(此目录是为实验提供的安装软件所在目录,如果没有请自行到官方网站下载):
[root@node1 ~]# cd /opt/software/ 
[root@node1 software]# tar -zxvf /opt/software/zookeeper-3.4.13.tar.gz -C /opt/module export ZK_HOME=/opt/module/zookeeper-3.4.13 export PATH=$PATH:$ZK_HOME/bin 
[root@node1 software]# source /etc/profile 
[root@node1 software]# scp -rq /etc/profile node2:/etc/ [root@node1 software]# scp -rq /etc/profile node3:/etc/ 

[root@node1 software]# cd $ZK_HOME/conf/ [root@node1 conf]# cp zoo_sample.cfg zoo.cfg [root@node1 conf]# vi zoo.cfg # 客户端心跳时间(毫秒) tickTime=2000 # 允许心跳间隔的最大时间 initLimit=10 # 同步时限 syncLimit=5 # 数据存储目录 dataDir=/opt/module/zookeeper-3.4.13/data # 数据日志存储目录 dataLogDir=/opt/module/zookeeper-3.4.13/data/log # 端口号 clientPort=2181 # 集群节点和服务端口配置 server.1=node1:2888:3888 server.2=node2:2888:3888 server.3=node3:2888:3888 # 以下为优化配置 # 服务器最大连接数,默认为10,改为0表示无限制 maxClientCnxns=0 # 快照数 autopurge.snapRetainCount=3 # 快照清理时间,默认为0 autopurge.purgeInterval=1 [root@node1 conf]# cd ../ [root@node1 zookeeper-3.4.13]# mkdir -p /opt/module/zookeeper-3.4.13/data [root@node1 zookeeper-3.4.13]# mkdir -p /opt/module/zookeeper-3.4.13/data/log [root@node1 zookeeper-3.4.13]# echo "1" > data/myid [root@node1 zookeeper-3.4.13]# vi bin/zkEnv.sh if [ "x${ZOO_LOG_DIR}" = "x" ] then ZOO_LOG_DIR="$ZK_HOME/logs" fi if [ "x${ZOO_LOG4J_PROP}" = "x" ] then ZOO_LOG4J_PROP="INFO,ROLLINGFILE" fi 
[root@node1 zookeeper-3.4.13]# vi conf/log4j.properties zookeeper.root.logger=INFO,ROLLINGFILE 
[root@node1 zookeeper-3.4.13]# mkdir /opt/module/zookeeper-3.4.13/logs [root@node1 zookeeper-3.4.13]# scp -rq /opt/module/zookeeper-3.4.13 node2:/opt/module [root@node1 zookeeper-3.4.13]# scp -rq /opt/module/zookeeper-3.4.13 node3:/opt/module [root@node2 ~]# rm -rf /opt/module/zookeeper-3.4.13/data/myid [root@node2 ~]# echo "2" > /opt/module/zookeeper-3.4.13/data/myid [root@node3 ~]# rm -rf /opt/module/zookeeper-3.4.13/data/myid [root@node3 ~]# echo "3" > /opt/module/zookeeper-3.4.13/data/myid [root@node1 ~]# zkServer.sh start [root@node2 ~]# zkServer.sh start [root@node3 ~]# zkServer.sh start [root@node1 ~]# zkServer.sh status [root@node2 ~]# zkServer.sh status [root@node3 ~]# zkServer.sh status 
# zkServer.sh stop