μ°Έκ³  λ¬Έν—Œ

0. Install Spark

1. First Spark

1.1 Hellow Spark

Apache Spark is a lightning-fast unified analytics engine for big data and machine learning. (μ•„νŒŒμΉ˜ μŠ€νŒŒν¬λŠ” λΉ›μ²˜λŸΌ λΉ λ₯Έ ν†΅ν•©λœ 뢄석 엔진이닀. 빅데이터 뢄석과 λ¨Έμ‹ λŸ¬λ‹μ„ μœ„ν•΄μ„œ)

톡합 μ»΄ν“¨νŒ… 엔진이며 ν΄λŸ¬μŠ€ν„° ν™˜κ²½μ—μ„œ 데이터λ₯Ό λ³‘λ ¬λ‘œ μ²˜λ¦¬ν•˜λŠ” 라이브러리 집합

1.2 μ•„νŒŒμΉ˜ 슀파크의 μ² ν•™

"빅데이터λ₯Ό μœ„ν•œ 톡합 μ»΄ν“¨νŒ… 엔진과 라이브러리 집합"

1.2.1 톡합(Unified)

μŠ€νŒŒν¬λŠ” '빅데이터 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œμ— ν•„μš”ν•œ 톡합 ν”Œλž«νΌμ„ μ œκ³΅ν•˜μž'λŠ” 핡심 λͺ©ν‘œλ₯Ό 가지고 μžˆλ‹€. κ·Έλ ‡λ‹€λ©΄ 톡합(Unified)μ΄λž€ μ˜λ―ΈλŠ” λ¬΄μ—‡μΌκΉŒ? μŠ€νŒŒν¬λŠ” κ°„λ‹¨ν•œ 데이터 μˆ˜μ§‘λΆ€ν„° SQL처리, λ¨Έμ‹ λŸ¬λ‹ 그리고 슀트림(Stream) μ²˜λ¦¬μ— 이λ₯΄κΈ°κΉŒμ§€ λ‹€μ–‘ν•œ 데이터 뢄석 μž‘μ—…μ„ 동일 μ—°μ‚° 엔진과 일괄성 μžˆλŠ” API둜 μˆ˜ν–‰ν•  수 μžˆλ‹€.

일관성 μžˆλŠ” μ‘°ν•©ν˜• APIλ₯Ό μ œκ³΅ν•˜λ―€λ‘œ μž‘μ€ μ½”λ“œ μ‘°κ°μ΄λ‚˜ κΈ°μ‘΄ 라이브러리λ₯Ό μ΄μš©ν•΄μ„œ κ°„λ‹¨ν•˜κ²Œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ§Œλ“€ 수 μžˆλ‹€. μ‘°ν•©ν˜• API으둜 문제λ₯Ό ν•΄κ²°ν•  수 μ—†λ‹€λ©΄, 직접 슀파크 기반의 라이브러리λ₯Ό λ§Œλ“€ 수 도 μžˆλ‹€.

1.2.2 μ»΄ν“¨νŒ… 엔진(Clustering)

μŠ€νŒŒν¬λŠ” μ €μž₯μ†Œ μ‹œμŠ€ν…œμ˜ 데이터λ₯Ό μ—°μ‚°ν•˜λŠ” μ—­ν• λ§Œ μˆ˜ν–‰ν•  뿐 영ꡬ μ €μž₯μ†Œ 역할은 μˆ˜ν–‰ν•˜μ§€ μ•ŠλŠ”λ‹€.(이 뢀뢄이 ν•˜λ‘‘κ³Ό 큰 차이점을 가지고 μžˆλ‹€.) κ·Έλž˜μ„œ μŠ€νŒŒν¬λŠ” λ‹€μ–‘ν•œ μ €μž₯μ†Œμ™€ 컨텍(connect)ν•  수 μžˆλŠ” 라이브러리λ₯Ό μ œκ³΅ν•œλ‹€.

μŠ€νŒŒν¬λŠ” 내뢀에 데이터λ₯Ό 였랜 μ‹œκ°„ μ €μž₯ν•˜μ§€ μ•ŠμœΌλ©° νŠΉμ • μ €μž₯μ†Œ μ‹œμŠ€ν…œμ„ μ„ ν˜Έν•˜μ§€ μ•ŠλŠ”λ‹€. 데이터 이동은 높은 λΉ„μš©μ„ μœ λ°œν•˜κΈ° λ•Œλ¬Έμ— μŠ€νŒŒν¬λŠ” 데이터 μ €μž₯ μœ„μΉ˜μ— 상관 없이 μ²˜λ¦¬μ— μ§‘μ€‘ν•˜λ„λ‘ λ§Œλ“€μ–΄ μ‘Œλ‹€.

1.2.3 라이브러리(Library)

μŠ€νŒŒν¬κ°€ 세상속에 λ‚˜νƒ€λ‚˜κ³  슀파크 μ½”μ–΄λŠ” μ΄ˆμ°½κΈ°μ™€ λΉ„κ΅ν–ˆμ„ λ•Œ λ§Žμ€ 변화은 μ—†μ—ˆλ‹€. ν•˜μ§€λ§Œ λ‚΄λΆ€μ μœΌλ‘œ λ§Žμ€ λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ΄ μƒκ²Όλ‚˜κ³ , λ˜ν•œ μ™ΈλΆ€μ—μ„œ μ„œλ“œνŒŒν‹°ν”„λ‘œμ νŠΈλ₯Ό ν†΅ν•΄μ„œ λ§Žμ€ λΌμ΄λΈŒλŸ¬λ¦¬λ“€ νƒ„μƒν–ˆλ‹€. κ·Έ 예둜 슀파크SQL, λ¨Έμ‹ λŸ¬λ‹ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ§€μ›ν•˜λŠ” MiLab λ“± λ§Žμ€ λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ΄ μ‘΄μž¬ν•œλ‹€.

2. Spark κ°„λ‹¨νžˆ μ‚΄νŽ΄λ³΄κΈ°

2.1 슀파크의 κΈ°λ³Έ μ•„ν‚€ν…μ²˜

ν΄λŸ¬μŠ€ν„°μ—μ„œ μž‘μ—…(Job)을 쑰율 ν•΄μ£ΌλŠ” 역할을 ν•˜λŠ” ν”„λ ˆμž„μ›Œν¬. μŠ€νŒŒν¬λŠ” ν΄λŸ¬μŠ€ν„°μ˜ 데이터 처리 μž‘μ—…μ„ κ΄€λ¦¬ν•˜κ³  μ‘°μœ¨ν•œλ‹€. μŠ€νŒŒν¬κ°€ 연산에 μ‚¬μš©ν•˜λŠ” ν΄λŸ¬μŠ€ν„°λŠ” 슀파크 μŠ€νƒ λ“œμ–Όλ‘ , ν•˜λ‘‘μ˜ YARN, λ©”μ†ŒμŠ€(Mecos) 같은 클러슀트 λ§€λ‹ˆμ Έμ—μ„œ κ΄€λ¦¬ν•œλ‹€. μ‚¬μš©μžλŠ” 클러슀트 λ§€λ‹ˆμ Έμ—κ²Œ 슀파크 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 제좜(submit)ν•œλ‹€. 이λ₯Ό μ œμΆœλ°›μ€ ν΄λŸ¬μŠ€ν„° λ§€λ‹ˆμ ΈλŠ” μ• ν”ŒμΌ€μ΄μ…˜ 싀행에 ν•„μš”ν•œ μžμ›μ„ ν• λ‹Ήν•˜λ©° μš°λ¦¬λŠ” 할당받은 μžμ›μœΌλ‘œ μž‘μ—…μ„ μ²˜λ¦¬ν•œλ‹€.

2.2 Spark Application

슀파크 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ ν•˜λ‚˜μ˜ λ“œλΌμ΄λ²„(Driver) ν”„λ‘œμ„ΈμŠ€μ™€ λ‹€μˆ˜μ˜ μ΅μŠ€νν„°(Executoer) ν”„λ‘œμ„ΈμŠ€λ‘œ ꡬ성을 이룬닀.