반응형

Spark & Hadoop/Spark 10

[Spark] Spark 소개 및 Spark관련 정보 모음 (Spark 구성요소, 작동방식 등)

Spark 란버클리 대학의 AMPLab에서 아파치 오픈소스 프로젝트대규모 데이터를 처리하기 위한 클러스터 컴퓨팅 프레임워크 Java로 개발되었으며 Python, Sql, Scala등의 언어들을 지원하여, 어떤 언어로 개발하든 성능에 큰 이슈 없도록 설계Hadoop와 달리 MapReduce 로직중 Map를 메모리에서 처리하기에 Hadoop보다 속도가 빠름빅데이터 처리 관련 다양한 기능 제공https://spark.apache.org/releases/spark-release-3-5-0.html Spark Release 3.5.0 | Apache SparkSpark Release 3.5.0 Apache Spark 3.5.0 is the sixth release in the 3.x series. With sig..

[Spark] Spark Action의 구성요소(Job, Stages, Tasks)와 Spark의 연산 (Transformations /Actions / Lazy Execution)

Job, Stages, TasksAction -> Job -> 1+ Stages -> 1+ Tasks (큰 순서대로) Action Job을 하나 만들어내고 코드가 실제로 실행됨Lazy Execution Job 하나 혹은 그 이상의 Stage로 구성됨 Stage는 Shuffling이 발생하는 경우 새로 생김 Stage Stage는 기본적으로 Shuffling없이 실행될 수 있는 Narrow Dependencies Task들의 집합DAG의 형태로 구성된 Task들 존재 여기 Task들은 파티션 수 만큼 병렬 실행이 가능 Task 가장 작은 실행 유닛으로 Executor에 의해 실행됨 Lazy Execution /Transformations /ActionsSpark의 연산은 Transformation과 Act..

[Spark] Spark 프로그램 구조 (Driver, Executor), Spark Cluster Manager

Spark 프로그램 실행 환경개발/테스트/학습 환경 (Interactive Clients)노트북 (주피터, 제플린)Spark Shell프로덕션 환경 (Submit Job)spark-submit (command-line utility): 가장 많이 사용됨데이터브릭스 노트북:노트북 코드를 주기적으로 실행해주는 것이 가능REST API:Spark Standalone 모드에서만 가능API를 통해 Spark job 실행실행코드는 미리 HDFS등의 파일 시스템에 적재되어 있어야함Spark 프로그램의 구조1. Driver실행되는 코드의 마스터 역할 수행 (YARN의 Application Master)컨테이너를 하나 잡아서 돌게됨.사용자 코드를 실행하며 실행 모드(client, cluster)에 따라 실행되는 곳이 달..

[Spark] HDFS Bucketing & Partitioning (Partitioning pyspark 코드 예시)

Bucketing과 File System Partitioning 둘다 Hive 메타스토어의 사용이 필요: saveAsTable 데이터 저장을 이후 반복처리에 최적화된 방법으로 하는 것Bucketing DataFrame을 특정 ID를 기준으로 나눠서 테이블로 저장 먼저 Aggregation 함수나 Window 함수나 JOIN에서 많이 사용되는 컬럼이 있는지 확인있다면 데이터를 이 특정 컬럼(들)을 기준으로 테이블로 저장 다음부터는 이를 로딩하여 사용함으로써 반복 처리시 시간 단축 DataFrameWriter의 bucketBy 함수 사용 Bucket의 수(첫번째 인자)와 기준 ID 지정(두번째 인자)데이터의 특성을 잘 알고 있는 경우 사용 가능 (그 특성을 이용하여 최적화)CF) https://toward..

[Spark] Schema Evolution

Schema Evolution 데이터가 쌓이고 난 이후에 변경되었을때(이전 스키마 버전으로 데이터가 쌓여있고 스키마가 변경되었을때) 어떻게 데이터를 저장하는지에 대한 메커니즘 용어 아래 같은 경우 schema마다 컬럼이 다른데 이를 parquet파일에서 어떻게 처리하는지 알아본다. 1. SparkSession 생성 from pyspark.sql import * from pyspark.sql.functions import * if __name__ == "__main__": spark = SparkSession \ .builder \ .appName("Spark Schema Evolution Demo") \ .master("local[3]") \ .getOrCreate() 데이터 호출 df1 = spark...

[Spark] Spark 파일 Type 종류 및 Pyspark로 데이터 Write하는 방법 (Parquet / AVRO)

데이터 포멧 종류데이터는 디스크에 파일로 저장Unstructured와 Semi-structured만 Human Readable함하려는 일에 맞게 최적화 필요UnstructuredSemi-structured (Type 정보가 없음)Structured (Type 정보가 있음)TextJSONPARQUET XMLAVRO CSVORC  SequenceFileAvro : Apache에서 개발한 파일 포맷Parquet : 트위터와 클라우데라에서 공동 개발한 Hbase에 최적화된 파일 포맷이다ORC:  Hive에서 개발한 Hive에 최적화된 파일 포맷Spark의 주요 파일 타입 특징CSVJSONPARQUETAVRO컬럼 스토리지XXOX압축 가능 OOOO Splittable  OOOOHuman ReadableOOXXNes..

[Spark] Windows 10에 Spark 설치하기 (Java설치, 환경변수 세팅)

이번 포스팅에서는 Spark를 Windows 10 로컬에 세팅하여 vscode에서 활용하는 방법을 알려드립니다. 자바 설치cmd 창에 아래와 같이  출력이 있어야 하며 없으면 JAVA를 설치해 주어야함.> java -versionhttps://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Download the Latest Java LTS FreeSubscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts.www.oracle.com 2. 자바 환경변수 세팅운영체제 어디에서..

[Spark] SparkSession 생성과 환경변수 세팅

Spark Session 생성 Spark 프로그램의 시작은 SparkSession을 만드는 것 프로그램마다 하나를 만들어 Spark Cluster와 통신: Singleton 객체 Spark 2.0에서 처음 소개됨 Spark Session을 통해 Spark이 제공해주는 다양한 기능을 사용 DataFrame, SQL, Streaming, ML API 모두 이 객체로 통신 config 메소드를 이용해 다양한 환경설정 가능 (단계별로 하나씩 설정도 가능)단 RDD와 관련된 작업을 할때는 SparkSession 밑의 sparkContext 객체를 사용Spark Session API Document : https://spark.apache.org/docs/3.1.1/api/python/reference/api/py..

[Spark] Spark 데이터 구조 (RDD, DataFrame, Dataset)

Spark 데이터 구조  RDD, DataFrame, Dataset (Immutable Distributed Data)RDD가 가장 밑바닥에 있고, 그 위해 DataFrame과  Dataset가 있음RDD는 할 수 있는 것은 많지만, 프로그래밍 생산성이 떨어짐.python을 쓴다면 Dataframe, java/scaler로 한다면 Dataset을 씀2016년에 DataFrame과 Dataset은 하나의 API로 통합됨모두 파티션으로 나뉘어 Spark에서 처리됨DataFrame Code나 Sparksql을 효율적인 자바 바이트 코드(Java bytecode) 로 만들어주는 과정Cody Analysis : 코드 분석하여 어떤 테이블과, 컬럼을 쓰는지 결정하고, 사용자가 없는 테이블과 컬럼을 쓰면 에러를 냄L..

[Spark] Spark 데이터 처리 방식 (Partitioning, Shuffling, Spill) (InputPartition, OutputPartition, ShufflePartition)(Range partition, Hashing partition, Data Skewness)

Spark 데이터 시스템 아키텍처큰데이터를 ETL하거나 일시적으로 데이터를 select할때는 hive나 presto도 상관 없음하지만 spark가 각광받는 이유는 하나의 시스템으로 다양한 것들을 할 수 있기 때문외부데이터의 예 : RDS, Nocurl 등외부데이터를 주기적으로 ETL을 통해 HDFS로 가져와주어야 함.이를 위해1. 주기적으로 ETL작업 진행 (보통 Airflow를 활용)2. 필요할 때 바로 spark에서 로딩내부든 외부든 spark에 올라가는 순간 똑같은 데이터가 됨 데이터 병렬처리와 파티션(Partition)데이터가 먼저 분산되어야함하둡 맵의 데이터 처리 단위는 디스크에 있는 데이터 블록 (128MB)hdfs-site.xml에 있는 dfs.block.size 프로퍼티가 결정Spark에서..

반응형