锁屏面试题百日百刷,每个工作日坚持更新面试题。锁屏面试题app、小程序现已上线,官网地址:https://www.demosoftware.cn。已收录了每日更新的面试题的所有内容,还包含特色的解锁屏幕复习面试题、每日编程题目邮件推送等功能。让你在面试中先人一步!接下来的是今日的面试题:
1.请详细描述HBase中一个cell的结构?**
HBase中通过row和columns确定的为一个存贮单元称为cell。
Cell:由{row key, column(=
2.以start-hbase.sh为起点,HBase启动的流程是什么?**
start-hbase.sh 的流程如下:
1. 运行 hbase-config.sh
hbase-config.sh的作用:
① 装载相关配置,如HBASE_HOME目录,conf目录,regionserver机器列表,JAVA_HOME 目录等,它会调用$HBASE_HOME/conf/hbase-env.sh ;
② 解析参数(0.96 版本及以后才可以带唯一参数 autorestart,作用就是重启);
③ 调用 hbase-daemon.sh 来启动 master;
④ 调用 hbase-daemons.sh 来启动 regionserver zookeeper master-backup。
- hbase-env.sh 的作用:
主要是配置 JVM 及其 GC 参数,还可以配置 log 目录及参数,配置是否需要 hbase 管理 ZK,配置进程 id目录等。
- hbase-daemons.sh 的作用:
根据需要启动的进程,如 zookeeper,则调用 zookeepers.sh如 regionserver,则调用 regionservers.sh,如 master-backup,则调用 master-backup.sh。
- zookeepers.sh 的作用:
如果 hbase-env.sh 中的 HBASE_MANAGES_ZK"="true",那么通过ZKServerTool这个类解析xml配置文件,获取 ZK 节点列表,然后通过 SSH 向这些节点发送远程命令执行。
- regionservers.sh 的作用:
与 zookeepers.sh 类似,通过配置文件,获取 regionserver 机器列表,然后 SSH 向这些机器发送远程命令。
6.master-backup.sh 的作用:
通过 backup-masters 这个配置文件,获取 backup-masters 机器列表,然后 SSH 向这些机器发送远程命令。
3.简述HBase中compact用途是什么,什么时候触发,分为哪两种,有什么区别,有哪些相关配置参数?**
在hbase中每当有memstore数据flush到磁盘之后,就形成一个storefile,当storeFile的数量达到一定程度后,就需要将 storefile 文件来进行 compaction 操作。
Compact 的作用:
① 合并文件
② 清除过期,多余版本的数据
③ 提高读写数据的效率
HBase 中实现了两种 compaction 的方式:minor and major. 这两种 compaction 方式的区别是:
1、Minor 操作只用来做部分文件的合并操作以及包括 minVersion=0 并且设置 ttl 的过期版本清理,不做任何删除数据、多版本数据的清理工作。
2、Major 操作是对 Region 下的HStore下的所有StoreFile执行合并操作,最终的结果是整理合并出一个文件。
4.每天百亿数据存入HBase,如何保证数据的存储正确和在规定时间里全部录入完毕,不残留数据?**
需求分析:
1)百亿数据:证明数据量非常大;
2)存入HBase:证明是跟HBase的写入数据有关;
3)保证数据的正确:要设计正确的数据结构保证正确性;
4)在规定时间内完成:对存入速度是有要求的。
解决思路:
1)数据量百亿条,什么概念呢?假设一整天60x60x24 = 86400秒都在写入数据,那么每秒的写入条数高达100万条,HBase当然是支持不了每秒百万条数据的,所以这百亿条数据可能不是通过实时地写入,而是批量地导入。批量导入推荐使用BulkLoad方式(推荐阅读:Spark之读写HBase),性能是普通写入方式几倍以上;
2)存入HBase:普通写入是用JavaAPI put来实现,批量导入推荐使用BulkLoad;
3)保证数据的正确:这里需要考虑RowKey的设计、预建分区和列族设计等问题;
4)在规定时间内完成也就是存入速度不能过慢,并且当然是越快越好,使用BulkLoad。