火花作业有多种配置吗?

时间:2017-04-23 13:01:41

标签: hadoop apache-spark cluster-computing bigdata

假设我有以下个人电脑

1 2 3
4 5 6
7 8 9

现在假设我有两个火花作业A和B.作业生成数据C,B作为输入。为了获得C,我需要像这样的集群

群集1:主人:1,奴隶:2 3

集群2:主人:4,奴隶:5 6

群集3:主人:7,奴隶:8 9

对于B工作,我需要有这样的集群:

集群4:主人:4,奴隶:1 7

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

最重要的是,即使这样的配置成为可能,那么对这样的火花应用进行编码的最佳实践是什么,这样我们就不需要为作业A和B单独设置火花应用了?

1 个答案:

答案 0 :(得分:-1)

我假设你在YARN / MapReduce2 + HDFS集群之上运行你的火花作业。

要执行您想要的操作,您不需要多个集群,可以使用Apache Oozie编写工作流来实现所需的编排级别(就像在这种情况下,运行A然后使用A的输出运行B )。

在另一个类似的主题上,如果你害怕每个作业消耗的资源,你可以在YARN中创建队列并将每个作业提交到不同的队列,这样做可以确保他们都获得你的资源量想要,他们可以同时运行。

最后,如果您在$ cat t109.cu #include "cuda_runtime.h" #include "device_launch_parameters.h" #include <stdio.h> #include <stdlib.h> void check(cudaError x) { fprintf(stderr, "%s\n", cudaGetErrorString(x)); } void showMatrix2(int* v1, int width, int height) { printf("---------------------\n"); for (int i = 0; i < width; i++) { for (int j = 0; j < height; j++) { printf("%d ", v1[i * width + j]); } printf("\n"); } } __global__ void kernel(int* tab,int width, int height, int pitch) { int row = threadIdx.x + blockIdx.x * blockDim.x; int col = threadIdx.y + blockIdx.y * blockDim.y; if (row < width && col < height) { *( ((int *)(((char *)tab) + (row * pitch))) + col) = 9; } } int main() { int width = 4; int height = 4; int* d_tab; int* h_tab; int realSize = width * height* sizeof(int); size_t pitch; check( cudaMallocPitch(&d_tab, &pitch, width * sizeof(int), height) ); h_tab = (int*)malloc(realSize); check( cudaMemset(d_tab, 0, realSize) ); dim3 grid(4, 4); dim3 block(4, 4); kernel <<<grid, block>>>(d_tab, width, height, pitch); check( cudaMemcpy2D(h_tab, width*sizeof(int), d_tab, pitch, width*sizeof(int), height, cudaMemcpyDeviceToHost) ); showMatrix2(h_tab, width, height); printf("\nPitch size: %ld \n", pitch); return 0; } $ nvcc -arch=sm_61 -o t109 t109.cu $ cuda-memcheck ./t109 ========= CUDA-MEMCHECK no error no error no error --------------------- 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 Pitch size: 512 ========= ERROR SUMMARY: 0 errors $ --deploy-mode cluster中提交这些工作,则不必担心主人和奴隶,因为--master yarnspark driver会保持在集群中分发。