每天百亿数据存入HBase,如何保证数据的存储正确和在规定时间里全部录入完毕,不残留数据?

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

  1. hbase-env.sh 的作用:

主要是配置 JVM 及其 GC 参数,还可以配置 log 目录及参数,配置是否需要 hbase 管理 ZK,配置进程 id目录等。

  1. hbase-daemons.sh 的作用:

根据需要启动的进程,如 zookeeper,则调用 zookeepers.sh如 regionserver,则调用 regionservers.sh,如 master-backup,则调用 master-backup.sh。

  1. zookeepers.sh 的作用:

如果 hbase-env.sh 中的 HBASE_MANAGES_ZK"="true",那么通过ZKServerTool这个类解析xml配置文件,获取 ZK 节点列表,然后通过 SSH 向这些节点发送远程命令执行。

  1. 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。

你可能感兴趣的:(后端面试hbase)