본문 바로가기
Spark/러닝 스파크

Spark 시작하기17 - [러닝 스파크] 7장 클러스터에서 운영하기

by java개발자 2016. 4. 26.

spark를 이용한 클러스터,,,


일단 1PC에서 마스터 1개, 워커 여러개를 cmd 명령어로 각각 실행시키고,

D:\java_util\spark\spark-1.6.0-bin-hadoop2.6\bin\spark-class org.apache.spark.deploy.master.Master

D:\java_util\spark\spark-1.6.0-bin-hadoop2.6\bin\spark-class org.apache.spark.deploy.worker.Worker spark://192.168.56.1:7077

D:\java_util\spark\spark-1.6.0-bin-hadoop2.6\bin\spark-class org.apache.spark.deploy.worker.Worker spark://192.168.56.1:7077

D:\java_util\spark\spark-1.6.0-bin-hadoop2.6\bin\spark-class org.apache.spark.deploy.worker.Worker spark://192.168.56.1:7077

...


코드에서는

마스터에 접속하기!!!


단,

외부 class를 사용하는 경우, jar 파일이 필요하다.

setJars....


그래서,,

소스를 변경하면, 일단 mvn package를 해야 한다.

(pom.xml에 다음 코드도 추가해서 jar 파일이 만들어지게 해야 한다.)

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-shade-plugin</artifactId>

<version>2.3</version>

<executions>

<execution>

<phase>package</phase>

<goals>

<goal>shade</goal>

</goals>

</execution>

</executions>

</plugin>

그리고 나서, 실행하면, 됨!


package org.mystudy.cluster;

import java.io.Serializable;
import java.util.Arrays;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;

public class MyClusterTest implements Serializable{
	/**
	 * 단독 클러스터 매니저 standalone
	 */
	private static final long serialVersionUID = 1L;

	public static void main(String... strings) {
//		MyConf.setLog4j();
		MyClusterTest m = new MyClusterTest();
		m.proc1();
	}
	public void proc1() {
//		JavaSparkContext sc = new JavaSparkContext("spark://192.168.56.1:7077", "First Spark App");
//		SparkConf sconf = new SparkConf().set("spark.eventLog.dir", "hdfs://nn:8020/user/spark/applicationHistory")
//				.set("spark.eventLog.enabled", "true").setJars(new String[] { "/path/to/jar/with/your/class.jar" })
//				.setMaster("spark://spark.standalone.uri:7077");
		SparkConf sconf = new SparkConf();
		sconf.setMaster("spark://192.168.56.1:7077");
		sconf.setAppName("ysh test1");
		sconf.setJars(new String[] { System.getProperty("user.dir") + "\\target\\learning.spark-0.0.1-SNAPSHOT.jar" });
		JavaSparkContext sc = new JavaSparkContext(sconf);
		JavaRDD<Integer> rdd = sc.parallelize(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
		rdd = rdd.map(a -> a + 1);
//		rdd = rdd.map(new MyFunction());
		
		System.out.println(rdd.collect());
	}
}


클러스터 설정할때 발생한 Exception

1.JAVA_HOME, path에 제대로 지정하지 않은 문제


2.serializable 문제


3.setJars 문제