• zookeeper动物园管理员学习笔记


    hbase

    hadoop里面有:1)hdfs分布式存储 2)yarn资源调度框架;3)hive数据仓库技术,在线事物分析,延迟性很高,最终用的还是mr技术,但是不再使用mr技术了
    4)hbase:建立在hadoop上面的数据库技术,随机定位+实时读写,业务是分布式的,但是最终还是存储在hasoop上面的
    要实现自动容灾,就需要引进zookeeper

    zookeeper

    1.管理大量主机的协同服务,轻量级的
    2.分布式应用,实现了分布式读写技术
    3.zk提供的服务有哪些?
        1):名称服务Naming service,按照名称来区分集群中的主机
        2):配置管理Configuration management	//针对新加入节点的最新化处理
        3):集群管理Cluster management	//实时感知集群中节点的增减
        4):Leader election		//leader follower
        5):Locking and synchronization service //修改时来 锁定数据,实现容灾
        6):Highly reliable data registry		//节点宕机数据也是可用的
    

    zk的安装(单机版,装在s200上面)

    1.jdk
    2.下载zookeeper-3.4.10。tar.gz,下载地址:http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.10/
    3.tar开
    4.符号连接,环境变量
    	$>ln -s zookeeper-3.4.10 zk
    5.配置zk,复制zoo.cfg.sample-->zoo.cfg
    	[zk/conf/zoo.conf]
    	# The number of milliseconds of each tick
    	tickTime=2000
    	# The number of ticks that the initial
    	# synchronization phase can take
    	initLimit=10
    	# The number of ticks that can pass between
    	# sending a request and getting an acknowledgement
    	syncLimit=5
    	# the directory where the snapshot is stored.
    	# do not use /tmp for storage, /tmp here is just
    	# example sakes.
    	dataDir=/home/centos/zookeeper
    	# the port at which the clients will connect
    	clientPort=2181
    	# the maximum number of client connections.
    	# increase this if you need to handle more clients
    	#maxClientCnxns=60
    	#
    	# Be sure to read the maintenance section of the
    	# administrator guide before turning on autopurge.
    	#
    	# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
    	#
    	# The number of snapshots to retain in dataDir
    	#autopurge.snapRetainCount=3
    	# Purge task interval in hours
    	# Set to "0" to disable auto purge feature
    	#autopurge.purgeInterval=1
    6.启动zk服务器
    	$>bin/zkServer.sh start
    7.验证zk
    	$>netstat -anop|grep 2181
    8.启动客户端连接到服务器
    	$>zkCli.sh -server s200:2181	//就直接进入到zk的命令行下面
    	$zk]help		//查看帮助
    	$zk]quit		//退出
    	$zk]create /a tom	//创建过程,每次创建都要写数据
    	$zk]ls /		//得到[a,zookeeper]
    	$zk]get /a              //查看数据
    	create /a/a1 jerry;
    	get /a/a1		//查看数据
    	set /a tomas ;//修改节点数据
    	delete /a/a1;		//删除一个节点
    	 rmr /a			//递归输出节点
    

    zk架构

    1.Client
    从server获取信息,周期性发送给server,表示自己还活着
    当client连接时,server回传ack信息,如果客户端没有收到响应,就会重定向到另一个server
    2.Server.
    	zk集群的一员,向client提供所有service,向客户端发送确认信息表示服务器还活着
    3.ensemble
    	一组服务器,最小的节点数是3
    4.leader.如果任何被连接的节点发生故障,自定恢复,zk服务启动时,完成leader的选举
    5.Follower.遵循leader管理的的服务节点
    

    znode

    zk中的节点,维护了stat的状态。
    由version number,Action Control List,Timestamp,Data length组成
    version number:数据写入过程的变化
    
    ACL		//action control list,访问控制列表
    

    节点类型

    1.持久节点:永久性节点,client退出还存在
    2.临时节点:在客户端活跃时有效,断开后自动删除。临时节点不能有子节点,在leader推选的时候扮演重要角色
    	create -e /b/e1 tom0;//建立一个临时节点 
    3.序列节点:在节点名之后副驾10个数字,主要用于同步和锁
    

    Session

    Session中,会话的请求是按照先进先出的顺序执行的,一旦client连接到server,那么这个session就建立了,那么sessionId就分配给客户端了
    
    client以固定间隔向server发送心跳,表示session是valid的,
    zk集群如果在超时的时候,没有收到心跳,就判定为client挂了
    与此同时,临时节点就被删除了
    

    Watch

    观察者模式
    Client能够通过watch机制在数据发生变化时收到通知
    client能够在read节点的时候设置观察者。watch机制针对节点的变化会发送通知给注册的客户端程序
    观察模式只触发一次。如果session过期,那么观察者就会被删除
    

    zk工作流程
    -----------------------、
    zk集群启动后,客户端连接到其中的一个节点,这个节点可以是leader,也可以是follower
    连通之后,node会分配一个id给client,发送ack信息给客户端,如果客户端没有收到ack确认,
    如果客户端没有收到ack,连接到另外一个节点
    客户端周期性发送心跳信息给节点保证连接不会丢失

     如果客户端读取数据,发送请求给节点node,node读取自己的数据库,返回节点数据给client
     如果client存储数据,将路径和数据发送给server,server转发给leader,leader将会补发所有的请求给follower,只有大多数的节点成功响应,则写操作就成功
    

    单机版

    文件系统层级结构存储
    path:/home/centos/xxx=znode.节点上可以关联数据,数据可以是任何数据,但是数据大小不能超过1m
    节点的类型
    	1.永久节点
    	2.临时节点
    	3.序列节点
    
    数据状态:版本。
    

    leader+flower.

    读:
    写:
    

    leader推选过程(最小号选举法)

    1.所有节点在同一目录下面创建临时序列节点
    2.zk会添加10位的序列号到路径后面,并且znode会是xxx/xxx00000000001
    3.对于给定的例子,在所有znode节点中,创建最小号的节点会成为leader,所有其他节点会成为follower
    4.每个节点会观察小于自己节点的主机(注册观察者)
    5.如果leader挂了,对应的znode就会被删除了
    6.观察者就会收到通知
    

    配置完全分布式zk集群

    1.挑选3台主机
    s200-s202
    2.每台机器都安装zk
    3.配置zk配置文件
    	s200-s202
    	[/soft/zk/conf/zoo.cfg]
    	autopurge.purgeInterval=1
    	dataDir=/home/centos/zookeeper
    	 
    4.在每台主机的/home/centos/zookeeper中添加myid,内容分别是1,2,3
    [s200]
    $>echo 1 >/home/centos/zookeeper/myid
    [s201]
    $>echo 2 >/home/centos/zookeeper/myid
    [s202]
    $>echo 3 >/home/centos/zookeeper/myid
    
    5.启动服务器集群
    在每台主机上执行:$>zkServer.sh start
    6.查看每台服务器的状态
    	$>zkServer.sh status
    7.修改zk的log目录
  • 相关阅读:
    16_基于FPGA的DA_TLC5615驱动输出
    17_IIC协议与FPGA驱动AT24C04
    14_基于FPGA的DSS与嵌入式逻辑分析仪的调用
    11_基于FPGA的按键计数器
    08_基于FPGA的测頻计的设计
    15_基于FPGA的AD_TLC549采集模拟信号
    13_基于FPGA的液晶1602显示
    09_基于FPGA驱动蜂鸣器唱歌
    HTML 综合案例简陋的相亲网站界面
    go 语言里面的 & 和 *
  • 原文地址:https://www.cnblogs.com/stone-learning/p/9291039.html
Copyright © 2020-2023  润新知