前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hbase FAQ热门问答小集合

Hbase FAQ热门问答小集合

作者头像
王知无-import_bigdata
发布2020-03-18 18:03:25
4440
发布2020-03-18 18:03:25
举报

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

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

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

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

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

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

代码语言:javascript
复制
if [ "$distMode" == 'false' ]
then
"$bin"/hbase-daemon.sh --config "${HBASE_CONF_DIR}" $commandToRun master $@
else
"$bin"/hbase-daemons.sh --config "${HBASE_CONF_DIR}" $commandToRun zookeeper
"$bin"/hbase-daemon.sh --config "${HBASE_CONF_DIR}" $commandToRun master
"$bin"/hbase-daemons.sh --config "${HBASE_CONF_DIR}" \
--hosts "${HBASE_REGIONSERVERS}" $commandToRun regionserver
"$bin"/hbase-daemons.sh --config "${HBASE_CONF_DIR}" \
--hosts "${HBASE_BACKUP_MASTERS}" $commandToRun master-backup
fi

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——

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据技术与架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
TDSQL MySQL 版
TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档