2014-06-11 2 views
0

Spark 프레임 워크에 대해 몇 가지 질문이 있습니다.Apache 스파크와 맵의 관계는 무엇입니까?

먼저 스파크 클러스터에서 실행되는 일부 응용 프로그램을 작성하려면 map-reduce 절차를 따라야합니까? map-reduce 절차를 따르기 때문에 양식을 병렬화하기 위해 많은 코드를 변경해야하며 현재 프로젝트를 코드 변경이 거의없이 클러스터로 옮기는 간단한 방법을 찾고 있습니다.

두 번째는 스파크 껍질에 관한 것입니다. 다음 코드를 사용하여 클러스터에서 스파크 - 쉘을 실행하려고했습니다 : MASTER=spark://IP:PORT ./bin/spark-shell. 그런 다음 스파크 셸에 스칼라 코드를 작성합니다. 예를 들면 다음과 같습니다.

var count1=0 
var ntimes=10000 
var index=0 
while(index<ntimes) 
{ 
index+=1 
val t1 = Math.random() 
val t2 = Math.random() 
if (t1*t1 + t2*t2 < 1) 
     count1+=1 
} 
var pi= 4.0 * count1/ntimes 

val count2 = spark.parallelize(1 to NUM_SAMPLES).map{i => 
    val x = Math.random() 
    val y = Math.random() 
    if (x*x + y*y < 1) 1 else 0 
}.reduce(_ + _) 
println("Pi is roughly " + 4.0 * count2/NUM_SAMPLES) 

이 코드에는 두 가지 Pi Piacaculation 프로그램이 있습니다. 나는이 모든 코드가 클러스터에서 실행되는지 여부를 방황하고있다. 나는 map {} 함수로 둘러싸인 이들 코드 만이 클러스터에서 실행되는 반면 다른 코드는 마스터 노드에서만 실행된다고 생각합니다. 그게 맞는지는 확실하지 않습니다.

답변

1

Spark는 단순히 & 줄이기보다 더 일반적인 프레임 워크를 제공합니다. API을 살펴보면 집계와 같이 좀 더 일반적인 기능을 찾을 수 있습니다. 또한 Spark는 병렬 변수 프로그래밍을 훨씬 효과적으로 만드는 방송 변수 및 축 소기와 같은 기능을 지원합니다.

두 번째 질문 (실제로 둘을 구분해야 함) : 예, 두 코드는 다르게 실행됩니다. Spark의 병렬 기능을 이용하려면 RDD 데이터 구조를 사용해야합니다. RDD가 어떻게 배포되고 작업이 RDD에 영향을 미치는지 이해할 때까지 Spark을 효과적으로 사용하는 것은 어려울 것입니다.

RDD를 통해 메소드에서 실행되지 않는 코드는 병렬이 아닙니다.

+0

답장을 보내 주셔서 감사합니다. 스파크 프레임 워크를 배우는 초보자에게 유용합니다. – user3655116

관련 문제