hadoop - Spark 作业可能有多种配置吗?

标签 hadoop apache-spark cluster-computing bigdata

假设我有PC,如下所示

1 2 3
4 5 6
7 8 9

现在假设我有两个Spark作业A和B。一个作业生成数据C,B将其作为输入。为了获得C,我需要拥有这样的集群

群组1:主机:1,从机:2 3

集群2:主设备:4,从设备:5 6

群组3:主站:7,从站:8 9

对于B职位,我需要具有以下集群:

群集4:主设备:4,从设备:1 7

如何设置这样的群集,其中同一台PC在不同时间可能属于不同的群集并可以成为主/从机?

同样最重要的是,即使可以进行这样的配置,那么对这种spark应用程序进行编码的最佳实践是什么,这样我们就不需要为作业A和B单独使用spark应用程序?

最佳答案

我将假设您在YARN / MapReduce2 + HDFS集群上运行您的spark作业。

要完成您所需的工作,不需要多个集群,可以使用Apache Oozie编写工作流来实现所需的业务流程级别(例如,在这种情况下,先运行A,然后使用A的输出运行B)。

在另一个类似的主题上,如果您担心每个作业消耗的资源,则可以在YARN中创建队列,然后将每个作业提交到不同的队列,这样做可以确保它们都获得所需的资源量,并且它们可以同时运行。

最后,如果您以--deploy-mode cluster--master yarn提交这些作业,则不必担心主服务器和从服务器,因为spark driverspark context将保持分布在集群中。

关于hadoop - Spark 作业可能有多种配置吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43571508/

相关文章:

hadoop - Hadoop数据 block 和数据内容

python - # 失败的映射任务超出了允许的限制

java - RDD join : After joining two different pair RDDs, 结果RDD键值和顺序发生了变化?

macos - 如何在 Homebrew 中找到 Apache Spark 包的安装目录?

docker - 无法从Docker容器外部访问Namenode

hadoop - 使用 Hadoop/Mapreduce 计算数量平均值

regex - 模式匹配-spark scala RDD

hadoop - 在hadoop集群中,hive应该安装在所有节点上吗?

java - glassfish 4.1 和 JMS 集群

dictionary - 在 Hazelcast 中创建另一个 map 函数?