繁体   English   中英

是否可以从hbase转换为spark rdd效率?

[英]is it possible to convert from hbase to spark rdd efficiency?

我在hbase中有一个很大的项目数据集,我想将其加载到spark rdd中进行处理。 我的理解是hbase针对hadoop上的低延迟单项搜索进行了优化,因此我想知道是否有可能在hbase中有效查询1亿个项目(大小约为10Tb)?

这是使Spark和HBase协同工作的一些一般建议。

数据托管和分区

Spark避免了改组:如果您的Spark worker和HBase区域位于同一台机器上,Spark将根据区域创建分区。 HBase中良好的区域分割将映射到Spark中的良好分区。 如果可能,请考虑处理行键和区域拆分。

Spark中的操作与HBase中的操作

经验法则:仅使用HBase扫描,并使用Spark执行其他所有操作。

为了避免在Spark操作中拖尾,您可以考虑对分区进行处理。 例如:您可以在HBase扫描的Rowkey或Rowkey前缀上加入2个Spark rdd,而无需进行任何改组。

Hbase配置tweeks

该讨论有点陈旧(某些配置不是最新的),但仍然很有趣: http : //community.cloudera.com/t5/Storage-Random-Access-HDFS/How-to-optimise-Full-Table-Scan -FTS-in-HBase / td-p / 97

而且下面的链接也有一些线索: http : //blog.asquareb.com/blog/2015/01/01/configuration-parameters-that-c​​an-influence-hbase-performance/

您可能会发现多个来源(包括上述来源)建议更改扫描仪缓存配置,但这仅适用于HBase <1.x

我们在Splice Machine中有这个确切的问题。 根据我们的测试,我们发现了以下内容。

  1. 如果您尝试从spark / mapreduce执行远程扫描,则HBase会遇到性能挑战。

  2. 大型扫描通过强制进行垃圾回收而损害了正在进行的小型扫描的性能。

  3. OLTP和OLAP查询与资源之间没有明确的资源管理界限。

我们最终编写了一个自定义读取器,该读取器直接从HDFS读取HFile,并在扫描期间与memstore执行增量增量。 这样,Spark可以对大多数OLAP应用程序足够快地执行。 我们还分离了资源管理,因此OLAP资源是通过YARN(本地)或Mesos(云)分配的,因此它们不会干扰正常的OLTP应用程序。

祝您工作顺利。 Splice Machine是开源的,欢迎您查看我们的代码和方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM