【问题标题】:How spark selects cassandra node for read?spark如何选择cassandra节点进行读取?
【发布时间】:2016-08-20 16:30:59
【问题描述】:

我有 N 台机器上有 N 个节点的 Cassandra 集群。此外,我在每台机器上都有 spark worker。为了从 Cassandra 读取数据,我使用的是 Datastax spark-cassandra 连接器。当我设置工作人员(独立模式)时,我只为他们说主机。在驱动程序中,我通过 spark.cassandra.connection.host 属性指定 Cassandra 种子。我看到了很多关于数据局部性的介绍。但是我没有找到关于 spark-cassandra 连接器如何为每个工作人员选择本地节点的信息。哪个算法连接器用于此?

【问题讨论】:

    标签: apache-spark cassandra spark-cassandra-connector


    【解决方案1】:

    连接器可识别令牌。它通过向您运行的查询添加标记范围过滤(例如 token("partition-key") > ? AND token("partition-key") <= ?)来确保数据局部性。

    连接器使用参数 spark.cassandra.input.split.size_in_mb(默认为 64MB)生成查询 (token(...) >? AND token(...)< ?),将在每个 Spark 分区中加载大约 64MB 的数据。

    【讨论】:

    • 但是 spark worker 是如何理解它应该读取一些数据的呢?它如何识别本地 cassandra 节点?
    • 驱动程序正在建立与 Cassandra 集群的初始连接。它发现 Cassandra 拓扑和令牌分布。我假设它接下来将工作人员 IP 与 Cassandra IP 进行匹配,以了解要为哪些工作人员生成什么查询以获取数据本地性。
    猜你喜欢
    • 1970-01-01
    • 2015-12-28
    • 2015-01-20
    • 1970-01-01
    • 2018-05-27
    • 2022-07-27
    • 2014-02-01
    • 2015-04-29
    • 1970-01-01
    相关资源
    最近更新 更多