hadoop_map_yarn
Mapreduce
https://www.datadoghq.com/blog/hadoop-architecture-overview/
MapReduceλ μ¬λ¬ μ»΄ν¨ν°μ κ±Έμ³ λΆμ°λ λ°©μμΌλ‘ λκ·λͺ¨ λ°μ΄ν° μΈνΈλ₯Ό μ²λ¦¬νκΈ° μν΄ λ§μΆ€ μ μλ νλ μμν¬
맡리λμ€ νλ‘κ·Έλλ°μ ν° μ°μ° μμ μ λ€μμ κ°μΌ μλ²λ‘ ꡬμ±λ ν΄λ¬μ€ν°μ κ³ λ₯΄κ² λλμ΄ μ²λ¦¬νλ νλ‘κ·Έλλ° λͺ¨λΈλ‘, λΉμ©ν¨μ¨μ±κ³Ό μννμ₯μ±μ μ 곡ν©λλ€. μ΄ μ°μ° λͺ¨λΈ μλμλ νλ‘ λΆμ° νμΌμμ€ν (HDFS, Hadoop Distributed Filesystem)μ΄λΌλ λΆμ° νμΌ μμ€ν μ΄ μ‘΄μ¬ν©λλ€.
λ°μ΄ν° 컬λ μ κ° μμ€λ₯Ό ν ννμμ λ€λ₯Έ ννλ‘ λ§΅ν(맡 λ¨κ³)νκ³ μ΄ λ§΅νλ λ°μ΄ν° 컬λ μ μ νλμ κ° λλ λ μμ 컬λ μ μΌλ‘ μ€μ΄λ (리λμ€ λ¨κ³) λ°μ΄ν° μ°μ°μ κΈ°λ°μ λ κ³μ° ν¨λ¬λ€μμΌλ‘ ꡬκΈμμ κ°λ°νμ΅λλ€. 맡리λμ€λ 맡과 리λμ€ λ¨κ³λ₯Ό νμ€ν¬λ‘ λλκ³ ν΄λ¬μ€ν°μ μ΄ νμ€ν¬λ₯Ό λΆμ°μν΄μΌλ‘μ¨ μν νμ₯λ κ³μ°μ΄ κ°λ₯νλλ‘ μ€κ³λμμ΅λλ€.
MapReduce μμ μ ν΅μ¬μ 3κ°μ§ μμ μΌλ‘ μ€μΌ μ μμ΅λλ€. μ λ ₯ λ°μ΄ν° μΈνΈλ₯Ό <key, value> μμ 컬λ μ μΌλ‘ 맀ννκ³ , κ²°κ³Ό λ°μ΄ν°λ₯Ό μκ³ (λ°μ΄ν°λ₯Ό 리λμλ‘ μ μ‘) λ€μμΌλ‘ λͺ¨λ μμ μΆμν©λλ€.
https://stackoverflow.com/questions/22141631/what-is-the-purpose-of-shuffling-and-sorting-phase-in-the-reducer-in-map-reduce
Split
맡리λμ€λ λ§€μ° ν° μ λ ₯ νμΌμ μ€νλ¦Ώ(split)μΌλ‘ λΆν ν©λλ€. νλ‘μ κ°κ°μ μ€νλ¦Ώμ κ°λ³ 맡 νλ‘μΈμ€μκ² λ³΄λ λλ€.
νλ‘μ 맡리λμ€ μ‘μ μ λ ₯μ μ λ ₯ μ€νλ¦Ώ(input split) λλ λ¨μν μ€νλ¦Ώμ΄λΌκ³ λΆλ₯΄λ κ³ μ ν¬κΈ° μ‘°κ°μΌλ‘ λΆλ¦¬ν©λλ€. κ° μ€νλ¦Ώλ§λ€ νλμ 맡 νμ€ν¬λ₯Ό μμ±νκ³ μ€νλ¦Ώμ κ° λ μ½λλ₯Ό μ¬μ©μ μ μ 맡 ν¨μλ‘ μ²λ¦¬ν©λλ€.
맡(Map)
맡리λμ€μ 맡ν λ¨κ³λ ν€-κ° μμ μ§ν©μ μ λ ₯μ μλ‘μ΄ ν€-κ° μ μ§ν©μΌλ‘ λ³νν©λλ€. κ° ν€-κ° μ μ λ ₯μ λν΄ ν€-κ° μμ΄ 0κ° μ΄μ μΆλ ₯λ μ μμ΅λλ€.
ν μ€μ λ¨μ΄λ₯Ό ν€-κ° μμΌλ‘ μΆλ ₯ν©λλ€.
μ»΄λ°μ΄λ(Combiner) ν¨μ
νλ‘μ 맡μ κ²°κ³Όλ₯Ό μ²λ¦¬νλ μ»΄λ°μ΄λ ν¨μ(μ»΄λ°μ΄λ ν¨μμ μΆλ ₯μ΄ κ²°κ΅ λ¦¬λμ€ ν¨μμ μ λ ₯μ΄ λ¨)λ₯Ό νμ©νλ©° μ»΄λ°μ΄λ ν¨μλ μ΅μ νμ κ΄λ ¨μ΄ μμ΅λλ€.
νλ‘μ μ»΄λ°μ΄λ ν¨μμ νΈμΆ λΉλμ μκ΄μμ΄ λ¦¬λμ€μ κ²°κ³Όκ° μΈμ λ κ°λλ‘ λ³΄μ₯ν©λλ€.
μ»΄λ°μ΄λλ₯Ό μ¬μ©νλ©΄ 맀νΌμ 리λμ μ¬μ΄μ μ ν λ¨κ³μμ μ μ‘λλ λ°μ΄ν°μμ μ€μ΄λ λ° ν° λμμ΄λ©λλ€.
μ ν(Shuffle)
κ°μ ν€λ₯Ό κ°μ§ ν€λ₯Ό λͺ¨λ λͺ¨μμ κ°μ 리λμμκ² λ³΄λ.
μ λ ¬(Sort)
리λμλ‘ μ λ¬λ λ°μ΄ν°λ₯Ό ν€ κ° κΈ°μ€μΌλ‘ μ λ ¬
리λμ€(Reduce)
리λμ€ λ¨κ³λ 맡 λ¨κ³μμ μμ±λ ν€-κ° μμ μ²λ¦¬ν©λλ€. 맡리λμ€μ μ€μν κΈ°λ₯μ λͺ¨λ 맡 νμ€ν¬μμ μμ±λ κ°μ ν€μ ν€-κ° μμ κ°μ 리λμ€ νμ€ν¬λ‘ μ μ‘νμ¬ μ μ νκ² κ²°κ΄κ°μ μ€μ΄λ κ²
리λμμ μ λ ₯ μμ ν€-κ° μμΌλ‘ ν€λ 맡νΌμμ λμ¨ λ¨μ΄ μ€ νλμ΄κ³ κ°μ κ·Έ λ¨μ΄ λ°μ νμμ 컬λ μ μ λλ€.
λͺ¨λ 리λμλ κ° λ¨μ΄μ κ° μ»¬λ μ λ³λ‘ κ°μ λͺ¨λ λνκ³ λ¨μ΄-μ΄ λ°μ μ ν€-κ° μμ μΆλ ₯ν΄μΌ ν¨
리λμ ν¨μμ λͺ©μ μ κ° μ»¬λ μ μ ν©κ³, νκ· κ³Ό κ°μ κ°μΌλ‘ λ³κ²½νκ±°λ λ€λ₯Έ 컬λ μ μΌλ‘ λ³κ²½νλ κ². μ΅μ’ ν€-κ° μμ 리λμκ° λ΄λ³΄λ λλ€
YARN
https://docs.cloudera.com/HDPDocuments/HDP2/HDP-2.1.3/bk_using-apache-hadoop/content/yarn_overview.html
νλ‘μ ν΄λ¬μ€ν° μμ κ΄λ¦¬ μμ€ν , ν΄λ¬μ€ν°μ μμμ μμ²νκ³ μ¬μ©νκΈ° μν΄ APIλ₯Ό μ 곡ν©λλ€.
맡리λμ€, μ€νν¬ λ±κ³Ό κ°μ λΆμ° μ»΄ν¨ν νλ μμν¬λ ν΄λ¬μ€ν° κ³μ° κ³μΈ΅(YARN)κ³Ό ν΄λ¬μ€ν° μ μ₯ κ³μΈ΅(HDFSμ HBase) μμμ YARN μ ν리μΌμ΄μ μ μ€νν©λλ€.
리μμ€ λ§€λμ μ λ Έλ맀λμ λ± λ κ°μ§ μ νμ μ₯κΈ° μ€ν λ°λͺ¬μ ν΅ν΄ ν΅μ¬ μλΉμ€λ₯Ό μ 곡ν©λλ€.
ν΄λ¬μ€ν°μμ μ μΌν 리μμ€ λ§€λμ λ ν΄λ¬μ€ν° μ 체 μμμ μ¬μ©λμ κ΄λ¦¬ν©λλ€.
λͺ¨λ λ¨Έμ μμ μ€νλλ λ Έλ 맀λμ λ 컨ν μ΄λλ₯Ό ꡬλνκ³ λͺ¨λν°λ§νλ μν
λΆμ° λ°μ΄ν° μ²λ¦¬ μκ³ λ¦¬μ¦μμ ν΄λ¬μ€ν°μ λ€νΈμν¬ λμνμ ν¨μ¨μ μΌλ‘ νμ©νκΈ° μν΄μλ μ§μμ±μ 보μ₯νλ κ²μ΄ κ°μ₯ μ€μν©λλ€. YARNμ νΉμ μ ν리μΌμ΄μ μ΄ νΈμΆν 컨ν μ΄λμ λν΄ μ§μμ± μ μ½μ κ·μ νλ κ²μ νμ©νλ©° μ§μμ± μ μ½μ νΉμ λ Έλλ λ λλ ν΄λ¬μ€ν°μ λ€λ₯Έ κ³³(μΈλΆ λ)μμ 컨ν μ΄λλ₯Ό μμ²ν λ μ¬μ©λ©λλ€.
YARNκ³Ό 맡리λμ€ 1μ μ°¨μ΄μ
맡리λμ€ 1μλ μ‘μ μ€νκ³Όμ μ μ μ΄νλ νλμ μ‘νΈλ컀μ νλ μ΄μμ νμ€ν¬νΈλμ»€λ± λ μ’ λ₯μ λ°λͺ¬μ΄ μμ΅λλ€.
https://docs.cloudera.com/HDPDocuments/HDP2/HDP-2.1.3/bk_using-apache-hadoop/content/yarn_overview.html
μ‘νΈλ컀
μ¬λ¬ νμ€ν¬νΈλ컀μμ μ€νλλ νμ€ν¬λ₯Ό μ€μΌμ€λ§ν¨μΌλ‘μ¨ μμ€ν μμ μ€νλλ λͺ¨λ μ‘μ μ‘°μ¨ν©λλ€.
맡리λμ€ 1μμ μ‘ μ€μΌμ€λ§(νμ€ν¬μ νμ€ν¬νΈλ컀λ₯Ό μ°κ²°)κ³Ό νμ€ν¬ μ§ν λͺ¨λν°λ§(νμ€ν¬λ₯Ό μΆμ νκ³ , μ€ν¨νκ±°λ λλ¦° νμ€ν¬λ₯Ό λ€μ μμνκ³ , μ 체 μΉ΄μ΄ν°λ₯Ό μ μ§νλ λ°©λ²μΌλ‘ νμ€ν¬ μ₯λΆ(bookeeping)λ₯Ό λ§‘κ³ μμΌλ©°, λ°λ©΄ YARNμ μ΄λ¬ν μν μ λΆλ¦¬λ κ°μ²΄μΈ 리μμ€ λ§€λμ μ μ ν리μΌμ΄μ λ§μ€ν°(맡리λμ€ μ‘λΉ νλ)λ₯Ό ν΅ν΄ μ²λ¦¬ν©λλ€.
μλ£λ μ‘μ λν μ‘ μ΄λ ₯μ μ μ₯νλ μν μ λ§‘κ³ μ‘νΈλ컀μ λΆνλ₯Ό μ€μ΄κΈ° μν΄ λ³λμ λ°λͺ¬μΈ νμ€ν 리 μλ²λ₯Ό ν΅ν΄ μνλ μλ μμ΅λλ€. YARNμμ μ΄μ λμΌν μν μ μ ν리μΌμ΄μ μ μ΄λ ₯μ μ μ₯νλ νμλΌμΈ μλ²κ° λ§‘κ³ μμ΅λλ€.
νμ€ν¬νΈλ컀
νμ€ν¬λ₯Ό μ€ννκ³ μ§ν μν©μ μ‘νΈλ컀μ μ μ‘νκΈ° λλ¬Έμ μ‘νΈλ컀λ κ° μ‘μ μ 체μ μΈ μ§ν μν©μ νμ ν μ μμ΅λλ€.
맡리λμ€ 1κ³Ό YARN μ»΄ν¬λνΈμ λΉκ΅
μ‘νΈλ컀 - 리μμ€ λ§€λμ , μ ν리μΌμ΄μ λ§μ€ν°, νμλΌμΈ μλ²
νμ€ν¬νΈλ컀 - λ Έλ 맀λμ
μ¬λ‘― - 컨ν μ΄λ
YARNμ μ¬μ©νμ¬ μ»μ μ μλ μ΄μ΅
νμ₯μ± : 맡 리λμ€ 1λ³΄λ€ ν° ν΄λ¬μ€ν°μμ μ€νλ μ μμ΅λλ€.
κ°μ©μ± : κ³ κ°μ©μ±(high availability - HA)μ μλΉμ€ λ°λͺ¬μ λ¬Έμ κ° λ°μνμ λ μλΉμ€μ νμν μμ μ λ€λ₯Έ λ°λͺ¬μ΄ μ΄μ΄λ°μ μ μλλ‘ μν μ 보λ₯Ό νμ 볡μ¬ν΄ λλ λ°©λ²μΌλ‘ ꡬνν©λλ€.
ν¨μ¨μ±
λ©ν°ν λμ(λ€μ€ μ¬μ©μ) : νλ‘μ΄ λ§΅λ¦¬λμ€λ₯Ό λ°μ΄λμ΄ λ€μν λΆμ° μ ν리μΌμ΄μ μ μμ©ν μ μμ΅λλ€.
YARN μ€μΌμ€λ§
https://github.com/mjs1995/muse-data-engineer/blob/main/doc/Batch%20Processing/spark_yarn.md
μ€μΌμ€λ¬ μ΅μ
FIFO, μΊνΌμν°(κ°μ©λ), νμ΄(κ· λ±) μ€μΌμ€λ¬λ₯Ό μ 곡ν©λλ€.
FIFO
μ ν리μΌμ΄μ μ νμ νλμ© λ£κ³ μ μΆλ μμμ λ°λΌ μμ°¨μ μΌλ‘ μ€νν¨(μ μ μ μΆ λ°©μ), νμ μ²μμΌλ‘ λ€μ΄μ¨ μ ν리μΌμ΄μ μμ²μ λ¨Όμ ν λΉνκ³ , μ΄ μμ²μ μ²λ¦¬ν ν νμ μλ λ€μ μ ν리μΌμ΄μ μμ²μ μ²λ¦¬νλ λ°©μμΌλ‘ μμ°¨μ μΌλ‘ μ€νν©λλ€.
곡μ ν΄λ¬μ€ν° νκ²½μμλ μ ν©νμ§ μμ΅λλ€. λν μ ν리μΌμ΄μ μ΄ μνλ λλ ν΄λ¬μ€ν°μ λͺ¨λ μμμ μ μ ν΄ λ²λ¦΄ μ μκΈ° λλ¬Έμ λ€λ₯Έ μ ν리μΌμ΄μ μ μκΈ° μ°¨λ‘κ° μ¬ λκΉμ§ κ³μ λκΈ°ν΄μΌ νλ©° λ€λ₯Έ λ μ€μΌμ€λ¬λ μ₯μκ° μνλλ μ‘μ κ³μ μ²λ¦¬νλ λμμ μμ λΉμ ν μ§μλ μ€κ°μ μ€ννμ¬ μ λΉν μκ° λ΄μ μ¬μ©μκ° κ²°κ³Όλ₯Ό μ»μ μ μλλ‘ νμ©ν©λλ€.
μΊνΌμν°(Capacity)
μμ μ‘μ μ μΆλλ μ¦μ λΆλ¦¬λ μ μ© νμμ μ²λ¦¬ν©λλ€.
λ¬Όλ‘ ν΄λΉ νλ μ‘μ μν μμμ 미리 μμ½ν΄ λκΈ° λλ¬Έμ μ 체 ν΄λ¬μ€ν°μ ν¨μ¨μ±μ λ¨μ΄μ§λ©° λν μ‘μ FIFO μ€μΌμ€λ¬λ³΄λ€ λ¦κ² λλκ² λ©λλ€.
νμ¬μ μ‘°μ§ μ²΄κ³μ λ§κ² νλ‘ ν΄λ¬μ€ν°λ₯Ό 곡μ ν μ μμ΅λλ€. κ° μ‘°μ§μ μ 체 ν΄λ¬μ€ν°μ μ§μ λ κ°μ©λμ 미리 ν λΉλ°κ³ κ° μ‘°μ§μ λΆλ¦¬λ μ μ© νλ₯Ό κ°μ§λ©° ν΄λ¬μ€ν° κ°μ©λμ μ§μ λ λΆλΆμ μ¬μ©νλλ‘ μ€μ ν μ μμ΅λλ€.
νμ΄(Fair)
μ€ν μ€μΈ λͺ¨λ μ‘μ μμμ λμ μΌλ‘ λΆλ°°νκΈ° λλ¬Έμ 미리 μμμ κ°μ©λμ μμ½ν νμκ° μμΌλ©° λν μ‘μ΄ λ¨Όμ μμλλ©΄ μ΄λλ μ€ν μ€μΈ μ‘μ΄ νλλ°μ μκΈ° λλ¬Έμ ν΄λ¬μ€ν°μ λͺ¨λ μμμ μ»μ μ μμ΅λλ€.
λν μ‘μ΄ μ€νλλ λμ€μ μμ μ‘μ΄ μΆκ°λ‘ μμλλ©΄ νμ΄ μ€μΌμ€λ¬λ ν΄λ¬μ€ν° μμμ μ λ°μ μ΄ μ‘μ ν λΉν©λλ€. κ° μ‘μ ν΄λ¬μ€ν°μ μμμ 곡ννκ² μ¬μ©ν μ μκ² λ©λλ€.
μ€ν μ€μΈ λͺ¨λ μ ν리μΌμ΄μ μ λμΌνκ² μμμ ν λΉν©λλ€.
Reference
https://www.oreilly.com/library/view/hadoop-the-definitive/9780596521974/
https://www.oreilly.com/library/view/programming-hive/9781449326944/
Last updated