gpt4 book ai didi

apache-spark - 确保 hbase 上的数据局部性

转载 作者:行者123 更新时间:2023-12-04 05:17:34 26 4
gpt4 key购买 nike

有没有办法确保我的 spark 执行器与我的 Hbase 区域服务器位于同一位置?在 horton works 的 Spark-on-HBase 中提到如下:

We assume Spark and HBase are deployed in the same cluster, and Spark executors are co-located with region servers

有没有办法达到同样的效果?如果我使用

sparkContext.newHadoopApi()

它会确保数据局部性吗??

最佳答案

我们在 Splice Machine 的经验是,对于在 Spark 中运行许多分析查询和压缩的大型查询和系统,我们将实现良好的局部性 (95+%)。我们在 Yarn 上使用 Spark,其中执行器是动态分配的,并在一段时间不活动后收缩。然而,我们必须解决几个问题。

  1. 跨操作的单一 Spark 上下文。我们构建了一个单一的 spark 上下文服务器,因此我们所有的查询都可以具有有效的资源管理和位置。如果您创建许多 Spark 上下文,执行程序资源可能会被阻止在某些节点上执行。

  2. 如果有人在一段时间不活动后运行一个中等规模的查询,数据所在的所有节点很可能不会动态分配执行程序。

  3. 我们在很大程度上依赖于我们在 Spark 上的压缩的实现和一种直接从 Spark 读取存储文件的方法(与 Hbase 远程扫描相比)以及来自 HBase 内存存储的增量增量。压缩创造了更好的位置和对执行程序任务的需求。存储文件的直接读取允许基于文件位置(2-3 个副本)的位置而不是单个区域服务器(仅 1 个服务器)的本地位置。

  4. 我们编写了自己的拆分机制,因为默认的 hbase 按区域大小拆分会导致长尾和严重的内存问题。例如,我们将有一个包含 6 个区域的表,范围从(20M 到 4 Gigs)。 4 gig 区域将是长尾。某些 Spark 操作期望执行程序能够将整个 4 gig 加载到内存中,从而导致内存问题。通过我们自己的拆分机制,我们实质上限制了要扫描并放入内存中的数据量...

如果您需要有关我们所做工作的更多详细信息,请查看

http://community.splicemachine.com/

我们是开源的,您可以在

查看我们的代码

https://github.com/splicemachine/spliceengine

祝维迪亚好运......

干杯,约翰

关于apache-spark - 确保 hbase 上的数据局部性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38864580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com