关于后端:面试题百日百刷HBase-HRegionServer宕机如何处理

34次阅读

共计 1964 个字符,预计需要花费 5 分钟才能阅读完成。

锁屏面试题百日百刷,每个工作日保持更新面试题。锁屏面试题 app、小程序现已上线,官网地址:https://www.demosoftware.cn。已收录了每日更新的面试题的所有内容,还蕴含特色的解锁屏幕温习面试题、每日编程题目邮件推送等性能。让你在面试中后人一步! 接下来的是今日的面试题:

1.HBase 的导入导出形式?**

1)导入:bin/hbase org.apache.hadoop.hbase.mapreduce.Driver import 表名 门路

门路:起源

本地门路 file:///path

HDFS hdfs://cluster1/path

2)导出:bin/hbase org.apache.hadoop.hbase.mapreduce.Driver export 表名 门路

门路:目的地

本地门路 file:///path

HDFS hdfs://cluster1/path

2.Region 如何预建分区?**

预分区的目标次要是在创立表的时候指定分区数,提前规划表有多个分区,以及每个分区的区间范畴,这样在存储的时候 rowkey 依照分区的区间存储,能够防止 region 热点问题。

通常有两种计划:

计划 1:shell 办法

create ‘tb_splits’, {NAME => ‘cf’,VERSIONS=> 3},{SPLITS => [’10’,’20’,’30’]}

计划 2: JAVA 程序控制

· 取样,先随机生成肯定数量的 rowkey, 将取样数据按升序排序放到一个汇合里;

· 依据预分区的 region 个数,对整个汇合均匀宰割,即是相干的 splitKeys;

· HBaseAdmin.createTable(HTableDescriptor tableDescriptor,byte[][]splitkeys) 能够指定预分区的 splitKey,即是指定 region 间的 rowkey 临界值。

3.HRegionServer 宕机如何解决?**

1)ZooKeeper 会监控 HRegionServer 的高低线状况,当 ZK 发现某个 HRegionServer 宕机之后会告诉 HMaster

进行生效备援;

2)该 HRegionServer 会进行对外提供服务,就是它所负责的 region 临时进行对外提供服务;

3)HMaster 会将该 HRegionServer 所负责的 region 转移到其余 HRegionServer 上,并且会对 HRegionServer 上存在 memstore 中还未长久化到磁盘中的数据进行复原;

4)这个复原的工作是由 WAL 重播来实现,这个过程如下:

· wal 实际上就是一个文件,存在 /hbase/WAL/ 对应 RegionServer 门路下。

· 宕机产生时,读取该 RegionServer 所对应的门路下的 wal 文件,而后依据不同的 region 切分成不同的临时文件 recover.edits。

· 当 region 被调配到新的 RegionServer 中,RegionServer 读取 region 时会进行是否存在 recover.edits,如果有则进行复原。

4.HBase 读写流程?**

读:

① HRegionServer 保留着 meta 表以及表数据,要拜访表数据,首先 Client 先去拜访 zookeeper,从 zookeeper 外面获取 meta 表所在的地位信息,即找到这个 meta 表在哪个 HRegionServer 上保留着。

② 接着 Client 通过方才获取到的 HRegionServer 的 IP 来拜访 Meta 表所在的 HRegionServer,从而读取到 Meta,进而获取到 Meta 表中寄存的元数据。

③ Client 通过元数据中存储的信息,拜访对应的 HRegionServer,而后扫描所在 HRegionServer 的 Memstore 和 Storefile 来查问数据。

④ 最初 HRegionServer 把查问到的数据响应给 Client。

写:

① Client 先拜访 zookeeper,找到 Meta 表,并获取 Meta 表元数据。

② 确定以后将要写入的数据所对应的 HRegion 和 HRegionServer 服务器。

③ Client 向该 HRegionServer 服务器发动写入数据申请,而后 HRegionServer 收到申请并响应。

④ Client 先把数据写入到 HLog,以避免数据失落。

⑤ 而后将数据写入到 Memstore。

⑥ 如果 HLog 和 Memstore 均写入胜利,则这条数据写入胜利

⑦ 如果 Memstore 达到阈值,会把 Memstore 中的数据 flush 到 Storefile 中。

⑧ 当 Storefile 越来越多,会触发 Compact 合并操作,把过多的 Storefile 合并成一个大的 Storefile。

⑨ 当 Storefile 越来越大,Region 也会越来越大,达到阈值后,会触发 Split 操作,将 Region 一分为二。

正文完
 0