λŸ¬λ‹ 슀파크 chapter 3μž₯κΉŒμ§€ 읽은 λ‚΄μš©μ„ 정리해 보고자 ν•œλ‹€.

 

HDFS와 λ§΅λ¦¬λ“€μŠ€ ν”„λ ˆμž„μ›Œν¬λ₯Ό μ‚¬μš©ν•˜μ—¬ 빅데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” κ²ƒμ—λŠ” 단점이 μ‘΄μž¬ν•œλ‹€. κ°€μž₯ 큰 단점은 배치 μž‘μ—…μ„ μˆ˜ν–‰ν•˜λ©΄μ„œ MR νƒœμŠ€ν¬μ˜ 쀑간 단계듀을 둜컬 λ””μŠ€ν¬μ— μ¨μ•Όν–ˆλ‹¨ 점이닀. 이것은 μž¦μ€ λ””μŠ€ν¬ I/O μˆ˜ν–‰μ„ μΌμœΌν‚€λ©° 데이터 처리 속도가 맀우 λŠλ €μ§„λ‹€.

 

κ·Έλž˜μ„œ μ•„νŒŒμΉ˜ μŠ€νŒŒν¬κ°€ νƒ„μƒν•˜μ˜€λ‹€. μ•„νŒŒμΉ˜ μŠ€νŒŒν¬λŠ” λŒ€κ·œλͺ¨ λΆ„μ‚° 데이터 μ—°μ‚° 처리λ₯Ό μœ„ν•΄μ„œ μ„€κ³„λœ ν†΅ν•©ν˜• 엔진이닀.

μŠ€νŒŒν¬λŠ” ν•˜λ‘‘ λ§΅λ¦¬λ“€μŠ€μ˜ 단점을 λ³΄μ™„ν•˜λ©° μ—…κ·Έλ ˆμ΄λ“œ λ˜μ—ˆκ³  4κ°€μ§€ νŠΉμ§•μ΄ μžˆλ‹€.

 

첫번째, 속도

μŠ€νŒŒν¬λŠ” 질의 연산을 λ°©ν–₯μ„± λΉ„μˆœν™˜ κ·Έλž˜ν”„(DAG)둜 κ΅¬μ„±ν•˜κ³  ν΄λŸ¬μŠ€ν„°μ˜ μ›Œν¬ λ…Έλ“œ μœ„μ—μ„œ 병렬 μˆ˜ν–‰λœλ‹€. 슀파크 SQL μ—”μ§„ 의 μ£Όμš” κΈ°λŠ₯ 쀑 ν•˜λ‚˜μΈ ν……μŠ€ν…(Tungsten)은 전체 쿼리λ₯Ό ν•˜λ‚˜μ˜ ν•¨μˆ˜λ‘œ 합쳐 가상 ν•¨μˆ˜ ν˜ΈμΆœμ΄λ‚˜ 쀑간 데이터λ₯Ό μœ„ν•œ CPU μ‚¬μš©μ„ μ—†μ•€λ‹€. 이 방법을 포괄 μ½”λ“œ 생성이라고 ν•œλ‹€. μ΄λŸ¬ν•œ 방법은 CPU μ‚¬μš©λŸ‰μ„ 쀄이고 νš¨μœ¨μ„ 높인닀. ν•˜λ‘‘ λ§΅λ¦¬λ“€μŠ€μ™€ λ‹€λ₯΄κ²Œ λͺ¨λ“  쀑간 κ²°κ³ΌλŠ” λ©”λͺ¨λ¦¬μ— μ €μž₯되며 λ””μŠ€ν¬ I/O μ‚¬μš©μ„ 쀄인닀.

 

λ‘λ²ˆμ§Έ, μ‚¬μš©νŽΈλ¦¬μ„±

데이터 ν”„λ ˆμž„, λ°μ΄ν„°μ„ΈνŠΈ, RDD API둜 인해 μ‚¬μš©μžκ°€ κ°„κ²°ν•˜κ³  λ‹¨μˆœν•œ μ½”λ“œ μž‘μ„±μ΄ κ°€λŠ₯ν•˜λ‹€.

 

μ„Έλ²ˆμ§Έ, λͺ¨λ“ˆμ„±

4κ°€μ§€ μ»΄ν¬λ„ŒνŠΈ(슀파크SQL, 슀파크 μ •ν˜•ν™” 슀트리밍, MLlib, GraphX)κ°€ μ‘΄μž¬ν•˜λ©° ν•˜λ‚˜μ˜ μ—”μ§„ μ•ˆμ—μ„œ μ‚¬μš© κ°€λŠ₯ν•˜λ©° λ³„λ„μ˜ 엔진을 돌릴 ν•„μš”λ„ μ—†κ³  λ³„λ„μ˜ APIλ₯Ό 배울 ν•„μš”λ„ μ—†λ‹€.

 

λ„€λ²ˆμ§Έ, ν™•μž₯μ„±

μŠ€νŒŒν¬λŠ” λΉ λ₯Έ 병렬 연산에 초점이 맞좰져 μžˆκΈ°μ— μ €μž₯을 λ‹΄λ‹Ήν•˜λŠ” μ—¬λŸ¬ 데이터 μ†ŒμŠ€μ™€μ˜ ν™•μž₯성이 λ›°μ–΄λ‚˜λ‹€. ν•˜λ‘‘μ€ μ €μž₯κ³Ό 연산을 λͺ¨λ‘ ν¬ν•¨ν•˜κ³  μžˆλ‹€.

 

μ½”λ“œκ°€ μ–΄λ–»κ²Œ 슀파크 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ λ™μž‘ν•˜λŠ”μ§€ μ‚΄νŽ΄λ³΄μž.

 

μ• ν”Œλ¦¬μΌ€μ΄μ…˜

- APIλ₯Ό μ¨μ„œ 슀파크 μœ„μ—μ„œ λŒμ•„κ°€λŠ” μ‚¬μš©μž ν”„λ‘œκ·Έλž¨. λ“œλΌμ΄λ²„μ™€ ν΄λŸ¬μŠ€ν„° μ‹€ν–‰κΈ°λ‘œ 이루어진닀.

 

SparkSession

- 슀파크 μ½”μ–΄ κΈ°λŠ₯λ“€κ³Ό μƒν˜Έ μž‘μš©ν•  수 μžˆλŠ” μ§„μž…μ μ„ μ œκ³΅ν•˜λŠ” 객체이며, μ‚¬μš©μžκ°€ SparkSession 객체λ₯Ό 생성해야 ν•œλ‹€.

 

Job

- 슀파크 μ•‘μ…˜μ— λŒ€ν•œ μ‘λ‹΅μœΌλ‘œ μƒμ„±λ˜λŠ” μ—¬λŸ¬ νƒœμŠ€ν¬λ‘œ 이루어진 병렬 μ—°μ‚°

 

Stage

- Job은 μŠ€ν…Œμ΄μ§€λΌ λΆˆλ¦¬λŠ” μ„œλ‘œ μ˜μ‘΄μ„±μ„ κ°€μ§€λŠ” λ‹€μˆ˜μ˜ νƒœμŠ€ν¬ λͺ¨μŒμœΌλ‘œ λ‚˜λ‰œλ‹€.

 

Task- 슀파크 μ΄κ·Έμ œνν„°λ‘œ λ³΄λ‚΄μ§€λŠ” μž‘μ—… μ‹€ν–‰μ˜ κ°€μž₯ 기본적인 λ‹¨μœ„

 

슀파크 연산은 Transformationκ³Ό Action으둜 λ‚˜λ‰˜λ©°, Action이 ν˜ΈμΆœλ˜μ§€ μ•ŠμœΌλ©΄ μŠ€νŒŒν¬λŠ” μ•„μ˜ˆ μ‹€ν–‰λ˜μ§€ μ•ŠλŠ”λ‹€.

Transformation은 원본 데이터λ₯Ό μˆ˜μ •ν•˜μ§€ μ•Šκ³  ν•˜λ‚˜μ˜ 슀파크 데이터 ν”„λ ˆμž„μ„ μƒˆλ‘œ λ§Œλ“€μ–΄μ„œ 결과값을 λ¦¬ν„΄ν•œλ‹€.

λͺ¨λ“  Transformation은 결과값이 μ¦‰μ‹œ κ³„μ‚°λ˜μ§€ μ•ŠλŠ”λ‹€. 이λ₯Ό lineage라 ν•˜λ©°, 기둝된 λ¦¬λ‹ˆμ§€λŠ” μŠ€νŒŒν¬κ°€ νŠΈλ ŒμŠ€ν¬λ©”μ΄μ…˜λ“€λΌλ¦¬ ν•©μΉ˜κ±°λ‚˜ μž¬λ°°μ—΄ν•˜κ±°λ‚˜ ν•΄μ„œ 효율적으둜 μ‹€ν–‰ν•  수 μžˆλ„λ‘ μ΅œμ ν™” ν•œλ‹€. νŠΈλžœμŠ€ν¬λ©”μ΄μ…˜μ„ λ¦¬λ‹ˆμ§€μ— 기둝만 해두고 μ‹€ν–‰ν•˜μ§€ μ•ŠλŠ” 것을 μ§€μ—° 평가라고 ν•œλ‹€. μ½”λ“œμ—μ„œ μ•‘μ…˜μ„ λ§Œλ‚¬μ„ λ•Œ λͺ¨λ“  νŠΈλžœμŠ€ν¬λ©”μ΄μ…˜μ˜ μ§€μ—° 연산이 λ°œλ™λ˜λ©° μƒˆλ‘œμš΄ 데이터 ν”„λ ˆμž„μ„ μƒμ„±ν•˜μ—¬ μž‘μ—…ν•œλ‹€.

 

=> μ§€μ—° ν‰κ°€λŠ” 쿼리 μ΅œμ ν™”λ₯Ό κ°€λŠ₯ν•˜κ²Œ ν•˜κ³  λ¦¬λ‹ˆμ§€μ™€ 데이터 λΆˆλ³€μ„±μ€ μž₯애에 λŒ€ν•œ 데이터 내ꡬ성을 μ œκ³΅ν•œλ‹€.

 

쒁은/넓은 νŠΈλžœμŠ€ν¬λ©”μ΄μ…˜

ν•˜λ‚˜μ˜ νŒŒν‹°μ…˜ λ‚΄μ—μ„œ 처리 ν•  수 있으면 쒁은 νŠΈλžœμŠ€ν¬λ©”μ΄μ…˜μœΌλ‘œ filter()λ‚˜ contains()κ°€ ν¬ν•¨λœλ‹€. λ°˜λ©΄μ— νŒŒν‹°μ…˜λΌλ¦¬ 데이터 κ΅ν™˜μ΄ λ°œμƒν•˜κ³  λ””μŠ€ν¬ μž‘μ—… 등이 λ°œμƒν•˜λ©΄ 넓은 νŠΈλžœμŠ€ν¬λ©”μ΄μ…˜μœΌλ‘œ groupby()λ‚˜ orderby()κ°€ ν¬ν•¨λœλ‹€.

+ Recent posts