반응형

**빅공잼님 덕분에 빅데이터 분석 환경 구축을 해볼 수 있었습니다. 감사합니다.**

 

1강. AWS EC2 인스턴스 배포

  1. Ubuntu Server 20.04 LTS 64 bit 와 비슷하게 인스턴스를 생성해줍니다.
  2. *현재 AWS 가 아닌 GCP 환경에서 VM 을 생성했습니다.
  3. ssh-keygen 으로 ssh 키를 생성합니다.
    1. $ ssh-keygen -t rsa -f ~/.ssh/[KEY_FILENAME] -C [USERNAME]
      • t [타입명] : key 생성 type을 선택하는 옵션입니다.
      • f [파일명] : 생성할 key 파일의 이름을 설정하는 옵션입니다.
      • C [내용] : 사용자에 대한 주석을 입력합니다.
      • b [숫자] : type의 bytes를 설정합니다. rsa 암호화 방식은 기본 값이 2048이며, 4096으로 더 안전한 키를 생성할 수도 있습니다.
    2. ssh 키가 public(.pub) 과 private 이 생성됩니다.
  4. 생성된 키를 GCP 콘솔 서버에 등록합니다.
    1. Compute Engine 에서 ‘VM 인스턴스’ 있는 사이드 바에 메타데이터가 존재합니다. 메타데이터에 들어간 후, SSH 키 태그를 누릅니다.
    2. 추가를 합니다.
  5. ~/.ssh 폴더에 config 파일을 만들어 ssh 연결 설정을 해줍니다.
    1. 코드**Troubleshooting
    2. VM 인스턴스를 정지 후 새로 시작하면 외부 IP 주소가 바뀌기 때문에 재실행 시 config 설정 값도 수정해줘야 합니다.
    3. Host nn1 HostName 10.10.171.101 User jay IdentityFile ~/.ssh/rsa_big_data
    4. ssh nn1 을 터미널에 입력해주면 Host nn1 설정을 읽고 실행해줍니다.
반응형
반응형

**빅공잼님 덕분에 빅데이터 분석 환경 구축을 해볼 수 있었습니다. 감사합니다.**

 

0강. 개요

  • 고가용성 Hadoop 클러스터 환경 구축합니다.
  • 총 5개의(nn1, nn2, dn1, dn2, dn3) vm 이 필요합니다.
반응형
반응형

스키마 정의 장점 및 방법

스키마 정의 장점

  1. 스파크가 데이터 타입을 추측해야 하는 책임을 덜어줍니다.
  2. 스파크가 스키마를 확정하기 위해 파일의 많은 부분을 읽어 들이려고 별도의 잡을 만드는 것을 방지합니다.
  3. 데이터가 스키마와 맞지 않는 경우, 조기에 문제를 발견할 수 있습니다.

 

스키마 정의 방법

스키마를 정의하는 2 가지 방법이 있습니다.

1. 프로그래밍 스타일로 정의합니다.

import org.apache.spark.sql.types._ 
val schema = StructType(Array(StructField("author", StringType, false), 
	StructField("title", StringType, false), 
	StructField("pages", StringType, false), 
))

 

2. DDL(data definition language) 을 사용합니다.

val schema = "author STRING, title STRING, pages INT"

 

 

사용 방법

val schema = ~~ 
val data = ~~ 
if __main__ == "__main__": 
	spark = (SparkSession.builder.appName("appName").getOrCreate()) 
    blogs_df = spark.createDataFrame(data, schema) 
    blogs_df.show() 
    print(blogs_df.printSchema())

 

반응형
반응형

RDD 의 3가지 특성

Dependency

  • 어떤 입력을 필요로 하고 현재의 RDD 가 어떻게 만들어지는지 스파크에게 가르쳐 주는 것이 Dependency 입니다. 결과를 새로 만들어아야 하는 경우에 스파크는 이 의존성 정보를 참고하고 연산을 다시 반복해서 RDD 를 다시 만들 수 있습니다. 즉, 유연성을 제공합니다.

 

Partition(지역성 정보 포함)

  • 스파크에게 작업을 나눠서 이그제큐터들에 분산해 파티션별로 병렬 연산할 수 있도록 해줍니다.

 

Compute function(연산 함수): Partition ⇒ Iterator[T]

  • Iterator[T] 형태로 만들어줍니다.
반응형
반응형

트랜스포메이션과 액션

트랜스포메이션

  • 불변성의 특징을 가진 원본 데이터를 수정하지 않고 하나의 Spark 데이터 프레임을 새로운 데이터 프레임으로 바꾸는 것을 말합니다. 예를 들어 select(), filter() 같은 연산은 원본 데이터 프레임을 수정하지 않으며, 새로운 데이터 프레임으로 연산 결과를 만들어 되돌려 줍니다.
  • 모든 트랜스포메이션은 뒤늦게 평가합니다. 결과가 즉시 계산되는 게 아니라 계보(lineage)라 불리는 형태로 기록됩니다. 기록된 lineage 는 실행 계획에서 후반쯤에 Spark 가 확실한 트랜스포메이션들끼리 재배열하거나 합치거나 해서 더 효율적으로 실행할 수 있도록 최적화하도록 합니다.
  • 지연 평가는 액션이 실행되는 시점이나 데이터에 실제 접근하는 시점까지 실제 실행을 미루는 Spark 의 전략입니다.

 

액션

  • 액션은 모든 기록된 트랜스포메이션의 지연 연산을 발동시킵니다.
반응형
반응형

Spark 애플리케이션 용어

  • 애플리케이션: API 를 써서 Spark 위에서 돌아가는 사용자 프로그램입니다. 드라이버 프로그램과 클러스터의 실행기로 이루어집니다.
  • SparkSession: Spark 코어 기능들과 상호 작용할 수 있는 진입점을 제공하며, 그 API 로 프로그래밍을 할 수 있게 해주는 객체입니다. Spark shell 에서 Spark 드라이버는 기본적으로 SparkSession 을 제공하지만 Spark 애플리케이션에서는 사용자가 SparkSession 객체를 생성해서 써야 합니다.
  • Job: Spark action(예. save(), collect()) 에 대한 응답으로 생성되는 여러 task 로 이루어진 병렬 연산입니다.
  • Stage: 각 job 은 스테이지라 불리는 서로 의존성을 가지는 다수의 task 모음으로 나누어집니다.
  • Task: Spark 이그제쿠터로 보내지는 작업 실행의 가장 기본적인 단위입니다.
반응형

'Data engineer > Apache Spark' 카테고리의 다른 글

[Spark]RDD 의 3가지 특성  (1) 2024.01.21
[Spark]트랜스포메이션과 액션  (0) 2024.01.21
[Spark]Spark 디렉토리와 파일들  (0) 2024.01.09
[Spark]Spark 사용 예시  (0) 2024.01.09
[Spark]tungsten 이란?  (0) 2024.01.07
반응형

Spark 디렉토리와 파일들

  • README.md
  • bin
    • Spark shell 들을 포함하여 Spark 와 상호 작용할 수 있는 대부분의 스크립트를 가지고 있습니다.
    • shell 과 실행 파일은 나중에 spark-submit 을 써서 단독 Spark 애플리케이션을 제출하거나 쿠버네티스로 Spark 를 실행할 때 도커 이미지를 만들고 푸시하는 스크립트 작성을 위해 사용할 수 있습니다.
  • sbin
    • 스크립트 중 대부분은 다양한 배포 모드에서 클러스터의 Spark 컴포넌튿르을 시작하고 중지하기 위한 관리 목적에 스크립트입니다.
  • kubernetes
    • Spark 2.4 릴리스부터 이 디렉토리에 쿠버네티스 클러스터에서 쓰는 Spark 를 위한 도커 이미지 제작을 위한 Dockerfile 들이 있습니다.
  • data
    • MLlib, 정형화 프로그래밍, GraphX 등에서 입력으로 사용되는 *.txt 파일들이 있습니다.
  • examples
    • 코드 examples 가 있습니다.
반응형

'Data engineer > Apache Spark' 카테고리의 다른 글

[Spark]트랜스포메이션과 액션  (0) 2024.01.21
[Spark]Spark 애플리케이션 용어  (0) 2024.01.09
[Spark]Spark 사용 예시  (0) 2024.01.09
[Spark]tungsten 이란?  (0) 2024.01.07
[Spark]Spark executor 이란?  (0) 2024.01.07
반응형

Spark 사용 예시

  • 클러스터 전체에 걸쳐 분산된 대규모 데이터 세트의 병렬 처리.
  • 데이터 탐색이나 시각화를 위한 일회성이나 대화형 질의 수행.
  • MLlib 을 이용해 머신러닝 모델을 구축, 훈련, 평가하기.
  • 다양한 데이터 스트림으로부터 끝까지 데이터 파이프라인 구현.
  • 그래프 데이터 세트와 소셜 네트워크 분석.
반응형

'Data engineer > Apache Spark' 카테고리의 다른 글

[Spark]Spark 애플리케이션 용어  (0) 2024.01.09
[Spark]Spark 디렉토리와 파일들  (0) 2024.01.09
[Spark]tungsten 이란?  (0) 2024.01.07
[Spark]Spark executor 이란?  (0) 2024.01.07
[Spark]Spark Cluster Manager 이란?  (0) 2024.01.07

+ Recent posts