我已经在Spark上实现了一个自定义数据层,它让Spark节点在本地保存一些数据,并将它们的数据持久性通知Spark主节点。通过在我们编写的每个Spark节点和主节点上运行一些自定义代码,这是非常有效的,但是现在我想在集群中实现一个复制协议。我想要构建的是,一旦主节点收到一条消息,表示它是持久化数据,那么主节点可以随机选择另外两个节点,并让它们持久化相同的数据。
我一直在挖掘文档,但我看不到SparkContext给出了一个活动节点列表的明显方式。我是不是遗漏了什么?
发布于 2014-09-05 18:38:50
没有这样做的公共API。但是,您可以使用Developer (http://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.scheduler.SparkListener)。您可以创建一个自定义SparkListener类,并将其添加到SparkContext中
sc.addSparkListener(yourListener)当添加或删除onBlockManagerAdded和onBlockManagerRemoved时,系统将对BlockManager进行分类,并且从BlockManager的ID中,我相信您可以获得运行Spark (运行BlockManagers)的节点的URL。
我同意这是有点讨厌。:)
https://stackoverflow.com/questions/25676476
复制相似问题