手机模拟黑客网站-微信黑客-ZooKeeper原理及其在Hadoop和HBase中的应用
手机微信黑客-ZooKeeper原理以及在Hadoop和HBase中的运用
ZooKeeper是一个开源的分布式融洽服务项目,由雅虎建立,是Google Chubby的开源完成。分布式应用软件能够根据ZooKeeper完成例如数据信息公布/定阅、三层交换机、取名服务项目、分布式融洽/通告、群集管理方法、Master大选、分布式锁和分布式序列等作用。
介绍
ZooKeeper是一个模拟手机黑客网址开源的分布式融洽服务项目,由雅虎建立,是Google Chubby的开源完成。分布式应用软件能够根据ZooKeeper完成例如数据信息公布/定阅、三层交换机、取名服务项目、分布式融洽/通告、群集管理方法、Master大选、分布式锁和分布式序列等作用。
基本要素
这节将详细介绍ZooKeeper的好多个关键定义。这种定义围绕于以后对ZooKeeper更深层次的解读,因而必须事先掌握这种定义。
群集人物角色
模拟手机黑客网址在ZooKeeper中,有三种人物角色:
Leader
Follower
Observer
一个ZooKeeper群集同一時刻总是有一个Leader,别的全是Follower或Observer。
ZooKeeper配备非常简单,每一个连接点的环境变量(zoo.cfg)全是一样的,仅有myid文档不一样。myid的值务必是zoo.cfg中server.{标值模拟手机黑客网址}的{标值}一部分。
zoo.cfg文件內容实例:
maxClientCnxns=0# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial# synchronization phase can takeinitLimit=10# The number of 模拟手机黑客网址 ticks that can pass between# sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.dataDir=/var/lib/zookeeper/data# the port at which the clients will connectclientPort=218模拟手机黑客网址1# the directory where the transaction logs are stored.dataLogDir=/var/lib/zookeeper/logsserver.1=192.168.20.101:2888:3888server.2=192.168.20.102:2888:3888server.3=192.168.20.103:2888:3888server.4=192.168.20.104:2888:3888server.5=192.168.20.105:2888:3888minSessionTimeout=4000maxSessionTimeout=100000
在配有ZooKeeper的设备的终端设备实行 zookeeper-server 模拟手机黑客网址 status 能看当今连接点的ZooKeeper是什么角色(Leader or Follower)。
[root@node-20-103 模拟手机黑客网址 ~]# zookeeper-server statusJMX enabled by defaultUsing config: /etc/zookeeper/conf/zoo.cfgMode: follower
[root@node-20-104 ~]# zookeeper-server statusJMX enabled by defaultUsing config: 模拟手机黑客网址 /etc/zookeeper/conf/zoo.cfgMode: leader
如上,node-20-104是Leader,node-20-103是follower。
ZooKeeper默认设置仅有Leader和Follower二种人物角色,沒有Observer角色。
为了更好地应用Observer方式,在一切想变为Observer的连接点的环境变量中添加:peerType=observer
并在全部server的环境变量中,配备成observer方式的server的哪行配备增加:observer,比如:
server.1:localhost:2888:3888:observer
ZooKeeper群集的全部设备根据一个Leader大选全过程来选中一台被称作『Leader』的设备,Leader网络服务器为手机客户端出示读和写服务项目。
Follower和Observer都能出示读服务项目模拟手机黑客网址,不可以出示写服务项目。二者唯一的差别取决于,Observer设备不参加Leader大选全过程,都不参加写实际操作的『一半以上写取得成功』对策,因而Observer能够不在危害写特性的状况下提高群集的读特性。
对话(Session)
Session就是指手机客户端对话,在解读手机客户端对话以前,大家先来掌握下手机客户端联接。在ZooKeeper中,一个手机客户端联接就是指手机客户端和ZooKeeper集群服务器的TCP长连接。ZooKeeper对外开放的服务项目端口号默模拟手机黑客网址认是2181,手机客户端启动,最先会与网络服务器创建一个TCP联接,从第一次联接创建刚开始,手机客户端对话的生命期也开始了,根据这一联接,手机客户端可以根据心跳检测和网络服务器维持合理的对话,也可以向ZooKeeper服务器发送要求并接纳回应,另外还能根据该联接接受来源于网络服务器的Watch恶性事件通告。Session的SessionTimeout值用于设定一个手机客户端对话的请求超时時间。当因为网络服务器压力大、网络问题或者手机客户端积极中断连接等各种各样缘故造成 手机客户端联接断掉时,只模拟手机黑客网址要在SessionTimeout要求的時间内可以再次联接上群集中随意一台网络服务器,那麼以前建立的对话依然合理。
数据信息连接点(ZNode)
在提到分布式的情况下,一般『连接点』指的是构成群集的每一台设备。而ZooKeeper中的数据信息连接点就是指数据库系统中的数据信息模块,称之为ZNode。ZooKeeper将全部数据储存在运行内存中,数据库系统是一棵树(ZNode 模拟手机黑客网址 Tree),由斜线(/)开展切分的途径,就是一个ZNode,如/Hbase/master,在其中hbase和master全是ZNode。每一个ZNode上都是会储存自身的数据信息內容,另外会储存一系列特性信息内容。
注:
这儿的ZNode能够了解成即是Unix里的文档,也是Unix里的文件目录。由于每一个ZNode不但自身能够写数据信息(等同于Unix里的文档),还能够有下一级文档或文件目录(等同于Unix里的文件目录)。
在ZooKeeper中,ZNode能够分成长久连接点和临时性连接点两大类。
模拟手机黑客网址长久连接点
说白了长久连接点就是指一旦这一ZNode被建立了,除非是积极开展ZNode的清除实际操作,不然这一ZNode将一直储存在ZooKeeper上。
临时性连接点
临时性连接点的生命期跟手机客户端对话关联,一旦手机客户端对话无效,那麼这一手机客户端建立的全部临时性连接点都是会被清除。
此外,ZooKeeper还容许客户为每一个连接点加上一个独特的特性:SEQUENTIAL。一旦连接点被标识上这一特性,那麼在这个连接点被模拟手机黑客网站建立的情况下,ZooKeeper便会全自动在其连接点后边增加上一个整形数据,这一整形数据是一个由父节点维护保养的自增数据。
版本号
ZooKeeper的每一个ZNode上都是会储存数据信息,相匹配于每一个ZNode,ZooKeeper都是会为其维护保养一个称为Stat的算法设计,Stat中纪录了这一ZNode的三个数据信息版本号,分别是version(当今ZNode的版本号)、cversion(当今ZNode子连接点的版本号)和aversion(当今ZNode的ACL版本号)。
情况信息内容
每一个ZNode除开储存数据信息內容以外,还储存了ZNode自身的一些情况信息内容。用 模拟手机黑客网址 get 指令能够另外得到 某一ZNode的內容和情况信息内容。以下:
[zk: localhost:2181(CONNECTED) 23]get /yarn-leader-election/appcluster-yarn/ActiveBreadCrumb appcluster-yarnrm1cZxid 模拟手机黑客网址 = 0x1b00133dc0 //Created ZXID,表明该ZNode被建立时的事务管理IDctime = Tue Jan 03 15:44:42 CST 2017 //Created Time,表明该ZNode被建立的時间mZxid = 0x1d00000063 //Modified ZXID,表明该ZNode最后一次被升级时的事务管理IDmtime = Fri Jan 06模拟手机黑客网址 08:44:25 CST 2017 //Modified Time,表明该连接点最后一次被升级的時间pZxid = 0x1b00133dc0 //表明该连接点的子连接点目录最后一次被改动时的事务管理ID。留意,仅有子连接点目录变动了才会变动pZxid,子连接点內容变动不容易危害pZxid。cversion = 0 //子连接点的版本信息dataVersion = 11 //数据信息连接点的版本信息aclVersion = 0 //ACL版模拟手机黑客网址本号ephemeralOwner = 0x0 //建立该连接点的对话的seddionID。假如该连接点是长久连接点,那麼这一特性数值0。dataLength = 22 //数据信息內容的长短numChildren = 0 //子连接点的数量
在ZooKeeper中,version特性是用于完成乐观锁体制中的『载入校检』的(确保分布式数据信息原子性实际操作)。
事务管理实际操作
在ZooKeeper中,模拟手机黑客网址能更改ZooKeeper服务器状态的实际操作称之为事务管理实际操作。一般包含数据信息连接点建立与删掉、数据信息內容升级和手机客户端对话建立与无效等实际操作。相匹配每一个事务管理要求,ZooKeeper都是会为其分派一个全局性唯一的事务管理ID,用ZXID表明,一般是一个64位的数据。每一个ZXID相匹配一次升级实际操作,从这种ZXID中能够间接的鉴别出ZooKeeper解决这种事务管理实际操作要求的全局性次序。
Watcher
Watcher(恶性事件窃听器),是ZooKeeper中一个很重要的特点。ZooKeeper容许客户在特定连接点上申请注册一些Watcher,而且在一些特殊恶性事件开启的情况下,ZooKeeper服务器端会将恶性事件通告到很感兴趣的手机客户端上来。该体制是ZooKeeper完成分布式融洽服务项目的关键特点。
ACL
ZooKeeper采用ACL(Access 手机模拟黑客网站 Control Lists)策略来进行权限控制。ZooKeeper定义了如下5种权限。
CREATE: 创建子节手机模拟黑客网站点的权限。
READ: 获取节点数据和子节点列表的权限。
WRITE:更新节点数据的权限。
DELETE: 删除子节点的权限。
ADMIN: 设置节点ACL的权限。
注意:CREATE 和 DELETE 都是针对子节点的权限控制。
ZooKeeper典型应用场景
ZooKeeper是一个高可用的分布式数据管理与协手机模拟黑客网站调框架。基于对ZAB算法的实现,该框架能够很好地保证分布式环境中数据的一致性。也是基于这样的特性,使得ZooKeeper成为了解决分布式一致性问题的利器。
数据发布与订阅(配置中心)
数据发布与订阅,即所谓的配置中心,顾名思义就是发布者将数据发布到ZooKeeper节点上,供订阅者进行数据订阅,进而达到动态获取数据的目的,实现配置信息的集中式管理和动态更新。
在我们平常的应用系统开发中,经常会碰到这样手机模拟黑客网站的需求:系统中需要使用一些通用的配置信息,例如机器列表信息、数据库配置信息等。这些全局配置信息通常具备以下3个特性。
数据量通常比较小。
数据内容在运行时动态变化。
集群中各机器共享,配置一致。
对于这样的全局配置信息就可以发布到ZooKeeper上,让客户端(集群的机器)去订阅该消息。
发布/订阅系统一般有两种设计模式,分别是推(Push)和拉手机模拟黑客网站(Pull)模式。
推:服务端主动将数据更新发送给所有订阅的客户端。
拉:客户端主动发起请求来获取最新数据,通常客户端都采用定时轮询拉取的方式。
ZooKeeper采用的是推拉相结合的方式。如下:
客户端想服务端注册自己需要关注的节点,一旦该节点的数据发生变更,那么服务端就会向相应的客户端发送Watcher事件通知,客户端接收到这个消息通知后,需要主动到服务端获取最新手机模拟黑客网站的数据(推拉结合)。
命名服务(Naming 手机模拟黑客网站 Service)
命名服务也是分布式系统中比较常见的一类场景。在分布式系统中,通过使用命名服务,客户端应用能够根据指定名字来获取资源或服务的地址,提供者等信息。被命名的实体通常可以是集群中的机器,提供的服务,远程对象等等——这些我们都可以统称他们为名字(Name)。其中较为常见的就是一些分布式服务框架(如RPC、RMI)中的服务地址列表。通过在ZooKeepr里创建顺序节点,能够很容易创建一个全局唯一的路径,这个路径就可以作为一个名字。
ZooKeeper的命名服务即生成全局唯一的ID。
分布式协调/通知
ZooKeeper中特有Watcher注册与异步通知机制,能够很好的实现分布式环境下不同机器,甚至不同系统之间的通知与协调,从而实现对数据变更的实时处理。使用方法通常是不同的客户端都对ZK上同一个ZNode进行注册,监听ZNode的变化(包手机模拟黑客网站括ZNode本身内容及子节点的),如果ZNode发生了变化,那么所有订阅的客户端都能够接收到相应的Watcher通知,并做出相应的处理。
ZK的分布式协调/通知,是一种通用的分布式系统机器间的通信方式。
心跳检测
机器间的心跳检测机制是指在分布式环境中,不同机器(或进程)之间需要检测到彼此是否在正常运行,例如A机器需要知道B机器是否正常运行。在传统的开发中,我们通常是通过主机直接是否可以相互PING通手机模拟黑客网站来判断,更复杂一点的话,则会通过在机器之间建立长连接,通过TCP连接固有的心跳检测机制来实现上层机器的心跳检测,这些都是非常常见的心跳检测方法。
下面来看看如何使用ZK来实现分布式机器(进程)间的心跳检测。
基于ZK的临时节点的特性,可以让不同的进程都在ZK的一个指定节点下创建临时子节点,不同的进程直接可以根据这个临时子节点来判断对应的进程是否存活。通过这种方式,检测和被检测系统直接并不需要直接相关联,而是通过ZK上的某个节点进行关联,大大减少了系统耦合。
工作进度汇报
在一个常见的任务分发系统中,通常任务被分发到不同的机器上执行后,需要实时地将自己的任务执行进度汇报给分发系统。这个时候就可以通过ZK来实现。在ZK上选择一个节点,每个任务客户端都在这个节点下面创建临时子节点,这样便可以实现两个功能:
手机模拟黑客网站 通过判断临时节点是否存在来确定任务机器是否存活。
各个任务机器会实时地将自己的任手机模拟黑客网站务执行进度写到这个临时节点上去,以便中心系统能够实时地获取到任务的执行进度。
Master选举
Master选举可以说是ZooKeeper最典型的应用场景了。比如HDFS中Active NameNode的选举、YARN中Active ResourceManager的选举和HBase中Active HMaster的选举等。
针对Master选举的需求,通常情况下,我们可以选择常见的关系型数据库中的主键手机模拟黑客网站特性来实现:希望成为Master的机器都向数据库中插入一条相同主键ID的记录,数据库会帮我们进行主键冲突检查,也就是说,只有一台机器能插入成功——那么,我们就认为向数据库中成功插入数据的客户端机器成为Master。
依靠关系型数据库的主键特性确实能够很好地保证在集群中选举出唯一的一个Master。但是,如果当前选举出的Master挂了,那么该如何处理?谁来告诉我Master挂了呢?显然,关系型数据库无法通手机模拟黑客网站知我们这个事件。但是,ZooKeeper可以做到!
利用ZooKeepr的强一致性,能够很好地保证在分布式高并发情况下节点的创建一定能够保证全局唯一性,即ZooKeeper将会保证客户端无法创建一个已经存在的ZNode。也就是说,如果同时有多个客户端请求创建同一个临时节点,那么最终一定只有一个客户端请求能够创建成功。利用这个特性,就能很容易地在分布式环境中进行Master选举了。
成功创建该节点的客户端所在的机器就手机模拟黑客网站成为了Master。同时,其他没有成功创建该节点的客户端,都会在该节点上注册一个子节点变更的Watcher,用于监控当前Master机器是否存活,一旦发现当前的Master挂了,那么其他客户端将会重新进行Master选举。
这样就实现了Master的动态选举。
分布式锁
分布式锁是控制分布式系统之间同步访问共享资源的一种方式。
分布式锁又分为排他锁和共享锁两种。
排他锁
排他锁(Exclusive Locks,简称X锁),又称为写锁或独占锁。
如果事务T1对数据对象O1加上了排他锁,那么在整个加锁期间,只允许事务T1对O1进行读取和更新操作,其他任何事务都不能在对这个数据对象进行任何类型的操作(不能再对该对象加锁),直到T1释放了排他锁。
可以看出,排他锁的核心是如何保证当前只有一个事务获得锁,并且锁被释放后,所有正在等待获取锁的事务都能够被通知到。
手机模拟黑客网站如何利用ZooKeeper实现排他锁?
定义锁
ZooKeeper上的一个ZNode可以表示一个锁。例如/exclusive_lock/lock节点就可以被定义为一个锁。
获得锁
如上所说,把ZooKeeper上的一个ZNode看作是一个锁,获得锁就通过创建ZNode的方式来实现。所有客户端都去/exclusive_lock节点下创建临时子节点/exclusive_lock/lock。ZooKeeper会保证在所有客户端中,最终只有一个客户端能够创建成功,那么就可以认为该客户端获得了锁。同时,所有没有获取到锁的客户端就需要到/exclusive_lock节点上注册一个子节点变更的Watcher监听,以便实时监听到lock节点的变更情况。
释放锁
因为/exclusive_lock/lock是一个临时节点,因此在以下两种情况下,都有可能释放锁。
手机模拟黑客网站 当前获得锁的客户端机器发生宕机手机模拟黑客网站或重启,那么该临时节点就会被删除,释放锁。
正常执行完业务逻辑后,客户端就会主动将自己创建的临时节点删除,释放锁。
无论在什么情况下移除了lock节点,ZooKeeper都会通知所有在/exclusive_lock节点上注册了节点变更Watcher监听的客户端。这些客户端在接收到通知后,再次重新发起分布式锁获取,即重复『获取锁』过程。
共享锁
共享锁(Shared 手机模拟黑客网站 Locks,简称S锁),又称为读锁。如果事务T1对数据对象O1加上了共享锁,那么T1只能对O1进行读操作,其他事务也能同时对O1加共享锁(不能是排他锁),直到O1上的所有共享锁都释放后O1才能被加排他锁。
总结:可以多个事务同时获得一个对象的共享锁(同时读),有共享锁就不能再加排他锁(因为排他锁是写锁)
ZooKeeper在大型分布式系统中的应用
前面已经介绍了ZooKeeper的典型应用场景。本节将以常见的手机模拟黑客网站大数据产品Hadoop和HBase为例来介绍ZooKeeper在其中的应用,帮助大家更好地理解ZooKeeper的分布式应用场景。
ZooKeeper在Hadoop中的应用
在Hadoop中,ZooKeeper主要用于实现HA(Hive Availability),包括HDFS的NamaNode和YARN的ResourceManager的HA。同时,在YARN中,ZooKeepr还用来存储应用的运行状态。手机模拟黑客网站HDFS的NamaNode和YARN的ResourceManager利用ZooKeepr实现HA的原理是一样的,所以本节以YARN为例来介绍。
从上图可以看出,YARN主要由ResourceManager(RM)、NodeManager(NM)、ApplicationMaster(AM)和Container四部分组成。其中最核心的就是ResourceManager。
ResourceManager负责集群中所有资源的统一管理和分配,同时接收来自各个节点(NodeManager)的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程序(Application 手机模拟黑客网站 Manager),其内部维护了各个应用程序的ApplicationMaster信息、NodeManager信息以及资源使用信息等。
为了实现HA,必须有多个ResourceManager并存(一般就两个),并且只有一个ResourceManager处于Active状态,其他的则处于Standby状态,当Active节点无法正常工作(如机器宕机或重启)时,处于Standby的就会通过竞争选举产生新的Active节点。
主备切换
下面我们就来看看YARN是如何实现多个ResourceManager之间的主备切换的。
手机模拟黑客网站 创建锁节点
在ZooKeeper上会有一个/yarn-leader-election/appcluster-yarn的锁节点,所有的ResourceManager在启动的时候,都会去竞争写一个Lock子节点:/yarn-leader-election/appcluster-yarn/ActiveBreadCrumb,该节点是临时节点。ZooKeepr能够为我们手机模拟黑客网站保证最终只有一个ResourceManager能够创建成功。创建成功的那个ResourceManager就切换为Active状态,没有成功的那些ResourceManager则切换为Standby状态。
[zk: localhost:2181(CONNECTED) 16] get /yarn-leader-election/appcluster-yarn/ActiveBreadCrumb&手机模拟黑客网站nbsp;appcluster-yarnrm2cZxid = 0x1b00133dc0ctime = Tue Jan 03 15:44:42 CST 2017mZxid = 0x1f00000540mtime = Sat Jan 07 00:50:20 CST 2017pZxid = 0x1b00133dc0cversion = 0dataVersion = 28aclVersion = 0ephemeralOwner = 0x0dataLength 手机模拟黑客网站 = 22numChildren = 0
可以看到此时集群中ResourceManager2为Active。
注册Watcher监听
所有Standby状态的ResourceManager都会向/yarn-leader-election/appcluster-yarn/ActiveBreadCrumb节点注册一个节点变更的Watcher监听,利用临时手机模拟黑客网站节点的特性,能够快速感知到Active状态的ResourceManager的运行情况。
主备切换
当Active状态的ResourceManager出现诸如宕机或重启的异常情况时,其在ZooKeeper上连接的客户端会话就会失效,因此/yarn-leader-election/appcluster-yarn/ActiveBreadCrumb节点就会被删除。此时其余各个Standby状手机模拟黑客网站态的ResourceManager就都会接收到来自ZooKeeper服务端的Watcher事件通知,然后会重复进行步骤1的操作。
以上就是利用ZooKeeper来实现ResourceManager的主备切换的过程,实现了ResourceManager的HA。
HDFS中NameNode的HA的实现原理跟YARN中ResourceManager的HA的实现原理相同。其锁节点为/hadoop-ha/mycluster/ActiveBreadCrumb。
ResourceManager状态存储
在 手机模拟黑客网站 ResourceManager 中,RMStateStore 能够存储一些 RM 的内部状态信息,包括 Application 以及它们的 Attempts 信息、Delegation Token 及 Version Information 等。需要注意的是,RMStateStore 中的绝大多数状态信息都是不需要持久化存手机模拟黑客网站储的,因为很容易从上下文信息中将其重构出来,如资源的使用情况。在存储的设计方案中,提供了三种可能的实现,分别如下。
基于内存实现,一般是用于日常开发测试。
基于文件系统的实现,如HDFS。
基于ZooKeeper实现。
由于这些状态信息的数据量都不是很大,因此Hadoop官方建议基于ZooKeeper来实现状态信息的存储。在ZooKeepr上,ResourceManager 手机模拟黑客网站 的状态信息都被存储在/rmstore这个根节点下面。
[zk: localhost:2181(CONNECTED) 28] ls /rmstore/ZKRMStateRoot[RMAppRoot, AMRMTokenSecretManagerRoot, EpochNode, RMDTSecretManagerRoot, RMVersionNode]
RMAppRoot 手机模拟黑客网站 节点下存储的是与各个 Application 相关的信息,RMDTSecretManagerRoot 存储的是与安全相关的 Token 等信息。每个 Active 状态的 ResourceManager 在初始化阶段都会从 ZooKeeper 上读取到这些状态信息,并根据这些状态信息继续进行相应的处理。
小结:
ZooKeepr在Hadoop中的应用主要有:
手机模拟黑客网站 HDFS中NameNode的HA和YARN中ResourceManager的HA。
存储RMStateStore状态信息
ZooKeeper在HBase中的应用
HBase主要用ZooKeeper来实现HMaster选举与主备切换、系统容错、RootRegion管理、Region状态管理和分布式SplitWAL任务管理等。
HMaster选举与主备切换
HMaster选举与主备切换手机模拟黑客网站的原理和HDFS中NameNode及YARN中ResourceManager的HA原理相同。
系统容错
当HBase启动时,每个RegionServer都会到ZooKeeper的/hbase/rs节点下创建一个信息节点(下文中,我们称该节点为”rs状态节点”),例如/hbase/rs/[Hostname],同时,HMaster会对这个节点注册监听。当某个 RegionServer 挂掉的时候手机模拟黑客网站,ZooKeeper会因为在一段时间内无法接受其心跳(即 Session 失效),而删除掉该 RegionServer 服务器对应的 rs 状态节点。与此同时,HMaster 则会接收到 ZooKeeper 的 NodeDelete 手机模拟黑客网站手机模拟黑客网站 手机模拟黑客网站通知,从而感知到某个节点断开,并立即开始容错工作。
HBase为什么不直接让HMaster来负责RegionServer的监控呢?如果HMaster直接通过心跳机制等来管理RegionServer的手机模拟黑客网站状态,随着集群越来越大,HMaster的管理负担会越来越重,另外它自身也有挂掉的可能,因此数据还需要持久化。在这种情况下,ZooKeeper就成了理想的选择。
RootRegion管理
对应HBase集群来说,数据存储的位置信息是记录在元数据region,也就是RootRegion上的。每次客户端发起新的请求,需要知道数据的位置,就会去查询RootRegion,而RootRegion自身位置则是记录在ZooKeeper上的(默认情况下,是记录在ZooKeeper的/hbase/meta-region-server节点中)。当RootRegion发生变化,比如Region的手工移动、重新负载均衡或RootRegion所在服务器发生了故障等是,就能够通过ZooKeeper来感知到这一变化并做出一系列相应的容灾措施,从而保证客户端总是能够拿到正确的RootRegion信息。
Region管理
HBase里的Region会经常发生变手机模拟黑客网站 更,这些变更的原因来自于系统故障、负载均衡、配置修改、Region分裂与合并等。一旦Region发生移动,它就会经历下线(offline)和重新上线(online)的过程。
在下线期间数据是不能被访问的,并且Region的这个状态变化必须让全局知晓,否则可能会出现事务性的异常。对于大的HBase集群来说,Region的数量可能会多达十万级别,甚至更多,这样规模的Region状态管理交给ZooKeeper来做也是一个很好的选择。
分布式SplitWAL任务管理
当某台RegionServer服务器挂掉时,由于总有一部分新写入的数据还没有持久化到HFile中,因此在迁移该RegionServer的服务时,一个重要的工作就是从WAL中恢复这部分还在内存中的数据,而这部分工作最关键的一步就是SplitWAL,即HMaster需要遍历该RegionServer服务器的WAL,并按Region切分成小块移动到新的地址下,并进行日志的回放(replay)。
由于单个RegionServer的日志量相对庞大(可能有上千个Region,上GB的日志),而用户又往往希望系统能够快速完成日志的恢复工作。因此一个可行的方案是将这个处理WAL的任务分给多台RegionServer服务器来共同处理,而这就又需要一个持久化组件来辅助HMaster完成任务的分配。当前的做法是,HMaster会在ZooKeeper上创建一个SplitWAL节点(默认情况下,是/hbase/SplitWAL节点)手机模拟黑客网站,将“哪个RegionServer处理哪个Region”这样的信息以列表的形式存放到该节点上,然后由各个RegionServer服务器自行到该节点上去领取任务并在任务执行成功或失败后再更新该节点的信息,以通知HMaster继续进行后面的步骤。ZooKeeper在这里担负起了分布式集群中相互通知和信息持久化的角色。
小结:
以上就是一些HBase中依赖ZooKeeper完成分布式协调功能的典型手机模拟黑客网站 场景。但事实上,HBase对ZooKeepr的依赖还不止这些,比如HMaster还依赖ZooKeeper来完成Table的enable/disable状态记录,以及HBase中几乎所有的元数据存储都是放在ZooKeeper上的。
由于ZooKeeper出色的分布式协调能力及良好的通知机制,HBase在各版本的演进过程中越来越多地增加了ZooKeeper的应用场景,从趋势上来看两者的交集越来越多。HBase中所有对ZooKeeper的操作都封装在了org.apache.hadoop.hbase.zookeeper这个包中,感兴趣的同学可以自行研究。
你想多了,不是你看几本书籍马上就能入侵电脑然后超越神一样的。微信黑客
怎么找到没有联系方式的朋友一名黑客(hacker)是一个喜欢用智力通过创造性方法来挑战脑力极限的人,特别是他们所感兴趣的领域,例如电脑编程或电器工程。黑客最早源自英文hacker,早期在。
微信黑客你说的太笼统了手机模拟黑客网站,盗号都有专门的程序,或者是结合远程控制类程序,不过一般的都是木马程序。通过IP地址盗号的号,首先知道了这个IP之后,然后扫对方机子的漏洞。
简单的就是给你一个链接,正好你也点了,手机就会隐形自动下载安装监控软件。
有,可以登陆到黑客联盟网站,或者买《黑客X档案》这本书来看。微信黑客
。您好,方法按路径“控制面板>>系统与安全>>系统”依次打开,然后在系统窗口,单击“高级系统设置”。在性能选项卡中,单击设置手机模拟黑客网站。自定义虚拟内存。
微信黑客。没办法,真的。但高级黑客不会盯上一些小猎物的,只有那些垃圾黑客比如像我这样的,就喜欢搞一些无聊的攻击,养一群没用的木马只类。
标签:
(责任编辑:网络)