Home > ๐Ÿ“– ๊ฐœ์ธ ๊ณต๋ถ€ > ๐Ÿ‘‰ Apache Hadoop > ๐Ÿ“˜ ํ•˜๋‘ก ์—์ฝ”์‹œ์Šคํ…œ๊ณผ ์šด์˜ ๋ฐ ๊ด€๋ฆฌ

๐Ÿ“˜ ํ•˜๋‘ก ์—์ฝ”์‹œ์Šคํ…œ๊ณผ ์šด์˜ ๋ฐ ๊ด€๋ฆฌ
Apache Hadoop Study

์ €๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š”, Map Reduce ๋ฅผ ๊ณต๋ถ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
์ด๋ฒˆ์—๋Š” ํ•˜๋‘ก์˜ ์—ฌ๋Ÿฌ ์—์ฝ”์‹œ์Šคํ…œ๋“ค์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๊ณ  ์ •๋ฆฌํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


๐Ÿ“Œ Hadoop ์„ ๊ณต๋ถ€ํ•˜๊ณ  ์ •๋ฆฌํ•œ ํŒŒํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์—์ฝ”์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์—์ฝ”์‹œ์Šคํ…œ์˜ ๋””ํ…Œ์ผํ•œ ๋‚ด์šฉ์€ ์ถ”ํ›„ ๊ณต๋ถ€ํ•˜๊ณ  ๋”ฐ๋กœ ํฌ์ŠคํŒ…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. :D



๐Ÿ“˜ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ ์ดํ•ด์™€ ํ•˜๋‘ก์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ
๐Ÿ“˜ ํ•˜๋‘ก์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ์š”์†Œ์™€ ์ด๋ก 
๐Ÿ“˜ YARN(Yet Another Resource Negotiator) ๊ธฐ๋ณธ ์ด๋ก 
๐Ÿ“˜ Map Reduce ๊ธฐ๋ณธ ์ด๋ก 


โ—ˆ


๐Ÿ˜ 1. ํ•˜๋‘ก ์—์ฝ”์‹œ์Šคํ…œ๊ณผ ๊ด€๋ จ ํ”„๋กœ์ ํŠธ

ํ•˜๋‘ก์€ ๋‹จ์ˆœํ•œ ๋ถ„์‚ฐ ์ €์žฅ ๋ฐ ์ฒ˜๋ฆฌ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์ถœ๋ฐœํ–ˆ์ง€๋งŒ, ํ˜„์‹ค ์„ธ๊ณ„์˜ ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋งŒ์กฑ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ˆ˜๋งŽ์€ ์—์ฝ”์‹œ์Šคํ…œ ๊ตฌ์„ฑ ์š”์†Œ๋“ค๋กœ ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ์—์ฝ”์‹œ์Šคํ…œ๋“ค์€ ํ•˜๋‘ก์˜ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ(HDFS์™€ MapReduce)๋งŒ์œผ๋กœ๋Š” ํ•ด๊ฒฐํ•˜๊ธฐ ์–ด๋ ค์šด ์‹ค์งˆ์ ์ธ ๋ฌธ์ œ๋“ค์„ ๋ณด์™„ํ•˜๊ณ , ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์˜›๋‚ ๋กœ ๋Œ์•„๊ฐ€๋ณด๋ฉด, ์ดˆ๊ธฐ ํ•˜๋‘ก์€ HDFS๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ , MapReduce๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ๋กœ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ด ๊ตฌ์กฐ๋Š” ๋Œ€๊ทœ๋ชจ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ์—๋Š” ์ ํ•ฉํ–ˆ์ง€๋งŒ, ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ œํ•œ์ ์ด ์กด์žฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด๋ฉด,
MapReduce๋Š” ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์–ด, ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ ๋ถ„์„, ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์ฒ˜๋ฆฌ๋“ฑ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ๋‚˜ ์‹ค์‹œ๊ฐ„ ๋ถ„์„์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์•˜์œผ๋ฉฐ,
๋ชจ๋“  ์ฒ˜๋ฆฌ๋ฅผ Java ๊ธฐ๋ฐ˜์œผ๋กœ MapReduce ๋กœ์ง์„ ์ž‘์„ฑํ•ด์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, SQL์„ ์„ ํ˜ธํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋ถ„์„๊ฐ€๋“ค์—๊ฒŒ๋Š” ์ง„์ž…์žฅ๋ฒฝ์ด ๋งค์šฐ ๋†’์•˜์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ, ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ ์™ธ์— ETL, ๋จธ์‹ ๋Ÿฌ๋‹, ๊ฒ€์ƒ‰, ๊ทธ๋ž˜ํ”„ ๋ถ„์„ ๋“ฑ ๋‹ค์–‘ํ•œ ์›Œํฌ๋กœ๋“œ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์ง€์›ํ•˜๊ธฐ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํ•œ๊ณ„์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด, ํ•˜๋‘ก ๊ธฐ๋ฐ˜ ์œ„์— ์ „๋ฌธ์ ์ธ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‹ค์–‘ํ•œ ์„œ๋ธŒ ํ”„๋กœ์ ํŠธ๋“ค์ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜๋‘ก์€ ํ•˜๋‚˜์˜ ๊ฑฐ๋Œ€ํ•œ ์ผ์ฒดํ˜• ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์•„๋‹ˆ๋ผ, ์„œ๋กœ ๋‹ค๋ฅธ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ๋“ค์ด ๋А์Šจํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋œ ๋ชจ๋“ˆํ˜• ์ƒํƒœ๊ณ„(Modular Ecosystem)๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ๊ฐ์˜ ๋„๊ตฌ๋“ค์€ ํŠน์ • ๋ฌธ์ œ ์˜์—ญ์„ ํ•ด๊ฒฐํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ๊ณ , ์„œ๋กœ ์—ฐ๋™๋˜๋ฉด์„œ ๋ณด๋‹ค ์œ ์—ฐํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜์—์„œ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์ง€๋งŒ, ์ง€๊ธˆ ๋ช‡ ๊ฐ€์ง€๋งŒ ๊ฐ„๋žตํ•˜๊ฒŒ ์ด์•ผ๊ธฐํ•ด๋ณด๋ฉด ์ดํ•ด๊ฐ€ ์‰ฌ์šธ๊ฒ๋‹ˆ๋‹ค.

  • Pig, Hive โ†’ SQL ํ˜น์€ DSL๋กœ MapReduce ์ถ”์ƒํ™” โ†’ ์‚ฌ์šฉ์ž ํŽธ์˜์„ฑ ํ–ฅ์ƒ

  • HBase โ†’ HDFS ์œ„์— ์ปฌ๋Ÿผ ๊ธฐ๋ฐ˜ DB ๊ตฌ์ถ• โ†’ ์‹ค์‹œ๊ฐ„ ์กฐํšŒ ๊ธฐ๋Šฅ ์ œ๊ณต

  • Zookeeper โ†’ ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ์˜ ๊ตฌ์„ฑ ๊ด€๋ฆฌ ๋ฐ ๋ฝ ์ฒ˜๋ฆฌ โ†’ ๊ณ ๊ฐ€์šฉ์„ฑ ๋ณด์žฅ

  • Oozie, Airflow โ†’ ์›Œํฌํ”Œ๋กœ์šฐ์™€ ์ž‘์—… ์Šค์ผ€์ค„๋ง โ†’ ์ž๋™ํ™”๋œ ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ

  • YARN โ†’ ์ž์› ๊ด€๋ฆฌ์˜ ์ค‘์•™ ์ง‘์ค‘ํ™” โ†’ ๋‹ค์–‘ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ์ง€์›

  • Spark, Tez, Flink โ†’ MapReduce๋ฅผ ๋Œ€์ฒดํ•˜๊ฑฐ๋‚˜ ๋ณด์™„ํ•˜๋Š” ๊ณ ์† ์ฒ˜๋ฆฌ ์—”์ง„

์ด์ฒ˜๋Ÿผ ๊ฐ๊ฐ์˜ ํ”„๋กœ์ ํŠธ๋Š” ๋…๋ฆฝ์ ์œผ๋กœ๋„ ํ™œ์šฉ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ํ•˜๋‘ก์ด๋ผ๋Š” ๊ณตํ†ต๋œ ๊ธฐ๋ฐ˜ ์œ„์—์„œ ์ƒํ˜ธ ๋ณด์™„์ ์ธ ๊ด€๊ณ„๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„ค๊ณ„๋Š” ํ•˜๋‘ก์ด ๋‹จ์ˆœํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋„˜์–ด, ๋ฒ”์šฉ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ํ”Œ๋žซํผ์œผ๋กœ ์ง„ํ™”ํ•˜๊ฒŒ ๋œ ํ•ต์‹ฌ ๋ฐฐ๊ฒฝ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

์œ„์™€ ๊ฐ™์€ ์ด์œ ์™€ ์‚ฌ์ƒ์„ ๊ฐ€์ง€๊ณ , ํ•˜๋‘ก ์—์ฝ”์‹œ์Šคํ…œ์€ ์˜คํ”ˆ์†Œ์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, ๋ˆ„๊ตฌ๋‚˜ ์ฐธ์—ฌํ•˜๊ณ  ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋‹ค์–‘ํ•œ ๊ธฐ์—…๊ณผ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ž์‹ ๋“ค์˜ ์š”๊ตฌ์— ๋งž์ถฐ ํ•˜๋‘ก์„ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•˜๊ณ , ์ƒˆ๋กœ์šด ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ, Cloudera, Hortonworks, MapR ๋“ฑ ์ƒ์šฉ ๋””์ŠคํŠธ๋ฆฌ๋ทฐํ„ฐ๋“ค์€ ํ•˜๋‘ก์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ํ†ตํ•ฉ ํ”Œ๋žซํผ์„ ์ œ๊ณตํ•˜๋ฉด์„œ, ๋ณด์•ˆ, ๋ชจ๋‹ˆํ„ฐ๋ง, ํ†ตํ•ฉ ๊ด€๋ฆฌ ๋„๊ตฌ ๋“ฑ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ™˜๊ฒฝ์—์„œ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์ถ”๊ฐ€ํ•ด ์ƒํƒœ๊ณ„๋ฅผ ๋”์šฑ ํ’์„ฑํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ์ง€๊ธˆ๋ถ€ํ„ฐ ๋Œ€ํ‘œ์ ์ธ ์—์ฝ”์‹œ์Šคํ…œ ๋ช‡ ๊ฐ€์ง€๋ฅผ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


๐Ÿ˜ 1.1. Apache Avro ์™€ Parquet ๊ทธ๋ฆฌ๊ณ  ORC


ํ•˜๋‘ก์€ ๋ฐฉ๋Œ€ํ•œ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•˜๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ์ด๋ผ๋Š” ์ ์€ ๋งŽ์€ ๋ถ„๋“ค์ด ์ด๋ฏธ ์•Œ๊ณ  ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ, ํ•˜๋‘ก์˜ ๋ถ„์‚ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ(HDFS)์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋Š” ์ •ํ˜•, ๋ฐ˜์ •ํ˜•, ๋น„์ •ํ˜• ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด Spark, Hive, Pig, Impala, Presto ๋“ฑ ๋‹ค์–‘ํ•œ ์ฒ˜๋ฆฌ ์—”์ง„์„ ํ†ตํ•ด ๊ฐ€๊ณตํ•˜๊ณ  ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ๋„ ์ž˜ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ•˜๋‘ก๊ณผ ๊ทธ ์—์ฝ”์‹œ์Šคํ…œ์„ ํ•˜๋‚˜ํ•˜๋‚˜ ํ•™์Šตํ•˜๋‹ค ๋ณด๋ฉด, ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ โ€œํ•˜๋‘ก์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ค ํ˜•์‹์œผ๋กœ ์ €์žฅํ•ด์•ผ ํšจ์œจ์ ์ธ๊ฐ€?โ€ ๋ผ๋Š” ์งˆ๋ฌธ์— ์ง๋ฉดํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ, ๋ฐ์ดํ„ฐ ์ €์žฅ ํ˜•์‹์€ ํ•˜๋‘ก ํ™˜๊ฒฝ์—์„œ ์„ฑ๋Šฅ๊ณผ ์ž์› ํšจ์œจ์„ฑ์— ์ง๊ฒฐ๋˜๋Š” ํ•ต์‹ฌ ์š”์†Œ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ๊ธฐ์กด์— ๋งŽ์ด ์‚ฌ์šฉํ•ด์™”๋˜ CSV, JSON, XML๊ณผ ๊ฐ™์€ ์นœ์ˆ™ํ•œ ํŒŒ์ผ ํฌ๋งท์€ ํ•˜๋‘ก ํ™˜๊ฒฝ์—์„œ๋Š” ๊ทธ๋ฆฌ ์„ ํ˜ธ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด์œ ๋Š” ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ˜•์‹์€ ํ•˜๋‘ก์˜ ๊ฐ€์žฅ ํฐ ๊ฐ•์  ์ค‘ ํ•˜๋‚˜์ธ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์™€ ์Šคํ† ๋ฆฌ์ง€ ์ตœ์ ํ™”์— ๋ถˆ๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

ํ•˜๋‘ก์„ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์š” ๋ชฉ์  ์ค‘ ํ•˜๋‚˜๋Š” ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์‚ฐ ์ €์žฅํ•˜๊ณ  ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰๊ณผ ํ™•์žฅ์„ฑ์„ ํ™•๋ณดํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ CSV๋‚˜ JSON ๊ฐ™์€ ํฌ๋งท์€ ๊ตฌ์กฐ์ƒ

  • ์Šคํ‚ค๋งˆ ์ •๋ณด๊ฐ€ ์™ธ๋ถ€์— ๋ณ„๋„๋กœ ์กด์žฌํ•ด์•ผ ํ•˜๊ณ 

  • ์••์ถ•์ด๋‚˜ ์ปฌ๋Ÿผ ๋‹จ์œ„ ์ ‘๊ทผ์— ๋น„ํšจ์œจ์ ์ด๋ฉฐ

  • ๋ฐ์ดํ„ฐ ๋ถ„ํ• (partitioning) ๋ฐ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์— ์ œ์•ฝ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด, ํ•˜๋‘ก ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋ณดํ†ต Avro, Parquet, ORC(Optimized Row Columnar)์™€ ๊ฐ™์€ ์ตœ์ ํ™”๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ ํฌ๋งท์„ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด๋“ค ํฌ๋งท์€ ๊ณตํ†ต์ ๋„ ์žˆ์ง€๋งŒ, ๊ฐ๊ธฐ ๋‹ค๋ฅธ ํŠน์ง•๊ณผ ์‚ฌ์šฉ ๋ชฉ์ , ์žฅ๋‹จ์ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
์ด์ œ๋ถ€ํ„ฐ ์ด ์„ธ ๊ฐ€์ง€ ๋Œ€ํ‘œ์ ์ธ ์ €์žฅ ํฌ๋งท์„ ๋น„๊ต ๋ถ„์„ํ•˜๋ฉด์„œ, ์–ด๋–ค ์ƒํ™ฉ์— ์–ด๋–ค ํฌ๋งท์„ ์„ ํƒํ•ด์•ผ ํ•˜๋Š”์ง€ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

โœ… ๊ณตํ†ต์ 

  1. ํ•˜๋‘ก์— ์ตœ์ ํ™”๋œ ์ €์žฅ ํ˜•์‹
    ์„ธ ํฌ๋งท ๋ชจ๋‘ HDFS ๋“ฑ ํ•˜๋‘ก์˜ ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€ ํ™˜๊ฒฝ์—์„œ ๋†’์€ ์„ฑ๋Šฅ์„ ๋‚ด๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  2. ๋‚ด์žฅ ์••์ถ• ๊ธฐ๋Šฅ ์ œ๊ณต
    ๊ธฐ๋ณธ์ ์œผ๋กœ ์••์ถ•์„ ์ง€์›ํ•˜๋ฉฐ, ์ €์žฅ ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ณ  I/O ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

  3. ๊ธฐ๊ณ„๊ฐ€ ์ฝ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•์‹
    ์‚ฌ๋žŒ์ด ์ฝ๊ธฐ ํŽธํ•œ JSON, XML๊ณผ ๋‹ฌ๋ฆฌ ์ด๋“ค ํฌ๋งท์€ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ์ €์žฅ๋˜์–ด ๊ธฐ๊ณ„๊ฐ€ ์ฝ๊ธฐ์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
    ์ด๋กœ ์ธํ•ด ํ•˜๋‘ก์—์„œ JSON/XML์„ ์‚ฌ์šฉํ•˜๋ ค ํ•œ๋‹ค๋ฉด, ํ•˜๋‘ก์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ์ž์ฒด๋ฅผ ์žฌ๊ณ ํ•ด์•ผ ํ•  ์ •๋„์ž…๋‹ˆ๋‹ค.

  4. ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๋ฐ ํ™•์žฅ์„ฑ
    ์„ธ ๊ฐ€์ง€ ํ˜•์‹ ๋ชจ๋‘ ํŒŒ์ผ์„ ์—ฌ๋Ÿฌ ๋””์Šคํฌ์— ๋ถ„์‚ฐ ์ €์žฅํ•  ์ˆ˜ ์žˆ์–ด ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์™€ ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค.
    ๋ฐ˜๋ฉด JSON, XML์€ ํŒŒ์ผ ๋‹จ์œ„๋กœ ์ฒ˜๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถ„ํ•  ์ฒ˜๋ฆฌ์— ์ œ์•ฝ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  5. ์Šคํ‚ค๋งˆ ๋‚ด์žฅ ์ง€์›
    ์„ธ ํฌ๋งท ๋ชจ๋‘ ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ๋ฅผ ํ•จ๊ป˜ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    ๋”ฐ๋ผ์„œ ํŒŒ์ผ๋งŒ์œผ๋กœ๋„ ์–ด๋–ค ๋ฐ์ดํ„ฐ์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ์–ด, ์‹œ์Šคํ…œ ๊ฐ„ ๋ฐ์ดํ„ฐ ์ด๋™ ์‹œ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  6. Wire Format์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    ๋‹จ์ˆœํ•œ ์ €์žฅ ํฌ๋งท์ด ์•„๋‹ˆ๋ผ, ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•œ ์ „์†ก์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•์‹์ž…๋‹ˆ๋‹ค.
    ์ฆ‰, Hadoop ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ ๋…ธ๋“œ ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐ์—๋„ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ” Wire Format์ด๋ž€?
๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ๋‚˜ ๋””์Šคํฌ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•์‹์„ ๋งํ•˜๋ฉฐ, ์ด ๋ฐ์ดํ„ฐ๋Š” ๊ฒฐ๊ตญ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „์†ก๋˜๊ธฐ ๋•Œ๋ฌธ์— โ€œwire(์„  ์œ„์˜)โ€ ํฌ๋งท์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.


โœ… Avro, Parquet, ORC์˜ ์ฐจ์ด์ : ์ €์žฅ ๋ฐฉ์‹๊ณผ ํ™œ์šฉ ๋ชฉ์ ์˜ ์ฐจ์ด

์„ธ ํฌ๋งท์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์— ์žˆ์Šต๋‹ˆ๋‹ค.
Avro๋Š” ํ–‰(Row)-๊ธฐ๋ฐ˜ ํฌ๋งท์ธ ๋ฐ˜๋ฉด, Parquet์™€ ORC๋Š” ์—ด(Column)-๊ธฐ๋ฐ˜ ํฌ๋งท์ž…๋‹ˆ๋‹ค.

  • ์—ด ๊ธฐ๋ฐ˜ ํฌ๋งท (Columnar Format)์€ ๋ถ„์„ ์ฟผ๋ฆฌ์ฒ˜๋Ÿผ ์ผ๋ถ€ ์—ด๋งŒ ์„ ํƒ์ ์œผ๋กœ ์กฐํšŒํ•˜๋Š” ์ž‘์—…์— ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    ์˜ˆ: ๋ฆฌํฌํŠธ ์ƒ์„ฑ, ์ง‘๊ณ„ ๋ถ„์„ ๋“ฑ

  • ํ–‰ ๊ธฐ๋ฐ˜ ํฌ๋งท (Row Format)์€ ์ „์ฒด ํ–‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ž์ฃผ ์ฝ๊ฑฐ๋‚˜, ์“ฐ๊ธฐ ์ž‘์—…์ด ๋นˆ๋ฒˆํ•œ ๊ฒฝ์šฐ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
    ์˜ˆ: ํŠธ๋žœ์žญ์…˜ ๊ธฐ๋ก, ๋กœ๊ทธ ์ˆ˜์ง‘ ๋“ฑ


โœ… ์˜ˆ์‹œ๋กœ ์ดํ•ดํ•˜๋Š” ์ €์žฅ ๋ฐฉ์‹์˜ ์ฐจ์ด

โ–ฃ ์˜ˆ์‹œ 1: ์—ด ๊ธฐ๋ฐ˜ ํฌ๋งท์ด ์œ ๋ฆฌํ•œ ๊ฒฝ์šฐ
์‹œ๋‚˜๋ฆฌ์˜ค: 100๋งŒ ๋ช…์˜ ์ง์›์„ ๋‘” ๋Œ€๊ธฐ์—…์˜ HRํŒ€์ด ์ง€์—ญ๋ณ„ ๊ธ‰์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•˜๋Š” ๊ฒฝ์šฐ

  • ์ฟผ๋ฆฌ ๋ชฉ์ : ๊ธ‰์—ฌ, ์ง€์—ญ ์—ด๋งŒ ์กฐํšŒ
  • Parquet/ORC์ฒ˜๋Ÿผ ์—ด ๊ธฐ๋ฐ˜ ํฌ๋งท์€ ํ•„์š”ํ•œ ์—ด๋งŒ ์„ ํƒ์ ์œผ๋กœ ์กฐํšŒ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์ฝ๊ธฐ I/O๊ฐ€ ์ ๊ณ  ๋งค์šฐ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.
  • ๋ฐ˜๋ฉด, Avro๋Š” ํ–‰ ์ „์ฒด๋ฅผ ์ฝ๊ณ  ๊ทธ ์ค‘ ํ•„์š”ํ•œ ์—ด๋งŒ ํ•„ํ„ฐ๋งํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋น„ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

โ–ฃ ์˜ˆ์‹œ 2: ํ–‰ ๊ธฐ๋ฐ˜ ํฌ๋งท์ด ์œ ๋ฆฌํ•œ ๊ฒฝ์šฐ
์‹œ๋‚˜๋ฆฌ์˜ค: ํ•ญ๊ณต์‚ฌ๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ํŠน์ • ์‹œ๊ฐ„๋Œ€(์˜คํ›„ 7์‹œ~์ž์ •) ๋ชจ๋“  ํ•ญ๊ณตํŽธ ์ •๋ณด๋ฅผ ์ œ๊ณต

  • ์ฟผ๋ฆฌ ๋ชฉ์ : ๋ชจ๋“  ์—ด ๋ฐ์ดํ„ฐ ํ•„์š”
  • ์ด ๊ฒฝ์šฐ๋Š” ์ „์ฒด ํ–‰์„ ํ†ต์งธ๋กœ ์ฝ๋Š” ์ž‘์—…์ด๋ฏ€๋กœ Avro ๊ฐ™์€ ํ–‰ ๊ธฐ๋ฐ˜ ํฌ๋งท์ด ํ›จ์”ฌ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.
  • Parquet/ORC๋Š” ์—ด ๋‹จ์œ„ ์ €์žฅ์œผ๋กœ ์ธํ•ด ์ „ ์—ด์„ ๋ชจ์œผ๋Š” ๋ฐ ์˜คํžˆ๋ ค I/O ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.


โœ… ์••์ถ•๋ฅ  ์ฐจ์ด

Parquet์™€ ORC๋Š” ์—ด ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ ๋•๋ถ„์— ์••์ถ•๋ฅ ์ด ๋†’์Šต๋‹ˆ๋‹ค.
์—ด ๋‹จ์œ„๋กœ ์ €์žฅ๋˜๋ฏ€๋กœ, ์œ ์‚ฌํ•œ ๊ฐ’์ด ๋ฐ˜๋ณต๋˜๋Š” ์—ด(์˜ˆ: ์„ฑ๋ณ„, ๊ตญ๊ฐ€ ์ฝ”๋“œ, ์ƒํƒœ ํ”Œ๋ž˜๊ทธ ๋“ฑ)์„ ๋ฌถ์–ด ์••์ถ•ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
์ด ๊ตฌ์กฐ๋Š” ํŠนํžˆ IoT์ฒ˜๋Ÿผ ๋Œ€๋Ÿ‰์˜ ์„ผ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด์•ผ ํ•  ๋•Œ ์Šคํ† ๋ฆฌ์ง€ ํšจ์œจ์„ ๊ทน๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด, Avro๋Š” ํ–‰ ์ „์ฒด๋ฅผ ๋ฌถ์–ด ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ์˜ ๋‹ค์–‘์„ฑ์ด ์ปค์ง€๊ณ , ๊ฒฐ๊ณผ์ ์œผ๋กœ ์••์ถ•๋ฅ ์ด ๋‚ฎ์•„์ง€๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.


โœ… ์Šคํ‚ค๋งˆ ์ง„ํ™” ์ง€์› (Schema Evolution)

  • Avro๋Š” ์Šคํ‚ค๋งˆ ์ง„ํ™”์— ๋งค์šฐ ๊ฐ•๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ๋ฅผ ๊ธฐ์ˆ ํ•˜๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” JSON์œผ๋กœ ํ‘œํ˜„ํ•˜๊ณ , ์‹ค์ œ ๋ฐ์ดํ„ฐ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ์ €์žฅํ•˜๋ฏ€๋กœ ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ์— ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ORC๋Š” Hive์™€์˜ ๊ธด๋ฐ€ํ•œ ํ†ตํ•ฉ ๋•๋ถ„์— Parquet๋ณด๋‹ค ๋” ๋‚˜์€ ์Šคํ‚ค๋งˆ ์ง„ํ™” ์ง€์›์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    Hive ๋ฉ”ํƒ€์Šคํ† ์–ด์™€์˜ ํ˜ธํ™˜์„ฑ๋„ ๋›ฐ์–ด๋‚˜๋ฉฐ, ํ•„๋“œ ์ถ”๊ฐ€๋‚˜ ๋ณ€๊ฒฝ์— ๋Œ€ํ•ด ์ƒ๋Œ€์ ์œผ๋กœ ์ž˜ ๋Œ€์‘ํ•ฉ๋‹ˆ๋‹ค.


โœ… ์ฃผ์š” ์‚ฌ์šฉ ์‚ฌ๋ก€ ๋ฐ ์—ฐ๊ฒฐ ๊ธฐ์ˆ 

  • Avro
    Kafka์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ง๋ ฌํ™”ํ•˜๋Š” ํฌ๋งท์œผ๋กœ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    ๋˜ํ•œ ์ „์†ก ํฌ๋งท(wire format)์œผ๋กœ๋„ ์ ํ•ฉํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ ๊ตํ™˜์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • Parquet
    Cloudera ํ™˜๊ฒฝ(CDH)์—์„œ Impala์™€ ์ž์ฃผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋ฉฐ, Spark, Drill, Hive ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์„ ๋„๊ตฌ์—์„œ ํญ๋„“๊ฒŒ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

  • ORC
    Hortonworks ๊ธฐ๋ฐ˜(HDP)์˜ Hive์—์„œ ๊ธฐ๋ณธ ํฌ๋งท์œผ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ, Presto ๋“ฑ์—์„œ๋„ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

โ— Apache Spark๋Š” ์ด ์„ธ ํฌ๋งท ๋ชจ๋‘๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ, ์‚ฌ์šฉ ๋ชฉ์ ์— ๋”ฐ๋ผ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ํฌ๋งท์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.


โœ… ํฌ๋งท๋ณ„ ์š”์•ฝ ๋น„๊ต

๊ตฌ๋ถ„ Avro Parquet ORC
์ €์žฅ ๋ฐฉ์‹ ํ–‰ ๊ธฐ๋ฐ˜ (Row-based) ์—ด ๊ธฐ๋ฐ˜ (Column-based) ์—ด ๊ธฐ๋ฐ˜ (Column-based)
์ตœ์ ํ™” ๋Œ€์ƒ ์“ฐ๊ธฐ ์ž‘์—…, ์ „์†ก, Kafka ์ฝ๊ธฐ ์ž‘์—…, ๋ถ„์„ ์ฟผ๋ฆฌ Hive ์ตœ์ ํ™”, ์••์ถ• ํšจ์œจ
์••์ถ• ํšจ์œจ ๋ณดํ†ต ๋†’์Œ ๋งค์šฐ ๋†’์Œ
์Šคํ‚ค๋งˆ ์ง„ํ™” ๊ฐ•๋ ฅํ•จ ์ œํ•œ์  ์ƒ๋Œ€์ ์œผ๋กœ ์šฐ์ˆ˜
ํ™œ์šฉ ํ™˜๊ฒฝ Kafka, ์ „์†ก ํฌ๋งท Impala, Spark, Drill Hive, Presto, HDP


โœ… Hadoop ์—์„œ ๊ฐ ํฌ๋ฉง ์‚ฌ์šฉ ๋ฐฉ๋ฒ• ( Hive ์˜ˆ์‹œ )

๐Ÿ“ 1. TEXTFILE**

CREATE TABLE tb_text (
    ymd STRING,
    tag STRING,
    cnt INT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE;

์••์ถ• ์„ค์ • (INSERT ์ „์— ์ ์šฉ):

SET hive.exec.compress.output=true;
SET mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
-- ๋˜๋Š”
SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;

๋‹จ์ˆœ ํ…์ŠคํŠธ ์ €์žฅ์— ์ ํ•ฉํ•˜์ง€๋งŒ, ๋Œ€๊ทœ๋ชจ ๋ถ„์„์—๋Š” ๋น„ํšจ์œจ์ ์ž„.



๐Ÿ“ 2. PARQUET

CREATE TABLE tb_parquet (
    ymd STRING,
    tag STRING,
    cnt INT
)
STORED AS PARQUET;

์••์ถ• ์„ค์ •:

SET parquet.compression=SNAPPY;
-- ๋˜๋Š”
SET parquet.compression=GZIP;
SET parquet.compression=UNCOMPRESSED;

์—ด ๊ธฐ๋ฐ˜ ํฌ๋งท์œผ๋กœ, ๋ถ„์„ ์ฟผ๋ฆฌ ๋ฐ Spark ํ™˜๊ฒฝ์— ์ตœ์ ํ™”๋จ.



Parquet ์˜ ๊ฒฝ์šฐ ๊ธฐ์กด์—๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ ๋“ฑ๋กํ•˜์˜€์Œ.

CREATE TABLE tb_parquet (
    ymd STRING,
    tag STRING,
    cnt INT
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS 
    INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
    OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat';

๊ทธ๋Ÿฌ๋‚˜ 0.14๋ถ€ํ„ฐ๋Š” Parquet ๋ฅผ ์ง€์›ํ•ด์ฃผ์–ด์„œ, STORED AS PARQUET; ์œผ๋กœ ๋“ฑ๋กํ•˜๋ฉด ๋‚ด๋ถ€์ ์œผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ๋“ฑ๋ก๋จ.

ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS
  INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
  OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'



๐Ÿ“ 3. ORC

CREATE TABLE tb_orc (
    ymd STRING,
    tag STRING,
    cnt INT
)
STORED AS ORC
TBLPROPERTIES ("orc.compress"="ZLIB");
-- ๋˜๋Š”
-- TBLPROPERTIES ("orc.compress"="SNAPPY");
-- TBLPROPERTIES ("orc.compress"="NONE");

Hive์—์„œ ๊ถŒ์žฅํ•˜๋Š” ํฌ๋งท์ด๋ฉฐ, ๋†’์€ ์••์ถ•๋ฅ ๊ณผ ์„ฑ๋Šฅ ์ œ๊ณต.



๐Ÿ“ 4. AVRO

CREATE TABLE tb_avro (
    ymd STRING,
    tag STRING,
    cnt INT
)
STORED AS AVRO;

์••์ถ• ์„ค์ •:

SET hive.exec.compress.output=true;
SET avro.output.codec=snappy;
-- ๋˜๋Š”
SET avro.output.codec=deflate;
SET avro.output.codec=bzip2;

์Šคํ‚ค๋งˆ ์ง„ํ™”๊ฐ€ ์ž์ฃผ ์ผ์–ด๋‚˜๋Š” ํ™˜๊ฒฝ (์˜ˆ: Kafka) ์— ์ ํ•ฉ.



| ํฌ๋งท | Hive ๊ถŒ์žฅ ์—ฌ๋ถ€ | ์••์ถ• ์„ค์ • ๋ฐฉ์‹ | ํŠน์ง• ์š”์•ฝ |
|โ€”โ€”โ€”โ€”-|โ€”โ€”โ€”โ€”โ€”-|โ€”โ€”โ€”โ€”โ€”-|โ€”โ€”โ€”โ€“|
| TEXTFILE | ๋‚ฎ์Œ | SET ๋ฐฉ์‹ | ๋‹จ์ˆœ, ๋น„ํšจ์œจ์  |
| PARQUET | ๋†’์Œ | SET ๋ฐฉ์‹ | ๋ถ„์„ ์ฟผ๋ฆฌ ์ตœ์  |
| ORC | ๋งค์šฐ ๋†’์Œ | TBLPROPERTIES | Hive ์ตœ์ ํ™” |
| AVRO | ์ค‘๊ฐ„ ์ด์ƒ | SET ๋ฐฉ์‹ | ์Šคํ‚ค๋งˆ ์ง„ํ™” |



โ— ํ•ด๋‹น ๊ธ€์€, ํ•˜๋‘ก ์—์ฝ” ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ๋‚ด์šฉ์„ ๊ณต๋ถ€ํ•˜๊ณ  ๋‹ค๋ฃน๋‹ˆ๋‹ค. ๊ฐ ์—์ฝ”์‹œ์Šคํ…œ์˜ ๋ณด๋‹ค ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ถ”ํ›„ ๊ณต๋ถ€ํ•˜์—ฌ, ๋”ฐ๋กœ ํฌ์ŠคํŒ… ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

๐Ÿ˜ 1.2. Apache Flume


๐Ÿ˜ 1.3. Apache Sqoop


๐Ÿ˜ 1.4. Apache Kerberos


๐Ÿ˜ 1.5. Apache Hive


๐Ÿ˜ 1.6. Apache Impala


๐Ÿ˜ 1.7. Apache HBase


๐Ÿ˜ 1.8. Apache Spark


๐Ÿ˜ 1.9. Apache Oozie


๐Ÿ˜ 1.10. Apache Zookeeper


๐Ÿ˜ 1.11. Apache Crunch


๐Ÿ˜ 1.12. ๊ทธ ์™ธ ํ”„๋กœ์ ํŠธ์™€, ํ”„๋กœ์ ํŠธ์˜ ํฐ ์ข…๋ฅ˜





โ—ˆ


๐Ÿ˜ 2. ํ•˜๋‘ก์˜ ์šด์˜๊ณผ ๊ด€๋ฆฌ

๐Ÿ˜ 2.1. ํ•˜๋‘ก์˜ ์ฃผ์š” ์„ค์ • ํŒŒ์ผ๊ณผ, ์„ค์ • ๊ฐ’


๐Ÿ˜ 2.2. ์‹ค์ œ ํ•˜๋‘ก ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์ถ•๊ณผ ๋ณด์•ˆ


๐Ÿ˜ 2.3. ํ˜„์—…์—์„œ์˜ ํ•˜๋‘ก์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•





โ—ˆ


๐Ÿ˜ 3. ๊ธฐํƒ€ ํ•˜๋‘ก์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ํ•  ๋ช‡ ๊ฐ€์ง€

๐Ÿ˜ 3.1. ํ•˜๋‘ก I/O


๐Ÿ˜ 3.2. Schema on Read vs Schema on Write


๐Ÿ˜ 3.3. ํ•˜๋‘ก์˜ ์„ธ ๊ฐ€์ง€ ๋ชจ๋“œ


๐Ÿ˜ 3.4. CDH


๐Ÿ˜ 3.5. Cascading


๐Ÿ˜ 3.6. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ™˜๊ฒฝ์—์„œ๋Š” ํ•˜๋‘ก์ด ๋˜์ง€ ์•Š๋Š” ์ด์œ ?





โ—ˆ


๐Ÿ˜ 4. ์‹ค์ œ ํ•˜๋‘ก ๊ด€๋ จ ๋ฉด์ ‘ ์งˆ๋ฌธ ์‚ฌ๋ก€ ๋ชจ์Œ

โ“ ์งˆ๋ฌธ: Hadoop์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ์žˆ์–ด ํ”ํžˆ ๋ฐœ์ƒํ•˜๋Š” ๊ณผ์ œ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?


โœ… 1. NameNode์˜ ๋‹จ์ผ ์žฅ์•  ์ง€์  ๋ฌธ์ œ
Hadoop์˜ ์ดˆ๊ธฐ ๊ตฌ์กฐ์—์„œ๋Š” NameNode๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋‹จ๋…์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ NameNode๊ฐ€ ์žฅ์• ๋ฅผ ์ผ์œผํ‚ค๋ฉด ์ „์ฒด ํด๋Ÿฌ์Šคํ„ฐ์˜ ์šด์˜์ด ์ค‘๋‹จ๋˜๊ณ , ์ตœ์•…์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ์†์‹ค์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด High Availability(HA) ๊ตฌ์„ฑ์ด ๋„์ž…๋˜์—ˆ์ง€๋งŒ, ๊ธฐ๋ณธ ๊ตฌ์กฐ ์ž์ฒด๊ฐ€ ๊ฐ–๋Š” ์œ„ํ—˜์„ฑ์€ ์—ฌ์ „ํžˆ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

โœ… 2. ๋ณด์•ˆ ์ทจ์•ฝ์„ฑ
๊ธฐ๋ณธ Hadoop์€ ๋ณด์•ˆ ๊ธฐ๋Šฅ์ด ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ์ œ์–ด๊ฐ€ ์„ธ๋ถ„ํ™”๋˜์–ด ์žˆ์ง€ ์•Š๊ณ , ๋ˆ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ–ˆ๋Š”์ง€ ์ถ”์ ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
Kerberos ๊ฐ™์€ ์ธ์ฆ ์‹œ์Šคํ…œ์ด ์žˆ์ง€๋งŒ, ์„ค์ •์ด ๋ณต์žกํ•˜๊ณ  ์œ ์ง€ ๋น„์šฉ์ด ํฌ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ถ”๊ฐ€ ๋ณด์•ˆ ๊ณ„์ธต(Sentry, Ranger ๋“ฑ)์„ ๋„์ž…ํ•ด์•ผ ์‹ค์งˆ์ ์ธ ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ด๋Š” ์šด์˜ ๋ณต์žก๋„๋ฅผ ๋†’์ด๋Š” ์š”์ธ์ด ๋ฉ๋‹ˆ๋‹ค.

โœ… 3. ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ ๋ฏธ์ง€์›
Hadoop์˜ ํ•ต์‹ฌ ์ฒ˜๋ฆฌ ๋ชจ๋ธ์ธ MapReduce๋Š” ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ ๊ธฐ๋ฐ˜์ž…๋‹ˆ๋‹ค.
์ด ๋ฐฉ์‹์€ ๋Œ€์šฉ๋Ÿ‰ ๋กœ๊ทธ ๋ถ„์„ ๋“ฑ์—๋Š” ํšจ๊ณผ์ ์ด์ง€๋งŒ, ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์—๋Š” ๋ถ€์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ Spark, Flink ๊ฐ™์€ ๋ณ„๋„์˜ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ด๋ฅผ ๋ณด์™„ํ•ฉ๋‹ˆ๋‹ค.

โœ… 4. ์ž‘์€ ํŒŒ์ผ ์ฒ˜๋ฆฌ ๋น„ํšจ์œจ
Hadoop์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐ ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฐ ํŒŒ์ผ๋งˆ๋‹ค ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ NameNode์— ์ €์žฅ๋˜๋ฉฐ, ํŒŒ์ผ ์ˆ˜๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก NameNode ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๊ธ‰์ฆํ•ฉ๋‹ˆ๋‹ค.
๊ฒฐ๊ณผ์ ์œผ๋กœ ์ž‘์€ ํŒŒ์ผ๋“ค์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉด ์‘๋‹ต ์ง€์—ฐ ๋ฐ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Hadoop Archive ๋“ฑ์˜ ์ ‘๊ทผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.


โ“ ์งˆ๋ฌธ: Hadoop์—์„œ ๋ถ„์‚ฐ ์บ์‹œ(Distributed Cache)์˜ ๋ชฉ์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?


Hadoop์˜ ๋ถ„์‚ฐ ์บ์‹œ(Distributed Cache)๋Š” MapReduce ์ž‘์—… ์‹คํ–‰ ์‹œ ๋ชจ๋“  ๋…ธ๋“œ์— ํ•„์š”ํ•œ ์ฝ๊ธฐ ์ „์šฉ ํŒŒ์ผ(์˜ˆ: JAR ํŒŒ์ผ, ์„ค์ • ํŒŒ์ผ, ์ฐธ์กฐ์šฉ ์ž‘์€ ๋ฐ์ดํ„ฐ ํŒŒ์ผ ๋“ฑ)์„ ๋ฏธ๋ฆฌ ๋กœ์ปฌ์— ๋ฐฐํฌํ•˜์—ฌ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.
HDFS์—์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ฝ๋Š” ๋Œ€์‹ , ์ž‘์—… ์‹œ์ž‘ ์‹œ ๋…ธ๋“œ ๋กœ์ปฌ ๋””์Šคํฌ์— ์บ์‹œ๋˜์–ด ํŒŒ์ผ์„ ๋ฐ˜๋ณต ๋‹ค์šด๋กœ๋“œํ•˜์ง€ ์•Š๋„๋ก ๋ฐฉ์ง€ํ•˜๊ณ ,
์ž‘์€ ์ฐธ์กฐ ํŒŒ์ผ์„ ๋น ๋ฅด๊ฒŒ ์ฝ์„ ์ˆ˜ ์žˆ์–ด ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๊ฐœ์„ ๋ฉ๋‹ˆ๋‹ค.
๋˜ํ•œ Mapper/Reducer๊ฐ€ ๋™์ผํ•œ ์ฐธ์กฐ ํŒŒ์ผ์„ ํ™œ์šฉ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, MapReduce ์ž‘์—… 40๊ฐœ๊ฐ€ ์žˆ๊ณ , ๊ฐ ์ž‘์—…์ด ๋™์ผํ•œ ์ž‘์€ ์ฐธ์กฐ ํŒŒ์ผ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ฝ์–ด์•ผ ํ•œ๋‹ค๋ฉด, ์ด ํŒŒ์ผ์ด HDFS์—๋งŒ ์กด์žฌํ•  ๊ฒฝ์šฐ ๋งค๋ฒˆ ๋„คํŠธ์›Œํฌ I/O๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ๋ถ„์‚ฐ ์บ์‹œ์— ๋“ฑ๋กํ•˜๋ฉด ํ•ด๋‹น ํŒŒ์ผ์ด ๊ฐ ๋…ธ๋“œ ๋กœ์ปฌ ๋””์Šคํฌ์— ๋ณต์‚ฌ๋˜์–ด, ๋ชจ๋“  ์ž‘์—…์ด ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


โ“ ์งˆ๋ฌธ: Hadoop์˜ ๋ถ„์‚ฐ ์บ์‹œ์— ์žˆ๋Š” ํŒŒ์ผ์— ์ ์šฉ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์–ด๋–ป๊ฒŒ ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?


ํ•จ์ • ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค.
๋ถ„์‚ฐ ์บ์‹œ๋Š” Hadoop์—์„œ ์ž‘์—… ์‹คํ–‰ ์ „์— ๋ชจ๋“  ๋…ธ๋“œ์— ๋™์ผํ•œ ํŒŒ์ผ์„ ๋ฏธ๋ฆฌ ๋ณต์‚ฌํ•ด๋‘๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด๋•Œ ๋ณต์‚ฌ๋œ ํŒŒ์ผ์€ ์ฝ๊ธฐ ์ „์šฉ(read-only) ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋ฉฐ, ์‹คํ–‰ ์ค‘์—๋Š” ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์ฆ‰, ์–ด๋–ค ๋…ธ๋“œ์—์„œ ๋ถ„์‚ฐ ์บ์‹œ์— ์žˆ๋Š” ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๋”๋ผ๋„, ๋‹ค๋ฅธ ๋…ธ๋“œ์˜ ์บ์‹œ์—๋Š” ์ „ํ˜€ ๋ฐ˜์˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ ๋…ธ๋“œ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํŒŒ์ผ์€ ์ž‘์—…์ด ์‹œ์ž‘๋  ๋•Œ์˜ ์ƒํƒœ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.


โ“ ์งˆ๋ฌธ: Hadoop์—์„œ โ€œ๋ฐ์ดํ„ฐ ์ง€์—ญ์„ฑ(Data Locality)โ€์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?


Hadoop์—์„œ ๋ฐ์ดํ„ฐ ์ง€์—ญ์„ฑ์ด๋ž€, ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ์œ„์น˜๋กœ ์˜ฎ๊ธฐ์ง€ ์•Š๊ณ , ๊ณ„์‚ฐ ์ž‘์—…(Task)์„ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ์œ„์น˜๋กœ ์ด๋™์‹œํ‚ค๋Š” ๋ฐฉ์‹์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ํ™˜๊ฒฝ์—์„œ ๋„คํŠธ์›Œํฌ ์ „์†ก ๋น„์šฉ์„ ์ค„์ด๊ณ  ์„ฑ๋Šฅ์„ ๋†’์ด๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.
๋น…๋ฐ์ดํ„ฐ ํ™˜๊ฒฝ์—์„œ๋Š” ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ๋งค์šฐ ๋ฐฉ๋Œ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐ์ดํ„ฐ๋ฅผ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „์†กํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„๊ณผ ๋น„์šฉ์ด ์ƒ๋‹นํžˆ ํฝ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Hadoop์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ด๋™์‹œํ‚ค๋Š” ๋Œ€์‹ , ๊ณ„์‚ฐ์„ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ„์น˜ํ•œ ์„œ๋ฒ„(๋ฐ์ดํ„ฐ ๋…ธ๋“œ)์—์„œ ์ˆ˜ํ–‰ํ•จ์œผ๋กœ์จ ์ „์ฒด ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์„ ์ค„์ด๊ณ  ์‹œ์Šคํ…œ ํšจ์œจ์„ ๋†’์ž…๋‹ˆ๋‹ค.
Hadoop์˜ ์ž‘์—… ์Šค์ผ€์ค„๋Ÿฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์šฐ์„ ์ˆœ์œ„ ๊ทœ์น™์— ๋”ฐ๋ผ ์ž‘์—…์„ ์Šค์ผ€์ค„๋งํ•ฉ๋‹ˆ๋‹ค

  • ๋กœ์ปฌ(local): ๋จผ์ €, ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ๊ฐ™์€ ๋…ธ๋“œ์—์„œ ์ž‘์—…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ฐ€์žฅ ์ด์ƒ์ ์ธ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.
  • ๋ž™(local rack): ๋งŒ์•ฝ ํ•ด๋‹น ๋…ธ๋“œ์— ์ž‘์—…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด, ๊ฐ™์€ ๋ž™(Rack) ๋‚ด์— ์žˆ๋Š” ๋‹ค๋ฅธ ๋…ธ๋“œ์—์„œ ์‹คํ–‰์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ๋ž™์€ ๋„คํŠธ์›Œํฌ ์ง€์—ฐ์ด ์ ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • ์›๊ฒฉ(other rack): ์œ„์˜ ๋ฐฉ๋ฒ•๋“ค์ด ๋ชจ๋‘ ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒฝ์šฐ, ๋‹ค๋ฅธ ๋ž™์— ์œ„์น˜ํ•œ ๋ณต์ œ๋ณธ์ด ์ €์žฅ๋œ ๋…ธ๋“œ์—์„œ ์ž‘์—…์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ๋“ค๋ฉด, ์–ด๋–ค ํšŒ์‚ฌ์—์„œ ๊ณ ๊ฐ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด Hadoop ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋Š” logs.csv๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ HDFS์— ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด 300GB ํฌ๊ธฐ๋กœ ์„ธ ๋…ธ๋“œ์— ๋ถ„์‚ฐ ์ €์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
Node1์—๋Š” logs.csv์˜ ๋ธ”๋ก 1์ด ์ €์žฅ๋˜์–ด ์žˆ๊ณ , Node2์—๋Š” ๋ธ”๋ก 2, Node3์—๋Š” ๋ธ”๋ก 3์ด ์ €์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ธ”๋ก์€ ๋ณต์ œ(replication factor = 3) ๋˜์–ด, ์„ธ ๋…ธ๋“œ ์ค‘ ๋‘ ๊ณณ์— ์ถ”๊ฐ€๋กœ ๋ณต์‚ฌ๋ณธ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
Hadoop์€ ๋จผ์ € ๊ฐ ๋ธ”๋ก์„ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ๋…ธ๋“œ์—์„œ ํ•ด๋‹น ๋ธ”๋ก์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Block 1์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ž‘์—…์€ ์šฐ์„  Node1์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ, ๋ฐ์ดํ„ฐ๋Š” ๋””์Šคํฌ์—์„œ ๋ฐ”๋กœ ์ฝํžˆ๋ฏ€๋กœ ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋งŒ์•ฝ Node1์˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ถ€์กฑํ•ด์„œ ์ž‘์—…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด, Hadoop์€ Block 1์˜ ๋ณต์ œ๋ณธ์ด ์žˆ๋Š” ๋‹ค๋ฅธ ๋…ธ๋“œ์—์„œ ์‹คํ–‰์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Block 1์˜ ๋ณต์ œ๋ณธ์ด Node2์—๋„ ์žˆ๋‹ค๋ฉด, Hadoop์€ Node2์—์„œ ์ž‘์—…์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ์—๋„ ์—ฌ์ „ํžˆ ๋กœ์ปฌ ๋””์Šคํฌ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์„ฑ๋Šฅ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
๋งŒ์•ฝ Block 1์„ ๊ฐ€์ง„ ์–ด๋–ค ๋…ธ๋“œ์—์„œ๋„ ์ž‘์—…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด, Hadoop์€ ๊ฐ™์€ ๋ž™(rack) ๋‚ด์˜ ๋‹ค๋ฅธ ๋…ธ๋“œ์—์„œ ์ž‘์—…์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ, ๋ฐ์ดํ„ฐ๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋˜์ง€๋งŒ, ๋ž™ ๋‚ด๋ถ€ ํ†ต์‹ ์€ ์ƒ๋Œ€์ ์œผ๋กœ ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์†์‹ค์ด ํฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ฐ€์žฅ ๋‚˜์œ ๊ฒฝ์šฐ๋Š”, ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„ ๋…ธ๋“œ๊ฐ€ ๋ชจ๋‘ ๋ฐ”์˜๊ณ , ๋‹ค๋ฅธ ๋ž™์— ์žˆ๋Š” ๋…ธ๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋„คํŠธ์›Œํฌ๋กœ ๋ฐ›์•„์™€์•ผ ํ•  ๋•Œ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ๋Š” ๋„คํŠธ์›Œํฌ ๋ณ‘๋ชฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ณ , ์„ฑ๋Šฅ ์ €ํ•˜๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.


โ“ ์งˆ๋ฌธ: MapReduce๊ฐ€ ๊ถŒ์žฅ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋Š”?


๋ฐ˜๋ณต ์ฒ˜๋ฆฌ ์ž‘์—…์—๋Š” MapReduce ๊ฐ€ ๊ถŒ์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
MapReduce๋Š” ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ๋Š” ๋งค์šฐ ํšจ๊ณผ์ ์ธ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์—ฌ๋Ÿฌ ๋ฒˆ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…์—๋Š” ์ž˜ ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
MapReduce๋Š” ์ž‘์—… ํ•˜๋‚˜๊ฐ€ ๋๋‚  ๋•Œ๋งˆ๋‹ค ์ค‘๊ฐ„ ๊ฒฐ๊ณผ๋ฅผ HDFS ๊ฐ™์€ ๋””์Šคํฌ์— ์ €์žฅํ•˜๊ณ , ๋‹ค์Œ ์ž‘์—…์€ ๊ทธ๊ฒƒ์„ ๋‹ค์‹œ ๋””์Šคํฌ์—์„œ ์ฝ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋””์Šคํฌ ์ž…์ถœ๋ ฅ์€ ๋„คํŠธ์›Œํฌ๋ณด๋‹ค๋„ ํ›จ์”ฌ ๋А๋ฆฌ๊ณ , CPU๋‚˜ ๋ฉ”๋ชจ๋ฆฌ์— ๋น„ํ•ด์„œ๋Š” ๋น„๊ตํ•  ์ˆ˜ ์—†์„ ์ •๋„๋กœ ๋А๋ฆฝ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ตฌ์กฐ ๋•Œ๋ฌธ์—, ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐ˜๋ณตํ•ด์„œ ์ฝ๊ณ  ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…์€ ๋งค๋ฒˆ ๋””์Šคํฌ I/O ๋น„์šฉ์ด ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ๋งค์šฐ ๋น„ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.




โ—ˆ


๐Ÿ˜ 5. ์ ์ฐจ ์‚ฌ๋ผ์ง€๋Š” ํ•˜๋‘ก, ๊ทธ๋Ÿฌ๋‚˜ ํ•˜๋‘ก์„ ์–•๊ฒŒ๋ผ๋„ ๊ณต๋ถ€ํ•ด์•ผ ํ•˜๋Š” ์ด์œ 





โ—ˆ


โœ๏ธ ๊ฒฐ๋ก 





โ—ˆ


๐Ÿ“š ๊ณต๋ถ€ ์ฐธ๊ณ  ์ž๋ฃŒ


https://ngela.tistory.com/111