Spark On HBase

一.前言

MapReduce早已经对接了HBase,以HBase作为数据源,完成批量数据的读写。如今继MapReduce之后的Spark在大数据领域有着举足轻重的地位,无论跑批,流处理,甚至图计算等都有它的用武之地。Spark对接HBase成为不少用户的需求。

二.Spark On HBase

1.可以解决的问题

Spark和HBase无缝对接意味着我们不再需要关心安全和RDD与HBase交互的细节。更方便应用Spark带来的批处理,流处理等能力。比如以下常见的应用场景:

以HBase作为存储,通过Spark对流式数据处理。

以HBase作为存储,完成大规模的图或者DAG的计算。

通过Spark对HBase做BulkLoad操作

同Spark SQL对HBase数据做交互式分析

2.社区相关的工作

目前已经有多种Spark对接HBase的实现,这里我们选取三个有代表的工作进行分析:

2.1 华为: Spark-SQL-on-HBase

特点:

扩展了Spark SQL的parse功能来对接HBase。通过coprocessor和自定义filter来提升读写性能。

优点:

扩展了对应的cli功能,支持Scala shell和Python shell

多种性能优化方式,甚至支持sub plan到coprocessor实现partial aggregation.

支持Java和Python API

支持row key组合

支持常用DDL和DML(包括bulkload,但不支持update)

缺点:

不支持支持基于时间戳和版本的查询

不支持安全

row key支持原始类型或者String,不支持复杂数据类型

使用示例:

在HBase中创建表,并写入数据

使用Spark SQL创建表并与HBase表建立映射

查询

2.2 Hortonworks: Apache HBase Connector

特点:

以简单的方式实现了标准的Spark Datasource API,使用Spark Catalyst引擎做查询优化。同时通过scratch来构建RDD,也实现了许多常见的查询优化。

优点:

native avro支持

谓词下推和分区裁剪

支持row key组合

支持安全

缺点:

SQL语法不够丰富,只支持spark sql原有的语法

只支持java原始类型

不支持多语言API

使用示例:

定义 HBase Catalog

使用SQL查询

2.3 Cloudrea: SparkOnHBase

特点:

通过简单的接口实现链接Spark与HBase, 支持常用的bulk读写。架构图如下:

优点

支持安全

通过get或者scan直接生成rdd, 并可以使用API完成更高级的功能

支持组合rowkey

支持多种bulk操作

为spark和 spark streaming提供相似的API

支持谓词下推优化

缺点

不支持复杂数据类型

SQL只支持spark sql原有的语法

使用示例

直接使用scan创建一个RDD

创建一个RDD并把RDD的内容写入HBase

2.4 综合对比

3. 最后

社区中有不少Spark on HBase的工作,出发点都是为了提供更易用,更高效的接口。其中Cloudrea的SparkOnHbase更加灵活简单,在2015年8月被提交到HBase的主干(trunk)上,模块名为HBase-Spark Module,目前准备在HBASE 2.0 正式Release, 相信这个特性一定是HBase新版本的一个亮点。 于此同时云HBase也会与社区同步发展,使用包括但不限于Spark On HBase的新特性,届时欢迎大家尝鲜。如若文章中有不准确的描述,请多多指正,谢谢!

4. 参考

https://hortonworks.com/blog/spark-hbase-dataframe-based-hbase-connector/

http://blog.cloudera.com/blog/2014/12/new-in-cloudera-labs-sparkonhbase/

https://issues.apache.org/jira/browse/HBASE-13992

http://blog.madhukaraphatak.com/introduction-to-spark-two-part-6/

https://jaceklaskowski.gitbooks.io/mastering-apache-spark/spark-sql-catalyst.htmlh

大家工作学习遇到HBase技术问题,把问题发布到HBase技术社区论坛http://hbase.group,欢迎大家论坛上面提问留言讨论。想了解更多HBase技术关注HBase技术社区公众号(微信号:hbasegroup),非常欢迎大家积极投稿。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180713G09GWO00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券