【问题标题】:Programmatically access list of live Spark nodes以编程方式访问实时 Spark 节点的列表
【发布时间】:2014-09-04 23:27:03
【问题描述】:

我已经在 Spark 上实现了一个自定义数据层,它让 Spark 节点在本地持久化一些数据,并向 Spark 主节点宣布它们的数据持久性。通过在我们编写的每个 Spark 节点和主节点上运行一些自定义代码,这非常有效,但现在我想在我的集群中实现一个复制协议。我想要构建的是,一旦主节点从一个节点收到一条消息说它是持久数据,主节点可以随机选择两个其他节点并让它们持久保存相同的数据。

我一直在研究文档,但我没有看到 SparkContext 给我一个活动节点列表的明显方式。我错过了什么吗?

【问题讨论】:

    标签: apache-spark


    【解决方案1】:

    没有用于执行此操作的公共 API。但是,您可以使用 Developer API SparkListener (http://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.scheduler.SparkListener)。您可以创建一个自定义 SparkListener 类并将其添加到 SparkContext 作为

       sc.addSparkListener(yourListener)
    

    系统会在添加或删除 BlockManager 时对 onBlockManagerAdded 和 onBlockManagerRemoved 进行分类,并且从 BlockManager 的 ID 中,我相信您可以获取运行 Spark live executors(运行 BlockManagers)的节点的 URL。

    我同意这有点 hacky。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-03
      • 2012-10-13
      • 1970-01-01
      • 2010-09-05
      • 1970-01-01
      • 1970-01-01
      • 2012-02-20
      相关资源
      最近更新 更多