RS下线的regionassign
上面在RS启动部分已经提到过,RS在zk中的地址注册为SESSION过期自动清理的路径(ephemeral)。
在master中通过RegionServerTracker对rs进行监控,
当rs在zk的session过期时间内没有向zk发送心跳。表示rs已经下线,会触发RegionServerTracker.nodeDeleted
publicvoidnodeDeleted(Stringpath){
if(path.startsWith(watcher.rsZNode)){
StringserverName= ZKUtil.getNodeName(path);
.........此处省去一些注释
ServerNamesn= ServerName.parseServerName(serverName);
如果此server本身在ServerManager的onlineServers列表中不存在.不做处理
if(!serverManager.isServerOnline(sn)){
.........此处省去一些注释
return;
}
从RegionServerTracker.onlineServers列表中移出此server
remove(sn);
通过Servermanager.expireServer对server执行下线操作。
首先从ServerManager.onlienServers列表中移出此server,同时把server添加到deadServers列表中。
检查是否是clustershutdown,如果是,不做rs的下线处理,否则执行下面流程。
检查server中是否包含metaregion,如果包含metaregion,通过MetaServerShutdownHandler处理下线操作
否则通过ServerShutdownHandler处理下线操作。
this.serverManager.expireServer(sn);
}
}
ServerShutdownHandleruser region的重新分配流程:
1.通过hbase.master.distributed.log.replay配置是否分布式日志重播,默认为false
2.通过hbase.master.log.replay.wait.region.timeout配置logreplay的等待超时时间,默认为15000ms
3.检查是否包含metaregion,此处不分析此部分代码。
4.得到metaregion的路径,并通过MetaReader从meta中得到下线的RS的所有regions列表。
5.执行日志的split处理,不分析。
if(this.shouldSplitHlog){
LOG.info("Splittinglogs for " + serverName+" before assignment.");
if(this.distributedLogReplay){
LOG.info("Markregions in recovery before assignment.");
Set<ServerName>serverNames=newHashSet<ServerName>();
serverNames.add(serverName);
this.services.getMasterFileSystem().prepareLogReplay(serverNames);
}else{
this.services.getMasterFileSystem().splitLog(serverName);
}
am.getRegionStates().logSplit(serverName);
6.通过AssignmentManager.assign(list)重新分配所有的region.
相关推荐
HBASERegion数量增多问题描述及解决方案.docx
HBase系统中Region自动切分是如何实现的,这里面涉及很多知识点,比如Region切分的触发条件是什么、Region切分的切分点在哪里、如何切分才能最大的保证Region的可用性、如何做好切分过程中的异常处理、切分过程中要...
该文档是介绍hbase的rowkey设计与hbase的协处理器运用,与大家分享!
1、region 拆分机制 ...当region大小大于某个阈值(hbase.hregion.max.filesize=10G)之后就会触发切分,一个region等分为2个region。 但是在生产线上这种切分策略却有相当大的弊端:切分策略对于大表和小表没有
hbase-region-inspector, HBase区域统计信息的可视化仪表板 hbase-region-inspectorHBase区域统计信息的可视化仪表板。 用法下载与HBase集群版本匹配的可执行二进制插件,添加execute权限,并使用以下命令行参数启动...
HBase入门与使用,可以了解如何使用HBase
hbase-packet-inspector hbase-packet-inspector (HPI)是用于分析HBase RegionServers网络流量的命令行工具。 HPI读取tcpdump文件或捕获网络接口的实时数据包流,以提取有关客户端请求和响应的信息。 您可以对其...
本文来自于csdn,介绍了Hadoop的原理,HBase的特点,HBase 的高并发和实时处理数据,数据模型,工作流程等。(一)HDFS主要是用于做什么的?HDFS(HadoopDistributedFileSystem)分布式文件管理系统、是Hadoop项目的...
本科毕业设计项目,基于spark streaming+flume+kafka+hbase的实时日志处理分析系统 基于spark streaming+flume+kafka+hbase的实时日志处理分析系统 本科毕业设计项目,基于spark streaming+flume+kafka+hbase的...
介绍hbase 权限配置。
HBASE的主要原理解读:包括HBase 读写逻辑、HBase region拆分和合并
java 利用 sping-data-hadoop HbaseTemplate 操作hbase find get execute 等方法 可以直接运行
介绍hbase和hadoop数据块损坏如何处理
hadoop-2.52-hbase-0.14-hadoop2 ha高可用安装,hbase动态添加删除节点,hbase集群正常状态及启动,hbase 问题汇总
搭建pinpoint需要的hbase初始化脚本hbase-create.hbase
2. 请简述HBase中数据写入最后导致Region分裂的全过程 3. 如果设计一个笔记的表,表中要求有笔记的属性和笔记的内容,怎么做 4. HBase部署时如何指定多个zookeeper 5. HBase shell是基于哪种JVM运行的语言实现的 6. ...
HBase即Hadoop Database,是一个... Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为对应。
1. HBase有哪些基本的特征? 1 HBase特征: 1 2. HBase相对于关系数据库能解决的问题是什么? 2 HBase与关系数据的区别? 2 HBase与RDBMS的区别? 2 3. HBase的数据模式是怎么样的?即有哪些元素?如何存储?等 3 1...
使用Apache Beam和HBase进行高效数据处理