zookeeper思考与总结1:在其它组件的作用及hdfs对比

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: zookeeper思考与总结1:在其它组件的作用及hdfs对比

一、zookeeper在其它组件的作用



1.为什么会产生zookeeper

zookeeper是模仿的谷歌的Chubby来解决分布式一致性的问题。2006年的时候Google出了Chubby,2009年3年以后Yahoo在Apache上推出了类似的产品ZooKeeper.


ZooKeeper跟Chubby一样用来存放一些相互协作的信息(Coordination),这些信息比较小一般不会超过1M,在zookeeper中是以一种hierarchical tree的形式来存放,这些具体的Key/Value信息就store在tree node中。当有事件导致node数据,例如:变更,增加,删除时,Zookeeper就会调用 triggerWatch方法,判断当前的path来是否有对应的监听者(watcher),如果有watcher,会触发其process方法,执行process方法中的业务逻辑.


2.zookeeper的应用

zookeeper在kafka的作用
kafka将zookeeper做小型数据库这里我们进入zookeeper看下保存的kafka的相关信息

通过

zkCli.sh

上面命令,自动连接本地或则通过下面命令

zkCli.shzkCli.sh-server master:2181

指定服务器连接master。

进入后,我们通过下面命令

ls /

查看里面的存储内容

[zk: localhost:2181(CONNECTED) 1] ls /
[controller_epoch, controller, brokers, zookeeper, admin, isr_change_notification, consumers, config]

b9d637197dfbe223a534af6e48c3388b.jpg

[zk: localhost:2181(CONNECTED) 2] ls /brokers/ids


命令为

ls /brokers/ids

a4cb410b2e85c38b1da113d026be70ad.jpg

zookeeper在hbase中的作用:

1.选举

我们知道hbase通过zookeeper选举master,也就是说zookeeper提高了hbase集群的稳定性。换句话说,没有zookeeper,hbase稳定性大大降低,甚至不能启动。


2.存储


详解:

266cd6124d260a8a45e999f29b8661b2.jpg

hbase在启动的时候,hmaster启动时候会将hbase 系统表-ROOT- 加载到 zookeeper cluster,通过zookeeper cluster可以获取当前系统表.META.的存储所对应的regionserver信息。

b194ff741df6a64d7e69184f51143e24.jpg

HBase中的znode


/hbase是集群的根znode,ZookeeperWatcher初始化时创建.

还有诸如/hbase/root-region-server,/hbase/master,大家可以在创建zookeeper后,进入zookeeper查看


Zookeeper在storm充当的作用
Storm的所有的状态信息都是保存在Zookeeper里面,nimbus通过在zookeeper上面写状态信息来分配任务,

supervisor,task通过从zookeeper中读状态来领取任务,同时supervisor, task也会定义发送心跳信息到zookeeper,

使得nimbus可以监控整个storm集群的状态,从而可以重启一些挂掉的task。

ZooKeeper 使得整个storm集群十分的健壮,任何一台工作机器挂掉都没有关系,只要重启然后从zookeeper上面重新获取状态信息就可以了。

下面一张图,说明了zookeeper的作用:保存了集群操作的状态

d9e4209196c3d56bcb3e475f59a0ad3f.jpg

storm有哪些目录,这里简单列出来

Strom在Zookeeper中的目录结构

/assignments -> 任务分配信息

/storms -> 正在运行的topology的ID

/supervisors -> 所有的Supervisors的心跳信息

/workerbeats -> 所有的Worker的心跳

/errors -> 产生的出错信息

更多可以网上查询。


二、zookeeper与hdfs对比


上文看到zookeeper在其它大数据组件中的作用。如果我们初学,应该也知道,zookeeper在很多地方用到。那么zookeeper与hdfs有哪些异同。

1.二者都是分布式存储

1.zookeeper可以在多台机器存储数据,hdfs同样也是。如下为ZooKeeper数据模型的结构88b04f5220d57598be0e1a4cf7662ae5.jpg

可以看作是一棵树,每个节点称做一个ZNode


2.zookeeper一般存储小量数据,zookeeper一般以K,M为单位。hdfs则是存储大数据,以G,T,P等为单位。


2.shell命令相似之处

进入zookeeper

zkCli.sh


或则指定server

zkCli.sh -server master:2181

master为hostname。

进入hdfs

bin/start-dfs.sh

进入之后,二者都可以进行shell操作,二者操作有一些相似之处。比如

查看文件都是用


ls /

对于zookeeper,和hdfs都是一样的。


查看路径相关信息stat


hdfs dfs -stat /home/hadoop/input


输出:

2017-05-11 16:00:27

Exit Code:

Returns 0 on success and -1 on error.


stat /c/hfx/sw1


输出:

cZxid = 0x2000007df

ctime = Thu Mar 14 11:08:28 CST 2013

mZxid = 0x200000a87

mtime = Thu Mar 14 15:00:34 CST 2013

pZxid = 0x2000007df

cversion = 0

dataVersion = 608

aclVersion = 0

ephemeralOwner = 0x0

dataLength = 6

numChildren = 0

要地说明cZxid表示创建该节点时候的zxid,mZxid表示当前的,zxid是用来为选举leader服务的

例如还有get命令,二者皆有。当然也有不同的地方,更多可查看


HDFS的常用操作--hdfs下的文件操作常用命令总结

ZooKeeper系列3:ZooKeeper命令、命令行工具及简单操作


3.都有相关api

有了api,我们就可以按照自己的想法编程。很多初学者由于没有认识到这个问题,所以会有“部署hbase,不安装zookeeper是否可以,部署storm,不安装zookeeper是否可以”。这样肯定是不可以的。因为hbase,storm,kafka中都使用了zookeeper相关api,来完成它们各自的事情。如果不理解,可以查看第一篇:zookeeper思考与总结1:zookeeper在其它组件的作用

相关api,这里以storm为例:cluster.clj文件中,有关于storm操作zookeeper的主要函数.文件位置在

apache-storm-1.1.0-src\apache-storm-1.1.0\storm-core\src\clj\org\apache\storm

文件中函数主要定义在命名空间backtype.storm.cluster.

backtype.storm.cluster定义了两个重要protocol:ClusterState和StormClusterState。clojure中的protocol可以看成java中的接口,封装了一组方法。ClusterState协议中封装了一组与zookeeper进行交互的基础函数,如获取子节点函数,获取子节点数据函数等,ClusterState协议定义如下:

(defprotocol ClusterState
 (set-ephemeral-node [this path data])
 (delete-node [this path])
 (create-sequential [this path data])
 ;; if node does not exist, create persistent with this data
 (set-data [this path data])
 (get-data [this path watch?])
 (get-version [this path watch?])
 (get-data-with-version [this path watch?])
 (get-children [this path watch?])
 (mkdirs [this path])
 (close [this])
 (register [this callback])
 (unregister [this id]))


StormClusterState协议封装了一组storm与zookeeper进行交互的函数,可以将StormClusterState协议中的函数看成ClusterState协议中函数的"组合"。


目录
相关文章
|
存储 算法 网络协议
分布式组件 ZooKeeper 介绍、术语概述以及集群搭建篇
分布式组件 ZooKeeper 介绍、术语概述以及集群搭建篇
95 0
|
3月前
|
存储 分布式计算 大数据
【云计算与大数据技术】分布式协同系统Chubby锁、ZooKeeper在HDFS中的使用讲解(图文解释 超详细)
【云计算与大数据技术】分布式协同系统Chubby锁、ZooKeeper在HDFS中的使用讲解(图文解释 超详细)
129 0
|
11月前
|
存储 大数据 Java
大数据Zookeeper组件 2
大数据Zookeeper组件
153 0
|
11月前
|
大数据 关系型数据库 MySQL
大数据Zookeeper组件 1
大数据Zookeeper组件
56 0
|
存储 分布式计算 监控
HDFS 架构、组件【重要】
HDFS 架构、组件【重要】
107 0
|
缓存 监控 中间件
【分布式技术专题】「Zookeeper中间件」给大家学习一下Zookeeper的”开发伴侣”—Curator-Framework(组件篇)
【分布式技术专题】「Zookeeper中间件」给大家学习一下Zookeeper的”开发伴侣”—Curator-Framework(组件篇)
273 2
|
分布式计算 安全 大数据
ambari安装HDFS组件(一)
ambari安装HDFS组件(一)
257 0
ambari安装HDFS组件(一)
|
存储 分布式计算 安全
一幅长文细学华为MRS大数据开发(二)—— HDFS分布式文件系统和ZooKeeper
本文主要讲述了分布式文件系统HDFS和集群管理员Zookeeper的概念
349 0
|
分布式计算 资源调度 Hadoop
Hadoop核心组件之HDFS的安装与配置
Hadoop核心组件之HDFS的安装与配置
328 0
Hadoop核心组件之HDFS的安装与配置
|
大数据 Linux
大数据组件-Zookeeper集群部署
大数据组件-Zookeeper集群部署
大数据组件-Zookeeper集群部署

热门文章

最新文章