Apache/Apache Spark

대규모 워크로드를 위한 스파크 규모 확장 대규모 스파크 워크로드는 배치 잡인 경우가 종종 있으며, 시간적으로 파일을 실행하는 식입니다. 이때 자원부족이나 점진적인 성능 저하에 의한 작업 실패를 피하기 위해 사용해볼 수 있는 여러 스파크 설정들이 존재합니다. 해당 설정들은 스파크 드라이버, 이그제큐터, 이그제큐터에서 실행되는 셔플 서비스 등 세가지 스파크 컴포넌트에 영향을 미칩니다. 스파크 드라이버는 클러스터 매니저와 함께 클러스터에 이그제큐터들을 띄우고 그 위에서 돌아갈 수 있는 스파크 태스크들을 스케줄링 하는 역할을 합니다. 기존 정적으로 자원량을 제한하려면 spark-submit에 명령 행 인자로 자원량을 지정할 수 있었습니다. 하지만 이는 워크로드보다 더 방대한 작업으로 인해 드라이버에 나중에 테스..
스파크 SQL은 관계형 처리와 스파크의 함수형 프로그래밍 API를 통합하는 아파치 스파크의 기본 구성 요소입니다. 스파크 SQL을 사용하면 스파크 프로그래머는 더 빠른 성능 및 관계형 프로그래밍 이점을 활용할 수 있을 뿐만 아니라 복잡한 분석 라이브러리(ex.ML)을 호출 할 수 있습니다. 사용자 정의함수 Apache Spark는 대량의 내장 함수를 제공하기도 하지만, 데이터 엔지니어와 과학자도 자신의 기능을 정의할 수 있는 유연성 또한 제공합니다. 이를 사용자 정의함수(user-defined function,UDF)라고 합니다. Spark SQL UDF 사용자만의 PySpark UDF를 생성하는 이점은 사용자도 스파크 SQL 안에서 이를 사용할 수 있습니다. 이를 통해 내부를 이해하지 않고도 스파크 S..
SQL 테이블과 뷰 테이블은 데이터를 가집니다. 스파크는 각 테이블과 해당 데이터에 관련된 정보인 스키마,설명,테이블명,데이터베이스명,칼럼명,파티션,실제 데이터의 물리적 위치 등의 메타데이터를 가지고있으며, 해당 정보는 중앙 메타 스토어에 저장됩니다. 스파크는 별도 메타데이터를 생성하지 않고 기본적으로 /user/hive/warehouse에 있는 아파치 하이브 메타스토어를 사용하여 테이블에 대한 모든 메타데이터를 유지합니다. 이대 스파크 구성 변수 spark.sql.warehouse.dir을 로컬 또는 외부 분산 저장소로 설정하여 다른 위치로 기본 경로를 변경할 수 있습니다. 스파크의 관리형 테이블과 비관리형 테이블 차이 Spark는 관리형(managed or Internal Table)과 비관리형(u..
스파크 SQL 특징 스파크 SQL은 다음과 같은 특징을 갖습니다. 상위 수준의 정형화 API가 엔진으로 제공된다. 다양한 정형 데이터를 읽거나 쓸수 있다.(ex) JSON, csv, Parquet) BI의 데이터 소스나 MySQL 및 PostgreSQL과 같은 RDBMS의 데이터를 JDBC/ODBC 커넥터를 사용하여 쿼리할 수 있습니다. 스파크의 기능에 접근할 수 있는 SparkSession을 사용하면 쉽게 클래스를 가져오고 코드에서 인스턴스를 생성할 수 있습니다. 이에따라 SQL 쿼리를 실행하기 위해선 spark라고 선언된 SparkSession 인스턴스에서 spark.sql("SELECT * FROM myTableName")과 같은 sql() 함수를 사용합니다. from pyspark.sql impo..
from pyspark.sql import SparkSession from pyspark.sql.types import IntegerType, StringType, ArrayType, StructField, StructType # 기본 데이터 생성 data = [ [1, "Jules", "Damji", "asdv", "1/4/2016", 4536, ["twitter", "LinkedIN"]], [2, "Brooke", "asi", "asdv", "1/4/2017", 4546, ["twitter", "LinkedIN", "FB"]], [3, "Jules", "Damji", "asdv", "1/4/2018", 4556, ["twitter", "LinkedIN", "web"]] ] # main if __nam..
스파크 : RDD RDD는 스파크에서 가장 기본적인 추상적 부분입니다. RDD에는 세 가지의 핵심 특성이 있습니다. 의존성 dependency 결과를 새로 만들어야 하는 경우에 스파크는 이 의존성 정보를 참고하고 연산을 다시 반복하면서 RDD를 다시 만들 수 있습니다. 파티션(지역성 정보 포함) 스파크에게 작업을 나눠서 executor들에 분산하여 파티션별로 병렬 연산을 할 수 있는 능력을 부여합니다. 연산 함수: Partition => Iteratior[T] RDd에 저장되는 데이터를 Iterator[T] 형태로 만들어 주는 연산함수를 갖고 있습니다. 이러한 모델은 연산식 자체가 스파크에 투명하지 않았습니다. 예를들어 사용자가 연산 함수 안에서 조인, 필터링, 선택, 집계 등에서 스파크에서는 람다 표현..
스파크 애플리케이션 개념의 이해 애플리케이션 API를 써서 스파크 위에서 돌아가는 사용자 프로그램, 드라이버 프로그램과 클러스터의 실행기로 이뤄짐. 스파크 애플리케이션의 핵심에는 스파크 드라이버 프로그램이 있으며, 이 드라이버는 SparkSession 객체를 만듬SparkSession 스파크 코어 기능들과 상호 작용할 수 있는 진입점을 제공하며 그 API로 프로그래밍을 할 수 있게 해주는 객체. Job 스파크 액션(ex. save(),collect())에 대한 응답으로 생성되는 여러 태스크로 이뤄진 병렬 연산. 스파크 셸로 상호작용하는 작업 동안, 드라이버는 스파크 애플리케이션을 하나 이상의 스파크 잡으로 변환하고, 각 잡은 DAG로 변환됨. stage 각 job은 스테이지라 불리는 서로 의존성을 가지는..
Apache Spark 등장 배경 Spark는 Hadoop 에서 사용되는 MapReduce 형태의 클러스 컴퓨팅 한계를 극복하고자 등장하게 되었습니다. MapReduce는 Disk로부터 데이터를 읽은 후, Map을 통해 흩어져 있는 데이터를 key-value로 묶고 Reduce를 통해 원하고자 하는 데이터를 가공하여 Disk에 저장하게 되는 과정을 거치고 있는데, 이는 File 기반의 Disk I/O가 성능이 좋지 못하였고, Disk 대신 Memory 연산을 통해 성능을 향상 시키고자 Spark가 등장하게 되었습니다. Apache Spark란 Apache Spark는 통합 컴퓨팅 엔진이며 클러스터 환경에서 데이터를 병렬로 처리하는 라이브러리 집합입니다. 분산 클러스터 컴퓨팅 프레임워크로 Fault Tol..
Shine_sunho
'Apache/Apache Spark' 카테고리의 글 목록