作家
登录

大数据查询——HBase 读写设计与实践

作者: 来源: 2017-12-20 16:04:59 阅读 我要评论

个中 tina.keytab.hbase 是将 tina.keytab 复制并重定名而得。因为 Spark 不许可同一个文件反复上传。

拜访 HBase 集群的 60010 端口 web,可以看到 region 分布情况。

Read from HBase

本文基于 spring boot 框架来开辟 web 端拜访 HBase 内数据。

use connection pool(应用连接池)

如上图,经历 N 次累计测试后,各个 region 上的 Requests 数较为接近,相符负载均衡设计之初。

创建连接是一个比较重的操作,在实际 HBase 工程中,我们惹人连接池来共享 zk 连接,meta 信息缓存,region server 和 master 的连接。

Step3:create hfile and bulk load to HBase

也可以经由过程以下办法,覆盖默认线程池。

process query

Step1: 根据萌芽前提,肯定 RowKey 前缀

根据 3.3 RowKey 设计介绍,HBase 的写和读都遵守该设计规矩。此处我们采取雷同的办法,将 web 调用方传入的萌芽前提,转化查对应的 RowKey 前缀。例如,萌芽 check 表传递过来的 check_id=A208849559,生成前缀 7+7c9498b4a83974da56b252122b9752bf。

Step2:肯定 scan 范围

A208849559 对应的萌芽结不雅数据即在 RowKey 前缀为 7+7c9498b4a83974da56b252122b9752bf 对应的 RowKey 及 value 中。

Step3:萌芽结不雅构成返回对象

遍历 ResultScanner 对象,将每一行对应的数据封装成 table entity,构成 list 返回。

测试

大年夜原始数据中随机抓取 1000 个 check_id,用于模仿测试,持续提议 3 次请求数为 2000(200 个线程并发,轮回 10 次),平均响应时光为 51ms,缺点率为 0。


踩坑记录

1、kerberos 认证问题

如不雅集群开启了安然认证,那么在进行 Spark 提交功课以及拜访 HBase 时,均须要进行 kerberos 认证。

本文采取 yarn cluster 模式,像提交通俗功课一样,可能会报以下缺点。

定位到 HbaseKerberos.java:18,代码如下:

这是因为 executor 在进行 HBase 连接时,须要从新认证,经由过程 --keytab 上传的 tina.keytab 并未被 HBase 认证法度榜样块获取到,所以认证的 keytab 文件须要别的经由过程 --files 上传。示意如下

如不雅 sc 作为类的成员变量,在办法中被引用,则加 transient 关键字,使其不被序列化。

解决办法二:

将 sc 作为办法参数传递,同时使涉及 RDD 操作的类 implements Serializable。 代码中采取第二种办法。详见代码。

3、批量请求测试

或者

查看下面 issue 以及一次排盘考题的过程,可能是 open file 跨越限制。

  • https://github.com/spring-projects/spring-boot/issues/1106
  • http://mp.weixin.qq.com/s/34GVlaYDOdY1OQ9eZs-iXg

应用 ulimit-a 查看每个用户默认打开的文件数为 1024。

在体系文件 /etc/security/limits.conf 中修改┞封个数量限制,在文件中参加以下内容, 即可解决问题。

  • soft nofile 65536
  • hard nofile 65536


  推荐阅读

  Ryzen 5大战八代酷睿i5 你最关心的我都测了

【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞?岁终已至,更多的商家都捋臂将拳竞相推出更多的促销,力争在硬件市场获得年关的收官之战中取得好成就。并且《绝地求生:大>>>详细阅读


本文标题:大数据查询——HBase 读写设计与实践

地址:http://www.17bianji.com/lsqh/39994.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)