Apache Spark 첫걸음 조원형 * 김영국 Department of Computer Science, Kangwon National University
Apache Spark 란?
Apache Spark 빅데이터처리를위한범용적이며빠른분산처리엔진 하둡 (Apache Hadoop) 기반의맵리듀스 (MapReduce) 작업의단점을보완하기위해연구가시작됨 2009 년 UC Berkeley 대학에서연구를시작하여 2012 년 NSDI 학회에서 RDD(Resilient Distributed Dataset) 에대한논문이발표되며세상에알려짐 특징 빠른속도 (Speed): 메모리기반의데이터처리, RDD 를통한최적의작업흐름으로데이터처리 하둡의맵리듀스보다메모리에서최대 100 배, 디스크에서 10 배빠른속도를가짐 사용의편리성 (Ease of Use): 자바, 스칼라, 파이썬, R 언어를사용하기쉽게지원 범용성 (Generality): 스파크 Streaming, 스파크 SQL, 스파크 ML 등각종데이터처리분야에적용가능 사용성 (Runs Everywhere): 자립 (standalone), 하둡, 클라우드, 카산드라등다양하게접근가능 2017-07-24 3
Spark Cluster Structure 중앙관리자와워커 (worker) 로이루어진 Master/Slave 구조 Driver Program: 사용자프로그램을실행시키는 main() 메소드를갖는프로세스, SparkContext, RDD 를생성 SparkContext: 스파크의시작점, 클러스터매니저와의연동과스파크어플리케이션의작업제어, 자원관리를담당 ClusterManager: 클러스터의환경, 상태관리 Standalone, Apache Yarn, Apache Mesos Worker Node: 실제로일을수행하는노드 Executor: 각워커노드에생성된프로세스 2017-07-24 4
Spark 수행과정 스파크어플리케이션으로드라이버프로그램실행 스파크컨텍스트가생성되고, 클러스터매니저와연동, transformation 연산수행 action 연산이호출되면실제작업 (job) 을수행 job 은실제로수행될때스테이지 (stage) 라는단계로나누어실행데이터에대한셔플여부로스테이지를구분 스테이지는다시여러개의태스크 (task) 로나누어진후 excutor 에게할당 excutor 은 task 를처리, 또는처리후생성된데이터를메모리에저장 2017-07-24 5
RDD(Resilient Distributed Dataset) 스파크가제공하는분산데이터모델, 회복력을가진분산데이터집합 스파크는 RDD 에속한요소들인파티션 (partition) 으로병렬처리를수행함 RDD 를읽기전용모델로만든후생성과관련된내용 (Lineage) 만메모리에기억, 장애가발생하면복구 분산되어있는변경불가능한객체모음 RDD 연산 Transformation: 어떤 RDD 에변형을가해새로운 RDD 를생성하는연산, 기존의 RDD 는바뀌지않고변경된새로운 RDD 를생성 Action: RDD 를실제변형시키는연산 즉, transformation 연산으로계보를기억만하고, action 연산을통해한꺼번에작업을수행 지연 (lazy) 동작과최적화작업수행 2017-07-24 6
지연실행 (Lazy Execution) 과최적화작업수행 RDD 의 transformation 과 action 을통한지연실행 ex) sc.textfile(...) 메소드를실행할때실제로파일을읽지않으며, 나중에 saveastextfile() 메소드를실행하면파일을읽음 즉, RDD 의계보 (lineage) 를통해마지막에한꺼번에실행 이러한지연실행방식을통해서사용자가입력한변환연산들의최적의수행방법을찾아서실행 자원이배치되어있는, 배치될상황을고려하여최적의코스로실행 (location, group) 2017-07-24 7
Spark Streaming 실시간데이터를받아특정작업을고성능으로처리, 자동적으로장애를발견하는 Spark API Apache Kafka, Flume 등으로데이터를받고처리함스트리밍데이터를각각의배치작업사이에서새로생성된데이터가하나의 RDD로취급즉, 일정기간마다새로운 RDD가입력되고, 이전 RDD의처리결과와혼합하여필요한처리를수행 RDD의연속된흐름인 DStream 이라는스트림에특화된데이터모델을제공 Data Stream DStream RDD1 RDD2 RDD3 2017-07-24 8
Spark Tutorial
VirtualBox 가상머신생성 VirtualBox 새로만들기 이름 : MN, 종류 : Linux, 버전 : Red Hat (64-bit) 2017-07-24 10
가상머신생성 메모리크기 추천메모리로설정 하드디스크 지금새가상하드디스크만들기 하드디스크파일종류 VDI(VirtualBox 디스크이미지 ) 2017-07-24 11
가상머신생성 물리적하드드라이브에저장 동적할당 파일위치및크기 MN, 기본값 2017-07-24 12
가상머신설정 저장소, 네트워크 생성된가상머신우클릭 설정 저장소 비어있음클릭 광학드라이브에서 CentOS 7 iso 이미지입력 네트워크 어댑터 2 사용 00> 호스트전용설정 2017-07-24 13
CentOS 설치 가상머신실행 한국어 소프트웨어선택 GNOME 데스크탑, 개발용도구선택 2017-07-24 14
CentOS 설치 설치대상 완료 2017-07-24 15
CentOS 설치 네트워크및호스트명 이더넷 (enp0s8) 켬 호스트이름 : MN 완료 설치시작클릭 2017-07-24 16
CentOS 설치 ROOT 암호설정, 사용자생성 자신이원하는암호, 계정은관리자로생성 2017-07-24 17
CentOS 설치 라이센스동의 재부팅후설치완료 2017-07-24 18
게스트확장 CD 이미지삽입 장치, 게스트확장 CD 이미지삽입 설치후재부팅 2017-07-24 19
클립보드, 드래그앤드롭설정 노드설정 클립보드, 드래그앤드롭양방향설정 2017-07-24 20
공유폴더설정 공유폴더설정 $ sudo gpasswd a admin vbxsf, 권환주기 2017-07-24 21
자바 (Java) 설치 터미널실행 $ sudo yum install y java-1.8.0-openjdk-devel.x86_64 2017-07-24 22
자바 (Java) 설치 환경변수설정 $ sudo vi /etc/profile export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-3.b12.el7_3.x86_64 export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=. source /etc/profile $ javac, java, java version 으로설치확인 2017-07-24 23
아파치스파크 (Apache Spark) 설치 https://spark.apache.org 접속 Download Spark 클릭 옵션설정 현재최신버전 2.2.0(2017년 7월 11일배포 ) 패키지타입 : Pre-built... Hadoop 2.7..., 다운로드방식 : Apache Mirror Download Spark 클릭 2017-07-24 24
아파치스파크 (Apache Spark) 설치 추천하는미러경로확인 $ wget 미러사이트경로 $ tar zxf spark-2.2.0-bin-hadoop2.7.tgz ln s spark-2.2.0-bin-hadoop2.7 spark 2017-07-24 25
아파치스파크 (Apache Spark) 환경변수등록 sudo vi /etc/profile export SPARK_HOME=~/spark export PATH=$PATH:$SPARK_HOME/bin source /etc/profile 스파크설치완료 2017-07-24 26
스파크기본예제 $./bin/run-example JavaWordCount README.md 2017-07-24 27
IntelliJ IDEA Maven 프로젝트생성 New Project 클릭 프로젝트정보입력 2017-07-24 28
WordCount.scala 스파크작업흐름설정 SparkContext 가져오기 2017-07-24 29
WordCount.scala 입력 RDD 설정 WordCount 출력 2017-07-24 30
Maven Project Install pom.xml 작성후진행 빌드, maven run 추가 maven install 2017-07-24 31
예제실행 jar 파일을가상머신으로옮기기 ( 드래그앤드롭, 공유폴더 ) $./bin/spark-submit --class com.knu.dkelab.sparktutorial.simpleworkcount../jar 파일이름 local[*]./readme.md./testresult 2017-07-24 32
TroubleShooting 리눅스로딩시 Fail to load selinux policy 에러 https://asafshoval.wordpress.com/2014/11/18/overcome-fail-to-load-selinux-policy-freezingerror-message-while-booting-linux 2017-07-24 33
감사합니다 Thank You!