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

w8rqjzmb  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(465)

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

4bbkushb

4bbkushb1#

下面是一些让spark和hbase协同工作的一般建议。
数据集中和分区
spark避免洗牌:如果spark worker和hbase区域位于同一台计算机上,spark将根据区域创建分区。hbase中良好的区域分割将Map到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-can-influence-hbase-performance/
您可能会发现多个源(包括上面的源)建议更改扫描仪缓存配置,但这仅适用于hbase<1.x的情况

8tntrjer

8tntrjer2#

我们在拼接机上遇到了这个问题。根据我们的测试,我们发现了以下几点。
如果您试图从spark/mapreduce执行远程扫描,hbase会遇到性能挑战。
大的扫描通过强制垃圾收集而影响正在进行的小扫描的性能。
oltp和olap查询和资源之间没有明确的资源管理分界线。
最后,我们编写了一个自定义读取器,它直接从hdfs读取hfiles,并在扫描期间使用memstore执行增量增量增量。有了这个,spark可以对大多数olap应用程序执行的足够快。我们还分离了资源管理,因此olap资源是通过yarn(内部部署)或mesos(云)分配的,因此它们不会干扰正常的oltp应用程序。
祝你好运。拼接机是开源的,欢迎您 checkout 我们的代码和方法。

相关问题