일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 백준 #baekjoon # 2563
- 운영체제론
- 네이버
- Ubuntu 20.04
- 부스트캠프
- 후기
- id # tr # 환경변수
- 보기 편하라고 만든
- 웹/모바일
- 네이버 부스트 코스
- 8기
- Virtual Box 7.0.6
- Today
- Total
목록데이터 엔지니어링/Spark (10)
Miner
Spark Session 생성 Spark 프로그램의 시작은 Spark Session 이라는 Object를 만드는 것 그리고 Spark Session에 다양한 환경설정을 하게 됨 프로그램마다 하나를 만들어 Spark Cluster와 통신: Singleton 객체 Spark 2.0에서 처음 소개됨 Spark Session을 통해 Spark이 제공해주는 다양한 기능을 사용 DataFrame, SQL, Streaming, ML API 모두 이 객체로 통신 config 메소드를 이용해 다양한 환경설정 가능 단 RDD와 관련된 작업을 할때는 SparkSession 밑의 sparkContext 객체를 사용 Spark Session API 문서 pyspark.sql.SparkSession — PySpark 3.1.1 ..
RDD, DataFrame, Dataset Immutable Distributed Data RDD (Resilient Distributed Dataset) - 클러스터내의 서버에 분산된 데이터를 지칭, 레코드별로 존재하지만 스키마가 존재하지 않음, 구조화, 비구조화 된 데이터 모두 지 RDD(low_level) 가 가장 밑 바닥에 있는 구조, 그 위에 DataFrame과 Dateset 이 올라가 있는 구조 RDD로 할 수 있는 일은 많지만 생산성이 낮아서 대부분 파이썬으로 코딩을 한다고 하면 DataFrame을 사용하고 Scala혹은 Java로 코딩한다고 하면 Dataset을 사용한다. 구조화된 데이터를 사용한다고 하면 SparkSql을 사용하는 것이 일반적, Pyspark에서는 DataFrame을 사용..
Summary 데이터 처리에서 중요한 개념 : Partition, Shuffling 데이터 구조 : RDD, DataFrame, Dataset Spark Session 생성과 설정 DataFrame 프로그래밍 Spark 데이터 시스템 아키텍처 ( 종합선물세트 같은 ) 외부데이터 : NOSQL, RDMS 데이터 병렬처리가 가능하려면? 데이터가 먼저 분산되어야함 하둡 맵의 데이터 처리 단위는 디스크에 있는 데이터 블록(128MB) hdfs-site.xml에 있는 dfs.block.size 프로퍼티가 결정 Spark에서는 이를 파티션(Partition)이라 부름. 파티션의 기본크기도 128MB spark.sql.files.maxPartitionBytes : HDFS등에 있는 파일을 읽어올 때만 적용됨 다음으로..
spark 3.0, PySpark 사용, Spark 프로그램을 Yarn 위에서 돌릴 때 Spark 프로그램 실행 환경 개발/테스트/학습 환경 (Interactive Clients) : 노트북(주피터, 제플린), Spark Shell 프로덕션 환경 spark-submit (command-line utility) : 가장 많이 사용됨 데이터브릭스 노트북 : 노트북 코드를 주기적으로 실행해주는 것이 가능 REST API Spark Standalone 모드에서만 가능 API를 통해 Spark 잡을 실행 실행코드는 미리 HDFS등의 파일 시스템에 적재되어 있어야 함 Spark 프로그램의 구조 Driver 실행되는 코드의 마스터 역할 수행 (Yarn의 Application Master) Executor 실제 태스크..
Spark 데이터 시스템 사용 예들 기본적으로 대용량 데이터 배치 처리, 스트림 처리, 모델 빌딩 1) 대용량 비구조화된 데이터 처리하기 (ETL / ELT) 2) ML 모델에 사용되는 대용량 피쳐 처리 (배치 / 스트림) 3) Spark ML을 이용한 대용량 훈련 데이터 모델 학습 예시 1) 대용량 비구조화된 데이터 처리하기 (Hive의 대체 기술) ETL 혹은 ELT 예시 2) ML 모델에 사용되는 대용량 피쳐 처리
Hadoop = 1세대 빅데이터 처리 기술 Spark = 2세대 빅데이터 처리 기술 Yarn 등을 분산환경 / 컨테이너 위에서 가능 / Scala 로 작성됨 Spark 3.0 구성 Spark Core, SQL, ML, MLib, Streaming, GraphX Spark vs MapReduce Spark은 기본적으로 메모리 기반 메모리가 부족해지면 디스크 사용 MapReduce는 디스크 기반 MapReduce는 하둡(Yarn)위에서만 동작 Spark은 하둡(Yarn)이외에도 다른 분산 컴퓨팅 환경 지원(K8s, Mesos) MapReduce는 키와 밸류 기반 데이터 구조만 지원 Spark은 판다스 데이터프레임과 개념적으로 동일한 데이터 구조 지원 Spark은 다양한 방식의 컴퓨팅을 지원 배치 데이터 처리..
하둡 설치 하둡 3.0을 의사분산 모드로 리눅스 서버에 설치 의사분산 모드 : 1개 resource manager, 1개 Node manager 의사분산 모드는 Hadoop 관련 프로세스들을 개별 JVM으로 실행 AWS 우분투 EC2 t2.medium 인스턴스 사용 자바 8이 필요. 우분투 설치 문서 데모
맵리듀스 프로그래밍 목표가 큰 데이터를 처리하는데 있다. 그렇다보니까 데이터셋의 포맷도 하나로 단순화 시켰다. 데이터 셋은 Key, Value의 집합이며 변경 불가(immutable) 데이터 조작은 map과 reduce 두 개의 오퍼레이션으로만 가능 Reduce는 Map의 출력 중에 같은 키를 갖는 출력을 모아 처리해서 새로운 key-value 페어를 만들어 주는 것 이 두 오퍼레이션은 항상 하나의 쌍으로 연속으로 실행됨 이 두 오퍼레이션의 코드를 개발자가 채워야 함 맵리듀스 시스템이 Map의 결과를 Reduce 단으로 모아준다. 이 단계를 보통 셔플링이라고 부르며, 네트웍단을 통한 데이터 이동이 생긴다. 일반적으로 맵리듀스 한 번으로 원하는 결과를 얻지 못하고 몇 번을 거쳐서 원하는 결과를 낸다. 맵과..