zoukankan      html  css  js  c++  java
  • 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目录
  • 相关阅读:
    Linked List Cycle leetcode java (链表检测环)
    Remove Duplicates from Sorted List II leetcode java
    Remove Duplicates from Sorted List leetcode java
    Merge Two Sorted Lists leetcode java
    Swap Nodes in Pairs leetcode java
    Median of Two Sorted Array leetcode java
    阿里云最便宜的四种域名注册
    nohup和&后台运行,进程查看及终止
    ipv6转ipv4 NAT64与DNS64基本原理概述
    ros使用pppoe拨号获取ipv6,并且下发IPV6的dns到客户机win7
  • 原文地址:https://www.cnblogs.com/stone-learning/p/9291039.html
Copyright © 2011-2022 走看看