공개 SW 솔루션설치 & 활용가이드 미들웨어 > 분산시스템 SW 제대로배워보자 How to Use Open Source Software Open Source Software Installation & Application Guide
CONTENTS 1. 개요 2. 기능요약 3. 실행환경 4. 설치및실행 5. 기능소개 6. 활용예제 7. FAQ 8. 용어정리
- 3-1. 개요 소개 대용량데이터처리를위한분산처리데이터분석을위한플랫폼 주요기능 데이터정제를위한언어로 Scala 및 Python 지원 데이터추출을위한 SQL 처리기지원 다양한클라우드환경에서이미지원되고있음 대분류 미들웨어소분류 분산시스템 SW 라이선스형태 Apache License V2 사전설치솔루션 N/A 실행하드웨어 X86 호환프로세서 램 1GB 이상의하드웨어 1GB 이상의디스크공간 버전 2.3.2 (2018 년 10 월기준 ) 특징보안취약점개발회사 / 커뮤니티공식홈페이지 대용량데이터분석을빠른시간안에가능하게함 Apache License를채택하여, 상용으로사용시, 법적인문제가발생하지않음 취약점 ID: CVE-2018-8024 심각도 : 5.4 MEDIUM(V3) 취약점설명 : 허가받지않는사용자가임의로현재동작중인분석작업의상태를모니터링할수있음 대응방안 : 2.1.3 이상으로업그레이드, 모니터링페이지를외부에서접근차단 참고경로 : https://spark.apache.org/security.html#cve-2018-8024 Apache Software Foundation / Apache Spark Community https://spark.apache.org
- 4-2. 기능요약 Apache Spark 주요기능 주요기능 Amazon Web Service Google Cloud Platform Azure Cloud YARN Cluster Kubernetes Docker Apache Mesos Cluster 지원여부지원지원지원지원지원지원지원
- 5-2. 기능요약 기존데이터분석툴과비교 특징 Apache Spark Apache Hive Mysql 분산데이터저장 가능 (HDFS, AWS) 가능 (HDFS, AWS) 백업만가능 분산처리 가능 가능 순차처리만지원 Mapper 병합 가능 제한적으로가능 불가능 리소스제어 모두제어가능 제한적으로가능 불가능 대용량데이터 (TB) 분석 수분소요 수분소요 현실적으로불가능 중간결과자동저장 가능 불가능 불가능 탐색적데이터분석 가능 / 빠름 가능 / 느림 가능 / 느림
- 6-3. 실행환경 Windows, Mac, Linux 를지원함 구분 Windows Mac Linux 로컬실행환경지원지원지원 독립클러스터환경지원지원지원 Command Line Interface 지원 ( 권장하지않음 ) 지원지원 Python 지원여부별도의환경설정필요 Conda, VirtualEnv Conda, VirtualEnv OS 별지원여부비교
- 7-4. 설치및실행 세부목차 4.1 설치파일준비 4.1.1 정식배포판을사용하는경우 4.1.2 릴리즈되지않은최신버전을사용하는경우 4.2 설치환경준비 4.3 설치 4.4 설치확인
- 8-4. 설치및실행 4.1 설치파일준비 정식릴리즈를사용하는경우, - 4.1.1(8P~9P) 을따라설치 릴리즈되지않은최신버전을사용하는경우 - 4.1.2 (10P~12P) 를따라설치
- 9-4. 설치및실행 4.1.1 정식배포판을사용하는경우 (1/2) https://spark.spache.org 에접속 Download 를클릭 3. Download Spark 을클릭
- 10-4. 설치및실행 4.1.1 정식배포판을사용하는경우 (2/2) 해당링크를클릭하여다운로드
- 11-4. 설치및실행 4.1.2 릴리즈되지않은최신버전을사용하는경우 (1/3) 터미널에서 git 과 maven 을설치 - Mac 의경우, Brew 를이용하여설치가능 - brew install maven git Linux 의경우, apt-get 으로설치가능 - sudo apt-get install git maven
- 12-4. 설치및실행 4.1.2 릴리즈되지않은최신버전을사용하는경우 (2/3) Git 으로소스코드다운로드 - git clone https://github.com/apache/spark
- 13-4. 설치및실행 4.1.2 릴리즈되지않은최신버전을사용하는경우 (3/3) maven 으로빌드실행 - maven clean package -DskipTests
- 14-4. 설치및실행 4.2 설치환경준비 (1/4) 자바설치 - https://www.oracle.com/technetwork/java/javase/downloads/index.html - Java SE 8 버전설치 - DOWNLOAD 클릭 - 라이센스동의
- 15-4. 설치및실행 4.2 설치환경준비 (2/4) 운영체제에맞는파일다운로드
- 16-4. 설치및실행 4.2 설치환경준비 (3/4) Mac 의경우, brew 를통해서설치가능 Linux 의경우, Aptitude 를통해서설치가능
- 17-4. 설치및실행 4.2 설치환경준비 (4/4) Java 가정상적으로실행되는지확인
- 18-4. 설치및실행 4.3 설치 별도의설치과정없이바로실행할수있음 - 4.1.1(8P~9P) 로설치하였다면, * 해당파일의압축을해제 * 해당디렉토리로이동 - 4.1.2(10P~12P) 로설치하였다면, * 별도의과정이필요하지않음
- 19-4. 설치및실행 4.4 설치확인 해당디렉토리에서 spark-shell 명령어가잘실행되는지확인 - bin/spark-shell
- 20-5. 기능소개 세부목차 5.1 구성요소 5.2 CLI 실행 5.3 스크립트실행 5.4 예제실행 5.5 Jar로실행 5.6 모니터링 UI
- 21-5. 기능소개 5.1 구성요소 Spark은 Driver와 Executor의두종류의프로세서로구성되어있음 Driver - 모든작업은 Driver에서부터시작함 - 전체작업흐름결정 - Executor에게작업할당 Executor - 실제작업수행 - 여러개가동시에각자의작업을진행 - 실행결과를 Driver에게알려주고, 중간데이터를저장하고있음
- 22-5. 기능소개 5.1 구성요소 실제작업은위와같은구조로수행됨 1. DataFrame이나, SQL과같이구조를가지는데이터형태로변경 2. Logical Plan - 연관되어있는데이터종류를파악하고, 어떤데이터를사용할지결정 3. Physical Plan - 실제사용할데이터를바탕으로어떻게실제로수행할지결정 4. RDD로변환되어 Executor들에서실행
- 23-5. 기능소개 5.2 CLI 실행 Spark 은기본적으로 Scala, Python 그리고 R 을지원 Scala CLI - bin/spark-shell
- 24-5. 기능소개 5.2 CLI 실행 Python CLI - bin/pyspark
- 25-5. 기능소개 5.2 CLI 실행 R CLI - bin/sparkr
- 26-5. 기능소개 5.3 스크립트실행 Scala CLI 로 PI 값을구하는예제실행
- 27-5. 기능소개 5.4 예제실행 PI 예제를 Command Line 으로실행 - bin/spark-submit run-example org.apache.spark.examples.sparkpi 10
- 28-5. 기능소개 5.5 Jar 로실행 PI 예제를 Command Line 으로실행 - bin/spark-submit --class org.apache.spark.examples.sparkpi examples/jars/spark-examples_2.11-2.3.2.jar 10
- 29-5. 기능소개 5.6 모니터링 UI 접근주소는스파크쉘을실행할때, 나오는로그에서확인할수있음 해당주소로접근하면, 모니터링 UI 를확인할수있음
- 30-5. 기능소개 5.6 모니터링 UI Jobs 탭은전체작업의리스트를보여주는화면
- 31-5. 기능소개 5.6 모니터링 UI Event Timeline 을클릭하면, 전체 Executors 가어떻게동작하는지확인할수있음
- 32-5. 기능소개 5.6 모니터링 UI Description 의링크를클릭하면, 해당작업이어떤방식으로실행되는지확인할수있음 DAG Visualization 은각단계를다이어그램으로보여줌
- 33-5. 기능소개 5.6 모니터링 UI Stages 탭은 Job 들이실제실행되고있거나실행이완료된 Stage 들을보여줌
- 34-5. 기능소개 5.6 모니터링 UI Description 을누르면해당 Stage 에대한자세한정보를볼수있음
- 35-5. 기능소개 5.6 모니터링 UI Storage 탭은해당스팍클러스터가사용하고있는메모리와디스크를보여줌
- 36-5. 기능소개 5.6 모니터링 UI Environment 탭은스팍이실행되는환경과프로세서에서사용하는변수를보여줌
- 37-5. 기능소개 5.6 모니터링 UI Executors 탭은실제클러스터를구성하는장비들의현황을보여줌
- 38-6. 활용예제 세부목차 6.1 실전데이터분석
- 39-6. 활용예제 6.1 실전데이터분석 실제데이터셋을다운로드하여, 분석 - 이름과나이가 json형식으로저장되어있는 people.json파일을다운로드 $ wget https://raw.githubusercontent.com/hortonworks/data-tutorials/master/tutorials/hdp/dataframe-anddataset-examples-in-spark-repl/assets/people.json - 분석에사용하기위해 /tmp디렉토리로이동 $ mv people.json /tmp - Spark 실행 $ bin/spark-shell scala> // people.json파일을읽어들여서스키마와데이터를 DataFrame형태로변경 scala> // DataFrame형태로변경하면, 쿼리와비슷하게데이터를조회하고업데이트 scala> // 할수있게되어작업에용의함. 또한, Spark에서 DataFrame에대한최적화를제공 scala> // 하기때문에가장빠른성능을기대할수있음 scala> val df = spark.read.json("file:///tmp/people.json")
- 40-6. 활용예제 6.1 실전데이터분석 scala> // show() 명령어를이용해실제로어떤데이터가있는지대략적으로확인할수있음 scala> // 최대 20개의데이터만무작위로보여주기때문에전체데이터를확인하기위해서 scala> // 사용하는것은바람직하지않음 scala> df.show scala> // 실제 SQL을사용하는것처럼데이터의컬럼을선택하고, Select해서볼수있음 scala> // 이때도 show() 를활용하여, 데이터가제대로처리되고있는지확인할수있음 scala> df.select(df("name"), df("age") + 1).show() scala> // filter명령어를사용하면, SQL의 where와같은효과를기대할수있음 scala> // filter에사용하는데이터타입은런타임에자동으로결정됨 scala> df.filter(df("age") > 21).show() scala> // groupby를이용하여, 데이터를병합하고, count() 를활용하여, 실제데이터의양이 scala> // 어느정도인지확인할수있음 scala> df.groupby("age").count().show()
- 41-6. 활용예제 6.1 실전데이터분석 scala> // 읽어들인데이터를실제분산저장소에저장하는방법으로는 scala> // 1. 직접파일로저장 scala> // 2. 테이블의형태로저장 scala> // 할수있음. 직접파일로저장하는경우에는다음에처리를위해서다시테이블의 scala> // 형태로바꿔줘야하기때문에테이블의형태로저장하는것을추천 scala> // 차후에다시 Spark을실행하여도사용할수있도록테이블형태로저장됨 scala> df.write.saveastable("people") scala> // 이렇게저장된데이터를다시읽기위해서 table() 명령어를활용할수있음 scala> val people = spark.read.table("people")
- 42-6. 활용예제 6.1 실전데이터분석 실행결과
- 43-7. FAQ Q Apache Spark 이무료라면, 기술지원은어디서받을수있나요? A Apache Spark 은여러가지형태로유료로구매할수있는데요. Databricks 라 는회사에서운영하는서비스를활용하는방법이있고, Hortonworks 나 Cloudera 에서판매하는것을구매하는것으로기술지원을받을수있습니다. Q 만약버그가발견되면, 어떤식으로대처할수있나요? A 오픈소스프로젝트는많은사용자와기여자에의해서빠르게개발되기때문에사용하면서치명적인버그가발견되는일은흔하지않습니다. 만약버그를발견하면, 버그리포트를활용하여, 버그를빠르게패치하도록유도할수있습니다.
- 44-8. 용어정리 용어 설명 Jar CLI Python Scala UI R Java ARchive Command Line Interface 데이터분석에많이사용되는스크립트언어 Java의단점을보완하여만든새로운언어 User Interface 통계분석에많이사용되는스크립트언어
Open Source Software Installation & Application Guide 이저작물은크리에이티브커먼즈 [ 저작자표시 비영리 동일조건변경허락 2. 0 대한민국라이선스 ] 에따라이용하실수있습니다.