个中 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
推荐阅读
【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞?岁终已至,更多的商家都捋臂将拳竞相推出更多的促销,力争在硬件市场获得年关的收官之战中取得好成就。并且《绝地求生:大>>>详细阅读
本文标题:大数据查询——HBase 读写设计与实践
地址:http://www.17bianji.com/lsqh/39994.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示