使用 Spark 分析 HBase 的数据

过往记忆 发表了文章 • 2 个评论 • 307 次浏览 • 2018-11-28 11:08 • 来自相关话题

HBase具有很好的在线入库和查询能力,不过在分析上面有比较大的欠缺,这篇文章主要介绍如何使用Spark对HBase中数据做复杂分析。

HBase查询分析的现状
 
HBase原生API:HBase原生API适合基于row key做点查,这个是HBase最擅长的查询场景Phoenix:Phoenix作为HBase的SQL层,使用二级索引的技术,擅长多条件组合查询;Phoenix没有自己的计算资源,类似groupby这样的复杂查询需要借助HBase的协处理器来完成,这样一方面性能不好,同时会影响HBase集群的稳定性;Spark:具有丰富的算子支持复杂分析,使用Spark集群的计算资源,通过并发分析的方式可以提高性能,同时不影响HBase集群的稳定性。

Spark分析HBase的方式对比

Spark分析HBase数据有“RDD API”、“SQL API”、“HFILE”三种方式,相关对比如下:





 
对于数据动态更新增加的小表推荐使用SQL API的方式,可以有效的优化分析,减少对HBase集群稳定性的影响;对于静态表或者全量静态表的分析推荐使用分析HFILE的方式直读HDFS,这样可以完全不影响HBase集群稳定性;不推荐使用RDD API 的方式,这种方式一方没有优化性能差,同时在高并发以及表数据量大时,会严重影响HBase集群的稳定性,从而影响在线业务。

 三种方式的具体使用

阿里云HBase团队为大家提供了一个github项目供大家参考使用上面的三种方式来开发Spark分析HBase的程序,项目地址:

https://github.com/lw309637554/alicloud-hbase-spark-examples

依赖项:需要下载云HBase及云Phoenix的client包
分析HFILE:
需要先开通云HBase的HDFS访问权限,参考文档在hbase shell中对表生成snapshot表“snapshot 'sourceTable', ‘snapshotName'”在项目中配置自己的hdfs-sit.xml文件,然后通过直读HDFS的方式分析snapshot表

具体的example
RDD API对应:org.apache.spark.hbase.NativeRDDAnalyzeSQL API对应:org.apache.spark.sql.execution.datasources.hbase.SqlAnalyze分析HFILE对应:org.apache.spark.hfile.SparkAnalyzeHFILE
  查看全部
HBase具有很好的在线入库和查询能力,不过在分析上面有比较大的欠缺,这篇文章主要介绍如何使用Spark对HBase中数据做复杂分析。

HBase查询分析的现状
 
  • HBase原生API:HBase原生API适合基于row key做点查,这个是HBase最擅长的查询场景
  • Phoenix:Phoenix作为HBase的SQL层,使用二级索引的技术,擅长多条件组合查询;Phoenix没有自己的计算资源,类似groupby这样的复杂查询需要借助HBase的协处理器来完成,这样一方面性能不好,同时会影响HBase集群的稳定性;
  • Spark:具有丰富的算子支持复杂分析,使用Spark集群的计算资源,通过并发分析的方式可以提高性能,同时不影响HBase集群的稳定性。


Spark分析HBase的方式对比

Spark分析HBase数据有“RDD API”、“SQL API”、“HFILE”三种方式,相关对比如下:

menu.saveimg_.savepath20181128110650_.jpg

 
对于数据动态更新增加的小表推荐使用SQL API的方式,可以有效的优化分析,减少对HBase集群稳定性的影响;对于静态表或者全量静态表的分析推荐使用分析HFILE的方式直读HDFS,这样可以完全不影响HBase集群稳定性;不推荐使用RDD API 的方式,这种方式一方没有优化性能差,同时在高并发以及表数据量大时,会严重影响HBase集群的稳定性,从而影响在线业务。

 三种方式的具体使用

阿里云HBase团队为大家提供了一个github项目供大家参考使用上面的三种方式来开发Spark分析HBase的程序,项目地址:

https://github.com/lw309637554/alicloud-hbase-spark-examples

依赖项:需要下载云HBase及云Phoenix的client包
分析HFILE:
  • 需要先开通云HBase的HDFS访问权限,参考文档
  • 在hbase shell中对表生成snapshot表“snapshot 'sourceTable', ‘snapshotName'”
  • 在项目中配置自己的hdfs-sit.xml文件,然后通过直读HDFS的方式分析snapshot表


具体的example
  • RDD API对应:org.apache.spark.hbase.NativeRDDAnalyze
  • SQL API对应:org.apache.spark.sql.execution.datasources.hbase.SqlAnalyze
  • 分析HFILE对应:org.apache.spark.hfile.SparkAnalyzeHFILE

 

Spark 通过 加载 Hfile 对 Hbase 数据进行分析

过往记忆 回复了问题 • 2 人关注 • 1 个回复 • 326 次浏览 • 2018-11-28 11:00 • 来自相关话题

sqoop同步mysql数据到hbase

beyond 回复了问题 • 2 人关注 • 1 个回复 • 158 次浏览 • 2018-11-27 19:11 • 来自相关话题

Hbase rowkey设计问题

cookerjiang 回复了问题 • 2 人关注 • 2 个回复 • 322 次浏览 • 2018-11-25 10:34 • 来自相关话题

HBase2.0的bulkload是否有人写过么?

ProgramGeek 回复了问题 • 2 人关注 • 1 个回复 • 156 次浏览 • 2018-11-23 18:44 • 来自相关话题

客户端连接hbase需要开放什么端口?与regionserver建连时使用随机端口?

回复

CrisLee 回复了问题 • 1 人关注 • 1 个回复 • 219 次浏览 • 2018-11-23 11:55 • 来自相关话题

入库时数据超过HBASE块大小

回复

zhangwei168168 发起了问题 • 1 人关注 • 0 个回复 • 152 次浏览 • 2018-11-23 11:12 • 来自相关话题

hbase 如何建设数据仓库

回复

jingcaolyh 发起了问题 • 1 人关注 • 0 个回复 • 162 次浏览 • 2018-11-20 15:20 • 来自相关话题

HBase怎样进行rowKey时间后缀的范围查询

wwqu1020 回复了问题 • 3 人关注 • 2 个回复 • 372 次浏览 • 2018-11-20 13:58 • 来自相关话题

HBase Major Compaction没有清除Delete标志

stigahuang 回复了问题 • 5 人关注 • 3 个回复 • 331 次浏览 • 2018-11-20 10:37 • 来自相关话题

hbase 在做大表(10t左右)的disable 的时候,为什么有时会发生其余表写入变慢的情况呢

WangYQ 回复了问题 • 5 人关注 • 5 个回复 • 370 次浏览 • 2018-11-19 13:52 • 来自相关话题

HBase RegionServer机器宕机,会影响原来该regionserver上的读写吗

WangYQ 回复了问题 • 3 人关注 • 2 个回复 • 145 次浏览 • 2018-11-19 13:49 • 来自相关话题

HBase底层KeyValue的Delete和DeleteColumn有什么区别

回复

stigahuang 回复了问题 • 1 人关注 • 1 个回复 • 150 次浏览 • 2018-11-19 09:55 • 来自相关话题

spark 通过 BulkLoad 方式写 hbase 数据顺序问题

laugh 回复了问题 • 4 人关注 • 4 个回复 • 445 次浏览 • 2018-11-16 20:34 • 来自相关话题

hbase client 报错

panbc 回复了问题 • 2 人关注 • 2 个回复 • 594 次浏览 • 2018-11-16 15:51 • 来自相关话题

HBase启动RegionServer自动关闭

zb 回复了问题 • 3 人关注 • 3 个回复 • 2106 次浏览 • 2018-11-14 17:42 • 来自相关话题

hbase2.0 thrift不能连接

回复

datasir 发起了问题 • 1 人关注 • 0 个回复 • 254 次浏览 • 2018-11-14 10:36 • 来自相关话题

phoenix on hbase scan并行

过往记忆 回复了问题 • 3 人关注 • 2 个回复 • 258 次浏览 • 2018-11-13 14:22 • 来自相关话题


中国HBase技术社区微信公众号:
hbasegroup

欢迎加入HBase生态+Spark社区钉钉大群