zookeeper集群

Zookeeper工作原理(详细)

独自空忆成欢 提交于 2019-12-05 04:19:36
转: http://www.cnblogs.com/raphael5200/p/5285583.html 1、Zookeeper的角色   » 领导者(leader),负责进行投票的发起和决议,更新系统状态   » 学习者(learner),包括跟随者(follower)和观察者(observer),follower用于接受客户端请求并想客户端返回结果,在选主过程中参与投票   » Observer可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度   » 客户端(client),请求发起方               • Zookeeper的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协    议。Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者    崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和leader的状态同步以后    ,恢复模式就结束了。状态同步保证了leader和Server具有相同的系统状态。   • 为了保证事务的顺序一致性,zookeeper采用了递增的事务id号(zxid)来标识事务。所有的提议(    proposal

ZooKeeper原理及使用

让人想犯罪 __ 提交于 2019-12-05 04:19:24
ZooKeeper是Hadoop Ecosystem中非常重要的组件,它的主要功能是为分布式系统提供一致性协调(Coordination)服务,与之对应的Google的类似服务叫Chubby。今天这篇文章分为三个部分来介绍ZooKeeper,第一部分介绍ZooKeeper的基本原理,第二部分介绍ZooKeeper提供的Client API的使用,第三部分介绍一些ZooKeeper典型的应用场景。 ZooKeeper基本原理 1. 数据模型 如上图所示,ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。每个ZNode都可以通过其路径唯一标识,比如上图中第三层的第一个ZNode, 它的路径是/app1/c1。在每个ZNode上可存储少量数据(默认是1M, 可以通过配置修改, 通常不建议在ZNode上存储大量的数据),这个特性非常有用,在后面的典型应用场景中会介绍到。另外,每个ZNode上还存储了其Acl信息,这里需要注意,虽说ZNode的树形结构跟Unix文件系统很类似,但是其Acl与Unix文件系统是完全不同的,每个ZNode的Acl的独立的,子结点不会继承父结点的,关于ZooKeeper中的Acl可以参考之前写过的一篇文章《 说说Zookeeper中的ACL 》。 2.重要概念 2.1 ZNode 前文已介绍了ZNode,

Zookeeper原理架构

跟風遠走 提交于 2019-12-05 04:19:08
本文纯属个人笔记,通俗易懂,转载请附上原文链接!部分资料摘自网络,如有雷同,纯属巧合! 更多资料见个人博客 https://www.rabbitai.cn Zookeeper到底是什么!? 学一个东西,不搞明白他是什么东西,哪还有心情学啊!! 首先,Zookeeper是Apache的一个java项目,属于Hadoop系统,扮演管理员的角色。 然后看到官网那些专有名词,实在理解不了。 在Zookeeper的官网上有这么一句话:ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. 那么我们来仔细研究一下这个东西吧! ###Zookeeper能干嘛?! ####1. 配置管理 这个好理解。分布式系统都有好多机器,比如我在搭建hadoop的HDFS的时候,需要在一个主机器上(Master节点)配置好HDFS需要的各种配置文件,然后通过scp命令把这些配置文件拷贝到其他节点上,这样各个机器拿到的配置信息是一致的,才能成功运行起来HDFS服务。Zookeeper提供了这样的一种服务:一种集中管理配置的方法,我们在这个集中的地方修改了配置

ZooKeeper集群搭建常见问题:Connection refused

筅森魡賤 提交于 2019-12-05 04:08:25
1.前言 每一次搭建集群环境都像一次战斗,作战中任何一个细节的出错都会导致严重的后果,所以搭建中所需要做的配置如系统配置、网络配置(防火墙记得关)、用户权限、文件权限还有配置文件等等内容,都必须非常仔细,将失误扼杀在摇篮之中,避免因为粗心或者想要提高速度省下的一分钟,在后面付出几个小时的调试时间,因小失大实在不值,切记核对、核对再核对。 今天就来说说在搭建ZooKeeper集群遇到的一个常见的问题Connection refused,也就是网上很多朋友也会出现的问题,问题的表现也许是一样,但是导致问题的原因却不尽相同,所以要重视自己的log文件报的错误,在确认外部大环境没有的情况下,集中力量解决log中的错误。 2. 我的问题 下面是我在搭建集群时报的错: 这是表面上错误 2016-12-08 05:11:07,890 [myid:1] - WARN [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@382] - Cannot open channel to 5 at election address lzx15/192.168.80.175:3888 java.net.ConnectException: Connection refused at java.net.PlainSocketImpl

zookeeper伪集群模式搭建

倖福魔咒の 提交于 2019-12-05 04:06:29
下载 zookeeper官网 wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.5.5/apache-zookeeper-3.5.5-bin.tar.gz 这里下载的是bin.tar.gz ,在我的环境上下载tar.gz 后续报错:Error: Could not find or load main class org.apache.zookeeper.server.quorum.QuorumPeerMain 伪集群模式安装 建立实例目录 mkdir zk1 zk2 zk3 解压 在zk1目录下解压,并新建目录data、logs tar -xzvf apache-zookeeper-3.5.5-bin.tar.gz mkdir data logs 修改配置文件 进入apache-zookeeper-3.5.5-bin/conf 复制zoo_sample.cfg为zoo.cfg 将zoo.cfg修改为 tickTime=2000 initLimit=10 syncLimit=5 dataDir=/home/XXX/zookeeper/zk1/data dataLogDir=/home/XXX/zookeeper/zk1/logs clientPort=2181 admin.serverPort=8099 server

solr安装,zookeeper安装,solrCloud和zookeeper实现solr集群

百般思念 提交于 2019-12-05 04:04:41
1环境:三台centons虚拟机,下载solr6.2.0,zookeeper3.3.6,分别复制三分上传至三台服务器usr/local下,分别解压 zookeeper:https://archive.apache.org/dist/zookeeper/ solr:http://mirror.bit.edu.cn/apache/lucene/solr/ zookeeper 2:分别在三台机子/usr/local/zookeeper-3.3.6/下新建data文件夹 创建myid文件 内容分别为1 2 3 3:分别复制zookeeper-3.3.6/conf/zoo_sample.cfg到同目录下,并重命名为zoo.cfg cp /usr/local/zookeeper-3.3.6/conf/zoo_sample.cfg /usr/local/zookeeper-3.3.6/conf/zoo.cfg 4:修改zoo.cfg 5:启动三个zookeeper zkServer.sh start 如服务器01增加以下3行: ##zookeeper -A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 2881

Apache SolrCloud介绍及安装

血红的双手。 提交于 2019-12-05 03:56:55
SolrCloud介绍 在我们应用还很渺小的时候,一台Solr服务器能完全胜任这份工作,随着我们应用慢慢长大,访问也越来越多,一台Solr服务器的弊病也逐渐显现如查询变慢了,机器宕机就无法继续提供服务,于是乎我们引入了Solr集群,通过前端负载均衡和索引Replication来分担一台机器的压力,这样既能提高查询速度,也能避免单机故障问题而且是可伸缩的解决方案,一切看起来很OK,问题也暂时解决了,但是好景不长,随着应用的发展,数据也在与日俱增,需要索引的数据也越来越多,索引文件变得越来越庞大,Replication索引变得越来越低效高成本,每个Solr实例都保存全量大索引数据的方式显然又成了系统性能和可伸缩性的瓶颈,如果能将大索引文件切分,分布在集群中不同机器中且查询的准确性和可用性又不会受到影响该是件多么美好的事情啊,于是SolrCloud出现了... SolrCloud是基于ZooKeeper和Solr的分布式解决方案,为Solr添加分布式功能,用于建立高可用,高伸缩,自动容错,分布式索引,分布式查询的Solr服务器集群;SolrCloud并非一个新的软件发布包,而是Solr4.0版本新增组件用于跟ZooKeeper配合提供分布式功能,部署时只是修改启动配置; SolrCloud安装 SolrCloud是一个分布式解决方案,安装之前需要我们评估自己应用的数据规模

zookeeper SolrCloud 集群配置 Error: Could not find or load main class org.apache.solr.cloud.ZkCLI

人盡茶涼 提交于 2019-12-05 03:55:08
搭建SolrCloud集群 把solrhome中的配置文件上传到zookeeper集群。使用zookeeper的客户端上传。 客户端命令位置:/root/solr-4.10.3/example/scripts/cloud-scripts 执行命令 ./zkcli.sh -zkhost 192.168.40.138:2181,192.168.40.138:2182,192.168.40.138:2183 -cmd upconfig -confdir /usr/local/solrcloud/solrhome1/collection1/conf -confname myconf 时报错。 解决办法: Easy fix: cd solr-4.8.0/example, java -jar start.jar, (let it start up), Control-C. You'll now have files under solr-4.8.0-bin/example/solr-webapp/webapp including the missing jars in solr-4.8.0-bin/example/solr-webapp/webapp/WEB-INF/lib – Mark Bennett 上述解决办法来自 http://stackoverflow.com/questions

上传solrcloud的配置文件到zookeeper

好久不见. 提交于 2019-12-05 03:49:51
具体可以参考这篇文章: https://lucene.apache.org/solr/guide/6_6/command-line-utilities.html#CommandLineUtilities-Uploadaconfigurationdirectory solr以集群模式工作时,通常选用zookeeper作为协调器,也需要把集群用到的配置文件上传到zookeeper上,如下图所示: 这样当solrcloud启动时就会自动从zookeeper上同步配置文件。 注: 低版本的solr下载下来是example\webapps目录下的solr.war,需要把该包解压到example\solr-webapp\webapp目录下,才可以使用(关于为什么这样做,大家看下example\scripts\cloud-scripts下的脚本就一目了然了) 来源: CSDN 作者: PolarisHuster 链接: https://blog.csdn.net/john1337/article/details/79402219

Zookeeper-Zookeeper启动过程

独自空忆成欢 提交于 2019-12-05 03:44:40
在上一篇,我们了解了zookeeper最基本的配置,也从中了解一些配置的作用,那么这篇文章中,我们将介绍Zookeeper的启动过程,我们在了解启动过程的时候还要回过头看看上一篇中各个配置参数在启动时的位置。 Zookeeper的启动入口在org.apache.zookeeper.server.quorum.QuorumPeerMain。 在这个类的main方法里进入了zookeeper的启动过程,首先我们会解析配置文件,即zoo.cfg和myid。 这样我们就知道了dataDir和dataLogDir指向哪儿了,然后就可以启动日志清理任务了(如果配置了的话)。 DatadirCleanupManager purgeMgr = new DatadirCleanupManager(config .getDataDir(), config.getDataLogDir(), config .getSnapRetainCount(), config.getPurgeInterval()); purgeMgr.start(); 接下来会初始化ServerCnxnFactory,这个是用来接收来自客户端的连接的,也就是这里启动的是一个tcp server。在Zookeeper里提供两种tcp server的实现,一个是使用java原生NIO的方式,另外一个是使用Netty。默认是java