小编Ama*_*iye的帖子

Apache YARN可以在没有HDFS的情况下使用吗?

我想使用Apache YARN作为集群和资源管理器来运行一个框架,在该框架中,资源将在同一框架的不同任务之间共享.我想使用自己的分布式堆外文件系统.

  1. 是否可以使用除HDFS以外的YARN的任何其他分布式文件系统?

  2. 如果是,需要实施哪些HDFS API?

  3. 运行YARN需要哪些Hadoop组件?

apache hadoop hadoop-yarn hadoop2

7
推荐指数
1
解决办法
2853
查看次数

强制分区存储在特定的执行器上

我有 5 个分区-RDD 和 5 个工人/执行者。如何让 Spark 将每个 RDD 的分区保存在不同的工作人员(IP)上?

如果我说 Spark 可以在一个 worker 上保存几个分区,而在其他 worker 上保存 0 个分区,我说得对吗?意思是,我可以指定分区数,但 Spark 仍然可以在单个节点上缓存所有内容。

复制不是一种选择,因为 RDD 很大。

我发现的解决方法

获取首选位置

RDD 的getPreferredLocations方法不提供分区将存储在指定节点上的 100% 保证。Spark 将在 期间尝试spark.locality.wait,但之后,Spark 将在不同的节点上缓存分区。

作为一种解决方法,您可以将非常高的值设置为spark.locality.wait并覆盖getPreferredLocations。坏消息 - 你不能用 Java 做到这一点,你需要编写 Scala 代码。至少 Scala 内部封装了 Java 代码。IE:

class NodeAffinityRDD[U: ClassTag](prev: RDD[U]) extends RDD[U](prev) {

  val nodeIPs = Array("192.168.2.140","192.168.2.157","192.168.2.77")

  override def getPreferredLocations(split: Partition): Seq[String] =
    Seq(nodeIPs(split.index % nodeIPs.length))
}
Run Code Online (Sandbox Code Playgroud)

SparkContext 的 makeRDD

SparkContext …

java scala shuffle apache-spark rdd

5
推荐指数
0
解决办法
859
查看次数

标签 统计

apache ×1

apache-spark ×1

hadoop ×1

hadoop-yarn ×1

hadoop2 ×1

java ×1

rdd ×1

scala ×1

shuffle ×1