如果不幸一旦发生RegionServer宕机或者其他异常,这种设计可以从HLog中进行日志回放进行数据补救,保证数据不丢失。HBase故障恢复的最大看点就在于如何通过HLog回放补救丢失数据。...HLog构建:详见另一篇博文《HBase-数据写入流程解析》中相关章节,此处再将HLog的结构示意图拿出来: 上图可以看出,一个HLog由RegionServer上所有Region的日志数据构成,日志数据的最小单元为...HLog滚动:HBase后台启动了一个线程会每隔一段时间(由参数’hbase.regionserver.logroll.period’决定,默认1小时)进行日志滚动,即新生成一个新的日志文件。...HBase故障恢复三部曲 HBase的故障恢复我们都以RegionServer宕机恢复为例,引起RegionServer宕机的原因各种各样,有因为Full GC导致、网络异常导致、官方Bug导致(close...这些场景下一旦RegionServer发生宕机,HBase都会马上检测到这种宕机,并且在检测到宕机之后会将宕机RegionServer上的所有Region重新分配到集群中其他正常RegionServer
问题描述及原因:HBase RegionServer 请求处理延时较大可能影响:客户端读写变慢或者超时处理建议:追查请求变慢原因,分场景解决 场景1 hbase读写存在较大KV 在regionserver...日志搜索关键字 "TooLarge",若存在则需要业务侧优化表结构,优化大KV 场景2 hdfs读写时延大 在regionserver日志搜索关键字 "TooSlow"或者"slow sync",
问题描述及原因:HBase RegionServer 请求排队延时较大可能影响:客户端读写变慢或者超时处理建议:追查请求变慢原因,分场景解决 场景1 RegionServer handler被打满...在EMR控制台进入“集群监控”,点击“DashBoard”,点击 Overview-DashBoard --> HBase-DashBoard --> IPC观察的active_handler_num的使用情况...,EMR默认handler为128,若已用完,建议在hbase-site.xml里添加以下配置项hbase.regionserver.handler.count 256或者配置更大,建议不超过物理机器...cpu 核数的3倍滚动重启regionserver即可 场景2 RegionServer请求处理时延很大,导致handler都被占用 解决方案:https://cloud.tencent.com/
我在 hadoop01、hadoop02、hadoop03 和 hadoop04 这4台节点上启动 HBase,其中 hadoop01、hadoop02 为 HMaster,hadoop02、hadoop03...、hadoop04 为 HRegionServer,在 hadoop01 上执行启动命令: start-hbase.sh 查看进程发现,两个 HMaster 服务正常启动,但3个节点上的 HRegionServer...服务都没有启动,查看 HBASE_HOME/logs/hbase-hadoop-regionserver-hadoop02.log 发现有如下报错: ?...经排查发现,原来是因为4个服务器的时间不同步导致的,同步时间后再启动 HBase,集群正常启动! 关于服务器同步时间的方法,可以参考Linux集群系统时间同步
一,基本介绍 Hbase源码系列主要是以hbase-1.0.0为例讲解hbase源码。本文主要是将Regionserver服务端RPC的结构及处理流程。...希望是帮助大家彻底了解hbase Regionserver的内部结构。...二,重要类 1,RSRpcServices Regionserver的rpc服务的实现类 2,RpcServer Regionserver处理的重要类。...而hbase的regionserver是将IO线程进行了读写分离,读线程是多线程,而写(应答线程)是单线程来做的。...IO请求处理方面来说kafka是很优秀的优的,但是hbase regionserver的调度器实现了按等级分离线程池模型,保证更优先级的操作能执行这个特点也比较不错。
特别说明 Hbase 不同版本的wal的源码差异比较大,但是原理几乎类似,本文档是采用当前线上使用版本( Hbase1.1.3 )来分析的。...简单原理 有关 hbase 的 wal 基本原理在《Hbase权威指南》以及网络教程中叙述的算比较清晰详尽,在此只做简单的叙述。...WAL(Write-Ahead-Log) 是 HBase 的 RegionServer 在处理数据插入和删除的过程中用来记录操作内容的一种日志。...本文档在介绍hbase基本“写”原理后着重从源码角度,比较浅显地分析了一个“写”操作后在RegionServer的调用过程,为以后继续更深入学习研究hbase“写”过程梳理了脉络。...相关推荐 Hbase写入hdfs源码分析 Hbase WAL线程模型源码分析 HBase跨版本数据迁移总结
环境如下: Centos6.5 Apache Hadoop2.7.1 Apache Hbase0.98.12 Apache Zookeeper3.4.6 JDK1.7 Ant1.9.5...这50条数据时,regionserver频繁宕机看hbase的log发现并无明显异常,查看datanode的log发现如下异常: Java代码 java.io.IOException: Premature...,导致垃圾收集时间出现了4,5秒,这下我才有点头绪,hbase是个吃内存的玩意,内存给的少,确实有可能导致regionserver挂掉,于是我查看hbase的堆内存分配情况,发现是默认的1G,这下确实跟这个有很大关系...,50条数据占存储200M,如果每次scan一次,hbase会将其缓存在cache里面,第二次继续scan不同压缩类型的表,会导致内存膨胀,继而引发,regionserver宕机,而给出的异常提示,并不是非常明确...,所以才定位问题比较困难,知道了大概原因所在,然后把hbase的堆内存调到4G,并分发到所有节点上,再次启动,用java 客户端,扫描全表测试,这次非常稳定,regionserver没有出现过再次挂掉的情况
经过细致并综合分析hbase regionserver、hbase master以及 zookeeper的日志,发现了问题所在:tickTime设置导致hbase超时时间错误。...因此,我们将hbase以及regionserver 的堆栈都设置为16G,然后对gc进行优化。...最终,HBase具体优化参数如下所示: export HBASE_HEAPSIZE=16384 export master_heapsize=8192 export regionserver_heapsize...三、分析故障原因 既然通过优化hbase本身无法解决regionserver频繁挂掉的原因,那就必须将分析扩大到hbase相关的进程。与hbase密切相关的是zookeeper。...经过hbase社区求助,以及google类似的问题,最终找到原因(详细链接,请参考:https://superuser.blog/hbase-dead-regionserver/): 原来我们的
问题描述及原因:HBase RegionServer RPC队列请求数较大可能影响:客户端读写变慢或者超时处理建议: 在EMR控制台进入“集群监控”,点击“DashBoard”,点击 “集群服务...” --> HBASE --> 角色管理 -->RegionServer点击进入,设置指标里选中RPC队列请求数,如下图所示,若只有部分Queue被打满,建议增加改队列的线程数。...具体配置规则如下:图片hbase get、put、scan到服务端后默认是用一个线程池来处理这些请求。...线程池的配置是:hbase.regionserver.handler.count默认是128若集群有比较大的scan时,建议将put、get和scan的线程池拆开,在hbase-site.xml中添加以下配置项...replicationQueue配置:hbase.replication.source.maxthreads 默认是10PriorityQurue配置:hbase.regionserver.metahandler.count
可以这样估算服务器端被占用的内存: hbase.client.write.buffer * hbase.regionserver.handler.count 默认: 2097152 hbase.regionserver.port...HBase RegionServer绑定的端口 默认: 60020 hbase.regionserver.info.port HBase RegionServer web 界面绑定的端口 ...默认: false hbase.regionserver.info.bindAddress HBase RegionServer web 界面的IP地址 默认: 0.0.0.0 hbase.regionserver.class...默认: org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogReader hbase.regionserver.hlog.writer.impl...默认: default hbase.regionserver.dns.nameserver 当使用DNS的时候,RegionServer使用的DNS的域名或者IP 地址,RegionServer用它来确定和
Hbase的扩展性主要体现在两个方面,一个是基于上层处理能力(RegionServer)的扩展,一个是基于存储的扩展(HDFS)。...4.2、Zookeeper Hbase通过Zookeeper来做master的高可用、RegionServer的监控、元数据的入口以及集群配置的维护等工作。...这个参数是hbase.regionserver.global.memstore.upperLimit,默认为整个heap内存的40%。...控制,默认是1个小时,时间达到hbase.regionserver.logroll.period 设置的时间,Hbase会创建一个新的Hlog文件。...Hbase通过hbase.regionserver.maxlogs参数控制Hlog的个数。滚动的目的,为了控制单个Hlog文件过大的情况,方便后续的过期和删除。
但是 HBase 具备许多 RDBMS 没有的功能: 通过 RegionServer 扩展存储。...如果 HBase 集群从10个 RegionServer 扩展到20个 RegionServer ,那么在存储和处理能力方面都会翻倍。 强大的读写能力。 自动分片。...HBase Master 的主要职责有(参考的HBase官网): 负责管理监控所有的 RegionServer ,负责 RegionServer 故障转移。...ZooKeeper 管理了 HBase 所有 RegionServer 的信息,包括具体的数据段存放在哪个 RegionServer 上。 客户端会与 RegionServer 通信。...最终的 HBase 相关架构图如下图所示: ? 三、RegionServer内部探险 HBase RegionServer:负责数据的读取和写入。
上篇:Hbase 技术细节笔记(上) 四、RegionServer的故障恢复 我们知道,RegionServer的相关信息保存在ZK中,在RegionServer启动的时候,会在Zookeeper中创建对应的临时节点...当Zookeeper超过session超时时间还未收到RegionServer的ping包,则Zookeeper会认为该RegionServer出现故障,ZK会将该RegionServer对应的临时节点删除...d、Master重新将宕机的RegionServer中的Rgion分配到正常的RegionServer中,对应的RegionServer读取Region的数据,会发现该region目录下的recoverd.edits...d、RegionServer启动对应写线程,将Region buffer的数据写入到HDFS中,路径为/hbase/table/region/seqenceid.temp,seqenceid是一个日志中该...2、Hbase Region拆分的详细流程 Hbase的详细拆分流程图如下: 备注图片来源( https://zh.hortonworks.com/blog/apache-hbase-region-splitting-and-merging
HBase: NoSQL数据库,基于HDFS的分布式数据库,理论上支持无限横向扩展, HBase由HMaster与RegionServer组成,HMaster负责协调调度RegionServer...当HBase中表的数据不断变大时,表中数据会进行Region分区,分为Region1,Region2...等,RegionServer1负责Region1,RegionServer2负责Region2等...,所以直接看不到数据内容 HMaster支持HA高可用,所以在HBase集群对应的HMaster和RegionServer都启动后,在其他的RegonServer上启动HMaster...HBase:列式存储,适合处理对单列数据(列族归类的数据)进行快缩索引查询 HBase与Hive的区别 HBase:数据库,数据分布式存储在HDFS...HBase上,HMaster及RegionServer,MetaRegionServer都是通过ZooKeeper来进行服务感知的,所以需要ZooKeeper部署, 3.
> 我们需要在集群所有RegionServer的hbase-site.xml配置文件里面增加如下配置: hbase.regionserver.executor.openregion.threads... 100 在phoenix 上配置HBase支持Phoenix二级索引 配置文件:在每一个RegionServer的hbase-site.xml...里加入如下属性 hbase.regionserver.wal.codec org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec...uses separate queues for index and metadata updates hbase.coprocessor.regionserver.classes... org.apache.hadoop.hbase.regionserver.LocalIndexMerger 在每一个master
HBase架构组件 从物理上来说 HBase 由主从模式架构的三种服务组成: RegionServer:负责为读写提供数据。访问数据时,客户端可直接与 RegionServer 进行通信。...Hadoop DataNode 负责存储 RegionServer 管理的数据。所有 HBase 的数据都存储在 HDFS 文件中。...在数据写入 HBase 时满足数据本地性,但是随着 Region 的迁移(由于故障恢复或者负载均衡等原因)可能不再满足本地性了(数据还在原先的 RegionServer 上,只是 Region 交给新的...1.1 RegionServer与Region HBase 表根据 RowKey 的开始和结束范围水平拆分为多个 Region。...HBase Meta表 元数据表 META 表是一个 HBase 表,保存了系统中所有的 Region。META 表类似一棵 B 树。
问题描述及原因:HBase RegionServer 发生full gc,内存不足导致可能影响:客户端读写变慢或者超时,RegionServer挂掉处理建议:追查请求变慢原因,分场景解决 场景1 RegionServer...堆内内存配置太小 在EMR控制台进入“集群服务”,点击“HBase”,点击 配置管理 --> hbase-env.sh --> HeapsizeEMR默认值是1024,即1G,购买集群后需要根据业务调整...,一般建议regionserver内存占用机器40%-70%左右按业务需求和集群规划调整regionserver内存,并在业务低峰期滚动重启rs。...场景2 RS堆内内存较大,读QPS很高 若第一个场景没问题,即regionserver当前内存已经占机器内存很大一部分,并且集群的读QPS远大于写QPS,建议将读缓存存在堆外,在hbase-site.xml...场景3 RS堆内内存较大,写QPS很高 若场景1、场景2都没问题,regionserver依然full gc,同时集群的写QPS较高,可以在hbase-site.xml中加入以下配置项hbase.regionserver.global.memstore.size.lower.limit
, logging to /opt/hbase-1.2.5/logs/hbase-root-regionserver-node3.out node2: starting regionserver, logging...to /opt/hbase-1.2.5/logs/hbase-root-regionserver-node2.out node1: starting regionserver, logging to....out node3: starting regionserver, logging to /opt/hbase-1.2.5/logs/hbase-root-regionserver-node3.out...node2: starting regionserver, logging to /opt/hbase-1.2.5/logs/hbase-root-regionserver-node2.out node1...: starting regionserver, logging to /opt/hbase-1.2.5/logs/hbase-root-regionserver-node1.out
系统容错 当HBase启动时,每个RegionServer都会到ZooKeeper的/hbase/rs节点下创建一个信息节点(下文中,我们称该节点为”rs状态节点”),例如/hbase/rs/[Hostname...当某个 RegionServer 挂掉的时候,ZooKeeper会因为在一段时间内无法接受其心跳(即 Session 失效),而删除掉该 RegionServer 服务器对应的 rs 状态节点。...HBase为什么不直接让HMaster来负责RegionServer的监控呢?...分布式SplitWAL任务管理 当某台RegionServer服务器挂掉时,由于总有一部分新写入的数据还没有持久化到HFile中,因此在迁移该RegionServer的服务时,一个重要的工作就是从WAL...当前的做法是,HMaster会在ZooKeeper上创建一个SplitWAL节点(默认情况下,是/hbase/SplitWAL节点),将“哪个RegionServer处理哪个Region”这样的信息以列表的形式存放到该节点上
}/hbase-${user.name} 写到系统的/tmp目录 hbase.rootdir ● HBase集群中所有RegionServer共享目录,用来持久化HBase的数据,一般设置的是hdfs...hbase.regionserver.kerberos.principal ● regionserver的kerberos认证的主体名称(由三部分组成:服务或用户名称、实例名称以及域名) ●...线上配置:hbase/_HOST@HADOOP.xxx.xxx.COM ● 默认:无 hbase.regionserver.keytab.file ● regionserver keytab文件路径...● regionserver处理IO请求的线程数 ● 线上配置:50 ● 默认配置:10 hbase.regionserver.global.memstore.upperLimit ●...hbase.regionserver.global.memstore.lowerLimit ● RegionServer进程触发flush的一个条件:该节点上所有region的memstore之和达到
领取专属 10元无门槛券
手把手带您无忧上云