假设我的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应用程序?
发布于 2017-04-23 22:53:27
我假设你是在YARN/MapReduce2 + HDFS集群上运行你的spark作业。
要做你想做的事情,你不需要多个集群,你想要的编排级别可以使用Apache Oozie来编写一个工作流(就像在本例中,运行A,然后使用A的输出运行B)。
在另一个类似的主题上,如果你担心每个作业消耗的资源,你可以在YARN中创建队列,并将每个作业提交到不同的队列,通过这样做,你可以确保它们都获得了你想要的资源量,并且它们可以并发运行。
最后,如果您在--deploy-mode cluster和--master yarn中提交这些作业,您不必担心主机和从机,因为spark driver和spark context将保持分布在集群中。
https://stackoverflow.com/questions/43571508
复制相似问题