最新hbase面试题Miles资料Word格式文档下载.docx

上传人:b****2 文档编号:6083986 上传时间:2023-05-06 格式:DOCX 页数:15 大小:23.62KB
下载 相关 举报
最新hbase面试题Miles资料Word格式文档下载.docx_第1页
第1页 / 共15页
最新hbase面试题Miles资料Word格式文档下载.docx_第2页
第2页 / 共15页
最新hbase面试题Miles资料Word格式文档下载.docx_第3页
第3页 / 共15页
最新hbase面试题Miles资料Word格式文档下载.docx_第4页
第4页 / 共15页
最新hbase面试题Miles资料Word格式文档下载.docx_第5页
第5页 / 共15页
最新hbase面试题Miles资料Word格式文档下载.docx_第6页
第6页 / 共15页
最新hbase面试题Miles资料Word格式文档下载.docx_第7页
第7页 / 共15页
最新hbase面试题Miles资料Word格式文档下载.docx_第8页
第8页 / 共15页
最新hbase面试题Miles资料Word格式文档下载.docx_第9页
第9页 / 共15页
最新hbase面试题Miles资料Word格式文档下载.docx_第10页
第10页 / 共15页
最新hbase面试题Miles资料Word格式文档下载.docx_第11页
第11页 / 共15页
最新hbase面试题Miles资料Word格式文档下载.docx_第12页
第12页 / 共15页
最新hbase面试题Miles资料Word格式文档下载.docx_第13页
第13页 / 共15页
最新hbase面试题Miles资料Word格式文档下载.docx_第14页
第14页 / 共15页
最新hbase面试题Miles资料Word格式文档下载.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

最新hbase面试题Miles资料Word格式文档下载.docx

《最新hbase面试题Miles资料Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《最新hbase面试题Miles资料Word格式文档下载.docx(15页珍藏版)》请在冰点文库上搜索。

最新hbase面试题Miles资料Word格式文档下载.docx

crud)

RegionServer职责

1、RegionServer维护Master分配给它的region,处理对这些region的IO请求

2、RegionServer负责切分在运行过程中变得过大的region

hbase写数据的原理是什么?

1、客户端向hregionServer请求写数据 

2、hregionServer将数据先写入hlog中。

3、hregionServer将数据后写入memstore中。

4、当内存中的数据达到阈值64M的时候,将数据Flush到硬盘中,并同时删除内存和hlog中的历史数据。

5、将硬盘中数据通过HFile来序列化,再将数据传输到HDFS进行存储。

并对Hlog做一个标记。

6、当HDFS中的数据块达到4块的时候,Hmaster将数据加载到本地进行一个合并(如果合并后数据的大小小于256M则当数据块再次达到4块时(包含小于256M的数据块)将最新4块数据块再次进行合并,此时数据块大于256M)。

7、若数据块大于256M,则将数据重新拆分,将分配后的region重新分配给不同的hregionServer进行管理。

8、当hregionServer宕机后,将hregionServer上的hlog重新分配给不同的hregionServer进行加载(修改.META文件中关于数据所在server的信息)。

注意:

hlog会同步到HDFS中。

读数据的流程(参考下图):

1、通过zk来获取ROOT表在那个节点上,然后进一步通过-ROOT表和-META表来获取最终的位置信息。

2、数据从内存和硬盘合并后返回到客户端。

HBase过滤器实现原则

采用bloomfilter进行过滤,BloomFilter是一种空间效率很高的随机数据结构

(1)BLOOMFILTER在HBase的作用

HBase利用BLOOMFILTER来提供随机读(GET)的性能,对于顺序读(Scan),设置BLOOMFILTER是没有作用的。

(2)BLOOMFILTER在HBase的开销

BLOOMFILTER是一个列族级别的配置,如果你表中设置了BLOOMFILTER,那么HBase在生成StoreFile时候包含一份BLOOMFILTER的结构数据,称为MetaBlock;

开启BLOOMFILTER会有一定的存储以及内存的开销。

(3)BLOOMFILTER如何提供随机读(GET)的性能

对于某个region的随机读,HBase会遍历读memstore及storefile(按照一定的顺序),将结果合并返回给客户端。

如果你设置了bloomfilter,那么在遍历读storefile时,就可以利用bloomfilter,忽略某些storefile。

(4)Region的StoreFile数目越多,BLOOMFILTER效果越好

(5)Region下的storefile数目越少,HBase读性能越好

Hbase在进行模型设计时重点在什么地方?

一张表中定义多少个ColumnFamily

最合适?

为什么?

具体看表的数据,一般来说划分标准是根据数据访问频度,如一张表里有些列访问相对频繁,而另一些列访问很少,这时可以把这张表划分成两个列族,分开存储,提高访问效率

如何提高HBase客户端的读写性能?

请举例说明。

①开启bloomfilter过滤器,开启bloomfilter比没开启要快3、4倍

②Hbase对于内存有特别的嗜好,在硬件允许的情况下配足够多的内存给它

③通过修改hbase-env.sh中的

exportHBASE_HEAPSIZE=3000#这里默认为1000m

④增大RPC数量

通过修改hbase-site.xml中的

hbase.regionserver.handler.count属性,可以适当的放大。

默认值为10有点小

(3) 

修改java虚拟机属性

替换掉默认的垃圾回收器,因为默认的垃圾回收器在多线程环境下会有更多的wait等待 

HBase的rowkey的设计原则

rowkey长度原则

rowkey是一个二进制码流,可以是任意字符串,最大长度 

64kb 

,实际应用中一般为10-100bytes,以 

byte[] 

形式保存,一般设计成定长。

建议越短越好,不要超过16个字节,原因如下

rowkey散列原则

建议将rowkey的高位作为散列字段,由程序随机生成,低位放时间字段

rowkey唯一原则

必须在设计上保证其唯一性,

Hbase的rowkey怎么创建比较好?

RowKey设计:

应该具备以下几个属性

散列性:

散列性能够保证相同相似的rowkey聚合,相异的rowkey分散,有利于查询

简短性:

rowkey作为key的一部分存储在HFile中,如果为了可读性将rowKey设计得过长,那么将会增加存储压力

唯一性:

rowKey必须具备明显的区别性

建议将HBase列族的数量设置的越少越好。

对于两个或两个以上的列族HBase并不能处理的很好。

按照业务特点,把数据归类,不同类别的放在不同列族

HBASE内部机制

Hbase是一个能适应联机业务的数据库系统

物理存储:

hbase的持久化数据是存放在hdfs上

存储管理:

一个表是划分为很多region的,这些region分布式地存放在很多regionserver上

Region内部还可以划分为store,store内部有memstore和storefile

版本管理:

hbase中的数据更新本质上是不断追加新的版本,通过compact操作来做版本间的文件合并

Region的split

集群管理:

Zookeeper作用在于:

1、hbaseregionserver向zookeeper注册,提供hbaseregionserver状态信息(是否在线)。

2、hmaster启动时候会将hbase系统表-ROOT-加载到zookeepercluster,通过zookeepercluster可以获取当前系统表.META.的存储所对应regionserver信息。

HMaster的作用:

∙为Regionserver分配region

∙负责Regionserver的负载均衡

∙发现失效的Regionserver并重新分配其上的region

∙HDFS上的垃圾文件回收

∙处理schema更新请求

HRegionServer作用:

∙维护master分配给他的region,处理对这些region的io请求

∙负责切分正在运行过程中变的过大的region

HBASE过滤器实现原则

HBase提供了一个API,你可以用来实现定制过滤器。

多个过滤器也可以捆绑在一起使用。

可以在读过程最开始的地方,基

于行健进行过滤处理。

此后,也可以基于HFile读出的KeyValues进行过滤处理。

过滤器必须实现HBaseJar包中的Filter

接口,或者继承扩展一个实现了该接口的抽象类。

我们推荐继承扩展FilterBase抽象类,这样你不需要写样板代码。

继承

扩展其他诸如CompareFilter类也是一个选择,同样可以正常工作。

当读取一行时该接口有下面的方法在多个地方可以调

过滤器有什么用途:

增强hbase查询数据的功能

减少服务端返回给客户端的数据量

描述HBase,zookeeper搭建过程

解压缩

进入zookeeper-3.4.9目录

l拷贝conf/zoo_sample.cfg

cpconf/zoo_sample.cfgconf/zoo.cfg

l编辑配置文件conf/zoo.cfg

#Thenumberofmillisecondsofeachtick

tickTime=2000

#Thenumberofticksthattheinitial

#synchronizationphasecantake

initLimit=10

#Thenumberofticksthatcanpassbetween

#sendingarequestandgettinganacknowledgement

syncLimit=5

#thedirectorywherethesnapshotisstored.

#donotuse/tmpforstorage,/tmphereisjust

#examplesakes.

dataDir=/home/bigdata/software/zookeeper-3.4.9/zookeeper_data

#theportatwhichtheclientswillconnect

clientPort=2181

#ThenumberofsnapshotstoretainindataDir

autopurge.snapRetainCount=5

#Purgetaskintervalinhours

autopurge.purgeInterval=1

l启动zookeeper

bin/zkServer.shstart

在master机器上解压缩hbase-1.2.4-bin.tar.gz

l进入hbase-1.2.4目录

l编辑conf/hbase-env.sh文件

编辑conf/hbase-site.xml文件

编辑conf/regionservers文件

slave01

slave02

l把master机器上的hbase-1.2.4目录拷贝到slave01和slave02上

scp-r/home/bigdata/software/hbase-1.2.4slave01:

/home/bigdata/software/

scp-r/home/bigdata/software/hbase-1.2.4slave02:

l启动HDFS

/home/bigdata/software/hadoop-2.7.3/sbin/start-dfs.sh

l在master上启动HBase

bin/start-hbase.sh

l查看是否启动成功

http:

//master:

16010/master-status

客户端读取信息流程

(1)client要读取信息,先查询下client端的cache中是否存在数据,如果存在,刚直接返回数据。

如果不存在,则进入到zookeeper,查找到里面的相应数据存在的Root表中的地址。

(2)BlockCache;

设计用于读入内存频繁访问的数据,每个列族都有

(3)通过数据存在ROOT表中地址找到.META,最终找到HRegion。

找到HRegion后,它会先访问MemStore中是否存在数据,如果存在,则直接读取。

如果没有,就再到HFile中查找数据,并将数据放到MemStore

(4)最后数据返回到客户端显示。

HBASE写数据原理

1由于Hbase中默认的刷写方式是隐式刷写,所以你在put()数据时,它会自动保存到HRegion上,但当你批量处理数据时,它会将数据先保存到client端的cache中。

当你关闭隐式刷写时,你put()的数据则会保存到clientcache中,直到你调用刷写命令时,才会保存到HRegion中。

2在HRegion部分的存储:

要写入的数据会先写到HMemcache和Hlog中,HMemcache建立缓存,Hlog同步Hmemcache和Hstore的事务日志,发起FlushCache时,数据持久化到Hstore中,并清空HMemecache。

3hbase正常写入数据时,会写入两个地方:

预写式日志(WAL_or_Hlog)和Memstore(内存里的写入缓冲区),首先写入cache,并记入WAL,然后才写入MemStore,(都写入才认为动作完成)保证数据的持久化,Hbase中的数据永久写入之前都在MemStore,当MemStore填满后,其中的数据就会写入硬盘生成HFile,

4HBase写数据,如果在写入HStore是发生系统异常,就可以从HLog中恢复数据,重新写HStore中。

.HBase宕机如何处理

答:

宕机分为HMaster宕机和HRegionServer宕机,如果是HRegionServer宕机,HMaster会将其所管理的region重新分布到其他活动的RegionServer上,由于数据和日志都持久在HDFS中,该操作不会导致数据丢失。

所以数据的一致性和安全性是有保障的。

如果是HMaster宕机,HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的MasterElection机制保证总有一个Master运行。

即ZooKeeper会保证总会有一个HMaster在对外提供服务。

hbase怎么预分区?

建表时可以通过shell命令预分区,也可以在代码中建表做预分区

hbase怎么给web前台提供接口来访问(HTABLE可以提供对HBase的访问,但是怎么查询同一条记录的多个版本数据)?

使用HTable来提供对HBase的访问,可以使用时间戳来记录一条数据的多个版本。

htableAPI有没有线程安全问题,在程序中是单例还是多例?

[M4] 

多例:

当多线程去访问同一个表的时候会有。

HBase集群安装注意事项

(2)

主要hbase-env.sh配置文件,HBASE_MANAGES_ZK=false,设置外部HBase使用外部的ZK,默认情况下是true。

Hbase中的metastore用来做什么的?

Hbase的metastore是用来保存数据的,其中保存数据的方式有有三种第一种与第二种是本地储存,第三种是远程储存这一种企业用的比较多

4、HBase在进行模型设计时重点在什么地方?

一张表中定义多少个ColumnFamily最合适?

为什么?

一般来说划分标准是根据数据访问频度,如一张表里有些列访问相对频繁,而另一些列访问很少,这时可以把这张表划分成两个列族,分开存储,提高访问效率

5、如何提高HBase客户端的读写性能?

HBase接收数据,如果短时间导入数量过多的话就会被锁,该怎么办?

集群数16台,高可用性的环境。

参考:

通过调用HTable.setAutoFlush(false)方法可以将HTable写客户端的自动flush

关闭,这样可以批量写入数据到HBase,而不是有一条put就执行一次更新,只有当

put填满客户端写缓存时,才实际向HBase服务端发起写请求。

默认情况下autoflush

是开启的

421.怎么知道hbase表里哪些做索引?

哪些没有做索引?

提示:

有且仅有一个:

rowkey,所以hbase得快速查找建立在rowkey的基础的,而不能像一般的关系型数据库那样建立多个索引来达到多条件查找的效果。

、简述HBase的瓶颈

HBase的瓶颈就是硬盘传输速度。

Hbase的

所有操作都是追加插入操作。

Hbase是一种日志集数据库。

它的存储方式,像是日志文

件一样。

它是批量大量的往硬盘中写,通常都是以文件形式的读写。

这个读写速度,就

取决于硬盘与机器之间的传输有多快。

2、客户端向hregionServer请求写数据 

The铏氭嫙Xi撳簱(4)Region的StoreFile数目越多,BLOOMFILTER效果越好

TheXian侀€?

LuGui?

The鐗╄祫Cong㈣Chuai具体看表的数据,一般来说划分标准是根据数据访问频度,如一张表里有些列访问相对频繁,而另一些列访问很少,这时可以把这张表划分成两个列族,分开存储,提高访问效率

TheQian撳瓨Congplank綍如何提高HBase客户端的读写性能?

Doesthe鍐gocrazy棌鍖?

The闄勫姞XiFeng€?

鏈嶅?

Gansentencethe細Qi濋殰LuGui敤HBa

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2