Apache zookeeper 基本概念

2019-03-27 01:14|来源: 网路

  1. Apache zookeeper 是什么

当使用Hadoop Cloud时我们看到了zookeeper,当使用Solr Cloud时我们再次看到了zookeeper,zookeeper为神马一次又一次地与云接下了不解之缘?其实我们每个人对云(Cloud)的概念学习从幼儿园就开始了,先学习一首儿歌《蚂蚁搬豆》,歌词如下:

一只蚂蚁在洞口
找到一粒豆
用尽力气搬不动,只是连摇头
左思右想好一会
想出好计谋
回洞唤起小朋友
合力抬着走

我们看看其中的云思想,搬豆,这可是件费时费力的事情,对应着我们云平台要完成的任务;蚂蚁,每个蚂蚁的能力很有限,正好是云平台的节点;想出好计谋, 这就是调度策略;回洞唤起,就是节点通讯;合力抬着走,就是协同工作。这和zookeeper有什么关系呢?关系可大了,zookeeper就是可以帮助解决这其中的一些问题。

  • 信号灯 Semaphores ——多只蚂蚁都想从同一根树枝上经过是,这就涉及到资源共享,就需要信号灯,不懂请看操作系统原理。
  • 队列 Queues ——生产者,消费者队列。有一只漂亮的小母蚂蚁来慰问,一群蚂蚁都流着口水想握手,前者是生产者,后者是消费者。带头大哥说老子优先。
  • 带头大哥遴选 Leader election ——这里的带头大哥也是要干活的,大哥可以给成员派活干,如果天有不测大哥阵亡,需要选个小弟顶上去
  • 组成员管理 Group membership —— 组成员小弟需要向组的带头大哥汇报,即使没干活也要有报告心跳,否则大哥以为小弟已经挂了。小弟因故障不能工作,修复后归队时要向带头大哥报告:报告老大,我已经准备就绪,请指示。
  • 栅栏  Barriers ——栅栏,一群蚂蚁集结在栅栏前面,在栅栏没打开前谁也没法前进,栅栏一开,大家开始冲了,栅栏就起到了多个子任务同步的作用。
  • 配置 ConfiguraOon ——蚂蚁出发前,墙壁上写着今天的装备配置是:靴子六只,手机一部,队长配小秘一个,分布式协调系统一定少不了配置。

2. 总结

Zookeeper 是一个分布式服务框架,主要是用来解决分布式集群系统中的一致性问题。简单的讲就是如果管理一群蚂蚁以完成某项任务的问题,在后续的章节中将详细讲述,zookeeper是如何做到的。只用充分了解zookeeper的原理才能正确使用,对zookeeper的状态和数据进行分析,是分析和解决基于zookeeper的分布式应用的关键。所以磨刀不误砍柴工,在你深入学习Hadoop和Solr Cloud之前,一定先吃透zookeeper。


转自:http://www.cnblogs.com/betabo/archive/2013/05/18/3085353

相关问答

更多
  • zookeeper 中数据保存的方式是 树 状的。 这里的 node ,就是指 树上的一个节点 。 path 是指从 根节点( / ) 到 这个节点 的全路径 。
  • 是。 你的ZK的领导选举配方例子是正确的。 一般来说,如果一个配方已经存在,为什么要重写呢? 引用Zookeeper文档: ZooKeeper是一个集中服务,用于维护配置信息,命名,提供分布式同步和提供组服务。 关于分布式锁 - 假设您有一个分布式系统,其中所有配置都保存在Zookeeper上,并且多个实体负责更新某个配置 - 在这种情况下,您希望配置更新同步。 关于屏障,我个人从来没有使用它们 - 但是如果有锁,您需要获得锁来实际上在节点上执行某些操作,这是一个屏障,您可以等待,直到屏障释放为止,但不一定 ...
  • 确保这件事: 您已在所有3台服务器上启动Zookeeper服务器 所有服务器都通过运行echo ruok | netcat ip.of.zk2 2181以非错误模式运行 echo ruok | netcat ip.of.zk2 2181 。 如果没问题,服务器应该用imok响应(仅供参考,这里是所有支持的4个字母命令的列表 ) /home/zkuser/zookeeper_data/myid包含每个服务器的值1/2/3 你可以从第一台服务器ping其他2台服务器 如果有兴趣,我创建了一个vagrant + ...
  • 配置文件的缺省位置使用相对路径config/zookeeper.properties 。 Kafka的目录树看起来有点像这样: bin/ | +-- zookeeper-server-start.sh | +-- windows/ | +-- zookeeper-server-start.bat config/ | +-- zookeeper.properties 因此,如果您确实在bin/windows/目录中,然后从那里运行zookeeper-s ...
  • 尝试添加环境变量: CHROOT=/kafka_0.9 Zookeeper还允许您添加一个“chroot”路径,该路径将使该群集的所有kafka数据显示在特定路径下。 这是在同一个zookeeper集群上设置多个Kafka集群或其他应用程序的一种方法。 要做到这一点,以hostname1:port1,hostname2:port2,hostname3:port3 / chroot / path的形式给出一个连接字符串,将所有这个集群的数据放在路径/ chroot / path下。 请注意,您必须在启动代理之 ...
  • Java 8中不再支持配置hbase-env.sh指出: #Configure PermSize. Only needed in JDK7. You can safely remove it for JDK8+ hbase配置包括默认情况下在conf/hbase-env.sh文件中设置为128m的conf/hbase-env.sh 。 找出这两行。 export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize= ...
  • 您可以从Hue浏览ZNode层次结构(如果配置正确)。 观看演示视频http://gethue.com/new-zookeeper-browser-app/以及如何设置它的一些细节。 You can browse ZNode hierarchy from Hue (if configured properly). Check http://gethue.com/new-zookeeper-browser-app/ for demo video and some details on how to set i ...
  • 最后,这是我提出的最简单,最基本的程序,它将帮助您使用ZooKeeper“入门”: package core.framework.zookeeper; import java.util.Date; import java.util.List; import java.util.concurrent.CountDownLatch; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.WatchedEvent; import ...
  • ZooKeeper管理指南详细介绍了如何执行此操作。 查看“stat”命令。 您也可以根据监控的复杂程度使用JMX 。 PS:3.1.2很旧,你应该升级。 The ZooKeeper Admin guide has details on how to do this. Look at the "stat" command. You might also use JMX depending on your monitoring sophistication. PS: 3.1.2 is pretty old, ...
  • 我写了一个更简单的演示,非常类似于这个https://github.com/andreiz/php-zookeeper/wiki ,观察者在这个演示中运行良好。 最显着的区别是 while( true ) { echo '.'; sleep(2); } 虽然java有一个jvm容器托管观察者,php没有容器来做它,所以我们必须使用while(true)来让观察者活着。 所以我在我的代码中添加了一段while(true) ,现在观察者工作正常。 但我不想在Web应用程序中添加一个糟糕的whi ...