假设我有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 driver
和spark context
将保持分布在集群中。
关于hadoop - Spark 作业可能有多种配置吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43571508/