스파크완벽가이드 - 18장 모니터링과 디버깅
·
DataPipeline/Spark
18.1 모니터링 범위스파크 애플리케이션과 잡- 스파크 UI와 스파크 로그를 확인해야 함 JVM- 스택 트레이스(stack trace)를 제공하는 jstack- heap dum를 생성하는 jmap- 다양한 JVM 속정 변수를 시각화된 방식으로 탐핵하는 jconsole- 저수준 디버깅이 필요하다면 JVM 도구가 용이 OS와 머신- JVM은 host OS에서 실해됨- CPU, Network, I/O resource 를 모니터링 클러스터- YARN, 메소스 등 스파크 애플리케이션이 실행되는 클러스터도 모니터링   18.2 모니터링 대상[1] 드라이버와 익스큐터 프로세스- 스파크 드라이버는 모든 애플리케이션의 상태가 보관되어 있음- JVM 기반 애플리케이션의 메트릭을 수집/보고하는 Dropwizard Metri..
스파크완벽가이드 - 17장 스파크 배포환경
·
DataPipeline/Spark
2017.12월 기준으로 세 가지 클러스터 매니저를 지원- standalone mode- hadoop yarn- apache mesos 17.1 스파크 애플리케이션 실행을 위한 클러스터 환경설치형 클러스터 (on-premise cluster)- 사용 중인 하드웨어를 완전히 제어할 수 있으므로 특정 워크로드의 성능을 최적화- 고정된 자원 - 자체 파일 저장소( ex.HDFS )를 운영해야하므로 관리포인트가 늘어남- 자체 파일 저장소를 운영하므로 백업, 가용성 체계도 필요함 공개 클라우드 (public cloud)- 필요할 때만 자원을 늘리고 줄일 수 있음 ( ex. AWS EMR, EC2 )- 백업, 복제, 가용성을 자동적으로 지원함- 파일 저장소를 사용하지 구축하지 않아도 다양한 저장소를 지원함 ( ex..
스파크완벽가이드 - 16장 스파크 애플리케이션 개발하기
·
DataPipeline/Spark
16.1 파이썬 애플리케이션 작성하기- spark-sumit을 통한 spark 실행from __future__ import print_functionif __name__ == '__main__': from pyspark.sql import SparkSession spark = SparkSession.builder \ .master("spark://0.0.0.0:7077") \ .appName("Word Count") \ .config("spark.eventLog.enabled", "true") \ .config("spark.eventLog.dir", "file:///opt/homebrew/Cellar/apache-spark/3.5.1/tmp/s..
스파크완벽가이드 - 15장 클러스터에서 스파크 실행
·
DataPipeline/Spark
15.1 스파크 애플리케이션의 아키텍처스파크 드라이버- 드라이버는 스파크 애플리케이션의 실행을 제어하고 상태 정보(익스큐터 상태 및 태스크)를 유지- 물리적 컴퓨팅 자원 확보- 클러스터 매니저와 통신 스파크 익스큐터- 익스큐터는 스파크 드라이버가 할당한 태스크를 수행하는 프로세스- 태스크를 수행하고 태스크의 상태를(성공 및 실패)를 드라이버에 보고 클러스터 매니저- 클러스터 매니저는 스파크 애플리케이션을 실행할 클러스터 머신을 유지- 스파크가 실행될 때 클러스터 매니저에 자원할당을 요청- 클러스터 매니저는 '마스터'와 '워커'의 개념이 있음- 개별 워커노드를 실행하는 데몬 프로세스- 스파크가 지원하는 클러스터 매니저standalone cluster managerapache mesoshadoop yarn ..
스파크완벽가이드 - 14장 분산형 공유 변수
·
DataPipeline/Spark
스파크 저수준 API는 RDD외에도 분산형 공유 변수가 있음분산형 공유 변수는 두개의 타입이 존재브로드캐스크 변수어큐뮬레이터 14.1 브로드캐스트 변수- 모든 워커 노드에 큰 값을 저장하여 재전송 없이 많은 스파크 액션을 재사용- 브로드캐스트 변수는 클러스터의 모든 워커 노드에 큰 데이터를 효율적으로 공유하기 위해 사용- 일반적으로 읽기 전용 변수로 사용되며, 각 노드에 한 번만 전송되므로 네트워크 비용을 절감- 브로드캐스트할 구조체 변수 생성supplementalData = { "Spark":1000, "Definitive":200, "Big":-300, "Simple":100}suppBroadcast = spark.sparkContext.broadcast..
스파크완벽가이드 - 13장 RDD 고급개념
·
DataPipeline/Spark
핵심주제- 집계와 키-값 형태의 RDD- 사용자 정의 파티셔닝- RDD 조인  13.1 키-값 형태의 기초words.map(lambda word: (word.lower(), 1)).take(5)>>> [('spark', 1), ('the', 1), ('definitive', 1), ('guide', 1), (':', 1)]- [1] key-value 구조로 만들기 ( 튜플 )keyword = words.keyBy(lambda word: word.lower()[0])>>> [('s', 'Spark'), ('t', 'The'), ('d', 'Definitive'), ('g', 'Guide'), (':', ':')]- [2] key, value 값 추출하기keyword.keys().collect()keywor..
스파크완벽가이드 - 12장 RDD
·
DataPipeline/Spark
12.0 RDD- 저수준 API는 RDD, SparkContext, 브로드캐스트 변수, 분산형 공유변수를 의미- 대부분 고수준 API (DataFrame, Dataset)을 사용하는 것이 좋음- DataFrame, Dataset 실행 시 RDD로 컴파일 됨  12.1 저수준 API란- 언제 사용할까?  - 클러스터의 물리적 데이터의 배치를 아주 세밀하게 제어하는 상황  - RDD를 사용해 개발된 기존 코드를 유지하는 경우  - 사용자가 정의한 공유 변수를 다뤄야 하는 경우 (14장 참조)- 어떻게 사용할까?  - 저수준 API 진입점인 SparkContext 사용  - spark.sparkContext  12.2 RDD 개요- RDD는 불변성을 가지고 병렬로 처리할 수 있는 파티셔닝된 레코드 모음- Da..
스파크완벽가이드 - 11장 Dataset
·
DataPipeline/Spark
11.0 DatasetDataFrame- 스파크 1.3에서 처리 속도 증가를 위해 추가 됨- 데이터를 스키마 형태로 추상화 하고, 카탈리스트 옵티마이저가 쿼리를 최적화하여 처리합니다.- DataFrame 또한 row 타입의 DataSet  ㄴ row type 참조 : https://spark.apache.org/docs/latest/api/java/org/apache/spark/sql/Row.htmlDataSet- 스파크 1.6에서 추가  - 데이터의 타입체크, 데이터 직렬화를 위한 인코더, 카탈리스트 옵티마이저를 지원하여 데이터 처리 속도를 더욱 증가- jvm 을 이용하는 언어인 스칼라와 자바에서만 사용할 수 있음- 스칼라나 자바를 사용할 때 모든 DataFrame은 Dataset을 의미- 스칼라에서는..
wave35
'DataPipeline/Spark' 카테고리의 글 목록 (2 Page)