Hbase面试题
hbase的特点
)hbase适合存储海量数据,是一个分布式的,基于列式存储的数据库,基于hadoop的hdfs存储,zookeeper进行管理。
)hbase 适合存储半结构化或非结构化的数据,对于数据结构字段不够确定或者杂乱无章很难按照一个概念去抽取的数据。
),稀疏主要是针对Hbase列的灵活性,在列族中,你可以指定任意多的列,hbase为null的数据不会被存储
)基于的表包含rowKey,时间戳和列族,新写入数据时,时间戳更新,同时可以查询到以前的版本
)易扩展 , hbase是主从结构,hmaster作为主节点,hregionServer作为从节点, 通过横向添加RegionSever的机器,进行水平扩展,提升Hbase上层的处理能力,提升Hbsae服务更多Region的能力
hbase的各个角色以及功能
)HMaster
为RegionServer分配Region
维护整个集群的负载均衡
维护集群的元数据信息
发现失效的Region,并将失效的Region分配到正常的RegionServer上
当RegionSever失效的时候,协调对应Hlog的拆分
)HregionServer
HregionServer直接对接用户的读写请求,是真正的“干活”的节点。它的功能概括如下:
管理master为其分配的Region
处理来自客户端的读写请求
负责和底层HDFS的交互,存储数据到HDFS
负责Region变大以后的拆分
负责Storefile的合并工作
)HDFS
HDFS为Hbase提供最终的底层数据存储服务,同时为HBase提供高可用(Hlog存在HDFS)的支持,具体功能概括如下:
提供元数据和表数据的底层分布式存储服务
数据多副本,保证高可靠和高可用性
)其他组件
Write-Ahead logs:数据会先写在Write-Ahead logfile,然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个日志文件重建
Region:Hbase表的分片,HBase表会根据RowKey值被切分成不同的region存储在RegionServer中,在一个RegionServer中可以有多个不同的region。
Store:HFile存储在Store中,一个Store对应HBase表中的一个列族
MemStore:就是内存存储,位于内存中,用来保存当前的数据操作,所以当数据保存在WAL中之后,RegsionServer会在内存中存储键值对
HFile:这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。StoreFile是以HFile的形式存储在HDFS的。
hbase的数据结构
HBASE 中通过rowkey和columns确定的为一个存贮单元称为cell。cell中的数据是没有类型的,全部是字节数组形式存贮。每个 cell都保存 着同一份数据的多个版本。版本通过时间戳来索引。
每个 cell中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。
为了避免数据存在过多版本造成的的管理 (包括存贮和索引)负担,HBASE提供 了两种数据版本回收方式。
一是保存数据的最后n个版本,二是保存最近一段 时间内的版本(比如最近七天)。用户可以针对每个列族进行设置。
hbase的存储机构
Hbase 中的每张表都通过行键(rowkey)按照一定的范围被分割成多个子表(HRegion),默认一个 HRegion 超过 256M 就要被分割成两个,
由 HRegionServer 管理,管理哪些 HRegion由 Hmaster 分配。 HRegion 存取一个子表时,会创建一个 HRegion 对象,
然后对表的每个列族(Column Family)创建一个 store 实例,每个 store 都会有 个或多个 StoreFile 与之对应,
每个 StoreFile 都会对应一个 HFile, HFile 就是实际的存储文件,因此,一个 HRegion 还拥有一个 MemStore 实例。
hbase的读流程
)Client先访问zookeeper,从meta表读取region的位置,然后读取meta表中的数据。meta中又存储了用户表的region信息;
)根据namespace、表名和rowkey在meta表中找到对应的region信息;
)找到这个region对应的regionserver;
)查找对应的region;
)先从MemStore找数据,如果没有,再到BlockCache里面读;
)BlockCache还没有,再到StoreFile上读(为了读取的效率)
hbase的写流程
)Client向HregionServer发送写请求;
)HregionServer将数据写到HLog(write ahead log)。为了数据的持久化和恢复;
)HregionServer将数据写到内存(MemStore);
)反馈Client写成功。
hbase的suffer过程
当MemStore数据达到阈值(默认是128M,老版本是64M),将数据刷到硬盘,将内存中的数据删除,同时删除HLog中的历史数据;并将数据存储到HDFS中;
hbase的优化
mster高可用
Row Key设计
列族的设计
预分区 提前把分区规划好,提高hbase性能
内存优化 :因为GC过程持续太久会导致RegionServer处于长期不可用状态
Time To Live
多HTable并发写
多HTable并发读
Blockcache !!!常用,设置读缓存,在服务器端
hbase的rowkey设计
加盐
hash
翻转
hbase和hive的区别和联系
共同点:.hbase与hive都是架构在hadoop之上的。都是用hadoop,hdfs作为底层存储
区别: .Hive是建立在Hadoop之上为了减少MapReducejobs编写工作的批处理系统,
HBase是为了支持弥补Hadoop对实时操作的缺陷的项目 。
.想象你在操作RMDB数据库,如果是全表扫描,就用Hive+Hadoop,如果是索引访问,就用HBase+Hadoop
.Hive query就是MapReduce jobs可以从5分钟到数小时不止,HBase是非常高效的,肯定比Hive高效的多。
.Hive本身不存储和计算数据,它完全依赖于HDFS和MapReduce,Hive中的表纯逻辑。
.hive借用hadoop的MapReduce来完成一些hive中的命令的执行
.hbase是物理表,不是逻辑表,提供一个超大的内存hash表,搜索引擎通过它来存储索引,方便查询操作。
.hbase是列存储。
.hdfs作为底层存储,hdfs是存放文件的系统,而Hbase负责组织文件。
.hive需要用到hdfs存储文件,需要用到MapReduce计算框架。
hbase的scan和get
.按指定RowKey 获取唯一一条记录, get方法(org.apache.hadoop.hbase.client.Get)Get 的方法处理分两种 : 设置了 ClosestRowBefore 和没有设置的 rowlock .主要是用来保证行的事务性,即每个 get 是以一个 row 来标记的.一个 row 中可以有很多 family 和 column.
.按指定的条件获取一批记录, scan 方法(org.apache.Hadoop.hbase.client.Scan)实现条件查询功能使用的就是 scan 方式.)scan 可以通过 setCaching 与 setBatch 方法提高速度(以空间换时间); )scan 可以通过 setStartRow 与 setEndRow 来限定范围([start, end]start 是闭区间, end 是开区间)。范围越小,性能越高。)scan 可以通过 setFilter 方法添加过滤器,这也是分页、多条件查询的基础。
.全表扫描,即直接扫描整张表中所有行记录
Hbase实战
启动hbase start-hbase.sh stop-hbase.sh 别忘了zookeeper zkServer.sh start
进入hbase hbase shell
list 列出所有表
scan表信息 scan 'student',{STARTROW=>'',STOPROW =>''}
上传数据 put 'student','','info:sex','nan'
put 'student','','info:name','cc2'
get数据 get 'student',''
Hbase面试题的更多相关文章
- 大数据相关的面试题(摘自网络)hbase,kafka,spark
1.讲讲你做的过的项目, 项目里有哪些难点重点呢? kafkaDirect ES /hive kafka producer 难点值得一提的有两点: 1.rdd中用到外部变量的时候如何处 ...
- 大数据相关技术原理资料整理(hdfs, spark, hbase, kafka, zookeeper, redis, hive, flink, k8s, OpenTSDB, InfluxDB, yarn)
hdfs: hdfs官方文档 深入理解HDFS的架构和原理 https://blog.csdn.net/kezhong_wxl/article/details/76573901 HDFS原理解析(总体 ...
- Hadoop 面试题之Hbase
Hadoop 面试题之九 16.Hbase 的rowkey 怎么创建比较好?列族怎么创建比较好? 答: 19.Hbase 内部是什么机制? 答: 73.hbase 写数据的原理是什么? 答: 75.h ...
- Hbase总结(六)hbase37个笔试题
下面试题是摘自互联网的基础上自己加了选项说明解释便于自己以后看时方便节省时间 1. HBase来源于哪篇博文? C A The Google File System B MapReduce C Big ...
- Hadoop 之面试题
颜色区别: 蓝色:hive,橙色:Hbase.黑色hadoop 请简述hadoop怎样实现二级排序. 你认为用Java,Streaming,pipe 方式开发map/reduce,各有哪些优缺点: 6 ...
- Hadoop 面试题redis
Hadoop 面试题之十 548.redis有什么特别之处,为什么用redis,用hbase 不行么? 答:redis 是基于内存的数据库,速度快 551.redis用什么版本? 3.0以上才支持集群 ...
- hadoop面试题答案
Hadoop 面试题,看看书找答案,看看你能答对多少(2) 1. 下面哪个程序负责 HDFS 数据存储.a)NameNode b)Jobtracker c)Datanode d)secondary ...
- 大数据之HBase
大数据之HBase数据插入优化之多线程并行插入实测案例 一.引言: 上篇文章提起关于HBase插入性能优化设计到的五个参数,从参数配置的角度给大家提供了一个性能测试环境的实验代码.根据网友的反馈,基于 ...
- hadoop+海量数据面试题汇总(一)
hadoop面试题 Q1. Name the most common InputFormats defined in Hadoop? Which one is default ? Following ...
随机推荐
- 12-Flutter移动电商实战-首页导航区域编写
1.导航单元素的编写 从外部看,导航是一个GridView部件,但是每一个导航又是一个上下关系的Column.小伙伴们都知道Flutter有多层嵌套的问题,如果我们都写在一个组件里,那势必造成嵌套严重 ...
- 多条件查询----补发周一内容(六级让我忽略了JAVA)
周一测试多条件查询 要求仿照知网高级查询页面重构期中考试多条件查询功能,可以根据志愿者姓名.性别.民族.政治面目.服务类别.注册时间六种条件实现模糊查询,输出结果以列表形式显示,显示姓名.性别,民族. ...
- SpringBoot第二节(SpringBoot整合Mybatis)
1.创建Spring Initiallizr项目 一直点击下一步 2.引入依赖 <dependencies> <dependency> <groupId>org.s ...
- 按值传递与按值引用详解(java版)
http://blog.csdn.net/zzp_403184692/article/details/8184751
- 洛谷 P1226 【模板】快速幂||取余运算 题解
Analysis 快速幂模板,注意在最后输出时也要取模. 快速幂模板 inline ll ksm(ll x,ll y) { ll ans=; ) { ) { ans*=x; ans%=k; } x*= ...
- 洛谷 题解 P1828 【香甜的黄油 Sweet Butter】
潇洒の开始 第一步:食用头文件和定义变量, 变量干什么用的说的很清楚 #include<iostream> #include<cstdio> #include<cstri ...
- linux命令之------Linux文档编辑
1.Vi和vim三种模式 (1)命令模式:移动光标 (2)插入模式:编辑文档 (3)末行模式:保存退出 不同模式操作示意图: 其中wq是保存退出,wq!强制保存退出:q不保存退出:q!强制不保存退出. ...
- SPA和MVVM设计思想
Vue基础篇设计模式SPAMVVMVue简介Vue的页面基本使用Vue的全局环境配置基本交互 插值表达式基础指令 v-text v-html v-pre v-once v-cloak v-on MVV ...
- C博客作业01——分支,顺序结构
C博客作业01--分支,顺序结构 0.展示PTA总分 1本章学习内容 1.1学习内容总结 1)格式化输出函数printf(),scanf(). 它是什么? 对于初学者而言,一开始了解接触它们,只是被硬 ...
- fastq 转换为 fasta
使用 awk awk '{if(NR%4 == 1){print ">" substr($0, 2)}}{if(NR%4 == 2){print}}' XXX.fastq & ...