gpt4 book ai didi

apache-spark - 从 Titan(在 HBase 上)读取大图到 Spark

转载 作者:行者123 更新时间:2023-12-04 04:35:31 25 4
gpt4 key购买 nike

我正在研究 Titan(在 HBase 上)作为大型分布式图形数据库的候选者。我们需要 OLTP 访问(对图形的快速、多跳查询)和 OLAP 访问(将所有或至少大部分图形加载到 Spark 中进行分析)。

据我所知,我可以使用 Gremlin 服务器来处理 OLTP 样式的查询,其中我的结果集很小。由于我的查询将由 UI 生成,因此我可以使用 API 与 Gremlin 服务器进行交互。到现在为止还挺好。

问题与 OLAP 用例有关。由于 HBase 中的数据将与 Spark 执行器位于同一位置,因此使用 HDFSInputFormat 将数据读入 Spark 会很有效。 .从驱动程序执行 Gremlin 查询然后将数据分发回执行程序是低效的(事实上,考虑到投影图的大小,这是不可能的)。

我发现的最好的指导是来自 Titan GitHub 存储库 (https://github.com/thinkaurelius/titan/issues/1045) 的一个未结束的讨论,它表明(至少对于 Cassandra 后端)标准 TitanCassandraInputFormat应该适用于阅读泰坦表。没有任何关于 HBase 后端的声明。

但是,在阅读有关底层 Titan 数据模型 ( http://s3.thinkaurelius.com/docs/titan/current/data-model.html ) 时,“原始”图形数据的部分似乎是序列化的,没有解释如何从内容重建属性图。

所以,我有两个问题:

1)我上面所说的一切都是正确的,还是我错过/误解了什么?

2) 有没有人设法从 HBase 读取“原始”泰坦图并在 Spark 中重建它(在 GraphX 中或作为数据帧、RDD 等)?如果是这样,你能给我任何指点吗?

最佳答案

大约一年前,我遇到了与您描述的相同的挑战——我们有一个非常大的 Titan 实例,但我们无法在其上运行任何 OLAP 进程。

我已经深入研究了这个主题,但是我发现的任何解决方案( SparkGraphComputerTitanHBaseInputFormat )要么非常慢(在我们的规模中是几天或几周的问题),要么只是有问题和丢失的数据。缓慢的主要原因是他们都使用了 HBase 的主 API,结果证明这是速度瓶颈。

所以我实现了 Mizo - 它是 HBase 上 Titan 的 Spark RDD,绕过 HBase 主 API,并解析 HBase internal data files (称为 HFile)。

我已经在相当大的范围内对其进行了测试——一个包含数千亿个元素的 Titan 图,重约 25TB。

因为它不依赖于 HBase 公开的 Scan API,所以速度要快得多。例如,我提到的图中计算边大约需要 10 小时 .

关于apache-spark - 从 Titan(在 HBase 上)读取大图到 Spark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41121262/

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