zookeeper介绍
是一个分布式服务的协调服务,集群半数以上可用(一般配置为奇数台),
快速选举机制:当集群中leader挂掉,所有小弟会投票选举出新的leader。
快速同步数据:zk将会存储小量用于服务做协调的数据。
标准文件系统用于存储大量数据;而zk存储小量协调数据
标准文件系统文件就是文件,目录就是目录;zk中文件既是目录。
1.zookeeper的安装与启动
解压并配置环境变量
配置./conf/zoo.cfg
tickTime=2000 zk中时间单元
initLimit=5 小弟连接老大的超时时间
syncLimit=2 同步数据的超时时间
dataDir=/home/zkdata
clientPort=2181
server.100=hadoop01:2888:3888
server.200=hadoop02:2888:3888
server.300=hadoop03:2888:3888
100(x)是server的id,2888是各个服务的通信端口,3888选举端口
分发到每一台服务器中
创建数据目录,并创建myid文件
mkdir /home/zkdata
echo 100 > /home/zkdata/myid
启动zk的服务:
zkServer.sh status/start/stop [./conf/zoo.cfg]
连接zk的集群:
zkCli.sh [-server hadoop02:2181]
2.zk的简单使用
增 : create /name 'sand' 创建永久节点
create -s /name 'sand' 创建临时顺序节点
create -e /name 'sand' 创建临时节点
get该节点信息:ephemeralOwne不为0 则是临时节点,其值为SessionID
删: delete /name 删除无子节点的节点
rmr /name/sex 递归删除
改: set /name 'me' 更新节点
查: ls /name/ 查看name节点下节点信息
get /name 查看name节点数据
3.hadoop高可用配置
参照官网完成集群XML文件配置
第一次hdfs的高可用流程:
先启动zk集群(格式化zkfc之前必须要启动zk集群)
zkServer.sh start
启动journalnode集群: (不启动namenode无法格式化)
hadoop-daemons.sh start journalnode
选择一台namenode进行格式化,然后并启动
hdfs namenode -format
hadoop-daemon.sh start namenode
再在另一台namenode的服务器上进行拉去元数据操作(手动远程copy)
hdfs namenode -bootstrapStandby
格式化zkfc
hdsf zkfc -formatZK
启动hdfs的模块:
start-dfs.sh
测试是否自动切换namenode: