文档章节

ZooKeeper应用案例

fengyexjtu
 fengyexjtu
发布于 2016/11/12 00:01
字数 1379
阅读 32
收藏 0

HDFS HA(QJM)

Hadoop 2.x之前的版本,HDFS集群中Namenode是整个集群的中央元数据存储和服务节点,它存在SPOF的问题。在2.x版本中,提出了各种HA方案,避免Namenode的SPOF问题,其中基于QJM(Quorum Journal Manager)的方案可以解决这个问题:使用QJM的方案中,HDFS集群中存在两类节点,一类是Namenode节点(包括Active状态的Namenode,和Standby状态的Namenode),另一类是JournalNode,进行容错。当Active状态的Namenode元数据发生改变时,通过JournalNode进程(ZooKeeper集群中)来监视这种变化,然后同步到Standby状态的Namenode节点(实际上同步的是EditLog镜像文件内容的变更)。 
当Active状态的节点发生故障后,Standby节点的Namenode自动切换,并接管HDFS集群中Active状态Namenode的服务,用来向客户端提供元数据服务。

Solr

Solr是一个开源的分布式搜索引擎,支持索引的分片和复制,可以根据需要来线性增加节点,扩展集群。Solr使用ZooKeeper主要实现如下功能:

配置文件的管理:每个Collection都有对应的配置文件,多个分片共享配置文件(schema.xml、solrconfig.xml) 
Collection管理:一个Solr集群可以有多个逻辑上独立的Collection,每个Collection又包括多个分片和副本 
集群节点管理:Solr集群中有哪些活跃的节点可以使用,每个节点上都有Collection的分片(Shard) 
Leader分片选举:一个Collection的多个分片可以设置冗余的副本,一个分片的多个副本中只有一个Leader可以进提供服务,如果某个存储Leader分片的节点宕机,Solr基于ZooKeeper来重新选出一个Leader分片,持续提供服务

HBase

HBase是一个基于Hadoop平台的开源NoSQL数据库,它使用ZooKeeper主要实现如下功能:

Master选举:HBase基于Master-Slave模式架构,可以有多个HMaster,使用ZooKeeper实现了SPOF下Master的选举 
租约管理:客户端与RegionServer交互时,会生成租约,该租约对象具有有效期 
表元数据管理:HBase中包括用户表及其两个特殊的表:-ROOT-表和.META.表(例如,管理-ROOT-表中location信息,一个-ROOT-表只有一个Region,它保存了RegionServer的地址信息。) 
协调RegionServer节点:数据变更会通过ZooKeeper同步复制到其他节点

Lily

Lily是一个分布式数据管理平台,它基于Hadoop、HBase、Solr、ZooKeeper实现。使用ZooKeeper来注册Lily Node,从而管理集群节点的状态信息。

Dubbo

Dubbo是阿里巴巴开源的分布式服务框架,它可以选择使用ZooKeeper作为服务注册中心。Dubbo服务基于Provider-Consumer模型,在服务发布的时候可以选择使用ZooKeeper作为注册中心来管理注册的服务,包括Provider发布的服务和Consumer订阅的服务。

Katta

Katta实现了Lucene的分布式索引,能够提供数据的实时访问。Katta使用ZooKeeper实现了集群节点的管理,Master的选举,以及Lucene索引的管理。

Strom

Storm流式计算框架使用ZooKeeper来协调整个计算集群,Storm计算集群存在Nimbus和Supervisor两类节点。Nimbus负责分配任务(Topology),将任务信息写入ZooKeeper存储,然后Supervisor从ZooKeeper中读取任务信息。另外,Nimbus也监控集群中的计算任务节点,Supervisor也会发送心跳信息(包括状态信息)到ZooKeeper中,使得Nimbus可以实现状态的监控,任何计算节点出现故障,只要重新启动之后,继续从ZooKeeper中获取数据即可继续执行计算任务。

BookKeeper

BookKeeper是Apache ZooKeeper项目的一个子项目。它是一个用来可靠地记录流数据的系统,主要用于存储WAL(Write Ahead Log)。 
我们知道,Hadoop Namenode用来存储HDSF集群的元数据,其中存在一个用于写就花数据的EditLog文件,和一个存在于内存中的FsImage镜像,每当客户端与HDFS集群交互时,对于集群中数据的变更都会记录在Namenode的EditLog文件中,然后再将该变更同步到内存的FsImage镜像上。 
在BookKeeper中,服务节点(多个)称为Bookie,日志流(Log Stream)称为Ledger,每个日志单元(如一条记录)被称为Ledger条目。一组服务节点Bookie主要存储Ledger,Ledger的类型非常复杂多样,那么可能某一个Bookie节点可能发生故障,然而只要我们的BookKeeper系统的多个服务节点Bookie存储中存在正确可用的节点,整个系统就可以正常对外提供服务,BookKeeper的元数据存储在ZooKeeper中(使用ZooKeeper存储的只是元数据,实际日志流数据存储在Bookie中)。 
Hadoop HDFS HA基于BookKeeper系统,可以实现HDFS Namenode的高可用性,这种方案称为BJM(BookKeeper Journal Manager),HDFS HA的另一种方案叫做QJM(Quorum Journal Manager)。可以参考相关文档,在后面会给出参考连接。

HedWig

HedWig是基于ZooKeeper和BookKeeper的发布-订阅系统。在HedWig系统中,使用ZooKeeper来持久化系统的元数据,使用BookKeeper来存储实际的消息数据。

其他方案

还有其他一些开源方案,都使用了ZooKeeper,如下所示:

Kafka 
Flume 
Accumulo 
Mesos

本文转载自:http://blog.csdn.net/haizhaopeng/article/details/47104665

fengyexjtu

fengyexjtu

粉丝 5
博文 52
码字总数 20519
作品 0
西安
程序员
私信 提问
垂直服务化拆分-分布式服务架构

这是我加入公司后,公司架构的演变,但本身也有些问题想听听大家的想法。 加入这家公司后,在公司业务发展的同时,技术架构也逐渐在发生变化,垂直应用架构无法应对,所以我们进行了垂直服务...

Recall
2014/06/10
7.6K
14
ZooKeeper教程资源收集(简介/原理/示例/解决方案)

菩提树下的杨过: ZooKeeper 笔记(1) 安装部署及hello world ZooKeeper 笔记(2) 监听数据变化 ZooKeeper 笔记(3) 实战应用之【统一配置管理】 ZooKeeper 笔记(4) 实战应用之【消除单点故障】...

easonjim
2017/09/05
0
0
【Solr】- SolrCloud 基础操作

SolrCloud solr基于Zookeeper协调组件搭建的分布式搜索引擎,具有zookeeper的高可用以及集群的可伸缩性的特点。 SolrCloud结构图 Collection:对应standby模式Solr Core Shard(分片): 对应Col...

ZeroneLove
02/26
0
0
大数据教程(3.8):zookeeper的java客户端API简介及监听原理

之前章节介绍了zookeeper集群的自动化启动脚本,本节博主将带大家简单的使用zookeeper的java客户端API,从而了解其使用。 zookeeper监听器原理: zookeeper使用步骤: (1)新建maven项目em-...

em_aaron
2018/08/05
0
0
Kafka 单机和分布式环境搭建与案例使用

Kafka 单机和分布式环境搭建与案例使用 目录(?)[+] 一、单机环境搭建 官方参考文章: http://kafka.apache.org/quickstart 1、下载和解压安装包 这里下载了zookeeper和kafaka两个安装包,下载...

yucaifu1989
2018/04/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linq两表联查结果集处理

全局定义一个同结果集类型的变量: var strQuery =(new int[] { 1 }).Select(x => new { DispLevel = "empty", Separator ="empty", GrpShortCut......

南风末
17分钟前
2
0
AJAX跨域调用相关知识-CORS和JSONP(引)

AJAX跨域调用相关知识-CORS和JSONP 1、什么是跨域 跨域问题产生的原因,是由于浏览器的安全机制,JS只能访问与所在页面同一个域(相同协议、域名、端口)的内容。 但是我们项目开发过程中,经...

辉煌霸猪
23分钟前
1
0
Http协议详解

1.简介 HTTP协议(Hyper Text Transfer Protocol,超文本传输协议),是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。 HTTP基于TCP/IP通信协议来传递数据。 ...

榴莲黑芝麻糊
27分钟前
3
0
Windows Terminal 设置背景图片

效果见文末,三步即可 一、打开配置文件位置 %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\RoamingState 二、将要设置的图片放入本目录(RoamingState) 三、修改配置文...

DAOYUAN0626
27分钟前
5
0
Linux系统发现新恶意软件

安全研究人员发现了一种新的Linux恶意软件,它似乎是由中国黑客创建的,并被用作远程控制受感染系统的手段。 这个恶意软件命名为HiddenWasp,由用户模式rootkit,木马和初始部署脚本组成。该...

Linux就该这么学
29分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部