Hadoop学习13--zookeeper相关

zookeeper要保证各个server之间同步,实现同步的协议是zab协议。此协议有两种模式:恢复模式(选主)和广播模式(同步)。

服务启动或者leader崩溃时,进入恢复模式。选举成功且大多数server完成了和leader的状态同步后(2n+1台中的n+1台),恢复模式就结束了。

状态同步保证了leader和Server具有相同的系统状态。为了保证事务的顺序一致性,zookeeper采用了递增的事务id号 (zxid)来标识事务。所有的提议(proposal)都在被提出的时候加上了zxid。实现中zxid是一个64位的数字,它高32位是epoch用 来标识leader关系是否改变,每次一个leader被选出来,它都会有一个新的epoch,标识当前属于那个leader的统治时期。低32位用于递 增计数。

同步流程
选完leader以后,zk就进入状态同步过程。
1. leader等待server连接;
2 .Follower连接leader,将最大的zxid发送给leader;
3 .Leader根据follower的zxid确定同步点;
4 .完成同步后通知follower 已经成为uptodate状态;
5 .Follower收到uptodate消息后,又可以重新接受client的请求进行服务了。

Leader主要有三个功能:
1 .恢复数据;
2 .维持与Learner的心跳,接收Learner请求并判断Learner的请求消息类型;
3 .Learner的消息类型主要有PING消息、REQUEST消息、ACK消息、REVALIDATE消息,根据不同的消息类型,进行不同的处理。
PING 消息是指Learner的心跳信息;REQUEST消息是Follower发送的提议信息,包括写请求及同步请求;ACK消息是Follower的对提议 的回复,超过半数的Follower通过,则commit该提议;REVALIDATE消息是用来延长SESSION有效时间。

Follower主要有四个功能:
1. 向Leader发送请求(PING消息、REQUEST消息、ACK消息、REVALIDATE消息);
2 .接收Leader消息并进行处理;
3 .接收Client的请求,如果为写请求,发送给Leader进行投票;
4 .返回Client结果。
Follower的消息循环处理如下几种来自Leader的消息:
1 .PING消息: 心跳消息;
2 .PROPOSAL消息:Leader发起的提案,要求Follower投票;
3 .COMMIT消息:服务器端最新一次提案的信息;
4 .UPTODATE消息:表明同步完成;
5 .REVALIDATE消息:根据Leader的REVALIDATE结果,关闭待revalidate的session还是允许其接受消息;
6 .SYNC消息:返回SYNC结果到客户端,这个消息最初由客户端发起,用来强制得到最新的更新。

以上内容引用自这篇博客,里面有流程图:

http://www.cnblogs.com/kunpengit/p/4045334.html

一、配置项解释:

zoo.cfg=>

initLimit=10

syncLimit=5

tickTime=2000

dataDir=E:/zookeeper/zookeeper-3.4.5/data

dataLogDir=。。。

clientPort=2181

leaderServes=no

globalOutstandingLimit=1000

server.1=slave1:2887:3887
server.2=slave2:2887:3887
server.3=slave3:2887:3887

解释:

initLimit:集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。F在启动时,会从Leader同步所有的最新数据,然后确定自己能对外服务的起始状态。L允许在这个时间范围内完成这个工作。如果ZK集群的数据量很大,F在启动的时候,同步的时间就会很长,需要相应调大这个参数。

syncLimit:集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。在集群运行过程中,L负责与所有的机器进行通信,例如通过心跳检测机器是否存货。如果发出的心跳包在这个时间范围内没有收到响应,那么就会弃用这个机器。这个值不宜设置过大。

tickTime:心跳时间,客户端在服务端保留session,最小的session过期时间,是tickTime的2倍。

dataDir:用来存储在内存中的数据库快照。

logDir:

leaderServes:默认情况下,leader机器会接收客户端的读写请求。如果设置为no,该机器将会专注于急群众机器的协调工作。以此来提高写操作的性能。

clientPort:监听客户端连接的端口号。

globalOutstandingLimit:最大请求堆积数。默认是1000。ZK运行的时候, 尽管server已经没有空闲来处理更多的客户端请求了,但是还是允许客户端将请求提交到服务器上来,以提高吞吐性能。当然,为了防止Server内存溢出,这个请求堆积数还是需要限制下的。

server.1中的1对应上面配置的dataDir目录下的myid文件中的值

两个端口:第一个是F和L之间通信(数据同步和其他通信)的端口,第二个是用于leader选举中投票通信。

扩展:

preAllocSize:预先开辟磁盘空间,用于后续写入事务日志。默认是64M,每个事务日志大小就是64M。如果ZK的快照频率较大的话,建议适当减小这个参数。

snapCount:每进行snapCount次事务日志输出后,触发一次快照(snapshot), 此时,ZK会生成一个snapshot.*文件,同时创建一个新的事务日志文件log.*。默认是100000.(真正的代码实现中,会进行一定的随机数处理,以避免所有服务器在同一时间进行快照而影响性能)

traceFile:用于记录所有请求的log,一般调试过程中可以使用,但是生产环境不建议使用,会严重影响性能。

autopurge.purgeInterval:3.4.0及之后版本,ZK提供了自动清理事务日志和快照文件的功能,这个参数指定了清理频率,单位是小时,需要配置一个1或更大的整数,默认是0,表示不开启自动清理功能。

autopurge.snapRetainCount:这个参数和上面的参数搭配使用,这个参数指定了需要保留的文件数目。默认是保留3个。

二、命令:

启动和重启

bin/zkServer.sh start / restart

查看状态

bin/zkServer.sh status

集群中应该只有一台leader,其余是follower 和looking(当前server不知道leader是谁,正在搜寻)

查看节点的详细配置信息:

echo conf | nc slave1 2181

查看节点的当前性能和连接客户端列表:

echo stat | nc slave1 2181

上述命令的简化版本:

echo cons |nc slave1 2181 仅仅列出当前连接到服务器的客户端的信息

列出当前机器环境的详细信息:

echo reqs |nc slave1 2181

列出watch详细信息:

echo wchs |nc slave1 2181

通过session列出服务器watch信息

echo wchc |nc slave1 2181

通过路径列出服务器watch信息

echo wchp |nc slave1 2181

列出未经处理的会话和临时节点:

echo dump |nc slave1 2181

列出所有未处理请求:

echo cons |nc slave1 2181

另一个关掉server的命令:

echo kill | nc salve1 2181

打开客户端

bin/zkCli.sh -server slave1:2181

  列出节点:ls /

  列出节点以及版本信息(增删节点会更新)、节点数量等内容:ls2 /

  创建节点: create /testzk  wordwordword   后面的是存入的内容字符串

  查看:get /testzk   包括内容,以及版本等

  设置内容字符串:set /testzk sssss 执行后,替换了

  删除znode delete /testzk

    退出客户端: quit

时间: 2024-08-07 18:09:27

Hadoop学习13--zookeeper相关的相关文章

十四、Hadoop学习笔记————Zookeeper概述

顺序一致性:严格按照顺序在zookeeper上执行 原子性:所有事物请求的结果,在整个集群的应用情况一致 单一视图:无论从哪个服务器进入集群,看到的东西都是一致的 可靠性:服务端成功响应后,状态会 一直保留 3台的zookeeper集群达到12-13万QPS

十五、Hadoop学习笔记————Zookeeper的环境搭建

linux中/opt一般用来存放应用/var目录一般用来存放日志 sample为样例文件,复制一份zoo.cfg文件 配置zoo文件,id为服务器id(整数),host为服务器的ip地址,第一个port为follow的端口,第二个port为leader选举端口,输入任意可用值即可

Hadoop学习笔记(二)——zookeeper使用和分析

分布式架构是中心化的设计,就是一个主控机连接多个处理节点,因此保证主控机高可用性十分关键.分布式锁是解决该问题的较好方案,多主控机抢一把锁.Zookeeper就是一套分布式锁管理系统,用于高可靠的维护元数据. 一.应用 1.集群模式 集群模式下配置多个Zookeeper节点,启动Zookeeper集群,Zookeeper会根据配置投票选举一个节点获得分布式锁. 关键配置举例: # The Cluster servers #server.1=192.168.1.10:2887:3887 #serv

Hadoop学习笔记(三)——zookeeper的一致性协议:ZAB

ZAB:ZooKeeper的Atomic Broadcast协议,能够保证发给各副本的消息顺序相同. Zookeeper使用了一种称为Zab(ZookeeperAtomic Broadcast)的协议作为其一致性复制的核心,其特点为高吞吐量.低延迟.健壮.简单,但不过分要求其扩展性. Zookeeper的实现是有Client.Server构成,Server端提供了一个一致性复制.存储服务,Client端会提供一些具体的语义,比如分布式锁.选举算法.分布式互斥等.从存储内容来说,Server端更多

Hadoop学习笔记—14.ZooKeeper环境搭建

从字面上来看,ZooKeeper表示动物园管理员,这是一个十分奇妙的名字,我们又想起了Hadoop生态系统中,许多项目的Logo都采用了动物,比如Hadoop采用了大象的形象,所以我们可以猜测ZooKeep就是对这些动物进行一些管理工作的. 一.ZooKeeper基础介绍 1.1 动物园也要保障安全 zookeeper是hadoop下面的一个子项目,用来协调跟hadoop相关的一些分布式的框架,如hadoop, hive, pig等, 其实他们都是动物,所以叫zookeeper ——“动物园管理

hadoop 学习笔记:mapreduce框架详解

hadoop 学习笔记:mapreduce框架详解 开始聊mapreduce,mapreduce是hadoop的计算框架,我 学hadoop是从hive开始入手,再到hdfs,当我学习hdfs时候,就感觉到hdfs和mapreduce关系的紧密.这个可能是我做技术研究的 思路有关,我开始学习某一套技术总是想着这套技术到底能干什么,只有当我真正理解了这套技术解决了什么问题时候,我后续的学习就能逐步的加快,而学习 hdfs时候我就发现,要理解hadoop框架的意义,hdfs和mapreduce是密不

hadoop学习视频教程超低大回馈,风暴元宵节

------极低风暴,"拳力"出击 [活动内容] ***IT教程买一送一(合作课程和套餐课程除外),礼品课程随你挑! 凡是活动期间购买套餐课程全部6折,另***特推出原价8000元包就业.net课程现在购买只需4800元! 2015风起云涌年,充实自己,活出精彩吧! 活动详情:http://www.dwz.cn/CJE6X 活动时间:2015.03.04-2015.03.05 咨询qq:1840215592 hadoop学习视频教程汇总 咨询qq:1840215592 随着云计算.大数

好程序员大数据学习路线Hadoop学习干货分享

好程序员大数据学习路线Hadoop学习干货分享,Apache Hadoop 为可靠的,可扩展的分布式计算开发开源软件.Apache Hadoop软件库是一个框架,它允许使用简单的编程模型跨计算机群集分布式处理大型数据集(海量的数据).包括这些模块: Hadoop Common:支持其他Hadoop模块的常用工具. Hadoop分布式文件系统(HDFS?):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问. Hadoop YARN:作业调度和集群资源管理的框架. Hadoop MapRedu

Hadoop学习笔记(8) ——实战 做个倒排索引

Hadoop学习笔记(8) ——实战 做个倒排索引 倒排索引是文档检索系统中最常用数据结构.根据单词反过来查在文档中出现的频率,而不是根据文档来,所以称倒排索引(Inverted Index).结构如下: 这张索引表中, 每个单词都对应着一系列的出现该单词的文档,权表示该单词在该文档中出现的次数.现在我们假定输入的是以下的文件清单: T1 : hello world hello china T2 : hello hadoop T3 : bye world bye hadoop bye bye 输

Hadoop学习之路(一)——Hadoop家族学习路线图

主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项目包括,YARN, Hcatalog, Oozie, Cassandra, Hama, Whirr, Flume, Bigtop, Crunch, Hue等. 从2011年开始,中国进入大数据风起云涌的时代,以Hadoop为代表的家族软件,占据了大数据处理的广阔地盘.开源界及厂商,所有数据软件,无