我要进大厂之大数据ZooKeeper知识点(1)

01 让我们一起学大数据

老刘又回来啦!在实验室师兄师姐都找完工作之后,在结束各种科研工作之后,老刘现在也要为找工作而努力了,要开始大数据各个知识点的复习总结了。老刘会分享出自己的知识点总结,一是希望能够得到大佬们的批评和指点,二是希望能够给想学大数据的同学一点帮助!

 至于为什么先分享出ZooKeeper的知识点总结,因为老刘今天才看完这个,打铁要趁热,赶紧把它记在脑子里!所有的知识点,老刘采用口语化的方式。

02 知识点总结

第1点:什么是ZooKeeper?

这个是非常重要的,学任何东西首先要搞清楚的就是它是什么。简而言之,Zookeeper是一个分布式协调框架,注意是协调框架,在kafka0.8中就会有一个问题,关于这个协同框架的,以后会说道,大家先注意下。它用来解决分布式系统中系统一致性的问题,利用Zookeeper可以实现Hadoop的高可用,可以将kafka的offset保存在Zookeeper,但是这里会有一个问题,以后说到kafka会好好说说这个问题。

第2点:为什么要用Zookeeper?

这个问题,可以举个例子,在Hadoop的高可用中,如果不使用Zookeeper,那它两个NameNode怎么切换,就要自己写程序实现切换,这样就会导致注意力分散了,hadoop本身做存储之类的,现在还要我hadoop考虑高可用的逻辑,实在是太累了,能不能让别人分担下我的压力。所以就用Zookeeper来帮助Hadoop分担压力,让Hadoop集中注意力。

第3点:Zookeeper的一些命令行操作

# 启动ZooKeeper集群;在ZooKeeper集群中的每个节点执行此命令
zkServer.sh start

# 停止ZooKeeper集群(每个节点执行以下命令)
zkServer.sh stop

# 查看集群状态(每个节点执行此命令)
zkServer.sh status

# 连接ZooKeeper的服务器
zkCli.sh -server node01:2181,node02:2181,node03:2181
#查看ZooKeeper根目录/下的文件列表
ls /

#创建节点,并指定数据
create /lao liu

#获得某节点的数据
get /lao

#修改节点的数据
set /lao liu1

#删除节点
delete /lao

第4点:在IDEA中进行JAVA API,这个要记住,千万不能忽略!

这个就不分享了,太多了,想要的话,直接联系老刘,老刘给你就是了。

第5点:ZooKeeper的组成成分

它有三个部分,一个是类似于文件系统的目录节点树,来存储数据,二是一些操作ZooKeeper的基本命令,三是它的监听器Watcher。

什么叫做类似于文件系统的目录节点树?

那什么是监听器?

这里就先简单讲讲监听器的一些概念,监听器它有三个部分,(1)注册客户端向ZooKeeper集群注册监听器(2)监听事件监听器负责监听一些的事件(3)回调函数当监听器监听到事件的发生后,就会调用的回调函数。

在这里可以举个例子,就是在一些机构看到的,感觉比较经典,就拿出来给大家看看。

1、一哥们去酒店办理入住,但是被告知目前无空房
2、这哥们告诉客服:帮我留意一下有没有空出的房间,如果有,就及时通知我
   (相当于注册监听器,监听一些事件)
3、将近12点,有房客退房,有空闲的房间(发现要监听的事件)
4、客服发现有空房(监听到了事件)
5、及时通知这哥们
6、这哥们收到通知后,马上赶回酒店(就相当于调用了回调函数)

第6点:ZooKeeper中的数据节点ZNode

ZNode分为4类,有个表一看就能明白这四个数据节点:

  持久节点 临时节点
非有序节点 create create -e
有序节点 create -s create -s -e

 持久节点就相当于文件目录系统中的目录,而临时节点就是和session会话绑定在一起的,当客户端和ZooKeeper集群相连接,就相当于建立了一个会话,当这个连接断开,会话就失效,临时节点也失效,会被删除。

那为什么还会有有序节点呢?

这个就是为了防止多个客户端在同一个目录下,创建同名的ZNode,如果同名,就会报错,所以就有了有序节点,这有序节点在创建时,ZooKeeper会自动在这些节点后面追加上一个整型自增的数字。

第7点:什么是session会话呢?

客户端和ZooKeeper集群中某一个节点建立TCP长连接,就叫一个会话。在一个会话中,请求以FIFO(先进先出)的顺序执行,比如客户端那边先发出一个create请求后,又发出了一个get请求,那么在执行时,就会先执行create,再执行get。但是呢,如果有两个会话,那就没有办法保证两个会话间的FIFO了,它只能保证一个会话中的FIFO,这个老刘不知道原因,只是记下来了,哈哈哈!

第8点:什么是事务?

在ZooKeeper中的事务,老刘还没理解清楚,这里就不写了,大家自行百度,等以后哪天老刘突然想到了,再来弥补。

第9点:什么是Watcher?

老刘在第5点就简单说了下Watcher的例子,现在好好讲讲它的用处,首先问一个问题,客户端和ZooKeeper建立连接后,客户端是如何获取到Zookeeper中最新的数据的呢,它是如何感知到有数据变化的呢,那就是通过介绍的watcher,老刘在第5点举了一个watcher的例子,老刘觉得非常经典。通过那个例子,我们可以理解到watcher就是客户端在ZooKeeper服务器上注册的监听器,用它来监听数据节点ZNode上数据的变化,然后告诉客户端最新消息。 

03 总结

今天就差不多了,接下来的部分全是ZooKeeper的架构原理之类的,比较难以理解,老刘尽量用口语化的方式写出来,希望对大数据开发感兴趣的同学,和老刘一起加油!咱们一起去大厂!

最后,有事,公众号:努力的老刘,进行联系;没事,就和老刘一起学大数据,进大厂!

 

posted @ 2020-11-16 00:05  大数据老刘  阅读(134)  评论(0编辑  收藏  举报