Hbase FAQ热门问答小集合

Stella981
• 阅读 674

**这个问答是根据云栖社区上对HBase的FAQ中整理出来的。
**

问:Hbase大量写入很慢,一个列族,每个200多列,一秒写30000条数据,使用mutate添加数据,clientbuffer缓存大小为10M,四台测试机,128G内存,分配60G给Hbase,该怎么优化?

答:可以使用bulkload方式写入,通过mr程序生产hfile文件,直接用bulkload导入生成的hfile文件,速度非常快。

问:hbase大规模的丢数据,整个数据库系统都挂掉了,然后发错误日志,说Hdfs内部的配置文件,hbase.version,丢失了。大家有遇到过类似的问题吗?自建的集群。

答:检查一下一些服务的端口有没有暴露到公网,是不是集群被攻击了。自建还是有一些风险的。然后检查下自己的hbase配置。看看数据的备份情况。

问:start-hbase.sh中有这么一段:

if [ "$distMode" == 'false' ]

distMode为false时表示单机,true时表示集群,看脚本好像是单机只启动master,是否是说单机环境下不需要zookeeper,regionserver这些的意思,可是网上搜了下又有人说单机环境下master和 zookeeper会运行在同一个jvm。有谁对hbase比较熟悉的可以解答下吗?

答:单机模式所有的服务都是一个jvm 进程启动,底层的文件系统是本地文件系统,该jvm进程包括有zookeeper,hmaster和regionserver。其他模式需要手动分别启动zk,hmaster,regionserver到不同的进程中。

问:Hbase 在大规模用户画像标签,标签有近百个左右,适合吗?

答:hbase就是适用这种几百几千级别的场景,甚至可以支持百万列级别的,但是建议常用的小于10w列。

问:hbase 2 内置现在的事务做的怎么样?支持到什么隔离级别?如果有的话,hbase分布式事务依靠什么做的?

答:hbase事务目前还是region级别,hbase是可以做到跨行事务,但是只限于region级别。

问:批量删除hbase的数据用什么方式比较快

答:最快的方式就是直接设置TTL,如果业务无法满足,建议直接调度delete接口,性能也较快。

问:HBase 2.0 的查询性能怎样优化的?

答:在HBase的读和写链路中,均会产生大量的内存垃圾和碎片。比如说写请求时需要从Connection的ByteBuffer中拷贝数据到KeyValue结构中,在把这些KeyValue结构写入memstore时,又需要将其拷贝到MSLAB中,WAL Edit的构建,Memstore的flush等等,都会产生大量的临时对象,和生命周期结束的对象。随着写压力的上升,GC的压力也会越大。读链路也同样存在这样的问题,cache的置换,block数据的decoding,写网络中的拷贝等等过程,都会无形中加重GC的负担。而HBase2.0中引入的全链路offheap功能,正是为了解决这些GC问题。大家知道Java的内存分为onheap和offheap,而GC只会整理onheap的堆。全链路Offheap,就意味着HBase在读写过程中,KeyValue的整个生命周期都会在offheap中进行,HBase自行管理offheap的内存,减少GC压力和GC停顿。

写链路的offheap包括以下几个优化:

  • 在RPC层直接把网络流上的KeyValue读入offheap的bytebuffer中

  • 使用offheap的MSLAB pool

  • 使用支持offheap的Protobuf版本(3.0+)

读链路的offheap主要包括以下几个优化:

  • 对BucketCache引用计数,避免读取时的拷贝

  • 使用ByteBuffer做为服务端KeyValue的实现,从而使KeyValue可以存储在offheap的内存中

  • 对BucketCache进行了一系列性能优化

问:Hbase的bulkload有全量与增量的概念么?

答:snapshot 做全量 ,然后bulkload 做增量。

问:Hive on hbase 分析10亿以上数据性能问题?

答:性能会损失,hive支持通过类似sql语句的语法来操作hbase中的数据, 但是速度较慢。

问:直接读HFile与通过Hbase客户端读,性能提升多少?

答:全表扫使用spark读HFile,比直接读hbase性能提升两倍以上,并且不会影响hbase其他读写使用。

问:HBase region个数如何划分?

答:最好是你的regionserver的倍数 ,会自动的分配到每个服务器 ,注意rowkey要分散。参考文档:https://help.aliyun.com/document\_detail/71787.html

希望对读者有帮助。

——END——Hbase FAQ热门问答小集合

文章不错?点个【在看】吧!** 👇**

本文分享自微信公众号 - 大数据技术与架构(import_bigdata)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Hive 数据导入HBase的2种方法详解
最近经常被问到这个问题,所以简单写一下总结。Hive数据导入到HBase基本有2个方案:  1、HBase中建表,然后Hive中建一个外部表,这样当Hive中写入数据后,HBase中也会同时更新  2、MapReduce读取Hive数据,然后写入(API或者Bulkload)到HBase1、Hive外部表创
Stella981 Stella981
3年前
HBase 在HDFS上的物理目录结构
根目录配置项<namehbase.rootdir</name默认“/hbase”根级文件/hbase/WALs被HLog实例管理的WAL文件。/hbase/WALs/datahbase.com,60020,1443159380730对于每个HregionServer,日志目录中都包含一个对应的子目录
Wesley13 Wesley13
3年前
Hbase权限控制
Hbase权限配置、使用手册1Hbase权限控制简介Hbase的权限控制是通过AccessControllerCoprocessor协处理器框架实现的,可实现对用户的RWXCA的权限控制。2配置配置hbasesite.xmlCM主页→点击hbase(进入Hbase
Stella981 Stella981
3年前
HBase启动失败
如果在hbase的shell中输入了status报错,hbase(main):001:0statusERROR:org.apache.hadoop.hbase.ipc.ServerNotRunningYetException:Serverisnotrunningyetatorg.apache.ha
Stella981 Stella981
3年前
HBase & MongoDB
1.Mongodbbson文档型数据库,整个数据都存在磁盘中,hbase是列式数据库,集群部署时每个familycolumn保存在单独的hdfs文件中。2.Mongodb主键是“\_id”,主键上面可以不建索引,记录插入的顺序和存放的顺序一样,hbase的主键就是rowkey,可以是任意字符串(最大长度是64KB,实际应用中长度一般为1010
Stella981 Stella981
3年前
Hbase基础篇
hbase存储:HBase存储数据其底层使用的是HDFS来作为存储介质,HBase的每一张表对应的HDFS目录上的一个文件夹,文件夹名以HBase表进行命名(如果没有使用命名空间,则默认在default目录下),在表文件夹下存放在若干个Region命名的文件夹,Region文件夹中的每个列簇也是用文件夹进行存储的,每个列簇中存储就是实际的数据,以HF
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这