์ ๋ฒ ํฌ์คํ
์์๋, ํ๋ก์ ํต์ฌ์ ๊ณต๋ถํ์์ต๋๋ค.
์ด๋ฒ์๋ Hadoop V2 ์ ํต์ฌ์ธ YARN ์ ๋ํ์ฌ ๊ณต๋ถํ ๋ด์ฉ์ ํฌ์คํ
ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ ๋ถ์ฐ ์์คํ
์ ์ดํด์ ํ๋ก์ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ
๐ ํ๋ก์ ํต์ฌ ๊ตฌ์ฑ์์์ ์ด๋ก
๐ 1. YARN
2012๋ ์ด์ , Hadoop์ ์ด์ฉํด ๋์ฉ๋ ์ฒ๋ฆฌ๋ฅผ ํ๋ ค๋ฉด MapReduce ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก Java, Python, Ruby, ํน์ Pig ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํด ๊ฐ๋ฐํด์ผ ํ์ต๋๋ค.
ํ์ง๋ง Hadoop 2.0๊ณผ ํจ๊ป ๋ฑ์ฅํ Yarn์ MapReduce ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์ ์ฝ์์ ๋ฒ์ด๋, ๋ค์ํ ๋ฉํฐํ๋ก์ธ์ฑ ํ๋ก๊ทธ๋จ์ Hadoop ์์์ ํ์ฉํด ์์ ๋กญ๊ฒ ์คํํ ์ ์๊ฒ ํด์ฃผ์์ต๋๋ค.
Yarn์ ๋์ฉ๋ ๋ฉํฐํ๋ก์ธ์ฑ ์ฒ๋ฆฌ์์ ์ฑ๋ฅ ํฅ์๊ณผ ์ ์ฐํ ์คํ ์์ง(execution engine)์ ์ ๊ณตํ๋ค๋ ์ ์ด ํฐ ์ฅ์ ์ ๋๋ค.
๋ํ, ์๊ฐ์ด ์ง๋๋ฉด์ Spark์ ๊ฐ์ ๋ค์ํ ๋ถ์ฐ ์ฒ๋ฆฌ ํ๋ ์์ํฌ๋ Yarn์ ์ง์ํ๊ฒ ๋๋ฉด์, ํ๋ก ์ํ๊ณ์์ ํ์์ ์ธ ๋ฆฌ์์ค ๊ด๋ฆฌ ํ๋ซํผ์ผ๋ก ์๋ฆฌ์ก์์ต๋๋ค.
์ด๋ฌํ YARN ์ ๋ํ์ฌ, ์ง๊ธ๋ถํฐ ๊ณต๋ถํ๊ณ , ์ ๋ฆฌํ ๋ด์ฉ์ ํฌ์คํ ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ 1.1. YARN ์ด๋
์ถ์ฒ : YARN
Yarn์ Hadoop 2.0๋ถํฐ ๋์
๋ ํด๋ฌ์คํฐ ์์ ๊ด๋ฆฌ ์์คํ
(Resource Manager)์
๋๋ค.
์ด์ Hadoop ๋ฒ์ ์์๋ MapReduce๋ผ๋ ํน์ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์๋ง ์์กดํด์ ์์
์ ์ฒ๋ฆฌํ๋๋ฐ, Yarn์ด ๋์
๋๋ฉด์ MapReduce์ ๊ตญํ๋์ง ์๊ณ ๋ค์ํ ์ข
๋ฅ์ ๋ถ์ฐ ์ฒ๋ฆฌ ์์
์ ์คํํ ์ ์๊ฒ ๋์์ต๋๋ค.
Yarn์ ์ฃผ์ ์ญํ ์ ํด๋ฌ์คํฐ ๋ด ์ฌ๋ฌ ๋
ธ๋์ ์์์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ํ ๋นํ์ฌ, ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์
์ด ๋์์ ์์ ์ ์ผ๋ก ์คํ๋ ์ ์๋๋ก ์กฐ์จํ๋ ๊ฒ์
๋๋ค.
์ฆ, ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋ค์ํ ์์
์ ๋์์ ์คํํด๋ ์์์ด ๊ณผ๋ํ๊ฒ ์ง์ค๋๊ฑฐ๋ ๋ญ๋น๋์ง ์๊ณ , ์ ์ ํ๊ฒ ๋ถ๋ฐฐ๋์ด ์ ์ฒด ์์คํ
์ ํจ์จ์ฑ๊ณผ ์์ ์ฑ์ ๋์
๋๋ค.
Yarn์ ๋ํ ์คํ ํ๊ฒฝ์ ์ ์ฐํ๊ฒ ์ ๊ณตํ์ฌ, Apache Spark, Flink, Tez ๊ฐ์ ๋ค์ํ ๋ถ์ฐ ์ฒ๋ฆฌ ํ๋ ์์ํฌ๋ ์ง์ํฉ๋๋ค.
์ด๋ก ์ธํด ๋น
๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ๋ฒ์๊ฐ ๋จ์ํ ๋ฐฐ์น ์์
์์ ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ, ๋จธ์ ๋ฌ๋, ๊ทธ๋ํ ์ฒ๋ฆฌ ๋ฑ์ผ๋ก ํ์ฅ๋ ์ ์์์ต๋๋ค.
๐ 1.1.1. Yarn์ ๋ํ์ ์ธ Use-Cases
Yarn์ด ๋ฑ์ฅํ๋ฉด์ Hadoop ๊ธฐ๋ฐ ํด๋ฌ์คํฐ๋ ๋ค์๊ณผ ๊ฐ์ ์ฅ์ ๊ณผ ๊ฐ๋ฅ์ฑ์ ๊ฐ๊ฒ ๋์์ต๋๋ค.
-
๐ ๋ฐฐ์น ์์ ๋ฟ ์๋๋ผ ๋ฐ๋ณต ์์ ๊ณผ ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ ์ฒ๋ฆฌ ์ง์
๊ณผ๊ฑฐ Hadoop์ ์ผ๊ด ์ฒ๋ฆฌ(batch processing)์ ์ด์ ์ด ๋ง์ถฐ์ ธ ์์์ผ๋, Yarn ๋๋ถ์ ์ง์์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ์คํธ๋ฆฌ๋ฐ ์์ ๊ณผ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฐ๋ณต ์คํ๋๋ ์์ ๋ค๋ ํจ์จ์ ์ผ๋ก ์ํํ ์ ์๊ฒ ๋์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ค์๊ฐ ๋ก๊ทธ ๋ถ์, ์ค์๊ฐ ์ถ์ฒ ์์คํ ๋ฑ ์น ์๋น์ค์ ํ์ํ ๋น ๋ฅธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ก์ต๋๋ค. -
๐ ํด๋ฌ์คํฐ ์์ ํ์ฉ๋ฅ ๊ทน๋ํ
ํด๋ฌ์คํฐ ๋ด ์์์ ํ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ชจ๋ ์ฌ์ฉํ์ง ์์ ๋, Yarn์ด ์์์ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌํ ๋นํด ์ค์ผ๋ก์จ ์์ ํ์ฉ๋ฅ ์ ํฌ๊ฒ ํฅ์์์ผฐ์ต๋๋ค.
์ด๋ ๋น์ฉ ์ ๊ฐ๊ณผ ํด๋ฌ์คํฐ ์ด์ ํจ์จ์ ๋์ด๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. -
๐ ํตํฉ ํด๋ฌ์คํฐ ์ด์
๋ฐ์ดํฐ ์ ์ฅ(HDFS), ๋ฐ์ดํฐ ์ฒ๋ฆฌ(MapReduce, Spark ๋ฑ), ๋ฐ์ดํฐ ์กฐํ ๋ฑ ๋ค์ํ ์์ ์ ๋จ์ผ ํด๋ฌ์คํฐ์์ ํจ๊ป ์ฒ๋ฆฌํ ์ ์์ด ์ด์ ๊ด๋ฆฌ๊ฐ ๊ฐํธํด์ก๊ณ , ๋ฐ์ดํฐ ์ด๋์ ํ์ํ ์๊ฐ๊ณผ ๋น์ฉ๋ ์ค์ผ ์ ์์์ต๋๋ค. -
๐ ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ๋์ ์คํ ์ง์
ํ ํด๋ฌ์คํฐ์์ ์ฌ๋ฌ ์ข ๋ฅ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋์์ ์์ ์ ์ผ๋ก ์คํ๋์ด, ์ฌ๋ฌ ํ์ด๋ ์๋น์ค๊ฐ ํ๋์ ํด๋ฌ์คํฐ๋ฅผ ๊ณต์ ํ ์ ์์ต๋๋ค.
๐ 1.1.2. Container ๋?
Docker ๋ฅผ ์ฌ์ฉํด๋ณด์ ๋ถ๋ค์ด๋ผ๋ฉด, Container ์ ๊ฐ๋ ์ ์ด๋์ ๋ ์๊ณ ๊ณ์ค ๊ฒ์ ๋๋ค.
์ปจํ
์ด๋๋ ์ํํธ์จ์ด ์คํ ํ๊ฒฝ์ ํ๋์ ํจํค์ง๋ก ๋ฌถ์ ๊ฒฝ๋ํ๋ ๊ฐ์ํ ๊ธฐ์ ์
๋๋ค.
์ฌ๊ธฐ์๋ ์ ํ๋ฆฌ์ผ์ด์
์ด ๋์ํ๋ ๋ฐ ํ์ํ ์ฝ๋, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ค์ ํ์ผ ๋ฑ์ด ํฌํจ๋์ด ์์ด, ์ด๋์๋ ๋์ผํ ํ๊ฒฝ์์ ์คํํ ์ ์์ต๋๋ค.
์ปจํ
์ด๋ ๊ธฐ์ ์ ๋ฆฌ๋
์ค์ cgroup๊ณผ namespace ๊ฐ์ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ, ํ๋์ ๋ฌผ๋ฆฌ์ ์๋ฒ ๋ด์์๋ ๊ฐ๊ฐ์ ์ปจํ
์ด๋๊ฐ ๋
๋ฆฝ์ ์ผ๋ก CPU, ๋ฉ๋ชจ๋ฆฌ, ๋คํธ์ํฌ ์์์ ์ฌ์ฉํ ์ ์๋๋ก ๊ฒฉ๋ฆฌํฉ๋๋ค.
์ด ๊ฒฉ๋ฆฌ ๋๋ถ์ ์๋ก ๋ค๋ฅธ ์ปจํ
์ด๋๊ฐ ์ถฉ๋ํ๊ฑฐ๋ ๊ฐ์ญํ์ง ์๊ณ , ์์ ์ ์ผ๋ก ๋์์ ์คํ๋ ์ ์์ต๋๋ค.
์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ ์ฃผ์ ์ด์ ์ ์ฅ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค
-
๐ฆ ์ฑ ์ ๋ถ๋ฆฌ(Separation of responsibility)
๊ฐ๋ฐ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์ ๊ทธ์ ํ์ํ ์์กด์ฑ๋ง ์ ๊ฒฝ ์ฐ๋ฉด ๋๊ณ , ๋ฐฐํฌ ํ๊ฒฝ์ ์ธ๋ถ ์ฌํญ(์ด์์ฒด์ ๋ฒ์ , ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถฉ๋ ๋ฑ)์ ํฌ๊ฒ ์ ๊ฒฝ ์ธ ํ์๊ฐ ์์ต๋๋ค.
๋๋ถ์ ๊ฐ๋ฐ๊ณผ ์ด์ ๊ฐ ํ์ ์ด ์ํํด์ง๊ณ , ๋ฐฐํฌ ๋ฐ ํ ์คํธ ๊ณผ์ ์์ ํ๊ฒฝ ๋ฌธ์ ๋ก ์ธํ ์ค๋ฅ๊ฐ ์ค์ด๋ญ๋๋ค. -
๐ฆ ๋์ ์ด์์ฑ(Portability)
์ปจํ ์ด๋๋ ์ด์์ฒด์ ์์ค์์ ๊ฐ์ํ๋๋ฏ๋ก, ๋ฆฌ๋ ์ค ๊ธฐ๋ฐ ์๋ฒ๋ผ๋ฉด ์ด๋ ํ๊ฒฝ์์๋ ๋์ผํ๊ฒ ์คํํ ์ ์์ต๋๋ค.
๋จ, ์ปจํ ์ด๋๊ฐ ์ ์์ ์ผ๋ก ์๋ํ๋ ค๋ฉด ํด๋น ์์คํ ์ด ์ปจํ ์ด๋ ์คํ์ ์ง์ํด์ผ ํ๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก Linux/amd64 ์ํคํ ์ฒ์์ ๊ฐ์ฅ ์ํํฉ๋๋ค. -
๐ฆ ์ ํ๋ฆฌ์ผ์ด์ ๊ฒฉ๋ฆฌ(Application isolation)
์ปจํ ์ด๋๋ง๋ค CPU, ๋ฉ๋ชจ๋ฆฌ, ์คํ ๋ฆฌ์ง, ๋คํธ์ํฌ ๊ฐ์ ์์์ ํ ๋นํ๊ณ ์ ํํ ์ ์๊ธฐ ๋๋ฌธ์, ํ๋์ ์๋ฒ์์ ์ฌ๋ฌ ์ปจํ ์ด๋๊ฐ ๋์์ ์คํ๋์ด๋ ์๋ก ๊ฐ์ญ ์์ด ์์ ์ ์ผ๋ก ์๋ํฉ๋๋ค.
์ด๋ ์์คํ ์์ ์ฑ๊ณผ ๋ณด์์ฑ์ ๋์ด๋ ๋ฐ๋ ๋์์ด ๋ฉ๋๋ค.
์ต๊ทผ์๋ Kubernetes ๊ฐ์ ์ค์ผ์คํธ๋ ์ด์ ๋๊ตฌ์ ํจ๊ป ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํด, ๋๊ท๋ชจ ๋ถ์ฐ ์์คํ ์ ํจ์จ์ ์ผ๋ก ์ด์ํ๋ ์ฌ๋ก๊ฐ ๋ง์์ง๊ณ ์์ต๋๋ค.
Yarn๋ ์ด๋ฐ ์ปจํ ์ด๋ ๊ฐ๋ ์ ์ฐจ์ฉํด ํด๋ฌ์คํฐ ์์ ๊ด๋ฆฌ์ ์ ์ฉํจ์ผ๋ก์จ, ๋์ฑ ์ธ๋ฐํ๊ณ ์ ์ฐํ ์์ ํ ๋น๊ณผ ์์ ๊ด๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
๐ 1.2. YARN ์ํคํ ์ฒ
์ถ์ฒ : YARN ๊ณผ HDFS
Yarn ๊ณผ HDFS ์์ฒด๋ ์์ ํ ๋
๋ฆฝ์ ์
๋๋ค.
Yarn์ CPU, ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ์ปดํจํ ์์์ ํ ๋นํ๊ณ ๊ด๋ฆฌํ๋ ์์ ๊ด๋ฆฌ ์ํํธ์จ์ด์ ๋๋ค.๋ฐ๋ฉด, HDFS๋ ๋ถ์ฐ ํ์ผ ์์คํ ์ผ๋ก ๋ฐ์ดํฐ ์ ์ฅ(์คํ ๋ฆฌ์ง) ์ญํ ๋ง ์ํํฉ๋๋ค. ๋ฐ๋ผ์ Yarn๊ณผ HDFS๋ ์์ ํ ๋ ๋ฆฝ์ ์ธ ์์คํ ์ด๋ฉฐ, ์๋ก ๋ค๋ฅธ ์ญํ ์ ๋งก๊ณ ์์ต๋๋ค.
์ฆ, Yarn์ ์ ์ฅ์์ ๊ด๊ณ์์ด ํด๋ฌ์คํฐ์ ์ปดํจํ ์์ ๊ด๋ฆฌ์ ์ง์คํฉ๋๋ค.
๊ทธ๋ฌํ Yarn ์ Architecture ๋ ํฌ๊ฒ 3๊ฐ์ง ์ญํ ์ ํ๋ ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ ๋์ด์์ต๋๋ค.
-
Resource Manager: ํด๋ฌ์คํฐ ์ ์ฒด ์์ ๊ด๋ฆฌ ๋ฐ ์ค์ผ์ค๋ง
-
Application Master: ๊ฐ๋ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ์์ฒญ ๋ฐ ๊ด๋ฆฌ
-
Node Managers: ๊ฐ ๋ ธ๋์์ ์์ ํ ๋น ๋ฐ ์์ ์คํ
์ถ์ฒ : YARN ์ํคํ ์ฒ
๊ทธ๋ผ YARN ์ ๊ธฐ๋ณธ๊ณผ ํต์ฌ ์ํคํ
์ฒ๋ฅผ ํ๋ํ๋ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ 1.2.1. Resource Mananger (RM)
Resource Manager(RM)๋ YARN ํด๋ฌ์คํฐ์์ ๊ฐ์ฅ ์ค์ํ ๋ง์คํฐ ์ปดํฌ๋ํธ์ ๋๋ค.
ํด๋ฌ์คํฐ ๋ด ๋ชจ๋ ์ปดํจํ ์์(CPU, ๋ฉ๋ชจ๋ฆฌ ๋ฑ)์ ์ด๊ด ๊ด๋ฆฌํ๋ ๊ด๋ฆฌ ๋ณธ๋ถ ์ญํ ์ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ํ์ฌ ๋ด ์ฌ๋ฌ ๋ถ์๊ฐ ๊ณต์ ํ๋ ์ปดํจํฐ ์์์ ์ค์์์ ํจ์จ์ ์ผ๋ก ๋ฐฐ๋ถํ๋ ์ด๋ฌดํ์ด๋ผ๊ณ ์๊ฐํ ์ ์์ต๋๋ค.
RM์ ํด๋ฌ์คํฐ ๋ด์ ์กด์ฌํ๋ ๋ชจ๋ ๋ ธ๋๋ค์ ์ํ์ ์์ ์ ๋ณด๋ฅผ ์๊ณ ์์ผ๋ฉฐ, Rack Awareness(์๋ก ๋ฌผ๋ฆฌ์ ์ผ๋ก ๊ฐ๊น์ด ์๋ฒ ๊ทธ๋ฃน ๊ฐ์ ๋คํธ์ํฌ ์ฐ์ ์์)๋ ๊ณ ๋ คํด ์์ ํ ๋น์ ์ต์ ํํฉ๋๋ค.
RM ๋ด๋ถ์๋ ์ฌ๋ฌ ์๋น์ค๊ฐ ์กด์ฌํ์ง๋ง, ๊ทธ ์ค์์๋ Scheduler๊ฐ ํต์ฌ์ ๋๋ค. Scheduler๋ ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ฒญํ ์์ ์๊ตฌ์ฌํญ์ ๋ถ์ํด, ๋๊ฐ ์ธ์ ์ผ๋ง๋ ์์์ ์ธ์ง ๊ฒฐ์ ํฉ๋๋ค.
๋ํ์ ์ธ Scheduler๋ก๋ Capacity Scheduler, Fair Scheduler ๋ฑ์ด ์์ต๋๋ค. ์ด๋ค์ ํด๋ฌ์คํฐ ์์์ ๊ณตํํ๊ฒ ๋๋๊ฑฐ๋, ์ฐ์ ์์์ ๋ฐ๋ผ ํ ๋นํ๋ ์ ์ฑ ์ ๊ตฌํํฉ๋๋ค. ์ด๋ ๊ฒ RM์ ๋จ์ํ ์์์ ํ ๋นํ๋ ์ญํ ๋ฟ ์๋๋ผ, ๋ฆฌ์์ค ํ ๋น ์ ์ฑ ์ ์ ์ฉํ๊ณ , ์์ ์ฌ์ฉ ํํฉ์ ๋ชจ๋ํฐ๋งํ๋ฉฐ ์ฅ์ ๋์์ ์ํ ์ ๋ณด๋ ๊ด๋ฆฌํฉ๋๋ค.
YARN ์ SCheduler ์ ๋ํด์๋ ์๋ 3๋ฒ ์ฑํฐ์์ ์ข ๋ ์์ธํ๊ฒ ์ ๋ฆฌํ๊ฒ ์ต๋๋ค.
๐ 1.2.2. Application Mananger (AM)
Application Master(AM)๋ YARN์์ ์คํ๋๋ ๊ฐ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํด ๋ณ๋๋ก ์คํ๋๋ ๋งค๋์ ํ๋ก์ธ์ค์ ๋๋ค.
ํด๋ฌ์คํฐ ์ ์ฒด๋ฅผ ๊ด๋ฆฌํ๋ RM๊ณผ ๋ฌ๋ฆฌ, AM์ ํน์ ์ ํ๋ฆฌ์ผ์ด์ ๋จ์์ ํ๋ก์ ํธ ํ์ฅ ์ญํ ์ ํฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ด ์์๋ ๋ ๊ฐ์ฅ ๋จผ์ ์คํ๋๋ ์ปจํ ์ด๋(Container)๋ก์, ์์ ์ ์์ ์ ํ์ํ ๋ฆฌ์์ค๋ฅผ RM์ ์์ฒญํ๊ณ ํ ๋น๋ฐ์ ์์์ ํ์ฉํด ์์ ์ ์ํํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ๋ฐ์ดํฐ ๋ถ์ ์์ ํ์ ํ์ฅ์ด๋ผ๋ฉด, RM์๊ฒ โCPU 4๊ฐ, ๋ฉ๋ชจ๋ฆฌ 8GB๋ฅผ ๋ฌ๋ผโ๊ณ ์์ฒญํ๊ณ , ํ ๋น๋ฐ์ผ๋ฉด ๊ทธ ์์์ ๊ธฐ๋ฐ์ผ๋ก ์์ ์ ์งํํ๋ ์์ ๋๋ค.
AM์ ํ ๋น๋ฐ์ ์์ ๋ด์์ ์์ ๋จ์๋ฅผ ๊ด๋ฆฌํ๊ณ , ํ์์ ๋ฐ๋ผ ์ถ๊ฐ ์์ ์์ฒญ, ์์ ์ํ ๋ชจ๋ํฐ๋ง, ์ค๋ฅ ์ฒ๋ฆฌ ๋ฑ์ ๋ด๋นํฉ๋๋ค. AM์ด ์คํจํ๋ฉด ํด๋น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์์ฒด๊ฐ ์คํจํ ์ ์์ผ๋ฏ๋ก ์์ ์ฑ๊ณผ ๋ณต๊ตฌ ๋ฉ์ปค๋์ฆ๋ ์ค์ํฉ๋๋ค. ๋ํ AM์ ๊ฐ๊ธฐ ๋ค๋ฅธ ๋ถ์ฐ ์ฒ๋ฆฌ ํ๋ ์์ํฌ(์: MapReduce, Spark, Tez ๋ฑ)์ ๋ง๊ฒ ๊ตฌํ๋๋ฉฐ, ํ๋ ์์ํฌ๋ณ๋ก ์์ ๊ด๋ฆฌ ๋ฐ ์์ ์กฐ์ ๋ฐฉ๋ฒ์ด ๋ค๋ฅผ ์ ์์ต๋๋ค.
๐ 1.2.3. Node Manager
Node Manager ๋ ํด๋ฌ์คํฐ ๋ด ์ฌ๋ฌ ๋ ธ๋(์๋ฒ)์์ ์คํ๋๋ ์์ด์ ํธ์ ๋๋ค.
๊ฐ Node Manager ๋ โ์๋ฒ ๋ด๋น ๊ธฐ์ ์โ๋ก ๋น์ ํ ์ ์์ผ๋ฉฐ, ํด๋น ๋ ธ๋์ ์ํ์ ๋ฆฌ์์ค๋ฅผ RM์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ณด๊ณ (heartbeat)ํฉ๋๋ค.
Node Manager ๋ CPU ์ฝ์ด ์, ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ ์ ๋ฑ ์์ ์ ๋ ธ๋ ์์ ์ฉ๋(capacity)์ ๊ด๋ฆฌํฉ๋๋ค.
YARN Scheduler๊ฐ ํ ๋น์ ๊ฒฐ์ ํ๋ฉด NM์ ํด๋น ์์ ์ผ๋ถ๋ฅผ ์ปจํ ์ด๋(Container) ๋จ์๋ก ๋ฐฐ์ ํ๊ณ , ํด๋ผ์ด์ธํธ๊ฐ ์ ์ถํ ์์ ์ ์คํํฉ๋๋ค.
์ปจํ ์ด๋๋ ๋ฆฌ์์ค ๊ฒฉ๋ฆฌ๋ฅผ ์ํด ๋ ๋ฆฝ์ ์ธ ์คํ ๊ณต๊ฐ์ ์ ๊ณตํ๋ฉฐ, CPU, ๋ฉ๋ชจ๋ฆฌ, ๋คํธ์ํฌ ์ฌ์ฉ๋์ ์ ํํ ์ ์์ต๋๋ค. ๋ํ NM์ ์์ ์ฌ์ฉ๋ ๋ชจ๋ํฐ๋ง, ์ปจํ ์ด๋ ์์ ๋ฐ ์ข ๋ฃ, ์ฅ์ ๊ฐ์ง์ ๋ณต๊ตฌ ๋ฑ ์์ ์ ์ํํฉ๋๋ค.
Node Manager ๋ Resource Mananger ์ ์ง์์ ๋ฐ๋ผ ์ปจํ ์ด๋ ์ํ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ณด๊ณ ํ๋ฉฐ, RM์ ์ด๋ฅผ ํตํด ํด๋ฌ์คํฐ ์์ ํํฉ์ ์ ํํ ํ์ ํ ์ ์์ต๋๋ค.
NodeManager ๋ด๋ถ์๋ Container Manager, NodeStatusUpdater, NodeHealthChecker ๋ฑ์ ์๋น์ค๊ฐ ์์ด, ๊ฐ๊ฐ ์ปจํ ์ด๋ ๊ด๋ฆฌ, ์ํ ์ ๋ฐ์ดํธ, ๋ ธ๋ ๊ฑด๊ฐ ์ฒดํฌ ๊ธฐ๋ฅ์ ์ํํฉ๋๋ค.
์ด์ฒ๋ผ NM์ ํด๋ฌ์คํฐ ๋ด ๋ฌผ๋ฆฌ์ ํ๋์จ์ด ์์์ ์ถ์ํํ์ฌ YARN ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ์ ์ผ๋ก ์ ๊ณตํ๋ ์ญํ ์ ํฉ๋๋ค.
๐ 1.3. YARN ์ ์์ ํ๋ฆ
์ถ์ฒ : YARN ์ ์ฒด์ ์ธ ํ๋ฆ
์์ ์ ํ๋ฆ์ ๋จผ์ ๊ฐ๋จํ ์ ๋ฆฌํ๊ณ , ์ธ๋ถ์ ์ผ๋ก ๋ค์ฌ๋ค๋ณด๊ฒ ์ต๋๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ์ดํ๋ฆฌ์ผ์ด์
์คํ ์์ฒญ์ ๋ณด๋
๋๋ค.
- ์ฌ์ฉ์๊ฐ ์์ ์ ์คํํ๊ณ ์ถ์ ๋, ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์ด Yarn API๋ฅผ ํตํด ์คํ ์์ฒญ์ ํฉ๋๋ค.
- ResourceManager๊ฐ ์ด ์์ฒญ์ ๋ฐ๊ณ ์ ํจํ๋ค๊ณ ํ๋จํ๋ฉด, ํด๋ผ์ด์ธํธ์๊ฒ ๊ณ ์ ํ Application ID(์์ ์๋ณ ๋ฒํธ)๋ฅผ ํ ๋นํฉ๋๋ค.
- ResourceManager๊ฐ NodeManager์๊ฒ Application Master ์คํ์ ์์ฒญํฉ๋๋ค.
- ResourceManager๋ ํด๋ฌ์คํฐ ๋ด ๋ ธ๋๋ค ์ค ํ๋์ NodeManager์๊ฒ Application Master๋ผ๋ ํน๋ณํ ํ๋ก๊ทธ๋จ์ ์คํํ๋ผ๊ณ ์ง์ํฉ๋๋ค.
- Application Master๋ ํด๋น ์ดํ๋ฆฌ์ผ์ด์ ์ ์์ ์งํ์ ์ด๊ด ๊ด๋ฆฌํ๋ ์ญํ ์ ํฉ๋๋ค.
- NodeManager๊ฐ ์ปจํ
์ด๋ ์์์ Application Master๋ฅผ ์คํํฉ๋๋ค.
- NodeManager๋ ResourceManager์ ์์ฒญ์ ๋ฐ๊ณ , ์ ์ปจํ ์ด๋(์์ ์คํ ๊ณต๊ฐ)๋ฅผ ๋ง๋ค์ด JVM(Java Virtual Machine)์ ์คํํ์ฌ Application Master๋ฅผ ๋์๋๋ค.
- Application Master๊ฐ ResourceManager์๊ฒ ํ์ํ ๋ฆฌ์์ค๋ฅผ ์์ฒญํฉ๋๋ค.
- Application Master๋ ์์ ์ ํ์ํ ๋ฆฌ์์ค(๋ฉ๋ชจ๋ฆฌ, CPU, ๋คํธ์ํฌ, ์ปจํ ์ด๋ ๊ฐ์ ๋ฑ)๋ฅผ ResourceManager์ ์์ฒญํฉ๋๋ค.
- ResourceManager๋ ํด๋ฌ์คํฐ ์ ์ฒด ๋ฆฌ์์ค ์ํฉ์ ํ์ ํด, ์ฌ์ฉํ ์ ์๋ NodeManager ๋ชฉ๋ก์ Application Master์ ์ ๋ฌํฉ๋๋ค.
- Application Master๊ฐ ํ ๋น๋ฐ์ NodeManager์ ์ปจํ
์ด๋ ์คํ์ ์์ฒญํฉ๋๋ค.
- ๋ฐ์ NodeManager๋ค์๊ฒ ์ค์ ์์ ์ ์ํํ ์ปจํ ์ด๋ ์คํ์ ์์ฒญํฉ๋๋ค.
- NodeManager๋ค์ด ์ปจํ
์ด๋๋ฅผ ์คํํ๊ณ ์ดํ๋ฆฌ์ผ์ด์
์ ๋์์ํต๋๋ค.
- NodeManager๋ค์ ๊ฐ ์ปจํ ์ด๋ ์์ JVM์ ์๋ก ๋์ ์ดํ๋ฆฌ์ผ์ด์ ์ ์คํํฉ๋๋ค.
- ์์ ์ด ๋๋๋ฉด Application Master๋ ์ข ๋ฃ๋๊ณ , ResourceManager๋ ์ข ๋ฃ๋ Application Master๊ฐ ์ฌ์ฉํ๋ ์์์ ํด์ ํฉ๋๋ค.
์ด์ ์ข ๋ ์ธ๋ถ์ ์ผ๋ก ๋ค์ฌ๋ค๋ณด๊ฒ ์ต๋๋ค.
๐ 1.3.1. client โธ RM : Application ์คํ ์์ฒญ
YARN ํด๋ฌ์คํฐ์์ ์ดํ๋ฆฌ์ผ์ด์
์ ์คํํ๋ ค๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ResourceManager์๊ฒ ์ผ๋ จ์ ์์ฒญ์ ์์๋๋ก ๋ณด๋ด์ผ ํฉ๋๋ค. ์ด ๊ณผ์ ์์ ์ดํ๋ฆฌ์ผ์ด์
์ ์๋ณํ ์ ์๋ ID๋ฅผ ๋ฐ๊ธ๋ฐ๊ณ , ์คํ ๊ณํ์ ์ ์ถํ๋ฉฐ, ์คํ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ ์ ์๋ ์ ๋ณด๋ฅผ ์ป๊ฒ ๋ฉ๋๋ค.
-
ํด๋ผ์ด์ธํธ๊ฐ Application ID๋ฅผ ์์ฒญํฉ๋๋ค
ํด๋ผ์ด์ธํธ๊ฐ YARN ํด๋ฌ์คํฐ์์ ์๋ก์ด ์ดํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ ค๋ฉด ๋จผ์ Application ID๊ฐ ํ์ํฉ๋๋ค.
์ด๋ฅผ ์ํดClientRMService
์createNewApplication()
๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค.๐ก ์์:
์ฌ์ฉ์๊ฐ Spark ์์ ์ ์ ์ถํ๋ฉด, Spark ํด๋ผ์ด์ธํธ๊ฐ ๋ด๋ถ์ ์ผ๋กcreateNewApplication()
์ ํธ์ถํ์ฌ YARN์ ์ ์์ ID๋ฅผ ์์ฒญํฉ๋๋ค. -
YARN์ด Application ID์ ๋ฆฌ์์ค ์ ๋ณด๋ฅผ ๋ฐํํฉ๋๋ค
ClientRMService
๋ ์์ฒญ์ ๋ฐ๊ณ , ์๋ก์ด Application ID์ ํจ๊ป ํด๋ฌ์คํฐ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ต๋ ๋ฆฌ์์ค ์ ๋ณด๋ฅผ ํฌํจํGetNewApplicationResponse
๊ฐ์ฒด๋ฅผ ํด๋ผ์ด์ธํธ์ ์ ๋ฌํฉ๋๋ค.
์: ์ต๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ, ์ต๋ CPU ์ฝ์ด ์ ๋ฑ๐ก ์์:
ํด๋ฌ์คํฐ ์ ์ฒด์์ ํ ์ปจํ ์ด๋๋น 8GB ๋ฉ๋ชจ๋ฆฌ, 4์ฝ์ด๊น์ง ํ ๋น ๊ฐ๋ฅํ๋ค๋ ์ ๋ณด๊ฐ ํจ๊ป ์ ๋ฌ๋ฉ๋๋ค. -
ํด๋ผ์ด์ธํธ๊ฐ Application ์ ์ถ ์์ฒญ์ ๋ณด๋ ๋๋ค
ํด๋ผ์ด์ธํธ๋ Application ID๊ฐ ์ ์์ ์ผ๋ก ๋ฐ๊ธ๋์๋์ง ํ์ธํ ํ,ClientRMService
์submitApplication()
๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์ดํ๋ฆฌ์ผ์ด์ ์คํ ์์ฒญ์ ๋ณด๋ ๋๋ค.
์ด๋ ApplicationSubmissionContext ๊ฐ์ฒด๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํฉ๋๋ค. ์ด ๊ฐ์ฒด์๋ ์คํ์ ํ์ํ ๋ค์ํ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์ต๋๋ค:- Application ID
- Application Name (์: โETL Job for 2025-06-03โ)
- Queue name (์: โdefaultโ, โetlโ)
- Application Priority
- ํ์ํ ๋ฆฌ์์ค (๋ฉ๋ชจ๋ฆฌ, CPU ๋ฑ)
- Application Master ์คํ ๋ช
๋ น์ด ๋ด๊ธด
ContainerLaunchContext
๐ก ์์:
โspark-etl-jobโ์ด๋ผ๋ ์์ ์etl
ํ์ ์ ์ถํ๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ 4GB, CPU 2์ฝ์ด, ์คํ ๋ช ๋ น์spark-submit
์ผ๋ก ์ค์ ํฉ๋๋ค. -
ํด๋ผ์ด์ธํธ๊ฐ Application ์ํ๋ฅผ ์์ฒญํฉ๋๋ค
ํด๋ผ์ด์ธํธ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ด ์ ์์ ์ผ๋ก ๋ฑ๋ก๋์๋์ง ํ์ธํ๊ธฐ ์ํดgetApplicationReport()
๋ฅผ ํธ์ถํฉ๋๋ค. -
ResourceManager๊ฐ ApplicationReport๋ฅผ ๋ฐํํฉ๋๋ค
ResourceManager๋ ์์ฒญ์ ๋ฐ๋ผ ํด๋น ์ดํ๋ฆฌ์ผ์ด์ ์ ์ํ ๋ฐ ์คํ ์ ๋ณด๋ฅผ ๋ด์ApplicationReport
๊ฐ์ฒด๋ฅผ ๋ฐํํฉ๋๋ค.
์ด ๋ณด๊ณ ์๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ์คํ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ ๋ ์ ์ฉํฉ๋๋ค.ApplicationReport์ ํฌํจ๋ ์ ๋ณด:
ํญ๋ชฉ ์ค๋ช Application ID ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ณ ์ ID User ์คํํ ์ฌ์ฉ์ ์ด๋ฆ Queue ์คํ๋ ํ ์ด๋ฆ Application Name ์ดํ๋ฆฌ์ผ์ด์ ์ด๋ฆ ApplicationMaster Host ApplicationMaster๊ฐ ์คํ ์ค์ธ ๋ ธ๋ RPC Port ApplicationMaster์ ํต์ ํฌํธ Tracking URL ์น UI์์ ์ํ ์ถ์ ๊ฐ๋ฅ ๋งํฌ YarnApplicationState ์ดํ๋ฆฌ์ผ์ด์ ์ํ (์: SUBMITTED, RUNNING, FINISHED ๋ฑ) Diagnostic Info ์ค๋ฅ ๋ฐ์ ์ ๋ฉ์์ง Start Time ์ดํ๋ฆฌ์ผ์ด์ ์์ ์๊ฐ Client Token ๋ณด์ ์ค์ ์ด ํ์ฑํ๋ ๊ฒฝ์ฐ ์ธ์ฆ ํ ํฐ ๐ก ์์:
ํด๋ผ์ด์ธํธ๋ ์ด ์ ๋ณด๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์กฐํํด ์์ ์งํ ์ํ๋ ์คํจ ์ฌ๋ถ๋ฅผ ํ์ธํ๊ณ , ๋์๋ณด๋๋ ๋ชจ๋ํฐ๋ง ์์คํ ์์ ์๊ฐํํ ์ ์์ต๋๋ค.
๐ 1.3.2. RM โธ NM : Application Master ์คํ ์์ฒญ
ํด๋ผ์ด์ธํธ๊ฐ ์ดํ๋ฆฌ์ผ์ด์
์ ์ถ์ ์๋ฃํ๋ฉด, ์ด์ YARN์ ํด๋ฌ์คํฐ ๋ด๋ถ์์ ApplicationMaster๋ฅผ ์คํํ์ฌ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ดํ๋ฆฌ์ผ์ด์
์คํ์ ์์ํฉ๋๋ค. ์ด ๊ณผ์ ์ ResourceManager์ ๋ด๋ถ ๊ตฌ์ฑ ์์๋ค๊ณผ NodeManager ๊ฐ์ ํ์
์ ํตํด ์ด๋ค์ง๋๋ค.
-
RMAppManager๊ฐ ApplicationMaster ์คํ์ ์ํ ์ปจํ ์ด๋๋ฅผ ์์ฒญํฉ๋๋ค
ResourceManager์ ๊ตฌ์ฑ ์์ ์ค ํ๋์ธRMAppManager
๋ YARN ๋ด๋ถ ์ค์ผ์ค๋ฌ์๊ฒ ์ดํ๋ฆฌ์ผ์ด์ ๋ฑ๋ก ์์ฒญ๊ณผ ํจ๊ป ApplicationMaster ์คํ์ ์ํ ์ปจํ ์ด๋ ํ ๋น์ ์์ฒญํฉ๋๋ค. -
ApplicationAttemptId๊ฐ ํ์ ๋ฑ๋ก๋ฉ๋๋ค
YARN์ ํด๋น ์ดํ๋ฆฌ์ผ์ด์ ์คํ ์๋๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํ๊ธฐ ์ํดApplicationAttemptId
๋ฅผ ์์ฑํ๊ณ , ์ด๋ฅผ ํ์ ๋ฑ๋กํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณRMAppAttemptEventType.ATTEMPT_ADDED
์ด๋ฒคํธ๋ฅผ ๋ฐ์์์ผ ๋ฑ๋ก์ด ์๋ฃ๋์์์ ์๋ ค์ค๋๋ค.๐ก ์์:
ํ๋์ Spark ์์ ์ด ์คํจ ํ ์ฌ์๋๋๋ ๊ฒฝ์ฐ, ์๋ก์ด ApplicationAttemptId๊ฐ ์์ฑ๋์ด ํ์ ๋ค์ ๋ฑ๋ก๋ฉ๋๋ค. -
์ค์ผ์ค๋ฌ์๊ฒ ์ปจํ ์ด๋ ํ ๋น์ ์์ฒญํฉ๋๋ค
RMAppManager๋ ์ค์ผ์ค๋ฌ์๊ฒ ApplicationMaster ์คํ์ ํ์ํ ์ปจํ ์ด๋๋ฅผ ํ ๋นํด๋ฌ๋ผ๊ณ ์์ฒญํฉ๋๋ค. -
์ค์ผ์ค๋ฌ๊ฐ ์ปจํ ์ด๋ ํ ๋น ํ START ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํต๋๋ค
์ค์ผ์ค๋ฌ๋ ์ ์ ํ NodeManager์์ ์ฌ์ฉํ ์ ์๋ ๋ฆฌ์์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ํ ๋นํ๊ณ , ApplicationMaster ์คํ์ ์ํRMContainerEventType.START
์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํต๋๋ค. -
RMAppManager๊ฐ ApplicationMasterLauncher๋ฅผ ์คํํฉ๋๋ค
์ปจํ ์ด๋๊ฐ ํ ๋น๋๋ฉด, RMAppManager๋ApplicationMasterLauncher
๋ฅผ ํตํด ์ค์ ApplicationMaster ์คํ์ ์์ํฉ๋๋ค. -
ApplicationMasterLauncher๊ฐ AMLauncher๋ฅผ ์คํํฉ๋๋ค
ApplicationMasterLauncher
๋ ๋ด๋ถ์ ์ผ๋กAMLauncher
๋ฅผ ๊ตฌ๋ํ์ฌ ApplicationMaster๋ฅผ ์คํํฉ๋๋ค. -
AMLauncher๊ฐ NodeManager์ ApplicationMaster ์คํ์ ์์ฒญํฉ๋๋ค
AMLauncher๋ ์ปจํ ์ด๋ ์คํ์ ํ์ํ ์ ๋ณด๋ฅผ ๋ด์ContainerLaunchContext
๋ฅผ ์ค๋นํ๊ณ , ์ด๋ฅผ NodeManager์๊ฒ ์ ๋ฌํ์ฌ ์ปจํ ์ด๋ ์คํ์ ์์ฒญํฉ๋๋ค.ContainerLaunchContext์ ํฌํจ๋๋ ์ ๋ณด:
ํญ๋ชฉ ์ค๋ช ContainerId ์ปจํ ์ด๋ ๊ณ ์ ์๋ณ์ Resource ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ๋ฐ CPU ๋ฑ ๋ฆฌ์์ค User ํด๋น ์ปจํ ์ด๋์ ํ ๋น๋ ์ฌ์ฉ์ Security Tokens ๋ณด์์ด ํ์ฑํ๋ ๊ฒฝ์ฐ ํ์ํ ํ ํฐ LocalResources ์คํ์ ํ์ํ jar, ๋ฐ์ด๋๋ฆฌ, shared-objects, side files ๋ฑ Service Data (์ ํ) ์ดํ๋ฆฌ์ผ์ด์ ์ ์ฉ ์๋น์ค ๋ฐ์ดํฐ Environment Variables ์คํ ์ ํ์ํ ํ๊ฒฝ ๋ณ์ Launch Command ์ปจํ ์ด๋ ์คํ ๋ช ๋ น์ด Retry Strategy ์ปจํ ์ด๋๊ฐ ์คํจํ ๊ฒฝ์ฐ ์ฌ์๋ ์ ๋ต ๐ก ์์:
Spark์ ApplicationMaster๋ ๋ด๋ถ์ ์ผ๋กspark-submit
๋ช ๋ น์ launch command๋ก ์ ๋ฌํ๊ณ , ์คํ์ ํ์ํspark-assembly.jar
๋ฑ์ local resource๋ก ํฌํจํฉ๋๋ค. -
NodeManager๊ฐ ์ปจํ ์ด๋๋ฅผ ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค
NodeManager๋ ์ ๋ฌ๋ฐ์ ์ปจํ ์คํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ์คํํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผStartContainersResponse
์ ๋ด์ AMLauncher์ ๋ฐํํฉ๋๋ค.๐ก ์์:
์ปจํ ์ด๋๊ฐ ์ ์์ ์ผ๋ก ์คํ๋๋ฉด, NodeManager๋SUCCESS
์ํ์ ํจ๊ป ์ปจํ ์ด๋์ ์ํ ์ ๋ณด๋ฅผ ํฌํจํ ์๋ต์ ๋ฐํํฉ๋๋ค.
๐ 1.3.3. NM โธ AM : JVM์ผ๋ก Application Master ์คํ
NodeManager๋ ResourceManager์ ์์ฒญ์ ๋ฐ๋ผ ์ง์ ๋ ์ปจํ
์ด๋ ์์์ ApplicationMaster๋ฅผ ์คํํฉ๋๋ค.
์ด ๊ณผ์ ์ ์ค์ ๋ก ์๋ก์ด JVM ํ๋ก์ธ์ค๋ฅผ ์์ฑํด์ ApplicationMaster๋ฅผ ๊ตฌ๋์ํค๋ ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค.
ApplicationMaster๋ฅผ ์คํํ๊ธฐ ์ํด NodeManager๋ ContainerLaunchContext
๋ผ๋ ์คํ ์ปจํ
์คํธ ์ ๋ณด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด ์ปจํ
์คํธ์๋ ๋ค์๊ณผ ๊ฐ์ ์คํ์ ํ์ํ ์ ๋ณด๋ค์ด ํฌํจ๋์ด ์์ต๋๋ค:
- ์ปจํ ์ด๋ ID
- ํ ๋น๋ ๋ฆฌ์์ค ์ ๋ณด (๋ฉ๋ชจ๋ฆฌ, CPU ๋ฑ)
- ์ปจํ ์ด๋๋ฅผ ์คํํ ์ฌ์ฉ์ ์ ๋ณด
- ๋ฐ์ด๋๋ฆฌ๋ JAR ํ์ผ ๋ฑ ๋ก์ปฌ ๋ฆฌ์์ค
- ํ๊ฒฝ ๋ณ์
- ์คํ ๋ช ๋ น์ด (command)
- ๋ณด์ ํ ํฐ (ํ์ํ ๊ฒฝ์ฐ)
- ์คํจ ์ ์ฌ์๋ ์ ๋ต ๋ฑ
๐ก ์์:
ContainerLaunchContext
์ command ํ๋์๋"java -Xmx1024m com.example.MyAppMaster"
์ ๊ฐ์ ์ค์ ์คํ ๋ช ๋ น์ด๊ฐ ์ค์ ๋ฉ๋๋ค.
NodeManager๋ ์ด ์ปจํ
์คํธ๋ฅผ ๋ฐํ์ผ๋ก JVM์ ์์ฑํ๊ณ ApplicationMaster๋ฅผ ๊ตฌ๋ํฉ๋๋ค.
ApplicationMaster๊ฐ ์ ์์ ์ผ๋ก ์คํ๋๋ฉด, ์ดํ ๋จ๊ณ์์ ResourceManager์ ๋ฑ๋ก ์์ฒญ์ ํ๊ฒ ๋ฉ๋๋ค.
๐ 1.3.4. AM โธ RM : ํ์ํ ๋ฆฌ์์ค ์์ฒญ, NM ๋ชฉ๋ก ๋ฐํ ๋ฐ Application Master ๋ฑ๋ก
NodeManager๊ฐ ApplicationMaster๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์คํํ ํ์๋, ํด๋น ApplicationMaster๊ฐ ๋ฐ๋์ ResourceManager์ ๋ฑ๋ก๋์ด์ผ ํฉ๋๋ค.
์ด ๊ณผ์ ์ ํตํด ResourceManager๋ ApplicationMaster์๊ฒ ์ ์ ํ ์์์ ํ ๋นํ๊ฑฐ๋ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ ์ ์๊ฒ ๋ฉ๋๋ค.
๋ฑ๋ก ๊ณผ์ ์ ๋ค์ด๊ฐ๊ธฐ ์ ์, ๋จผ์ ApplicationMaster์ ResourceManager๊ฐ ์ด๋ป๊ฒ ํต์ ํ๋์ง ๊ฐ๋จํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ ์ปดํฌ๋ํธ๋ ApplicationMasterProtocol์ด๋ผ๋ ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ํธ์์ฉํฉ๋๋ค.
YARN์ ์ด ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๊ธฐ๋ณธ ํด๋ผ์ด์ธํธ๋ก ๋ค์ ๋ ๊ฐ์ง๋ฅผ ์ ๊ณตํฉ๋๋ค.
AMRMClient
AMRMClientAsync
ํ์ํ๋ค๋ฉด ์ฌ์ฉ์๊ฐ ์ง์ ApplicationMasterProtocol
์ ๊ตฌํํ์ฌ ์ปค์คํฐ๋ง์ด์งํ ์๋ ์์ต๋๋ค.
ApplicationMasterProtocol์์ ์ ๊ณตํ๋ ์ฃผ์ ๋ฉ์๋๋ ์๋์ ๊ฐ์ต๋๋ค:
๋ฉ์๋ | ์ค๋ช |
---|---|
registerApplicationMaster(request) |
ApplicationMaster๋ฅผ ResourceManager์ ๋ฑ๋ก |
allocate(request) |
์์ ์์ฒญ ๋ฐ ์ํ ๋ณด๊ณ (heartbeat ํฌํจ) |
finishApplicationMaster(request) |
์คํ ์๋ฃ ํ ์ข ๋ฃ ์ฒ๋ฆฌ ์์ฒญ |
์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ApplicationMaster๊ฐ ์ด๋ป๊ฒ ๋ฑ๋ก๋๋์ง ๊ตฌ์ฒด์ ์ธ ๊ณผ์ ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
-
ApplicationMaster๊ฐ ResourceManager์ ๋ฑ๋ก ์์ฒญ
ApplicationMaster๋
registerApplicationMaster()
๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ResourceManager์ ์์ ์ ๋ฑ๋กํฉ๋๋ค.์ด๋ ์ ๋ฌ๋๋
RegisterApplicationMasterRequest
์์๋ ๋ค์ ์ ๋ณด๊ฐ ํฌํจ๋ฉ๋๋ค.- ApplicationMaster๊ฐ ์คํ ์ค์ธ ํธ์คํธ ์ด๋ฆ
- RPC ํฌํธ
- ์ฌ์ฉ์๊ฐ ์ดํ๋ฆฌ์ผ์ด์ ์ํ๋ฅผ ํ์ธํ ์ ์๋ Tracking URL
๐ก ์์:
Spark์ ApplicationMaster๋spark://worker-node1:7077
๊ฐ์ RPC ํฌํธ์ Web UI ์ฃผ์๋ฅผ ๋ฑ๋กํฉ๋๋ค. -
ResourceManager๊ฐ ๋ฑ๋ก ์ฒ๋ฆฌ ๋ฐ ์๋ต
ResourceManager์
ApplicationMasterService
๋ ๋ฑ๋ก ์์ฒญ์ ๋ฐ์ ํ, ํด๋น ApplicationMaster๋ฅผ ๋ด๋ถ ๋ชฉ๋ก์ ์ถ๊ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณRegisterApplicationMasterResponse
๋ฅผ ๋ฐํํฉ๋๋ค.์ด ์๋ต์
AllocateResponse
ํํ๋ก ๊ตฌ์ฑ๋๋ฉฐ ๋ค์ ์ ๋ณด๋ฅผ ํฌํจํฉ๋๋ค.- ์ค๋ณต ์๋ต ๋ฐฉ์ง๋ฅผ ์ํ Response ID
- AM์๊ฒ ์ ๋ฌ๋๋ ๋ช ๋ น์ด (e.g., ์ฌ์์, ์ข ๋ฃ ๋ฑ)
- ์๋กญ๊ฒ ํ ๋น๋ ์ปจํ ์ด๋ ๋ชฉ๋ก
- ์ข ๋ฃ๋ ์ปจํ ์ด๋๋ค์ ์ํ
- ํด๋ฌ์คํฐ์์ ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฆฌ์์ค ์ (headroom)
- ๋ณ๊ฒฝ๋ ๋ ธ๋ ์ํ ๋ชฉ๋ก
- ์ ์ฒด ๋ ธ๋ ์
- ๋ฐํ ์์ฒญ๋ ๋ฆฌ์์ค
- (๋ณด์ ํ์ฑํ ์) AMRMToken
- ๋ฆฌ์์ค๊ฐ ์ฆ๊ฐ ๋๋ ๊ฐ์๋ ์ปจํ ์ด๋ ๋ชฉ๋ก
-
ApplicationMaster๊ฐ allocate ๋ฉ์๋๋ก ๋ฆฌ์์ค๋ฅผ ์์ฒญ
ApplicationMaster๋ ์ดํ ์ฃผ๊ธฐ์ ์ผ๋ก
allocate()
๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ๋ค์์ ์ํํฉ๋๋ค.- ํ์ํ ๋ฆฌ์์ค ์์ฒญ (์: ์ปจํ ์ด๋ ๊ฐ์, ์์น, ์ฌ์ ๋ฑ)
- ์ดํ๋ฆฌ์ผ์ด์ ์ ํ์ฌ ์งํ๋ฅ ๋ณด๊ณ
- ์ฌ์ฉํ์ง ์๋ ์ปจํ ์ด๋ ๋ฐํ
- ์คํ ์ค์ธ ์ปจํ ์ด๋์ ๋ฆฌ์์ค ๋ณ๊ฒฝ ์์ฒญ
๐ก
allocate()
๋ฉ์๋๋ ์ํ ์ ์ง๋ฅผ ์ํ heartbeat ์ญํ ๋ ์ํํฉ๋๋ค.
AM์ ํ์ํ ์ปจํ ์ด๋๋ฅผ ํ ๋ฒ์ ๋ชป ๋ฐ์๋ ์ด ๋ฉ์๋๋ฅผ ํตํด ์ ์ง์ ์ผ๋ก ๋ฆฌ์์ค๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค.
AMRMClientAsync
๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ํธ์ถ ๊ฐ๊ฒฉ์ 1์ด์ ๋๋ค. -
ResourceManager๊ฐ ์์ฒญ์ ์ค์ผ์ค๋ฌ์๊ฒ ์์
ApplicationMasterService
๋ ๋ฐ์ allocate ์์ฒญ์ ๋ด๋ถ ์ค์ผ์ค๋ฌ์๊ฒ ์ ๋ฌํฉ๋๋ค.
์ค์ผ์ค๋ฌ๋ ์์ฒญ๋ ์์์ด ๊ฐ์ฉํ์ง ํ์ธํ๊ณ , ๊ฐ๋ฅํ ๊ฒฝ์ฐ ํด๋น ๋ฆฌ์์ค๋ฅผ ํ ๋นํฉ๋๋ค.
๊ฒฐ๊ณผ๋ ๋ค์AllocateResponse
์ ๋ด๊ฒจ ApplicationMaster๋ก ๋ฐํ๋ฉ๋๋ค.๐ก ์์:
์ค์ผ์ค๋ฌ๋ ์ฌ์ฉ์์ ํ, ์ฐ์ ์์, ํ์ฌ ํด๋ฌ์คํฐ ์ํ ๋ฑ์ ๊ธฐ๋ฐ์ผ๋ก ์์ ํ ๋น ์ฌ๋ถ๋ฅผ ํ๋จํฉ๋๋ค.
๐ 1.3.5. AM โธ NM : ์ปจํ ์ด๋ ์คํ
์ถ์ฒ : YARN ์ปจํ ์ด๋ ์คํ ๋ฐ Application ์คํ ๋จ๊ณ
ApplicationMaster๋ ์์ ์ด ํ ๋น๋ฐ์ ์ปจํ ์ด๋์์ ์ดํ๋ฆฌ์ผ์ด์ ์ ์คํํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํด ApplicationMaster๋ NodeManager์ ์ํธ์์ฉํฉ๋๋ค.
- ApplicationMaster์ ํด๋ผ์ด์ธํธ๋ NodeManager์๊ฒ ์ปจํ
์ด๋ ์คํ์ ์์ฒญํฉ๋๋ค.
์ด๋ ์ฌ์ฉ๋๋StartContainersRequest
์๋ ๋ค์ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.- ํ ๋น๋ ๋ฆฌ์์ค (๋ฉ๋ชจ๋ฆฌ, CPU ๋ฑ)
- ๋ณด์ ํ ํฐ (๋ณด์์ด ํ์ฑํ๋ ๊ฒฝ์ฐ)
- ์ปจํ ์ด๋๋ฅผ ์์ํ๊ธฐ ์ํ ์คํ ๋ช ๋ น์ด
- ํ๋ก์ธ์ค ํ๊ฒฝ ๋ณ์
- ํ์ํ ๋ฐ์ด๋๋ฆฌ, JAR ํ์ผ, ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ
- NodeManager์
ContainerManager
๋startContainer
๋ฉ์๋๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
ContainerManager
๋ ApplicationMaster๊ฐ ์์ฒญํ ๋๋ก ์ปจํ ์ด๋๋ฅผ ์คํํ๊ณ , ์คํ ๊ฒฐ๊ณผ๋ฅผStartContainersResponse
๋ก ๋ฐํํฉ๋๋ค.
StartContainersResponse
๋ ๋ค์๊ณผ ๊ฐ์ ์ ๋ณด๋ฅผ ํฌํจํฉ๋๋ค.getAllServicesMetaData()
: ์คํ๋ ์๋น์ค์ ๋ฉํ๋ฐ์ดํฐgetFailedRequests()
: ์คํจํ ์ปจํ ์ด๋ ์คํ ์์ฒญ ๋ชฉ๋กgetSuccessfullyStartedContainers()
: ์ฑ๊ณต์ ์ผ๋ก ์์๋ ์ปจํ ์ด๋ ๋ชฉ๋ก
๐ก ์์:
ApplicationMaster๊ฐ NodeManager์ ์ปจํ ์ด๋ ์คํ์ ์์ฒญํ์ ๋,
NodeManager๊ฐ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ 4GB, CPU 2๊ฐ๋ฅผ ๊ฐ์ง ์ปจํ ์ด๋๋ฅผ ์์ํ๊ณ , ์คํ ๋ช ๋ น์ด๋กjava -jar app.jar
๋ฅผ ์คํํฉ๋๋ค.
์คํ์ด ์ฑ๊ณตํ๋ฉดStartContainersResponse
์์ ์ฑ๊ณต์ ์ผ๋ก ์์๋ ์ปจํ ์ด๋ ๋ชฉ๋ก์ ํด๋น ์ปจํ ์ด๋๊ฐ ํฌํจ๋์ด ํด๋ผ์ด์ธํธ์ ๋ฐํ๋ฉ๋๋ค.
๐ 1.3.6. NM โธ Container : Application ์คํ
์ฌ์ค ์ ์ปจํ ์ด๋ ์คํ ๊ณผ์ ๊ณผ Application ์คํ ๊ณผ์ ์ ํ๋๋ก ํตํฉํ์ฌ ๋ด๋ ์ข์ต๋๋ค.
-
์ปจํ ์ด๋๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์คํ๋ ์ดํ, ApplicationMaster๋
getContainerStatuses()
๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ํธ์ถํ์ฌ ๊ฐ ์ปจํ ์ด๋์ ์ดํ๋ฆฌ์ผ์ด์ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํฉ๋๋ค. -
NodeManager์
ContainerManager
๋ ApplicationMaster๊ฐ ์์ฒญํ ์ปจํ ์ด๋ ์ํ๋ฅผGetContainerStatusesResponse
๋ก ๋ฐํํฉ๋๋ค. ์ด ์๋ต์๋ ์ปจํ ์ด๋์ ์ํ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
๐ก ์์:
ApplicationMaster๊ฐ ์ฃผ๊ธฐ์ ์ผ๋ก ์ปจํ ์ด๋ ์ํ๋ฅผ ์กฐํํ ๋,
NodeManager๋ ์ปจํ ์ด๋๊ฐ ํ์ฌRUNNING
์ํ์์ ์๋ตํ๊ณ , ๋ง์ฝ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ผ๋ฉด ์ค๋ฅ ์ ๋ณด๋ฅผ ํฌํจํ์ฌ ์ ๋ฌํฉ๋๋ค.
์ด๋ฅผ ํตํด ApplicationMaster๋ ๊ฐ ์ปจํ ์ด๋์ ์ํ๋ฅผ ์ค์๊ฐ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
๐ 1.3.7. Application Master ์ข ๋ฃ
์ปจํ
์ด๋์์ ์คํํ๋ ์ดํ๋ฆฌ์ผ์ด์
๋ค์ด ์ข
๋ฃ๋๋ฉด, ApplicationMaster๋ ์ข
๋ฃ๋์ด์ผ ํฉ๋๋ค.
ApplicationMaster๊ฐ ์ข
๋ฃ๋๋ฉด ํ๋์ ์ดํ๋ฆฌ์ผ์ด์
๋ผ์ดํ์ฌ์ดํด์ด ์์ ํ ์ข
๋ฃ๋๋ ๊ฒ์
๋๋ค.
-
ApplicationMaster์ ํด๋ผ์ด์ธํธ๋ ResourceManager์๊ฒ ApplicationMaster ์ข ๋ฃ๋ฅผ ์์ฒญํฉ๋๋ค.
-
ResourceManager์ ApplicationMasterService๋ ํด๋น ApplicationMaster๋ฅผ ํด๋ฌ์คํฐ์์ ํด์ ํ๊ณ ,
FinishApplicationMasterResponse
๋ฅผ ๋ฐํํฉ๋๋ค.FinishApplicationMasterResponse
์๋getIsUnregistered()
๋ผ๋ boolean ๋ฉ์๋๊ฐ ์์ด์, ์ ์์ ์ธ ํด์ ์ ์ข ๋ฃ ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ์๋ ค์ค๋๋ค.- ๋ง์ฝ
getIsUnregistered()
๊ฐ true๊ฐ ๋๊ธฐ ์ ์ Application์ด ๋จผ์ ๋ฉ์ถ๋ค๋ฉด, ResourceManager๋ ํด๋น ์ดํ๋ฆฌ์ผ์ด์ ์ ์ฌ์๋ํฉ๋๋ค.
๐ก ์์:
์ด๋ค ์ดํ๋ฆฌ์ผ์ด์ ์ด ์ ์์ ์ผ๋ก ์์ ์ ๋ง์น๊ณ ์ข ๋ฃ ์ ํธ๋ฅผ ๋ณด๋ด๋ฉด, ResourceManager๋ ์ด ์์ฒญ์ ๋ฐ์ ApplicationMaster๋ฅผ ํด์ ํ๊ณ ,getIsUnregistered()
๊ฐ true์ธ ์๋ต์ ๋ฐํํฉ๋๋ค.
๋ฐ๋ฉด, ์์ ์ด ๊ฐ์๊ธฐ ์ค๋จ๋๊ฑฐ๋ ๋น์ ์ ์ข ๋ฃ๋๋ฉด, ResourceManager๋ ์ฌ์๋๋ฅผ ์ํด ApplicationMaster๋ฅผ ๋ค์ ์คํ์ํฌ ์ ์์ต๋๋ค.
๐ 1.3.8. Auxiliary Service
YARN์์ Auxiliary Service(๋ณด์กฐ ์๋น์ค)๋ NodeManager ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ฑฐ๋ ์๋น์ค ์ ์ด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ธฐ๋ฅ์ ๋๋ค.
ํนํ ํ๋ก ๋งต๋ฆฌ๋์ค ์์ ์์, ๋งต ํ์คํฌ์ ๋ฆฌ๋์ค ํ์คํฌ ์ฌ์ด์ ๋ฐ์ดํฐ ์ ๋ฌ ๊ณผ์ ์ธ โ์ ํ(Shuffle)โ์ ์ํํ ์ํํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
๋งต ํ์คํฌ๋ ๊ฐ ๋ ธ๋์ NodeManager๊ฐ ๊ด๋ฆฌํ๋ ์ปจํ ์ด๋(Container) ๋ด์์ ์คํ๋ฉ๋๋ค. ๋งต ํ์คํฌ๊ฐ ์์ ํ ์ค๊ฐ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๋ ๋ฆฌ๋์ค ํ์คํฌ๊ฐ ์คํ๋๋ ๋ค๋ฅธ ๋ ธ๋์ ์ปจํ ์ด๋๋ก ์ ๋ฌ๋์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ, NodeManager๋ ์ปจํ ์ด๋ ๋ด ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ข ๋ฃ๋๋ฉด ํด๋น ์ปจํ ์ด๋๋ฅผ ์ฆ์ ์ข ๋ฃํฉ๋๋ค. ๋ง์ฝ ๋งต ํ์คํฌ๊ฐ ๋๋๋ฉด์ ์ปจํ ์ด๋๊ฐ ์ข ๋ฃ๋๋ฉด, ๋งต ํ์คํฌ๊ฐ ๋ง๋ ์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฑฐ๋ ๋ฆฌ๋์ค ํ์คํฌ์ ์ ๋ฌํ ์ ์๊ฒ ๋ฉ๋๋ค. ๊ทธ ๊ฒฐ๊ณผ, ๋ฆฌ๋์ค ํ์คํฌ๊ฐ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ง ๋ชปํด ๋ฆฌ๋์ค ์์ ์ ์ํํ ์ ์๊ฒ ๋ฉ๋๋ค.
์ฆ, ๋งต ํ์คํฌ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ธฐ ์ ์ ์ปจํ ์ด๋๊ฐ ์ฌ๋ผ์ง๋ฉด, ๋ฆฌ๋์ค ์์ ์ ์ํํ ์ ์๊ฒ ๋์ด ์ ์ฒด ์์ ํ๋ฆ์ด ๋ฉ์ถ๊ฒ ๋ฉ๋๋ค.
์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด YARN์ Auxiliary Service๋ฅผ ํตํด NodeManager ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์์ ์ ์ผ๋ก ์ ์กํ ์ ์๋ ๋ณ๋์ ์๋น์ค ์ฑ๋์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ปจํ ์ด๋๊ฐ ์ข ๋ฃ๋๋๋ผ๋ ๋งต์์ ๋ฆฌ๋์ค๋ก์ ๋ฐ์ดํฐ ์ ๋ฌ(์ ํ)์ด ์ํํ ์ด๋ฃจ์ด์ง ์ ์์ต๋๋ค.
๋ฐ๋ผ์ Auxiliary Service๋ ๋งต๋ฆฌ๋์ค ์์ ์ ํต์ฌ ๋จ๊ณ์ธ ์ ํ ์์ ์ ์ฑ๊ณต์ ์ผ๋ก ์ํํ๊ธฐ ์ํ ํ์์ ์ธ ๋ณด์กฐ ๊ธฐ๋ฅ์ ๋๋ค.
๋์ ๊ณผ์ ์ ์๋์ ๊ฐ์ต๋๋ค.
-
ํด๋ผ์ด์ธํธ๊ฐ ResourceManager์๊ฒ ์ดํ๋ฆฌ์ผ์ด์ ์คํ์ ์์ฒญํฉ๋๋ค.
-
ResourceManager๋ ํด๋น ์ดํ๋ฆฌ์ผ์ด์ ์ ApplicationMaster๋ฅผ ์คํํฉ๋๋ค.
- YARN์ ๋งต๋ฆฌ๋์ค ์ดํ๋ฆฌ์ผ์ด์
์ ApplicationMaster๋ก
MRAppMaster
๋ฅผ ์ ๊ณตํฉ๋๋ค.- ResourceManager๊ฐ ApplicationMaster ์คํ์ ์์ฒญํ๋ฉด NodeManager๊ฐ ์ปจํ
์ด๋์์
MRAppMaster
๋ฅผ ์คํํฉ๋๋ค.
- ResourceManager๊ฐ ApplicationMaster ์คํ์ ์์ฒญํ๋ฉด NodeManager๊ฐ ์ปจํ
์ด๋์์
-
MRAppMaster
๋ ๋ค๋ฅธ NodeManager์๊ฒ ๋งต ํ์คํฌ ์คํ์ ์์ฒญํฉ๋๋ค. -
NodeManager๋ ์ปจํ ์ด๋์์ ๋งต ํ์คํฌ๋ฅผ ์คํํฉ๋๋ค.
- ๋งต ํ์คํฌ๊ฐ ์ํํ ๊ฒฐ๊ณผ๋ ์
ํ ๊ณผ์ ์ ํตํด ๋ฆฌ๋์ค ํ์คํฌ์ ์ ๋ฌ๋ฉ๋๋ค.
- ์
ํ(Shuffle)์ ๋ด๋นํ๋ ๊ธฐ๋ณธ ํด๋์ค๋ ํ๋ก์
mapred
ํจํค์ง์ ๊ตฌํ๋ShuffleHandler
์ ๋๋ค.
- ์
ํ(Shuffle)์ ๋ด๋นํ๋ ๊ธฐ๋ณธ ํด๋์ค๋ ํ๋ก์
๐ก ์์
์๋ฅผ ๋ค์ด, ๋งต ํ์คํฌ๊ฐ ๋ ธ๋ A์ ์ปจํ ์ด๋์์ ์คํ๋๊ณ , ๋ฆฌ๋์ค ํ์คํฌ๊ฐ ๋ ธ๋ B์์ ์คํ๋ ๋,
๋ ธ๋ A์ NodeManager๋ Auxiliary Service๋ฅผ ํตํด ์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ๋ ธ๋ B์ NodeManager๋ก ์ ๋ฌํฉ๋๋ค.
์ด ๊ณผ์ ์์ShuffleHandler
๊ฐ ์ ํ ๋ฐ์ดํฐ๋ฅผ ์ค๊ณํ๋ฉฐ, ๋งต๊ณผ ๋ฆฌ๋์ค ์ฌ์ด ๋ฐ์ดํฐ ์ ๋ฌ์ด ๋๊ธฐ์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
๐ 1.3.9. Pluggable Shuffle ๋ฐ Pluggable Sort ์ค์
Pluggable Shuffle ๋ฐ Pluggable Sort๋ ์ด Auxiliary Service ์์์ ๋์ํ๋, ์ ํ ๋จ๊ณ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐฉ์์ ์ฌ์ฉ์ ์ ์(customize)ํ ์ ์๋๋ก ํ๋ ๊ธฐ๋ฅ์ ๋๋ค.
์ฆ, ์ ํ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์์ง(ShuffleConsumerPlugin)ํ๊ณ ์ ๋ ฌ(MapOutputCollector)ํ ์ง๋ฅผ ํ๋ฌ๊ทธ์ธ ํํ๋ก ๋ฐ๊ฟ ์ ์์ต๋๋ค.
๋ค์ ๋งํด,
Auxiliary Service๋ ์
ํ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ โ๊ธฐ๋ฐ ์ธํ๋ผโ์ด๊ณ , Pluggable Shuffle/Sort๋ ๊ทธ ์์์ ์๋ํ๋ โ๋์ ๋ฐฉ์์ ์ปค์คํฐ๋ง์ด์งํ๋ ๊ธฐ๋ฅโ์
๋๋ค.
Auxiliary Service๋ ๋งต๋ฆฌ๋์ค์ ์ ํ๊ณผ ์ ๋ ฌ ๋์์ ๋ค์ ๋ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ์ปค์คํฐ๋ง์ด์งํ ์ ์์ต๋๋ค.
- Job ์ ์ถ ์ ์ค์
- Job configuration์ ์ธํฐํ์ด์ค ๊ตฌํ์ฒด(์:
ShuffleConsumerPlugin
,MapOutputCollector
)๋ฅผ ํฌํจํ ํด๋์ค๋ฅผ ์ง์ ํฉ๋๋ค. - ์ด ํด๋์ค๋ค์ ํด๋น Job ํจํค์ง ๋ด์ ์์นํด์ผ ํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, job-conf.xml ํน์ ํ๋ก๊ทธ๋จ ์ฝ๋ ๋ด์์ ๊ด๋ จ ํด๋์ค๋ฅผ ์ง์ ํ์ฌ ํน์ ์ ํ ๋์์ ์ปค์คํฐ๋ง์ด์งํฉ๋๋ค.
- Job configuration์ ์ธํฐํ์ด์ค ๊ตฌํ์ฒด(์:
- yarn-site.xml ์ค์
- ํด๋ฌ์คํฐ์ ๋ฐฐํฌ๋ ๋ชจ๋ ๋ ธ๋์ yarn-site.xml ํ์ผ์ auxiliary-services ๋ฐ ๊ด๋ จ ์๋น์ค ์ค์ ์ ์ถ๊ฐํฉ๋๋ค.
- ์ด๋ฅผ ํตํด ํด๋ฌ์คํฐ ์ ์ฒด์ ์ปค์คํ Auxiliary Service๋ฅผ ์ ์ฉํ ์ ์์ต๋๋ค.
- ์๋ฅผ ๋ค์ด ์๋์ ๊ฐ์ต๋๋ค.
<property> <name>yarn.app.mapreduce.aux-services</name> <value>shuffle</value> </property> <property> <name>yarn.app.mapreduce.aux-services.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property>
๐ก ์์
๋ง์ฝ ํน์ ํ์ฌ์์ ์์ฒด ๊ฐ๋ฐํ ์ ํ ์ต์ ํ ๋ก์ง์ ์ ์ฉํ๊ณ ์ถ๋ค๋ฉด,
Job ์ ์ถ ์์ShuffleConsumerPlugin
์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค๋ฅผ ์ ๊ณตํ๊ฑฐ๋,
ํด๋ฌ์คํฐ ์ ๋ฐ์ ์ ์ฉํ ๊ฒฝ์ฐyarn-site.xml
์ ํด๋นaux-service
์ค์ ์ ๋ฐฐํฌํด ์ ํ ๋์์ ์ปค์คํฐ๋ง์ด์งํ ์ ์์ต๋๋ค.
์ฐธ๊ณ
ํด๋น ๋ด์ฉ์ YARN ๊ณต์ ๋งค๋ด์ผ ์๋ฃ๋ฅผ ์ฐธ๊ณ ํ์์ต๋๋ค.
๐ 2. YARN ์ํคํ ์ฒ ์ฌํ
์์์๋ YARN ์ ํ๋ฆ์ ๋ํด์ ์์๋ณด์์ต๋๋ค.
๊ทธ ์ค ์ค์ํ Resource Manager ์, Node Manager ์ ๋ํ ์ข ๋ ์ฌํ์ ์ธ ๋ด์ฉ์ ๋ช ๊ฐ์ง ๊ณต๋ถํ์ฌ, ์ ๋ฆฌํ๊ณ ๊ฐ๊ณ ์ ํฉ๋๋ค.
๐ 2.1. Resource Manager ์ฌํ
์ถ์ฒ : YARN ์ฌํ Resource Manager
YARN์ ResourceManager๋ ํด๋ฌ์คํฐ ์ ์ฒด์ ๋๋ ์ญํ ์ ํฉ๋๋ค. ์ด ์ปดํฌ๋ํธ๋ ํด๋ฌ์คํฐ์ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ์ค์์์ ํตํฉ์ ์ผ๋ก ๊ด๋ฆฌํ๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋๋ ๋ฐ ํ์ํ ์์์ ์ ์ ํ ๋ถ๋ฐฐํ๊ณ ์กฐ์ ํฉ๋๋ค.
๐ 2.1.1. RM โ Client ์ํธ์์ฉํ๋ Component
๐น ClientService
ClientService๋ ResourceManager(RM)์ ํด๋ผ์ด์ธํธ ์ฌ์ด์ ํต์ ์ธํฐํ์ด์ค์
๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ YARN ํด๋ฌ์คํฐ์ ์ ํ๋ฆฌ์ผ์ด์
์ ์ ์ถํ๊ฑฐ๋, ์ํ๋ฅผ ์กฐํํ๊ฑฐ๋, ์ ํ๋ฆฌ์ผ์ด์
์ ์ค์งํ๋ ๋ฑ์ ์์ฒญ์ ๋ณด๋ผ ๋ ์ด ์ปดํฌ๋ํธ๊ฐ ์ด๋ฅผ ๋ฐ์ ์ฒ๋ฆฌํฉ๋๋ค.
์ด ์ธํฐํ์ด์ค๋ application submission, termination, queue ์ ๋ณด ์กฐํ, ํด๋ฌ์คํฐ ํต๊ณ ์กฐํ ๋ฑ์ ๊ธฐ๋ฅ์ ๋ด๋นํฉ๋๋ค.
๐ก ์์
์ฌ์ฉ์๊ฐ yarn jar MyApp.jar ๋ช ๋ น์ด๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ถํ๋ฉด, ํด๋น ์์ฒญ์ ClientService๋ฅผ ํตํด RM์ ์ ๋ฌ๋ฉ๋๋ค.
๐น AdminService
์ผ๋ฐ ์ฌ์ฉ์์ ๊ด๋ฆฌ์์ ์์ฒญ์ ๊ตฌ๋ถํ๊ธฐ ์ํด ์กด์ฌํ๋ ์ปดํฌ๋ํธ์
๋๋ค. AdminService๋ฅผ ํตํด ์ค๋ ์์ฒญ์ ๋ณดํต ์์คํ
์ด์์๊ฐ ํด๋ฌ์คํฐ ๊ตฌ์ฑ์ ๋ณ๊ฒฝํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
์ผ๋ฐ์ ์ธ client ์์ฒญ๋ณด๋ค ์ฐ์ ์์๊ฐ ๋๊ฒ ์ฒ๋ฆฌ๋ฉ๋๋ค.
๐ก ์์
ํด๋ฌ์คํฐ ์ด์์๊ฐ ํน์ ๋ ธ๋๋ฅผ ํด๋ฌ์คํฐ์์ ์ ์ธํ๊ณ ์ถ์ ๋, AdminService๋ฅผ ํตํด node list๋ฅผ refreshํฉ๋๋ค.
๐ 2.1.2. RM โ NM ์ํธ์์ฉํ๋ Component
๐น ResourceTrackerService
ResourceTrackerService๋ ResourceManager์ ๊ฐ NodeManager ๊ฐ์ ํต์ ์ ๋ด๋นํ๋ฉฐ, ๊ฐ ๋
ธ๋์ ์ํ(์: ๊ฐ์ฉ ์์, ์คํ ์ค์ธ ์ปจํ
์ด๋ ๋ฑ)๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์์ ํฉ๋๋ค.
์ด ์ปดํฌ๋ํธ๋ ๋ ธ๋ ๋ฑ๋ก/์ญ์ , ์ํ ๋ณด๊ณ (heartbeat) ๋ฑ์ ์ฒ๋ฆฌํ๋ฉฐ, YarnScheduler, NMLivelinessMonitor, NodesListManager์ ๋ฐ์ ํ๊ฒ ์ฐ๋๋ฉ๋๋ค.
๐ก ์์
์ด๋ค NodeManager๊ฐ ์๋ก ์์๋๋ฉด ์์ ์ RM์ ๋ฑ๋กํ๊ธฐ ์ํด ResourceTrackerService์ RPC๋ฅผ ์ ์กํฉ๋๋ค.
๐น NMLivelinessMonitor
์ด ์ปดํฌ๋ํธ๋ ๋ชจ๋ ๋
ธ๋์ ์ํ๋ฅผ ์์กด(live) ๋๋ ์ฃฝ์(dead) ์ผ๋ก ํ๋จํฉ๋๋ค. ๊ฐ ๋
ธ๋๊ฐ ์ผ์ ์๊ฐ(๊ธฐ๋ณธ 10๋ถ) ์ด์ heartbeat๋ฅผ ๋ณด๋ด์ง ์์ผ๋ฉด ํด๋น ๋
ธ๋๋ฅผ dead ์ํ๋ก ๊ฐ์ฃผํฉ๋๋ค.
๐ก ์์
ํน์ ๋ ธ๋๊ฐ ํ๋์จ์ด ๋ฌธ์ ๋ก ์ ์ง๋์ด heartbeat๋ฅผ ๋ณด๋ด์ง ๋ชปํ๋ฉด, ์ด ์ปดํฌ๋ํธ๊ฐ ์ด๋ฅผ ๊ฐ์งํ๊ณ RM์ ํด๋น ๋ ธ๋๋ฅผ ์ ์ธํ๊ณ ๋ฆฌ์์ค๋ฅผ ์ค์ผ์ค๋งํฉ๋๋ค.
๐น NodesListManager
์ด ์ปดํฌ๋ํธ๋ ํด๋ฌ์คํฐ์ ํฌํจ๋ ๋
ธ๋๋ค์ ๋ชฉ๋ก์ ๊ด๋ฆฌํฉ๋๋ค. host inclusion/exclusion ๋ชฉ๋ก์ ๊ธฐ๋ฐ์ผ๋ก ์ ํจํ ๋
ธ๋๋ฅผ ํ๋จํ๊ณ , ๊ด๋ฆฌ์๊ฐ ์ ์ธ์ํจ ๋
ธ๋๋ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํฉ๋๋ค.
๐ก ์์
์ด์์๊ฐ dfs.exclude ํ์ผ์ ๋ ธ๋ A๋ฅผ ์ถ๊ฐํ๋ฉด, NodesListManager๋ ์ด๋ฅผ ๊ฐ์งํ์ฌ ํด๋น ๋ ธ๋๋ฅผ ํด๋ฌ์คํฐ์์ ์ ๊ฑฐํฉ๋๋ค.
๐ 2.1.3. RM โ AM ์ํธ์์ฉํ๋ Component
๐น ApplicationMasterService
์ด ์๋น์ค๋ ๋ชจ๋ AM(ApplicationMaster)์ผ๋ก๋ถํฐ ์ค๋ ์์ฒญ์ ์ฒ๋ฆฌํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์
์ด ์คํ ์ค์ธ ๋์, ์ปจํ
์ด๋ ์์ฒญ, ํ ๋น ํด์ , ๋ฑ๋ก ๋ฐ ์ข
๋ฃ ์์ฒญ ๋ฑ์ ์ฒ๋ฆฌํฉ๋๋ค.
๐ก ์์
ApplicationMaster๊ฐ 3๊ฐ์ ์ปจํ ์ด๋๋ฅผ ์์ฒญํ ๋ ์ด ์์ฒญ์ ApplicationMasterService๋ฅผ ํตํด RM์ ์ ๋ฌ๋๊ณ , ์ดํ YarnScheduler๊ฐ ํด๋น ์์ฒญ์ ๊ฒํ ํด ์์์ ํ ๋นํฉ๋๋ค.
๐น AMLivelinessMonitor
AMLivelinessMonitor๋ ๊ฐ ApplicationMaster์ ์์กด ์ํ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ชจ๋ํฐ๋งํฉ๋๋ค. AM์ด heartbeat๋ฅผ ๋ณด๋ด์ง ์์ผ๋ฉด, RM์ ํด๋น AM์ ์คํจ๋ก ๊ฐ์ฃผํ๊ณ ๋ณต๊ตฌ ์์
์ ์ํํฉ๋๋ค.
๐ก ์์
AM์ด ์ค์๋ํ๊ฑฐ๋ JVM ํฌ๋์๋ก ์ธํด ์ฃฝ์ผ๋ฉด, ์ด ์ปดํฌ๋ํธ๊ฐ ์ด๋ฅผ ๊ฐ์งํ๊ณ RM์ ์๋ก์ด AM์ ์ฌ์คํํ ์ ์๋๋ก ์ค๋นํฉ๋๋ค.
๐ 2.1.4. RM ํต์ฌ: ์ค์ผ์ค๋ฌ์ ๋ฆฌ์์ค ๊ด๋ฆฌ์
๐น ApplicationsManager
ApplicationsManager๋ ํด๋ฌ์คํฐ์ ์ ์ถ๋ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ด๋ฆฌํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์
์คํ ์ ๋ณด, ์ํ ์ถ์ , ์๋ฃ๋ ์ ํ๋ฆฌ์ผ์ด์
์บ์ ๋ฑ์ ์ ์งํฉ๋๋ค.
๐ก ์์
yarn application -status๋ช ๋ น์ด๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ํ๋ฅผ ํ์ธํ ์ ์๋ ๊ฒ์ ์ด ์ปดํฌ๋ํธ ๋๋ถ์ ๋๋ค.
๐น ApplicationACLsManager
Application ๋จ์์ ์ ๊ทผ ์ ์ด(Authorization) ๋ฅผ ๋ด๋นํฉ๋๋ค. ๊ฐ ์ ํ๋ฆฌ์ผ์ด์
๋ง๋ค ์ ๊ทผ์ด ํ์ฉ๋ ์ฌ์ฉ์ ๋ชฉ๋ก์ ACL ํํ๋ก ๊ด๋ฆฌํฉ๋๋ค.
๐ก ์์
ํน์ ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ์ฌ์ฉ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ํ๋ฅผ ์กฐํํ๋ ค๊ณ ํ ๋, ์ด ์ปดํฌ๋ํธ๊ฐ ACL์ ํ์ธํ์ฌ ์ ๊ทผ ๊ถํ์ด ์๋์ง๋ฅผ ํ๋จํฉ๋๋ค.
๐น ApplicationMasterLauncher
์๋ก์ด ์ ํ๋ฆฌ์ผ์ด์
์ด RM์ ์ ์ถ๋๋ฉด, ์ด ์ปดํฌ๋ํธ๊ฐ ApplicationMaster ์ปจํ
์ด๋๋ฅผ ์คํ์ํต๋๋ค. ๋ด๋ถ์ ์ผ๋ก ์ค๋ ๋ ํ์ ์ด์ฉํ์ฌ ๋น๋๊ธฐ์ ์ผ๋ก ApplicationMaster๋ฅผ ์์ํ๊ณ ๊ด๋ฆฌํฉ๋๋ค.
๐ก ์์
์ ํ๋ฆฌ์ผ์ด์ ์ ์ถ ํ AM์ด ์คํ๋์ง ์๋ ๊ฒฝ์ฐ, ์ด ์ปดํฌ๋ํธ๊ฐ ์ ์ ํ NodeManager์ AM ์ปจํ ์ด๋๋ฅผ ๋ฐฐ์นํ์ง ๋ชปํ์ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค.
๐น YarnScheduler
YARN์์ ์์ ํ ๋น์ ์ค์ ๋ก ์ํํ๋ ํต์ฌ ์ปดํฌ๋ํธ์
๋๋ค. ๊ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ์๊ตฌ์ฌํญ์ ๋ง์ถฐ ๋ฉ๋ชจ๋ฆฌ, CPU, ๋์คํฌ, ๋คํธ์ํฌ ๋ฑ์ ์์์ ์ค์ผ์ค๋งํฉ๋๋ค.
๐ก ์์
ApplicationMaster๊ฐ 2GB ๋ฉ๋ชจ๋ฆฌ์ 2 vCore๊ฐ ํ์ํ ์ปจํ ์ด๋๋ฅผ ์์ฒญํ๋ฉด, YarnScheduler๋ ํ์ฌ ๊ฐ์ฉํ ์์์ ํ์ธํ๊ณ ์ ์ ํ NodeManager์ ์ปจํ ์ด๋๋ฅผ ํ ๋นํฉ๋๋ค.
๐น ContainerAllocationExpirer
์ด ์ปดํฌ๋ํธ๋ ํ ๋น๋ ์ปจํ
์ด๋๊ฐ ์ค์ ๋ก ์ฌ์ฉ๋์ง ์์ผ๋ฉด ๋ง๋ฃ(expire) ์ํค๋ ์ญํ ์ ํฉ๋๋ค. AM์ด ์ปจํ
์ด๋๋ฅผ ํ ๋น๋ฐ์์ง๋ง ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ, ํด๋น ์ปจํ
์ด๋๋ฅผ ํ์ํฉ๋๋ค.
๐ก ์์
AM์ด ํ ์คํธ ๋ชฉ์ ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ์์ฒญํ ํ ์ฌ์ฉํ์ง ์๊ณ ๊ทธ๋๋ก ๋๋ฉด, ์ด ์ปดํฌ๋ํธ๊ฐ ์ผ์ ์๊ฐ ์ดํ ์ด๋ฅผ ํ์ํ์ฌ ์์์ ๋ญ๋นํ์ง ์๋๋ก ํฉ๋๋ค
๐ 2.1.5. TokenSecretManagers ๋ณด์ ์ปดํฌ๋ํธ
YARN์์๋ ๋ชจ๋ ํต์ ์ ์ธ์ฆ๋ RPC ๋ก ์ํํฉ๋๋ค. ์ด๋ฅผ ์ํด ์ฌ๋ฌ ์ข ๋ฅ์ ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ ์ ์ ๊ณตํ๋ฉฐ, ๊ฐ ์ปดํฌ๋ํธ๊ฐ ์ ์ ํ ์ธ์ฆ ์ ๋ณด๋ฅผ ํตํด ์๋ก๋ฅผ ์๋ณํฉ๋๋ค.
๐น ApplicationTokenSecretManager
ApplicationMaster๊ฐ RM๊ณผ ํต์ ํ ์ ์๋๋ก ์ธ์ฆ ํ ํฐ์ ๋ฐ๊ธํ๊ณ ๊ด๋ฆฌํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์
๋ณ๋ก ๊ถํ์ ๊ตฌ๋ถํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ฉฐ, ์ ํจํ ํ ํฐ์ ๊ฐ์ง AM๋ง์ด ์์ฒญ์ ๋ณด๋ผ ์ ์์ต๋๋ค.
๐ก ์์
์ ์์ ์ธ ์ฌ์ฉ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ํ ํฐ ์์ด RM์ ์์ ์์ฒญ์ ํ๋ฉด, ์ด ์ปดํฌ๋ํธ๊ฐ ์ด๋ฅผ ๊ฑฐ๋ถํฉ๋๋ค.
๐น ContainerTokenSecretManager
AM์ด NodeManager์ ์ปจํ
์ด๋ ์คํ ์์ฒญ์ ๋ณด๋ผ ๋ ํ์ํ Container Token์ ๋ฐ๊ธํ๊ณ ๊ฒ์ฆํฉ๋๋ค. ํด๋น ํ ํฐ์ ํตํด ์ปจํ
์ด๋๊ฐ ํฉ๋ฒ์ ์ผ๋ก ์คํ๋์๋์ง๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
๐ก ์์
RM์ด AM์๊ฒ ์ปจํ ์ด๋ ์คํ ์ ๋ณด๋ฅผ ์ฃผ๋ฉด์ ํจ๊ป Container Token์ ์ ๋ฌํฉ๋๋ค. ์ด ํ ํฐ์ด ์๋ค๋ฉด NodeManager๋ ํด๋น ์์ฒญ์ ๊ฑฐ๋ถํฉ๋๋ค.
๐น RMDelegationTokenSecretManager
ํด๋ผ์ด์ธํธ๊ฐ RM๊ณผ ์ธ์ฆ๋ ํต์ ์ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ Delegation Token์ ์์ฑํ๊ณ ๊ด๋ฆฌํฉ๋๋ค. ์ฃผ๋ก ํด๋ผ์ด์ธํธ๊ฐ ์ฅ์๊ฐ ์ธ์ฆ ์์ด ํต์ ์ ์ ์งํ ์ ์๋๋ก ๋์ต๋๋ค.
๐ก ์์
HDFS์์ long-running job์ด ์คํ ์ค์ผ ๋, ์ค๊ฐ์ ์ฌ์ธ์ฆ ์์ด ์ง์์ ์ผ๋ก ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๋ ค๋ฉด delegation token์ด ํ์ํฉ๋๋ค.
๐ 2.2. Node Manager ์ฌํ
์ถ์ฒ : YARN ์ฌํ Node Manager
NodeManager๋ YARN ํด๋ฌ์คํฐ์ ๊ฐ ์์ปค ๋
ธ๋์์ ์คํ๋๋ ์ปดํฌ๋ํธ๋ก, ์ปจํ
์ด๋์ ๋ผ์ดํ์ฌ์ดํด์ ๊ด๋ฆฌํ๊ณ , ๋ก์ปฌ ์์์ ๋ชจ๋ํฐ๋งํ๋ฉฐ, ๋ฆฌ์์ค ์ํ ์ ๋ณด๋ฅผ ResourceManager(RM) ์๊ฒ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ณด๊ณ ํฉ๋๋ค.
( ๋ฆฌ์์ค ๋งค๋์ ๋ ์ค์ ์๋ฒ 1๊ณณ์์๋ง ์คํ๋์ง๋ง, ๋
ธ๋ ๋งค๋์ ๋ ํด๋ฌ์คํฐ ๋ด ๋ชจ๋ ์์ปค ๋
ธ๋์์ ์คํ๋ฉ๋๋ค. )
NodeManager๋ ๋ค์๊ณผ ๊ฐ์ ํต์ฌ ๊ตฌ์ฑ ์์๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
๐ 2.2.1 NodeStatusUpdater
NodeStatusUpdater๋ NodeManager๊ฐ ์์๋ ๋ ResourceManager์ ์์ ์ ๋ฑ๋กํ๊ณ , ํด๋น ๋ ธ๋์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฆฌ์์ค ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ ์ปดํฌ๋ํธ์ ๋๋ค. ์ดํ ์ฃผ๊ธฐ์ ์ผ๋ก ์ปจํ ์ด๋ ์ํ, ์์ ์ฌ์ฉ ํํฉ, ๋ ธ๋ ์ํ ๋ฑ์ RM์ ์ ์กํฉ๋๋ค.
RM์ NodeStatusUpdater๋ฅผ ํตํด ์ปจํ ์ด๋ ์ข ๋ฃ ๋ช ๋ น ๋ฑ์ ์ ๋ฌํ ์ ์์ต๋๋ค.
๐ก ์์
NodeManager๊ฐ โ์๋ฒ-01โ์์ ์์๋๋ฉด, NodeStatusUpdater๊ฐ ์๋ฒ์ ๋ฉ๋ชจ๋ฆฌ 32GB, CPU 16์ฝ์ด ๋ฑ์ ์ ๋ณด๋ฅผ RM์ ์ ์กํ๊ณ , ์ดํ ํด๋น ๋ ธ๋์ ์ปจํ ์ด๋ ์ํ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ณด๊ณ ํฉ๋๋ค.
๐ 2.2.2 ContainerManager
ContainerManager๋ NodeManager์ ํต์ฌ ์ปดํฌ๋ํธ๋ก, ์ปจํ ์ด๋์ ์์ฑ, ์คํ, ๋ชจ๋ํฐ๋ง, ์ข ๋ฃ๋ฅผ ๋ด๋นํฉ๋๋ค. ๋ค์์ ํ์ ๊ตฌ์ฑ ์์๋ค๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค:
๐นRPC Server
ApplicationMaster(AM)์ ์์ฒญ์ ์์ ํ์ฌ ์๋ก์ด ์ปจํ
์ด๋์ ์คํ์ ์์ํ๊ฑฐ๋ ์ค์งํ๋ ์๋ฒ์
๋๋ค. ์์ฒญ์ ์ธ์ฆ ์ ์ฐจ๋ฅผ ๊ฑฐ์น๋ฉฐ, ๋ก๊ทธ๋ ๊ฐ์ฌ์ฉ์ผ๋ก ์ ์ฅ๋ฉ๋๋ค.
๐ก ์์
AM์ด job-1234๋ฅผ ์ํด ์ปจํ ์ด๋ ์คํ ์์ฒญ์ ๋ณด๋ด๋ฉด, RPC Server๊ฐ ์ด๋ฅผ ์๋ฝํ๊ณ ํด๋น ์์ ์ ์คํํฉ๋๋ค.
๐นResourceLocalizationService
์ปจํ
์ด๋ ์คํ์ ํ์ํ ํ์ผ์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ค์ด๋ก๋ํ๊ณ , ๋์คํฌ์ ๋ฐฐํฌํ์ฌ ์ปจํ
์ด๋๊ฐ ๋ฆฌ์์ค๋ฅผ ์์ ํ๊ฒ ์ ๊ทผํ ์ ์๋๋ก ๊ตฌ์ฑํฉ๋๋ค.
์ ๊ทผ ๊ถํ ๋ฐ ์ฌ์ฉ ์ ํ ์ ์ฑ ๋ ํจ๊ป ์ ์ฉ๋ฉ๋๋ค.
๐ก ์์
Spark ์คํ ์ ํ์ํ JAR ํ์ผ๋ค์ ๋ฏธ๋ฆฌ ๋ค์ด๋ฐ์ ์ปจํ ์ด๋ ๋๋ ํ ๋ฆฌ์ ๋ฐฐ์นํ๊ณ , ํด๋น ์ปจํ ์ด๋๋ง ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ์ค์ ํฉ๋๋ค.
๐นContainersLauncher
์ปจํ
์ด๋ ์คํ์ ์ํ ์ค๋ ๋ ํ์ ๊ด๋ฆฌํ๋ฉฐ, ์ปจํ
์ด๋๋ฅผ ์ ์ํ๊ฒ ์์ํ๊ณ , ์ข
๋ฃ ์์ฒญ ์ ํ๋ก์ธ์ค๋ฅผ ์ ๋ฆฌํฉ๋๋ค.
๐ก ์์
RM์ด job-5678์ ์ปจํ ์ด๋๋ฅผ ์ข ๋ฃํ๋ผ๊ณ ๋ช ๋ นํ๋ฉด, ContainersLauncher๋ ํด๋น ํ๋ก์ธ์ค๋ฅผ ์ฐพ์ ์ข ๋ฃํฉ๋๋ค.
๐นAuxServices (๋ณด์กฐ ์๋น์ค)
ํน์ ํ๋ ์์ํฌ(Hive, Spark ๋ฑ)์์ ์๊ตฌํ๋ ์ถ๊ฐ ๊ธฐ๋ฅ์ ํ๋ฌ๊ทธ์ธ ๋ฐฉ์์ผ๋ก ์ง์ํ๋ ๊ตฌ์กฐ์
๋๋ค. NodeManager ์์ ์ ์ ์ค์ ํด์ผ ํ๋ฉฐ, ๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ปจํ
์ด๋ ์์/์ข
๋ฃ ์ ์๋ฆผ์ ๋ฐ์ต๋๋ค.
๐ก ์์
ShuffleHandler๋ MapReduce์ Reduce ์์ ์ ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ณด์กฐ ์๋น์ค๋ก, AM๊ณผ ์ฐ๋ํ์ฌ ๋์ํฉ๋๋ค.
๐นContainersMonitor
์คํ ์ค์ธ ๊ฐ ์ปจํ
์ด๋์ ๋ฉ๋ชจ๋ฆฌ, CPU ๋ฑ์ ์์ ์ฌ์ฉ๋์ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํฉ๋๋ค. ์ง์ ๋ ํ ๋น๋์ ์ด๊ณผํ ๊ฒฝ์ฐ ํด๋น ์ปจํ
์ด๋๋ฅผ ์ข
๋ฃํฉ๋๋ค.
๐ก ์์
Container-XYZ๊ฐ 4GB ํ ๋น์ ๋ฐ์์ง๋ง, 6GB๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ContainersMonitor๋ RM์ ์ ์ฑ ์ ๋ฐ๋ผ ํด๋น ์ปจํ ์ด๋๋ฅผ ์ข ๋ฃํฉ๋๋ค.
๐นLogHandler
์ปจํ
์ด๋ ์คํ ์ค ์์ฑ๋๋ ๋ก๊ทธ๋ฅผ ๋ก์ปฌ ๋์คํฌ์ ์ ์ฅํ๊ฑฐ๋ ์์ถํ์ฌ ์
๋ก๋ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๋ก๊ทธ ํธ๋ค๋ง์ ํ๋ฌ๊ทธ์ธ ๊ตฌ์กฐ๋ก ๋์ด ์์ด ๊ต์ฒด๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๐ก ์์
์ปจํ ์ด๋๊ฐ ์ถ๋ ฅํ stdout/stderr ๋ก๊ทธ๋ฅผ /logs/job123/container456.log ๊ฒฝ๋ก์ ์ ์ฅํ๊ฑฐ๋, HDFS์ ์ ๋ก๋ํ ์ ์์ต๋๋ค.
๐ 2.2.3 ContainerExecutor
ContainerExecutor๋ OS์ ์ง์ ์ํธ ์์ฉํ์ฌ, ์ปจํ
์ด๋ ์คํ์ ์ํ ๋๋ ํ ๋ฆฌ/ํ์ผ ๋ฐฐ์น, ๋ณด์ ๋ฐฉ์์ผ๋ก ํ๋ก์ธ์ค ์์/์ข
๋ฃ, ์คํ ํ ์ ๋ฆฌ(clean-up) ์์
์ ์ํํฉ๋๋ค.
์ปจํ
์ด๋์ ๊ฒฉ๋ฆฌ๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํด user-per-container ์คํ ๋ชจ๋ธ์ด๋ Docker ๋ฑ๊ณผ ํจ๊ป ์ฌ์ฉ๋๊ธฐ๋ ํฉ๋๋ค.
๐ 2.2.4 NodeHealthCheckerService
์ด ์๋น์ค๋ ๋ ธ๋ ์ํ๋ฅผ ํ์ธํ๊ธฐ ์ํ ์คํฌ๋ฆฝํธ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์คํํ๋ฉฐ, ๋์คํฌ์ ์ํ๋ฅผ ์ ๊ฒํ๊ธฐ ์ํด ์์ ํ์ผ์ ์์ฑํ๊ณ ์ญ์ ํฉ๋๋ค.
์ํ ๋ณํ๊ฐ ๊ฐ์ง๋๋ฉด NodeStatusUpdater๋ฅผ ํตํด RM์ ์ ๋ฌ๋ฉ๋๋ค.
๐ก ์์
/tmp ๋๋ ํ ๋ฆฌ์ ํ์ผ์ ์์ฑํด๋ณด๊ณ , ์์ฑ/์ญ์ ์๋๋ฅผ ํตํด ๋์คํฌ ์ํ๋ฅผ ํ๋จํ ์ ์์ต๋๋ค. ๋์คํฌ I/O ์ง์ฐ์ด ํฌ๋ฉด ๋ ธ๋๋ฅผ โ๋น์ ์ ์ํโ๋ก ํ์ํฉ๋๋ค.
๐ 2.2.5 Security: ContainerTokenSecretManager
์ปจํ
์ด๋ ์คํ ์์ฒญ์ด ์ ์์ ์ธ ResourceManager๋ก๋ถํฐ ์จ ๊ฒ์ธ์ง ํ์ธํ๋ ๋ณด์ ์ปดํฌ๋ํธ์
๋๋ค.
Token ๊ธฐ๋ฐ ์ธ์ฆ์ ํตํด ์์กฐ๋ ์คํ ์์ฒญ์ ๋ฐฉ์งํฉ๋๋ค.
๐ก ์์
์ ์์ ์ธ ์ฌ์ฉ์๊ฐ RM์ ํตํ์ง ์๊ณ ์ง์ NodeManager์ ์ปจํ ์ด๋ ์คํ ์์ฒญ์ ๋ณด๋ด๋๋ผ๋, ์ ํจํ ํ ํฐ์ด ์์ผ๋ฉด ์คํ์ด ๊ฑฐ๋ถ๋ฉ๋๋ค.
๐ 3. YARN scheduler ์ Queue
์ถ์ฒ : YARN Scheduler
์์์๋ ์ ๋งคํด์ ํ ๋ฒ์ ์ ๋ฆฌํ์ง ๋ชปํ๊ณ , YARN Scheduler ๋ ์ด๋ ๊ฒ ๋ฐ๋ก ์ ๋ฆฌํฉ๋๋ค.
YARN Scheduler๋ ํด๋ฌ์คํฐ์ ๋ฆฌ์์ค๋ฅผ ์ด๋ป๊ฒ, ์ผ๋ง๋ ํ ๋นํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ ๋ฆฌ์์ค ํ ๋น ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ๋ค์ํ ์ค์ ๊ฐ์ ํตํด ํด๋ฌ์คํฐ ์์์ ํจ์จ์ ์ผ๋ก ํ์ฉํ ์ ์๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
YARN์ ๊ธฐ๋ณธ์ ์ผ๋ก Hadoop ํ๋ซํผ์์ ์คํ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฆฌ์์ค๋ฅผ ํ ๋นํ๊ณ ๊ด๋ฆฌํ๋ ์ญํ ์ ๋ด๋นํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ์ถ๋๋ฉด ๋จผ์ Application Master(AM) ์ด ์์ฑ๋๊ณ , ์ดํ ์๋์ ๊ฐ์ ์ ์ฐจ๊ฐ ์งํ๋ฉ๋๋ค.
์ด ๊ณผ์ ์์ AM์ ResourceManager(RM) ์๊ฒ ํ์ํ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๋ฉฐ, RM์ Scheduler๋ฅผ ํตํด ์ ์ ํ ์์ ๋ฆฌ์์ค๋ฅผ ์ด๋ค ๋ ธ๋์ ํ ๋นํ ์ง ๊ฒฐ์ ํฉ๋๋ค.
Scheduler์ ์ข ๋ฅ๋ก๋ ์๋ 3๊ฐ์ง๊ฐ ์กด์ฌํฉ๋๋ค. ์ด ์ค Capacity scheduler๊ฐ ๊ธฐ๋ณธ default ๊ฐ์ผ๋ก ์ค์ ๋์ด ์์ต๋๋ค.
๐ 3.1. FIFO scheduler
์ถ์ฒ : YARN FIFO scheduler
FIFO ์ค์ผ์ค๋ฌ๋ ์์
์ด ํด๋ฌ์คํฐ์ ์ ์ถ๋ ์์๋๋ก ๋ฆฌ์์ค๋ฅผ ํ ๋นํฉ๋๋ค. ์ฆ, ๊ฐ์ฅ ๋จผ์ ์ ์ถ๋ ์์
์ด ๊ฐ์ฅ ๋จผ์ ์คํ๋๊ณ , ๊ทธ ์์
์ด ์๋ฃ๋๊ธฐ ์ ๊น์ง๋ ๋ค์ ๋๊ธฐ ์ค์ธ ์์
๋ค์ ์คํ๋์ง ์์ต๋๋ค.
๋์ ๋ฐฉ์์ ๋งค์ฐ ๋จ์ํฉ๋๋ค. ๋ฆฌ์์ค ๋งค๋์ (ResourceManager)๋ ์์ ์ด ๋ค์ด์จ ์์๋๋ก ์์ ํ์ ์๊ณ , ์์์ด ์ถฉ๋ถํ ๋๋ง๋ค ํ์์ ๊ฐ์ฅ ์์ ์๋ ์์ ์ ๋ฆฌ์์ค๋ฅผ ํ ๋นํด ์คํ์ ์์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, A ์์ ์ด ๋จผ์ ์ ์ถ๋์ด ํด๋ฌ์คํฐ์ ์์์ ๋ชจ๋ ์ฌ์ฉ ์ค์ด๋ผ๋ฉด, ๊ทธ ์์ ์ด ์๋ฃ๋ ๋๊น์ง B ์์ ์ ๋๊ธฐ ์ํ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ๋๋ฉด ์์ ์ฐ์ ์์ ์กฐ์ ์ด ์๊ณ , ๊ธด ์์ ์ด ์์ ์์ ๊ฒฝ์ฐ ๋ค์ ์๋ ์งง์ ์์ ์ด ๊ธด ์๊ฐ ๊ธฐ๋ค๋ ค์ผ ํ๋ ๋จ์ ์ด ์์ต๋๋ค.
๐ 3.2. Fair scheduler
์ถ์ฒ : YARN Fair Scheduler
Fair Scheduler๋ ์ฌ๋ฌ ์ฌ์ฉ์์ ์์
๋ค์ด ํด๋ฌ์คํฐ ์์์ ๊ณต์ ํ๊ฒ ๋๋์ด ์ฐ๋๋ก ์ค๊ณ๋์์ต๋๋ค.
์์ ๋ค์ ๊ฐ๊ฐ Pool์ด๋ผ๋ ์์ ๊ทธ๋ฃน์ ๋ฐฐ์ ๋ฉ๋๋ค. ๊ฐ Pool์ ์ต์ ๋ณด์ฅ ๋ฆฌ์์ค๋ฅผ ์ค์ ํ ์ ์์ด, ์์ ๊ทธ๋ฃน์ด๋ ์ฌ์ฉ์๊ฐ ์ ์ด๋ ์ผ์ ๋์ ์์์ ํ๋ณดํ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค. ๋ง์ฝ ์ด๋ค Pool์ด ํ์ฌ ํ ๋น๋ฐ์ ์์์ ๋ค ์ฌ์ฉํ์ง ์์ผ๋ฉด, ๋จ๋ ์์์ ๋ค๋ฅธ Pool์ด ์ผ์์ ์ผ๋ก ๋ ์ธ ์ ์๋๋ก ํ์ฉํฉ๋๋ค.
์๋ฅผ ๋ค์ด, Pool A์ Pool B๊ฐ ๊ฐ๊ฐ 30%, 70%์ ์ต์ ์์์ ๋ณด์ฅ๋ฐ๊ณ ์๋๋ฐ, Pool B๊ฐ ํ์ฌ 50%๋ง ์ฌ์ฉํ๊ณ ์๋ค๋ฉด Pool A๊ฐ ์ต๋ 50%๊น์ง ํ์ฅํด์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Fair Scheduler๋ ์ฃผ๊ธฐ์ ์ผ๋ก ํด๋ฌ์คํฐ ๋ด ์์ ๋ค์ ์์ ์ฌ์ฉ๋์ ์ฒดํฌํ๋ฉฐ, ์์ ๋ฐฐ๋ถ์ ์กฐ์ ํฉ๋๋ค. ์ด ๊ณผ์ ์์ ์์์ ๋ง์ด ์ด ์์ ์ ์ ์ ๋๊ธฐ์ํค๊ณ , ์ ๊ฒ ์ด ์์ ์ ๋ ๋ง์ ์์์ ๋ฐฐ๋ถํด ์ ์ฒด ์ฌ์ฉ์์ ๊ณต์ ์ฑ์ ์ ์งํฉ๋๋ค.
์ด ์ค์ผ์ค๋ฌ๋ ์์ ์ด ๋๋์ง ์์๋ ์์์ ๋ค์ ์ฌ๋ถ๋ฐฐํ ์ ์๊ธฐ ๋๋ฌธ์, ๊ธด ์์ ๊ณผ ์งง์ ์์ ์ด ํผ์ฌ๋ ํ๊ฒฝ์์ ํจ์จ์ ์ธ ์์ ํ์ฉ๊ณผ ์์ ๊ณต์ ์ฑ์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
๐ 3.3. Capacity scheduler
์ถ์ฒ : YARN Capacity Scheduler
Capacity Scheduler๋ YARN์ ๋ํ์ ์ธ ์ค์ผ์ค๋ง ์ ์ฑ
์ค ํ๋๋ก, ํ๋์ ํด๋ฌ์คํฐ ์์์ ์ฌ๋ฌ ์ฌ์ฉ์๋ ํ์ด ๊ณต์ ํ๊ณ ํจ์จ์ ์ผ๋ก ๊ณต์ ํ ์ ์๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ด ์ค์ผ์ค๋ฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก Queue(ํ) ๋จ์๋ฅผ ํตํด ํด๋ฌ์คํฐ ์์์ ๋ถ๋ฐฐํ๋ฉฐ, ๊ฐ Queue๋ง๋ค ์ต์ ๋ฐ ์ต๋ ๋ฆฌ์์ค ๋น์จ์ ์ค์ ํ ์ ์์ต๋๋ค.
Capacity Scheduler๋ root ํ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ณ์ธต์ ๊ตฌ์กฐ์ Queue๋ฅผ ๊ตฌ์ฑํ ์ ์์ผ๋ฉฐ, ๊ฐ Queue๋ ๋ถ๋ชจ Queue๋ฅผ ๊ธฐ์ค์ผ๋ก ์ต์(min)์ ์ต๋(max) ์ฉ๋(capacity)์ ์ง์ ํ ์ ์์ต๋๋ค. Leaf Queue๋ค(๊ฐ์ฅ ํ์ ํ)์ ํฉ์ณ์ 100%์ min capacity๋ฅผ ๊ฐ๋๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
๋ํ, Capacity Scheduler๋ Queue ๊ฐ์ ๋ฆฌ์์ค ์ ์ฐ์ฑ(Elasticity)์ ์ง์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, A ํ์ ์ค์ ์ฉ๋์ด 20%, B ํ๊ฐ 80%์ธ ๊ฒฝ์ฐ, B ํ์ ๋ฆฌ์์ค๊ฐ ์ฌ์ฉ๋์ง ์๋๋ค๋ฉด A ํ๊ฐ ์ผ์์ ์ผ๋ก ์ ์ฒด ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ก ์ธํด ๋ฆฌ์์ค ํ์ฉ๋ฅ ์ ๊ทน๋ํํ ์ ์์ต๋๋ค.
โ ์ฃผ์ ์ค์ ์ต์
Property | ์ค๋ช |
---|---|
yarn.scheduler.capacity.root.queues |
root Queue ํ์์ ์์ฑํ Queue ๋ชฉ๋ก |
yarn.scheduler.capacity.root.{Queue ์ด๋ฆ}.queues |
ํน์ Queue์ ํ์ Queue ๋ชฉ๋ก |
yarn.scheduler.capacity.root.{Queue ์ด๋ฆ}.capacity |
ํด๋น Queue์ ์ต์(min) ๋ฆฌ์์ค ๋น์จ |
yarn.scheduler.capacity.root.{Queue ์ด๋ฆ}.maximum-capacity |
ํด๋น Queue์ ์ต๋(max) ๋ฆฌ์์ค ๋น์จ |
โ Minimum User Percentage & User Limit Factor
- ํ๋์ Queue ๋ด์์ ๋ค์ ์ฌ์ฉ์์ ๋ฆฌ์์ค ํ ๋น ์ ์ด๋ฅผ ์ํ ์ค์ ์ ๋๋ค.
minimum-user-limit-percent : ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ์ ๊ทผ ์ ๊ฐ ์ฌ์ฉ์์๊ฒ ์ต์ ๋ณด์ฅ๋๋ ๋ฆฌ์์ค ๋น์จ์ ๋๋ค. ์์๋ก 10%๋ก ์ค์ ์, 10๋ช ์ ์ฌ์ฉ์๊ฐ ์์ ๋ ๊ฐ์๋ ์ต์ 10%๋ฅผ ๋ณด์ฅ๋ฐ์ต๋๋ค.
user-limit-factor : ํ ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ ์ ์๋ ์ต๋ ๋ฆฌ์์ค์ ๋ฐฐ์์
๋๋ค. ๊ณ์ฐ์์ ์ต๋ ์ฌ์ฉ๋ = min capacity ร user-limit-factor
์
๋๋ค. ์๋ฅผ๋ค๋ฉด, min capacity๊ฐ 10%, user-limit-factor๊ฐ 3์ด๋ฉด ํ ์ฌ์ฉ์๊ฐ ์ต๋ 30%๊น์ง ์ฌ์ฉ ๊ฐ๋ฅ.
โ ๊ด๋ จ ์ค์ ์ต์
Property | ์ค๋ช |
---|---|
yarn.scheduler.capacity.root.{Queue ์ด๋ฆ}.user-limit-factor |
ํด๋น Queue์ ์ฌ์ฉ์ ์ต๋ ์ฌ์ฉ ๋ฐฐ์ |
yarn.scheduler.capacity.root.{Queue ์ด๋ฆ}.minimum-user-limit-percent |
ํด๋น Queue์์ ์ฌ์ฉ์๋น ์ต์ ๋ณด์ฅ ๋น์จ |
โ ๊ธฐํ ์ต์
Property | ์ค๋ช |
---|---|
yarn.scheduler.capacity.maximum-am-resource-percent |
์ ์ฒด ํด๋ฌ์คํฐ์์ AM์ด ์ฌ์ฉํ ์ ์๋ ์ต๋ ๋ฆฌ์์ค ๋น์จ |
yarn.scheduler.capacity.{Queue ์ด๋ฆ}.maximum-am-resource-percent |
ํน์ Queue์์ AM์ด ์ฌ์ฉํ ์ ์๋ ์ต๋ ๋ฆฌ์์ค ๋น์จ |
๐ก ์ฐธ๊ณ : AM(Application Master)์ ํ ๋น๋๋ ๋ฆฌ์์ค๊ฐ ๋ง์์๋ก, ์์ ์ ์ฒ๋ฆฌํ๋ ์ปจํ ์ด๋์ ํ ๋น๋๋ ๋ฆฌ์์ค๋ ์ค์ด๋ญ๋๋ค.
์ฌ์ฉ์ ๋๋ ๊ทธ๋ฃน๋ณ Queue ๋งคํ
- ์ฌ์ฉ์๋ ๊ทธ๋ฃน์ ํน์ Queue์ 1:1๋ก ๋งคํํ ์ ์์ต๋๋ค.
- ๋งคํ์ด ๋ง์ผ๋ฉด ์๋ ๋งคํ ๊ท์น์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ค์ ๋ฐฉ์ | ์์ | ์ค๋ช |
---|---|---|
์ฌ์ฉ์ 1:1 ๋งคํ | u:alice:analytics |
alice ์ฌ์ฉ์๋ฅผ analytics Queue์ ๋งคํ |
๊ทธ๋ฃน ๋งคํ | g:dev:devqueue |
dev ๊ทธ๋ฃน์ devqueue์ ๋งคํ |
์๋ ๋งคํ (์ฌ์ฉ์) | u:%user.%user |
์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋์ผํ ์ด๋ฆ์ Queue์ ์๋ ๋งคํ |
์๋ ๋งคํ (๊ทธ๋ฃน) | g:%user.%primary_group |
์ฌ์ฉ์ ๊ธฐ๋ณธ ๊ทธ๋ฃน ์ด๋ฆ๊ณผ ๋์ผํ Queue์ ์๋ ๋งคํ |
์ค์ ์์น:
yarn.scheduler.capacity.queue-mappings
์ปดํฌ๋ํธ(์์ง)๋ณ Queue ์ง์ ๋ฐฉ๋ฒ
์ปดํฌ๋ํธ | ์ค์ ๋ฐฉ๋ฒ |
---|---|
MapReduce | ์คํ ์ -D mapreduce.job.queuename={Queue ์ด๋ฆ} ์ต์
์ฌ์ฉ |
Spark | spark-submit ์ --queue {Queue ์ด๋ฆ} ์ต์
์ฌ์ฉ |
Hive | ์ฟผ๋ฆฌ ๋ด์์ set {์์ง์ด๋ฆ}.queue.name={Queue ์ด๋ฆ} ๋ช
๋ น์ด ์ฌ์ฉ |
Hive๋ Tez, MR ๋ฑ ์ฌ๋ฌ ์์ง์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก, ์ฌ์ฉํ๋ ์์ง ์ด๋ฆ์ ์ ํํ ๋ช ์ํด์ผ ํฉ๋๋ค.
๐ 4. YARN TimeLine Service
YARN Timeline Service๋ YARN ํด๋ฌ์คํฐ์์ ์คํ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ค์ ์ํ, ์ด๋ฒคํธ, ๊ทธ๋ฆฌ๊ณ ๋ค์ํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ณ ์ ์ฅํ๋ ํต์ฌ ์ปดํฌ๋ํธ์ ๋๋ค. ๋จ์ํ ์คํ ์ํ๋ฟ ์๋๋ผ, ๊ฐ ํ์คํฌ(Task)์ ์์ธ ์คํ ๋ด์ญ, ์ค๋ฅ ๋ฐ์ ๊ธฐ๋ก, ์์ ์ฌ์ฉ ํต๊ณ ๋ฑ ์ ๋ฐํ ๋ฐ์ดํฐ๋ฅผ ์ค์ ์ ์ฅ์์ ๊ธฐ๋กํจ์ผ๋ก์จ, ์ด์์๋ ๊ฐ๋ฐ์๊ฐ ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ๋ถ์ํ๊ณ ์ฑ๋ฅ์ ์ต์ ํํ ์ ์๋๋ก ๋์ต๋๋ค.
YARN ํ๊ฒฝ์์ ์์ญ~์์ฒ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋์์ ์คํ๋๊ณ , ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ฐฑ ๊ฐ์ ์ปจํ ์ด๋์ ํ์คํฌ๋ฅผ ํฌํจํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฐ ์ํฉ์์ ๋จ์ํ ResourceManager์ UI๋ง์ผ๋ก๋ ์คํ ๋ด์ญ์ ํ์ ํ๊ธฐ ์ด๋ ต์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ด๋ค MapReduce ์์ ์ด ์คํจํ๋์ง, Spark ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ด๋ ์ปจํ ์ด๋๊ฐ ์์ ๋ถ์กฑ์ผ๋ก ์ข ๋ฃ๋์๋์ง, ๋๋ ํ์คํฌ ์ํ ์๊ฐ์ด ํ๊ท ๋ณด๋ค ๋น์ ์์ ์ผ๋ก ๊ธธ์ด์ง ๊ฒฝ์ฐ๊ฐ ์ด๋์ธ์ง ๋ฑ์ ํ์ ํด์ผ ํ ๋, Timeline Service๋ ํ์์ ์ ๋๋ค.
ARN Timeline Service๋ ์ด๋ฌํ ์๊ตฌ๋ฅผ ์ถฉ์กฑ์ํค๊ธฐ ์ํด ์ค๊ณ๋ ์ปดํฌ๋ํธ๋ก, ์ฒ์์๋ v1 ๋ฒ์ ์ผ๋ก ๋จ์ํ ๋จ์ผ ์๋ฒ ๊ตฌ์กฐ์์ ์์๋์์ต๋๋ค. Timeline Service v1์ ๋ชจ๋ ์ด๋ฒคํธ ๋ฐ์ดํฐ๋ฅผ JSON ํํ๋ก ์์งํ ๋ค, HDFS์ ์ ์ฅํ๋ ๋ฐฉ์์ ์ฌ์ฉํ์ต๋๋ค. ๊ตฌ์กฐ๊ฐ ๋จ์ํ๊ณ ์ค์ ์ด ๋น๊ต์ ์ฌ์ ๊ธฐ ๋๋ฌธ์ ์๊ท๋ชจ ๋๋ ํ ์คํธ ํ๊ฒฝ์์๋ ์ ํฉํ์ง๋ง, ๋๊ท๋ชจ ํด๋ฌ์คํฐ์์๋ ์ฌ๋ฌ ํ๊ณ๊ฐ ๋๋ฌ๋ฌ์ต๋๋ค.
๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ ํ์ฅ์ฑ ๋ถ์กฑ๊ณผ ๋ณ๋ชฉํ์์ด์์ต๋๋ค.
์ฝ๊ธฐ์ ์ฐ๊ธฐ ์์ฒญ์ด ๋ชจ๋ ํ๋์ ์๋ฒ ์ธ์คํด์ค๋ก ์ง์ค๋๋ค ๋ณด๋, ์์
์ด ๋ชฐ๋ฆด ๊ฒฝ์ฐ ์ด๋ฒคํธ ์ ์ค, ์๋ต ์ง์ฐ, ์์คํ
๊ณผ๋ถํ ๋ฑ์ ๋ฌธ์ ๊ฐ ๋น๋ฒํ๊ฒ ๋ฐ์ํ์ต๋๋ค. ๋ํ UI๋ REST API๋ฅผ ํตํด ์ด๋ฒคํธ๋ฅผ ์กฐํํ ๋๋ ์ฑ๋ฅ ์ ํ๊ฐ ์ฆ์์ต๋๋ค.
์ด๋ฌํ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด Hadoop 3.0๋ถํฐ Timeline Service v2 (TSv2)๊ฐ ๋์ ๋์์ต๋๋ค. TSv2๋ ๋จ์ํ ๋ฆฌํฉํ ๋ง ์์ค์ด ์๋๋ผ, ์ํคํ ์ฒ ์ ๋ฐ์ ์ํ ํ์ฅ ๊ฐ๋ฅํ ๋ถ์ฐ ๊ตฌ์กฐ๋ก ์ฌ์ค๊ณํ ๊ฒ์ด๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
์ถ์ฒ : Yarn TimeLine V2
TSv2 ์ํคํ
์ฒ์ ์ฃผ์ ํน์ง์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
-
์ฐ๊ธฐ์ ์ฝ๊ธฐ ์ญํ ์ ์์ ํ ๋ถ๋ฆฌ
์ด๋ฒคํธ ์์ง๊ธฐ(Collector)๋ ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ ธ๋์์ ๋ถ์ฐ ๋ฐฐ์น๋์ด ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ณ ๋ฐฑ์๋ ์คํ ๋ฆฌ์ง๋ก ์ ๋ฌํฉ๋๋ค.
๋ฐ๋ฉด ์ฝ๊ธฐ๋ Timeline Reader๋ผ๋ ๋ ๋ฆฝ ํ๋ก์ธ์ค๊ฐ ์ ๋ดํ์ฌ REST API ์ฟผ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
์ด ๊ตฌ์กฐ๋ ์ฝ๊ธฐ/์ฐ๊ธฐ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ์ฌ ์์คํ ๋ณ๋ชฉ์ ์ ๊ฑฐํ๊ณ ์ฑ๋ฅ์ ๋์ ๋๋ค. -
๋ถ์ฐ ์์ง๊ธฐ ๊ตฌ์กฐ (Distributed Collector)
๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ง์คํฐ(ApplicationMaster)์ ๋์ผ ๋ ธ๋์ ์์ง๊ธฐ๊ฐ ๋์ํ๋ฉฐ, ์ด ์์ง๊ธฐ๊ฐ ์ด๋ฒคํธ๋ฅผ ์ง์ ๊ธฐ๋กํฉ๋๋ค.
์๋ฅผ ๋ค์ด, Spark๋ Tez ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋๋ฉด ํด๋น ๋ ธ๋์ ์์ง๊ธฐ๊ฐ ์ปจํ ์ด๋ ์คํ, ํ์คํฌ ์คํจ, ์์ ์์ฒญ ๋ฑ์ ์ด๋ฒคํธ๋ฅผ ์ง์ ๋ฐ์ ๊ธฐ๋กํฉ๋๋ค.
๋ํ ๋ค๋ฅธ NodeManager๋ ํด๋น ๋ ธ๋์ ์์ง๊ธฐ๋ก ์ด๋ฒคํธ๋ฅผ ์ ์กํฉ๋๋ค. -
๋ฐฑ์๋ ์ ์ฅ์๋ก HBase ์ฑํ (๊ธฐ๋ณธ)
TSv2๋ ๊ธฐ๋ณธ์ ์ผ๋ก Apache HBase๋ฅผ ์ด๋ฒคํธ ๋ฐ์ดํฐ ์ ์ฅ์๋ก ์ฌ์ฉํฉ๋๋ค.
HBase๋ ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ค์๊ฐ ์ฟผ๋ฆฌ์ ๊ฐ์ ์ด ์์ด, ๋ค์์ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ฒคํธ๋ฅผ ๋น ๋ฅด๊ฒ ์ ์ฅํ๊ณ ์ฝ์ด์ค๋ ๋ฐ ์ ํฉํฉ๋๋ค. -
Flow ๋จ์์ ๋ฐ์ดํฐ ์ง๊ณ ๋ฐ ๋ถ์ ๊ธฐ๋ฅ
TSv2๋ ๋จ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ ๋ ผ๋ฆฌ์ ์์ ํ๋ฆ ๋จ์์ ์ด๋ฒคํธ๋ฅผ ์ง๊ณํ๋ ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ํ๋์ BI ๋ถ์ ์ํฌํ๋ก์ฐ๊ฐ ์ฌ๋ฌ Spark ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๊ตฌ์ฑ๋์๋ค๋ฉด, ์ด๋ค์ ํ๋์ โFlowโ๋ก ๋ฌถ์ด์ ์ถ์ ํ๊ณ ๋ฉํธ๋ฆญ์ ์ง๊ณํ ์ ์์ต๋๋ค.
์ฌ์ฉ์๋ ์ ์ฒด ์ํฌํ๋ก์ฐ์ ์คํ ์๊ฐ, ์์ ์ฌ์ฉ๋, ์ค๋ฅ ๋น๋ ๋ฑ์ ํตํฉ์ ์ผ๋ก ํ์ธํ ์ ์์ต๋๋ค.
์ค๋ฌด ์์๋ฅผ ํ๋ ๋ค์ด๋ณด๊ฒ ์ต๋๋ค.
์๋ฅผ ๋ค์ด, ํ๋์ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ด ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ก ๋์ํ๋ค๊ณ ๊ฐ์ ํด๋ด
์๋ค.
Sqoop์ ํตํด ์ธ๋ถ RDBMS์์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๊ณ , Spark๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณํํ ํ, ๊ฒฐ๊ณผ๋ฅผ Hive์ ์ ์ฅํฉ๋๋ค.
์ด ์์
์ ์ฌ๋ฌ YARN ์ ํ๋ฆฌ์ผ์ด์
์ผ๋ก ๋ถ์ฐ๋์ด ์คํ๋์ง๋ง, ์ฌ์ฉ์ ์
์ฅ์์๋ ํ๋์ โ์
๋ฌด ํ๋ฆ(Flow)โ์ผ๋ก ์ธ์๋ฉ๋๋ค.
์ด๋ Timeline Service v2๋ ๊ฐ ๋จ๊ณ๋ณ ์์ ์ฌ์ฉ๋, ํ์คํฌ ์คํจ ํ์ ๋ฐ ์ค๋ฅ ๋ฉ์์ง, ์ ์ฒด ํ๋ฆ์ ์คํ ์๊ฐ๊ณผ ๋ณ๋ชฉ ์ง์ ๋ฑ์ ํตํฉ์ ์ผ๋ก ์์งํ์ฌ ์ ๊ณตํฉ๋๋ค.
์ด์์๋ ๋จ์ผ API ํธ์ถ ๋๋ UI ๋์๋ณด๋๋ฅผ ํตํด ์ด ์ ์ฒด ํ๋ฆ์ ์ํ๋ฅผ ํ์ธํ ์ ์์ผ๋ฉฐ, ํน์ ๋จ๊ณ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ์์ ์ฌ์ฉ์ด ๊ธ์ฆํ ๋ถ๋ถ์ ๋น ๋ฅด๊ฒ ์ง๋จํ ์ ์์ต๋๋ค.
Timeline Service v2๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด yarn-site.xml์ ๋ค์๊ณผ ๊ฐ์ ์ค์ ์ด ํ์ํฉ๋๋ค.
<property>
<name>yarn.timeline-service.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.timeline-service.version</name>
<value>2</value>
</property>
<property>
<name>yarn.timeline-service.storage.type</name>
<value>hbase</value>
</property>
ํด๋น ์ค์ ์ Timeline Service๋ฅผ ํ์ฑํํ๊ณ , v2 ๋ฒ์ ์ ์ฌ์ฉํ๋ฉฐ, ์ ์ฅ์๋ก HBase๋ฅผ ์ ํํ๋๋ก ์ง์ ํฉ๋๋ค.
์ถ๊ฐ๋ก HBase ํด๋ฌ์คํฐ์ ์ฐ๊ฒฐ์ด ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋์ด ์์ด์ผ ํ๋ฉฐ, timeline.reader.webapp.address
, timeline.collector.bind-host
๋ฑ ๋คํธ์ํฌ ๊ด๋ จ ์์ฑ๋ ํ๊ฒฝ์ ๋ง๊ฒ ์ค์ ํด์ผ ํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก, TimeLine Service 2๋ ๋ณด์๊ณผ ๋ฉํฐํ
๋์๋ฅผ ์ง์ํฉ๋๋ค.
Timeline Service v2๋ YARN์ ๋ฉํฐํ
๋์ ํ๊ฒฝ์ ๊ณ ๋ คํ์ฌ ์ฌ์ฉ์๋ณ ์ ๊ทผ ์ ์ด ๋ฐ ๋ฐ์ดํฐ ๋ถ๋ฆฌ๋ฅผ ์ง์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ํน์ ์ฌ์ฉ์์ ์ ํ๋ฆฌ์ผ์ด์
์คํ ์ ๋ณด๋ ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ์กฐํํ ์ ์๋๋ก ACL์ด ์ ์ฉ๋ฉ๋๋ค. ๋ํ Time To Live ์ ์ฑ
์ ์ค์ ํ์ฌ ์ค๋๋ ์ด๋ฒคํธ ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ์ญ์ ํจ์ผ๋ก์จ, ์ ์ฅ ๊ณต๊ฐ ๊ด๋ฆฌ๋ ํจ์จ์ ์ผ๋ก ์ํํ ์ ์์ต๋๋ค.
์ ๋ฆฌํด๋ณด๋ฉด,
Timeline Service๋ ๋จ์ํ ๋ก๊ทธ ์์ง๊ธฐ๊ฐ ์๋๋๋ค.
์ ํ๋ฆฌ์ผ์ด์
์ ํ๋ ์ด๋ ฅ์ ์๊ฐ ์ถ์ผ๋ก ์ ๋ ฌํ์ฌ ์ ์ฅํ๊ณ , ์ด๋ฅผ ๋ถ์ ๊ฐ๋ฅํ ํํ๋ก ์ ๊ณตํ๋ ํตํฉ ์ด๋ฒคํธ ๋ถ์ ํ๋ซํผ์ด๋ผ๊ณ ๋ณด๋ ๊ฒ์ด ๋ ์ ํํฉ๋๋ค.
ํนํ v2๋ ๋ถ์ฐ ์์ง ๊ตฌ์กฐ, HBase ์ ์ฅ์, ํ๋ฆ ๊ธฐ๋ฐ ์ง๊ณ ๊ธฐ๋ฅ์ ํตํด YARN ํ๊ฒฝ์์์ ์ด์ ์์ ์ฑ๊ณผ ๊ด์ธก ๊ฐ๋ฅ์ฑ(observability)์ ํฌ๊ฒ ํฅ์์ํต๋๋ค.
์ค์ ํด๋ฌ์คํฐ์์ Timeline Service๋ฅผ ํ์ฑํํด๋ณด๊ณ ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์
๋ค์ ์คํํ๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ์๊ฐํํด๋ณด๋ฉด,
์ฅ์ ๋ถ์, ์์ ์ต์ ํ, SLA ์ค์ ์ฌ๋ถ ํ๋จ ๋ฑ ์ฌ๋ฌ ์ธก๋ฉด์์ ์ด์ ํ์ง์ ๋น์ฝ์ ์ผ๋ก ๋์ผ ์ ์์์ ์ฒด๊ฐํ ์ ์๊ฒ ๋์์ต๋๋ค.
โ๏ธ ๊ฒฐ๋ก
์ค๋์ YARN์ ์ ์ฒด์ ์ธ ๊ตฌ์กฐ์ ๋์ ์๋ฆฌ์ ๋ํ ๊ฐ์๋ถํฐ ์์ํด, ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด๋ป๊ฒ ์คํ๋๊ณ ์์์ด ์ด๋ป๊ฒ ์ค์ผ์ค๋ง๋๋์ง, ๊ทธ๋ฆฌ๊ณ ๊ฐ ์คํ ์์ง๋ณ๋ก ํ๋ฅผ ์ด๋ป๊ฒ ์ค์ ํ๋์ง๊น์ง ์ ๋ฐ์ ์ธ ํ๋ฆ์ ์ดํด๋ณด์์ต๋๋ค.
ํนํ YARN์ ์ค์ผ์ค๋ง ์ ์ฑ ์ธ FIFO Queue์ Fair Queue์ ์ฐจ์ด์ , ๊ทธ๋ฆฌ๊ณ Spark, Hive, MapReduce ๋ฑ ์ปดํฌ๋ํธ๋ณ๋ก ํ๋ฅผ ์ง์ ํ๋ ์ค์ ๋ฐฉ๋ฒ๋ค์ ์์ ์ ํจ๊ป ํ์ธํ๋ฉฐ, ์ค๋ฌด์์ ์ด๋ป๊ฒ ์์ฉํ ์ ์๋์ง ์ ๋ฆฌํด๋ณด์์ต๋๋ค.
๋ํ, YARN Timeline Service์ ๋ํด์๋ ๊ธฐ์ ์ ์ธ ๊ด์ ์์ ๊น์ด ์๊ฒ ์์๋ณด์๋๋ฐ, ์ ํ๋ฆฌ์ผ์ด์
์คํ ์ค ๋ฐ์ํ๋ ์ด๋ฒคํธ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ณ ์ ์ฅํจ์ผ๋ก์จ ํด๋ฌ์คํฐ ๋ด ์์
๋ค์ ์ํ๋ฅผ ์ถ์ ํ๊ณ ๋ถ์ํ ์ ์๋ ํต์ฌ ๊ธฐ๋ฅ์์ ํ์ธํ ์ ์์์ต๋๋ค.
์คํจ ์ด๋ ฅ, ์์ ์ฌ์ฉ๋, ์์
์๊ฐ๊ณผ ๊ฐ์ ์ด์์ ์ค์ํ ์ ๋ณด๋ฅผ ํ ๊ณณ์ ํตํฉํด ๊ด๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์, ํด๋ฌ์คํฐ ์ด์์ ์
์ฅ์์๋ ๋ฐ๋์ ์์์ผ ํ ๊ธฐ๋ฅ ์ค ํ๋์
๋๋ค.
YARN์ ๊ธฐ๋ณธ ๊ฐ๋
๋ถํฐ ์ค๋ฌด์ ํ์ํ ํฌ์ธํธ๊น์ง ํ ๋ฒ์ ์ ๋ฆฌํ ์ค๋ ๋ด์ฉ์ ๋ฐํ์ผ๋ก, ํฅํ ์ง์ ์ค์ตํด๋ณด๊ณ ์ป์ ์ธ์ฌ์ดํธ๋ ํฌ์คํ
ํ ๊ณํ์
๋๋ค.
(์ด๋ฏธ ์ค๋ฌด์์๋ ์ฌ์ฉํ๊ณ ์์ง๋ง, ์ง์์๋ ์ฒ์๋ถํฐ ์ค์น๋ถํฐ ์ค์ , ์ก ์คํ, ๋ชจ๋ํฐ๋ง๊น์ง A to Z๋ก ๋ค์ ์ ๋ฆฌํด๋ณผ ์์ ์
๋๋ค.)
๊ธด ๊ธ ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. :D
๐ ๊ณต๋ถ ์ฐธ๊ณ ์๋ฃ
๐ 2. ๋ฐ์ดํฐ์์ง๋์ด๋ง Yarn
๐ 3. Hadoop YARN ๊ณต์ ๋งค๋ด์ผ