首页 > 其他分享 >面试题百日百刷-HBase HRegionServer宕机如何处理

面试题百日百刷-HBase HRegionServer宕机如何处理

时间:2023-04-07 21:55:55浏览次数:36  
标签:面试题 宕机 region 百刷 Client Storefile HRegionServer 数据

锁屏面试题百日百刷,每个工作日坚持更新面试题。锁屏面试题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一分为二。

 

标签:面试题,宕机,region,百刷,Client,Storefile,HRegionServer,数据
From: https://www.cnblogs.com/demosoftware/p/17297476.html

相关文章

  • 免费分享前端面试题,vue面试题,TypeScript基础知识点 PDF格式
    免费分享前端资料,面试题,电子书接前端开发,带徒弟,一对一教学,远程协助,bug修改微信:......
  • #yyds干货盘点# LeetCode面试题:x 的平方根
    1.简述:给你一个非负整数x,计算并返回 x 的算术平方根。由于返回类型是整数,结果只保留整数部分,小数部分将被舍去。注意:不允许使用任何内置指数函数和算符,例如pow(x,0.5)或者x**0.5。 示例1:输入:x=4输出:2示例2:输入:x=8输出:2解释:8的算术平方根是2.82842...,由......
  • Web前端开发必看的100道大厂面试题
    1.说说gulp和webpack的区别开放式题目Gulp强调的是前端开发的工作流程。我们可以通过配置一系列的task,定义task处理的事务(例如文件压缩合并、雪碧图、启动server、版本控制等),然后定义执行顺序,来让Gulp执行这些task,从而构建项目的整个前端开发流程。通俗一点来说,“Gulp就像是一......
  • 力扣 面试题 10.11. 峰与谷
    面试题10.11.峰与谷在一个整数数组中,“峰”是大于或等于相邻整数的元素,相应地,“谷”是小于或等于相邻整数的元素。例如,在数组{5,8,4,2,3,4,6}中,{8,6}是峰,{5,2}是谷。现在给定一个整数数组,将该数组按峰与谷的交替顺序排序。示例:输入:[5,3,1,2,3]输出: [......
  • 前端常见面试题笔记
    /***防抖*一段时间内触发重新计时*/functiondebounce(func,delay){lettimer=null;returnfunction(){if(timer)clearTimeout(timer)timer=setTimeout(()=>{//箭头函数直接继承父级作用域所以可...argumnets......
  • java面试题学习记录2
    1.索引的分类 主键索引,联合索引,唯一索引,全文索引,普通索引2.锁的分类 行锁:操作数据库时,锁定整行数据 表锁:操作数据库时,锁定整表数据 乐观锁:多线程情况下,认为其他线程不会去修改的数据,所以不会上锁,但是会在跟新时,判断一下数据有没有被改变,可以用版本号机制 悲......
  • 数组面试题
    1.消失的数字题目链接题目描述 解题思路异或操作符支持乘法交换律---> 0^3^0^1^0^1^2^3--->0^0^0^1^1^3^3^2--->相同的值异或为0--->0^2--->2intmissingNumber(int*nums,intnumsSize){intval=0;inti=0;for(i=0;i<numsSize;i++......
  • 面试题大集合
    目录第一章Python基础第二章函数第三章模块第四章面向对象第五章网络和并发编程第六章数据库和缓存第七章前端第八章django第九章Flask第十章tornado第十一章api第十二章git第十三章爬虫第十四章算法和数据结构第十五章Linux第十六章设计题第十七章客观题第十八......
  • TCP面试题
    说说TCP的三次握手假设发送端为客户端,接收端为服务端。开始时客户端和服务端的状态都是CLOSED。(1)第一次握手:客户端向服务端发起建立连接请求,客户端会随机生成一个起始序列号x,客户端向服务端发送的字段中包含标志位SYN=1,序列号seq=x。第一次握手前客户端的状态为CLOSE,第一次握手......
  • 消息队列面试题
    为什么要使用消息队列?主要有三点原因:解耦、异步、削峰。(1)解耦。比如,用户下单后,订单系统需要通知库存系统,假如库存系统无法访问,则订单减库存将失败,从而导致订单操作失败。订单系统与库存系统耦合,这个时候如果使用消息队列,可以返回给用户成功,先把消息持久化,等库存系统恢复后,就可以......