共计 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 一分为二。