목록Data/Spark (43)
우노
Spark Property Spark는 SparkConf, spark-shell, spark-submit, spark-defaults.conf 을 통해 Spark Application 실행과 관련된 자원을 설정할 수 있습니다. property 적용 순서는 SparkConf, spark-shell, spark-submit, spark-defaults.conf 입니다. 적용 예 https://wooono.tistory.com/45?category=914839 애플리케이션 관련 설정 spark.app.name 애플리케이션 이름 SparkConf의 appName으로 설정하는 것과 같은 속성 spark.driver.cores 드라이버가 사용할 코어 수 클러스터 모드에서만 사용 가능합니다. 기본값 : 1 spark..
Matrix의 Row를 전체 Vertex 개수로 두고 (LRxLC),(LCxLC) 형태 Matrix 생성하기 위 그림의 1~10 과 같은 순서로 중첩루프를 돌며 (LRxLC),(LCxLC) Matrix를 생성합니다. 자세한 코드 설명 1) Matrix 데이터 입력 2) 입력 데이터의 row, col 크기 입력 3) col slice 단위 설정 4) 최대 col slice 크기 설정 (slice의 nnz가 10^9 를 넘으면 안되므로) 5) LR을 전체 vertex 개수로 두고 col slice 생성 각 col slice 저장 (nnz, density 기입) 각 col slice에서 LCxLC 크기의 row slice 생성 각 row slice 저장 (nnz, density 기입) row slice는 최대..
Matrix의 Row를 전체 Vertex 개수로 두고 Col 기준으로 나누기 ( 중복 비허용 ) 예) Matrix의 전체 Column size가 12이고 slice 단위를 5으로 한다면 다음과 같이 분할 됨. 1-5, 6-10 나머지 column인 11-12는 버려짐 예제코드 1024 개의 열을 300 개씩 중복 없이 Slice 하므로 총 3개의 Slice가 나온다. 1-300, 301-600, 601-900 import scala.math.BigDecimal val rdd = sc.textFile("s3://square-matrix/M_1024_1024_0.001.txt") // 입력 데이터 row, col 크기 val row = 1024 val col = 1024 // 원하는 slice 단위 val ..
Matrix의 Row를 전체 Vertex 개수로 두고 Col 기준으로 나누기 ( 중복 허용 ) 예) Matrix의 전체 Column size가 9이고 Slice 단위를 3으로 한다면 Column은 다음과 같이 분할 됨. 1-3, 2-4, 3-5, 4-6, 5-7, 6-8, 7-9 예제코드 1024 개의 열을 1000 개씩 중복 허용하며 Slice 하므로 총 25개의 Slice가 나온다. 1-1000, 2-1001, 3-1002, ... , 25-1024 import scala.math.BigDecimal val rdd = sc.textFile("s3://square-matrix/M_1024_1024_0.001.txt") // 입력 데이터 row, col 크기 val row = 1024 val col = ..
RDD 데이터는 설정 된 RDD 파티션 개수 만큼의 파일로 나뉘어 S3 경로에 저장된다. outputRDD.saveAsTextFile("s3://bucket/path/to/output/") coalesce 함수를 사용해 RDD 파티션을 원하는 개수 만큼의 파일로 합친 뒤, s3 경로에 저장할 수 있다. outputRDD.coalesce(1).saveAsTextFile("s3://bucket/path/to/output/")
Local mode(single machine)가 아닌 Cluster mode에서는 RDD 생성 시 RDD가 각각 분할 되어 executor에 할당된다. 이 때, executor에 할당 된 모든 RDD의 내용을 출력하기 위해서는 collect() 함수가 사용된다. myrdd.collect().foreach(println) 그러나, collect() 함수 사용 시 모든 executor의 rdd를 drvier node로 취합하기 때문에 out of memory가 발생할 수 있다. 따라서, 이를 해결 하기 위해 take() 함수가 사용된다. take() 함수는 RDD의 일부 내용만을 출력할 때 사용되며 아래는 100개의 element 만을 print 하는 예이다. myrdd.take(100).foreach(p..
Spark Property Spark 는 Spark Application 실행과 관련된 자원을 설정할 수 있다. SparkConf, spark-shell, spark-submit, spark-defaults.conf 을 수정함으로써 설정 가능하다. property 적용 순서는 SparkConf, spark-shell, spark-submit, spark-defaults.conf 이다. 자주 사용되는 자원 설정 예 --num-executors : 전체 executor 개수 --executor-cores : 각 executor 당 core 개수 --executor-memory : 각 executor 당 memory 용량 Core, Memory 관련 설정 spark job 을 실행시킬 때, 우리가 컨트롤 할 ..
오류 WARN Executor: Issue communicating with driver in heartbeater org.apache.spark.rpc.RpcTimeoutException: Futures timed out after [10000 milliseconds] 원인 spark.executor.heartbeatInterval란 드라이버에 대한 각 익스큐터의 하트비트 간격입니다. 하트 비트는 Executor가 아직 실행 중임을 알리고 진행중인 작업을 메트릭으로 업데이트합니다. 따라서, 하트비트 통신 간격이 기본값을 초과하면 오류가 발생합니다. 기본값은 10s입니다. 이 값은 spark.network.timeout 보다 월등히 작아야합니다. 해결방법 spark.executor.heartbeatInt..
Java 버전 변경 (openjdk 11.0.2) # 자바 버전 확인 java -version # 기본 java 파일 위치 확인 which java ls -l /usr/bin/java # /usr/local에 openjdk 설치 cd /usr/local curl -O https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz tar zxvf openjdk-11.0.2_linux-x64_bin.tar.gz # JAVA_HOME(환경변수) 설정 # 기본 java 파일 위치를 /usr/local/jdk-11.0.2로 설정 sudo vim /etc/profile.d/jdk.sh export JAVA_HOME=/usr/loca..
Spark 구조 분산모드에서 Spark Application는 실제 일을 수행하는 역할을 담당하며 1개의 중앙 조정자(Driver)와 N개의 분산 작업 노드(Executor)로 구성된 마스터/슬레이브 구조입니다. Cluster에서 실행 된다면, 하나의 Spark application은 Cluster Manager라고 불리는 외부 서비스를 사용해 여러 개의 머신에서 실행 됩니다. Cluster Manager에는 standalone(단독 클러스터 매니저), YARN, Mesos 등이 있습니다. Spark 구성 요소 Spark Application Spark에서 수행되는 사용자 프로그램으로 1개의 Driver Program과 N개의 Executor로 구성 Driver Program 프로그램의 Main() 함수..