• 我要进大厂之大数据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的架构原理之类的,比较难以理解,老刘尽量用口语化的方式写出来,希望对大数据开发感兴趣的同学,和老刘一起加油!咱们一起去大厂!

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

     

  • 相关阅读:
    程序员的人生规划
    利用jQuery实现CheckBox全选/全不选/反选
    小程序模板渲染
    小程序数据绑定详情
    fcitx-configtool
    小程序WXML基本使用
    小程序作用域与模块化
    小程序路由篇
    小程序App方法
    小程序中的setData的使用
  • 原文地址:https://www.cnblogs.com/bigdatalaoliu/p/13983114.html
Copyright © 2020-2023  润新知