目录
第二步:解压 解压zookeeper的压缩包到/export/servers路径下去,然后准备进行安装
公司大数据集群搭建总结,自己买3台阿里云服务进行搭建大数据集群搭建
第一步:下载zookeeeper的压缩包,下载网址如下
http://archive.apache.org/dist/zookeeper/ 我们在这个网址下载我们使用的zk版本为3.4.9
下载完成之后,上传到我们的linux的/export/soxwares路径下准备进行安装
第二步:解压 解压zookeeper的压缩包到/export/servers路径下去,然后准备进行安装
cd /export/software
tar -zxvf zookeeper-3.4.9.tar.gz -C ../servers/
第三步:修改配置文件
第一台机器修改配置文件
cd /export/servers/zookeeper-3.4.9/conf/
cp zoo_sample.cfg zoo.cfg
mkdir -p /export/servers/zookeeper-3.4.9/zkdatas/
vim zoo.cfg
dataDir=/export/servers/zookeeper-3.4.9/zkdatas
# 保留多少个快照
autopurge.snapRetainCount=3
# 日志多少小时清理一次
autopurge.purgeInterval=1
# 集群中服务器地址
server.1=server01:2888:3888
server.2=server02:2888:3888
server.3=server03:2888:3888
其中:
initLimit=10: 对于从节点最初连接到主节点时的超时时间,单位为tick值的倍数。
syncLimit=5:对于主节点与从节点进行同步操作时的超时时间,单位为tick值的倍数。
dataDir=/tmp/zookeeper: 用于配置内存数据库保存的模糊快照的目录。即刚刚创建的data文件夹就是在此目录中。文件信息都存放在data目录下。
clientPort=2181: 表示客户端所连接的服务器所监听的端口号,默认是2181。即zookeeper对外提供访问的端口号。
2888:在zookeeper服务器之间及和leader连接时使用,
3888:第二个端口号,是在进行leader选举时使用
2181 是服务连接zookeeper端口
第四步:添加myid配置
新建myid文件
在第一台机器的 /export/servers/zookeeper-3.4.9/zkdatas /这个路径下创建一个文件,文件名为myid ,文件内容为1
echo 1 > /export/servers/zookeeper-3.4.9/zkdatas/myid
第五步:安装包分发并修改myid的值,安装包分发到其他机器
第一台机器上面执行以下两个命令
scp -r /export/servers/zookeeper-3.4.9/ node02:/export/servers/
scp -r /export/servers/zookeeper-3.4.9/ node03:/export/servers/
在三个linux机器上刚刚创建的zookeeper目录下新建一个myid文件并打开,vi myid命令。
在node01机器上输入1,保存退出;在node02机器上输入2,保存退出;在node03机器上输入3,保存退出。
这里的1,2,3是与server1,2,3相对应的,这是zookeeper的序列号
第二台机器上修改myid的值为2
echo 2 > /export/servers/zookeeper-3.4.9/zkdatas/myid
第三台机器上修改myid的值为3
echo 3 > /export/servers/zookeeper-3.4.9/zkdatas/myid
第六步:三台机器启动zookeeper服务
三台机器启动zookeeper服务,这个命令三台机器都要执行
/export/servers/zookeeper-3.4.9/bin/zkServer.sh start
查看启动状态
/export/servers/zookeeper-3.4.9/bin/zkServer.sh status
zkServer.sh start 来启动。
zkServer.sh restart (重启)
zkServer.sh status (查看状态)
zkServer.sh stop (关闭)
zkServer.sh start-foreground (以打印日志方式启动)
看到
server02为leader
server01为follower
server02为follower
第七步:连接到ZooKeeper
在命令行中输入:zkCli.sh
几个zNode节点操作的api简单介绍
create /parh data 创建一个名为/path的zNode节点,并包含数据data
delete /path 删除名为/path的zNode节点
exists /path 检查是否存在名为/path的zNode节点
setData /path data 设置名为/path的zNode的数据为data
getData /path 返回名为/path的zNode节点的数据信息
getChildren /path 返回所有/path节点的所有子节点列表
zNode节点还有不同的类型,持久(persistent)节点和临时(ephemeral)节点。持久的zNode,如/path,只能通过调用delete来进行删除,而临时的zNode则与之相反,当创建该节点的客户端崩溃或者关闭了与ZooKeeper服务器的连接时候,这个临时zNode节点就会被删除了。其中临时节点可用于实现分布式锁
第八步:配置环境变量(非必须)
为了能够在任意目录启动zookeeper集群,我们需要配置环境变量。
ps:你也可以不配,这不是搭建集群的必要操作,只不过如果你不配置环境变量,那么每次启动zookeeper需要到安装文件的 bin 目录下去启动。
首先进入到 /etc/profile 目录,添加相应的配置信息:
#set zookeeper environment
export ZK_HOME=/export/servers/zookeeper-3.4.9
export PATH=${JAVA_HOME}/bin:${ZK_HOME}/bin:$PATH
然后通过如下命令使得环境变量生效:
source /etc/profle
启动命令:zkServer.sh start
停止命令:zkServer.sh stop
重启命令:zkServer.sh restart
查看集群节点状态:zkServer.sh status
以打印日志方式启动:zkServer.sh start-foreground
第九步:启动异常解决方案
只有服务server01上机器启动,server02,server03机器没有启动,查看启动状态报异常
Error contacting service. It is probably not running.
- 定位问题以打印日志状态启动
- 可以看出是端口连接不通
- 但是防火墙端口我已经开放了
- 最后考虑到阿里云没有打开安全组,添加端口安全组
还是启动不了,最后把配置改成0.0.0.0 不知道为什么本机有hosts映射也不行