์๋ ์ด Apache Hadoop์ ํฐ ๋ณํ๊ฐ ์์๋ ํด์๋ค๋ ๊ฒ์ ์๋ง๋ ๋น๋ฐ์ด ์๋ ๊ฒ์ ๋๋ค. ์๋ ์ Cloudera์ Hortonworks๊ฐ ํฉ๋ณ๋์๊ณ (๋ณธ์ง์ ์ผ๋ก ํ์ ์ธ์) Mapr๋ ์ฌ๊ฐํ ์ฌ์ ๋ฌธ์ ๋ก ์ธํด Hewlett Packard์ ๋งค๊ฐ๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ช ๋ ์ ์๋ ์จํ๋ ๋ฏธ์ค ์ค์น์ ๊ฒฝ์ฐ Cloudera์ Hortonworks ์ค์์ ์ ํํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์ง๋ง, ์์ฝ๊ฒ๋ ์ค๋๋ ์๋ ์ด๋ฌํ ์ ํ์ ์ฌ์ง๊ฐ ์์ต๋๋ค. ๋ ๋ค๋ฅธ ๋๋ผ์ด ์ ์ Cloudera๊ฐ ์ฌํด 2019์์ ๋ฐฐํฌ์ฉ ๋ฐ์ด๋๋ฆฌ ์ด์ ๋ธ๋ฆฌ๋ฅผ ๊ณต๊ฐ ์ ์ฅ์์ ๊ณต๊ฐํ๋ ๊ฒ์ ์ค๋จํ๊ณ ์ด์ ์ ๋ฃ ๊ตฌ๋ ์ ํตํด์๋ง ์ฌ์ฉํ ์ ์๋ค๊ณ ๋ฐํํ๋ค๋ ์ฌ์ค์ ๋๋ค. ๋ฌผ๋ก XNUMX๋ ๋ง ์ด์ ์ ์ถ์๋ ์ต์ ๋ฒ์ ์ CDH์ HDP๋ ๋ค์ด๋ก๋๊ฐ ๊ฐ๋ฅํ๋ฉฐ, ์ด๋ค์ ๋ํ ์ง์์ XNUMX~XNUMX๋ ์ ๋ ์์๋๋ค. ํ์ง๋ง ๋ค์์ ๋ฌด์์ ํด์ผ ํ ๊น์? ์ด์ ์ ๊ตฌ๋ ๋ฃ๋ฅผ ์ง๋ถํ์ ๋ถ๋ค์๊ฒ๋ ๋ณ๊ฒฝ๋ ์ฌํญ์ด ์์ต๋๋ค. ์ ๋ฃ ๋ฒ์ ์ ๋ฐฐํฌํ์ผ๋ก ์ ํํ๊ณ ์ถ์ง ์์ง๋ง ๋์์ ์ต์ ๋ฒ์ ์ ํด๋ฌ์คํฐ ๊ตฌ์ฑ ์์์ ํจ์น ๋ฐ ๊ธฐํ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ๊ณ ์ถ์ ์ฌ๋๋ค์ ์ํด ์ด ๊ธฐ์ฌ๋ฅผ ์ค๋นํ์ต๋๋ค. ์ฌ๊ธฐ์์ ์ฐ๋ฆฌ๋ ์ด ์ํฉ์์ ๋ฒ์ด๋ ์ ์๋ ๊ฐ๋ฅํ ์ต์ ์ ๊ณ ๋ คํ ๊ฒ์ ๋๋ค.
์ด ๊ธฐ์ฌ๋ ๋ฆฌ๋ทฐ์ ๊ฐ๊น์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋ฐฐํฌํ ๋น๊ต ๋ฐ โโ์์ธํ ๋ถ์์ด ํฌํจ๋์ง ์์ผ๋ฉฐ ๋ฐฐํฌํ์ ์ค์นํ๊ณ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ๋ ์์ต๋๋ค. ๋ฌด์จ ์ผ์ด ์ผ์ด๋ ๊ฒ? ์ค๋๋ ๋งค์ฐ ๋๋ฌผ์ง๋ง ๊ฐ์ฉ์ฑ์ผ๋ก ์ธํด ๋น์ฐํ ์ฃผ๋ชฉํ ๊ฐ์น๊ฐ ์๋ Arenadata Hadoop๊ณผ ๊ฐ์ ๋ฐฐํฌํ์ ๋ํด ๊ฐ๋ตํ๊ฒ ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ฐ๋๋ผ ํ๋ก(Vanilla Hadoop)์ ๋ํด ์ฃผ๋ก Apache Bigtop์ ์ฌ์ฉํ์ฌ "์๋ฆฌ"ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค. ์ค๋น๊ฐ ๋? ๊ทธ๋ผ ๊ณ ์์ด์ ์ค์ ๊ฒ์ ํ์ํฉ๋๋ค.
์๋ ๋๋ฐ์ดํฐ ํ๋ก
์ด๊ฒ์ ์์ ํ ์๋กญ๊ณ ์์ง ์ ์๋ ค์ง์ง ์์ ๊ตญ๋ด ๊ฐ๋ฐ ๋ฐฐํฌ ํคํธ์
๋๋ค. ๋ถํํ๊ฒ๋ ํ์ฌ Habrรฉ์๋
์์ธํ ๋ด์ฉ์ ๊ณต์ ํํ์ด์ง์์ ํ์ธํ์ค ์ ์์ต๋๋ค
๋ก๋๋งต์ ๋ํ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
Arenadata ํด๋ฌ์คํฐ ๊ด๋ฆฌ์ ์ธํฐํ์ด์ค
Arenadata์ ํต์ฌ ์ ํ์
Hadoop 3์ ๋ฐฐํฌ ๋ฐ ๊ด๋ฆฌ๋ฅผ ์ํด ADCM๊ณผ ํจ๊ป ๋ฒ๋ค์ ์ปค๋ฎค๋ํฐ ๋ฒ์ ์ด ์ ๊ณต๋์ง๋ง Hadoop 2์ ๊ฒฝ์ฐ์๋ ๋ฒ๋ค์ ์ปค๋ฎค๋ํฐ ๋ฒ์ ๋ง ์ ๊ณต๋ฉ๋๋ค.
๋จ์ ์ ๋ํด ์ด์ผ๊ธฐํ๋ฉด ๋ค๋ฅธ ๋ชจ๋ Hadoop ๋ฐฐํฌํ๊ณผ ๋์ผํฉ๋๋ค. ์ฆ:
- ์์ "๊ณต๊ธ์ ์ฒด ์ ๊ธ"์ ๋๋ค. Cloudera์ Hortonworks์ ์ฌ๋ก๋ฅผ ํตํด ์ฐ๋ฆฌ๋ ํญ์ ํ์ฌ ์ ์ฑ ๋ณ๊ฒฝ์ ์ํ์ด ์๋ค๋ ๊ฒ์ ์ด๋ฏธ ๊นจ๋ฌ์์ต๋๋ค.
- Apache ์ ์คํธ๋ฆผ๋ณด๋ค ์๋นํ ์ง์ฐ์ด ์์ต๋๋ค.
๋ฐ๋๋ผ ํ๋ก
์์๋ค์ํผ Hadoop์ ๋จ์ผ ์ ํ์ด ์๋๋ผ ์ค์ ๋ก ๋ถ์ฐ ํ์ผ ์์คํ
HDFS๋ฅผ ์ค์ฌ์ผ๋ก ํ ์ ์ฒด ์๋น์ค ์ํ๊ณ์
๋๋ค. ํ๋์ ํ์ผ ํด๋ฌ์คํฐ๋ฅผ ์ถฉ๋ถํ ๊ฐ๊ณ ์๋ ์ฌ๋์ ๊ฑฐ์ ์์ต๋๋ค. Hive๊ฐ ํ์ํ ์ฌ๋๋ ์๊ณ Presto๊ฐ ํ์ํ ์ฌ๋๋ ์๊ณ HBase์ Phoenix๊ฐ ํ์ํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ Spark์ ์ฌ์ฉ์ด ์ ์ ๋ ๋์ด๋๊ณ ์์ต๋๋ค. ์ค์ผ์คํธ๋ ์ด์
๋ฐ ๋ฐ์ดํฐ ๋ก๋ฉ์ ์ํด Oozie, Sqoop ๋ฐ Flume์ด ๋๋๋ก ๋ฐ๊ฒฌ๋ฉ๋๋ค. ๋ณด์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด Ranger์ ํจ๊ป Kerberos๊ฐ ์ฆ์ ๋ ์ค๋ฆ
๋๋ค.
Hadoop ๊ตฌ์ฑ์์์ ๋ฐ์ด๋๋ฆฌ ๋ฒ์ ์ ๊ฐ ์ํ๊ณ ํ๋ก์ ํธ์ ์น์ฌ์ดํธ์์ ํ๋ฅด๋ณผ ํํ๋ก ์ ๊ณต๋ฉ๋๋ค. ์ด๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์ค์น๋ฅผ ์์ํ ์ ์์ง๋ง ํ ๊ฐ์ง ์กฐ๊ฑด์ด ์์ต๋๋ค. "์์" ๋ฐ์ด๋๋ฆฌ์์ ํจํค์ง๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์กฐ๋ฆฝํ๋ ๊ฒ ์ธ์๋ ๋ค์ด๋ก๋ํ ๊ตฌ์ฑ ์์ ๋ฒ์ ์ด ๊ฐ ๋ฒ์ ๊ณผ ํธํ๋๋์ง ํ์ ํ ์ ์์ต๋๋ค. ๋ค๋ฅธ. ์ ํธ๋๋ ์ต์ ์ Apache Bigtop์ ์ฌ์ฉํ์ฌ ๋น๋ํ๋ ๊ฒ์ ๋๋ค. Bigtop์ ์ฌ์ฉํ๋ฉด Apache Maven ์ ์ฅ์์์ ๋น๋ํ๊ณ , ํ ์คํธ๋ฅผ ์คํํ๊ณ , ํจํค์ง๋ฅผ ๋น๋ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ์๊ฒ ๋งค์ฐ ์ค์ํ ๊ฒ์ Bigtop์ด ์๋ก ํธํ๋๋ ๊ตฌ์ฑ ์์ ๋ฒ์ ์ ์กฐ๋ฆฝํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด์ ๋ํด ์๋์์ ๋ ์์ธํ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
์ํ์น ๋น ํ
Apache Bigtop์ ์ฌ๋ฌ ๊ฐ์ง๋ฅผ ๊ตฌ์ถ, ํจํค์ง ๋ฐ ํ
์คํธํ๊ธฐ ์ํ ๋๊ตฌ์
๋๋ค.
Hadoop, Greenplum๊ณผ ๊ฐ์ ์คํ ์์ค ํ๋ก์ ํธ. ๋น
ํ์ ๋ง์
๋ฆด๋ฆฌ์ค. ์ด ๊ธ์ ์ฐ๋ ์์ ์์ ์ต์ ์์ ๋ฆด๋ฆฌ์ค๋ ๋ฒ์ 1.4์์ผ๋ฉฐ,
๊ทธ๋ฆฌ๊ณ ๋ง์คํฐ์๋ 1.5๊ฐ ์์์ต๋๋ค. ์๋ก ๋ค๋ฅธ ๋ฒ์ ์ ๋ฆด๋ฆฌ์ค์์๋ ์๋ก ๋ค๋ฅธ ๋ฒ์ ์ ์ฌ์ฉํฉ๋๋ค.
๊ตฌ์ฑ ์์. ์๋ฅผ ๋ค์ด 1.4 Hadoop ํต์ฌ ๊ตฌ์ฑ ์์์ ๊ฒฝ์ฐ ๋ฒ์ 2.8.5๊ฐ ์๊ณ ๋ง์คํฐ์๋
2.10.0. ์ง์๋๋ ๊ตฌ์ฑ ์์์ ๊ตฌ์ฑ๋ ๋ณ๊ฒฝ๋ฉ๋๋ค. ๋ญ๊ฐ ๋ก๊ณ
์ฌ์ ๋ถ๊ฐ๋ฅํ ๊ฒ์ ์ฌ๋ผ์ง๊ณ ๊ทธ ์๋ฆฌ์ ๋ญ๊ฐ ์๋กญ๊ณ ์์๊ฐ ๋ง์ ๊ฒ์ด ๋ฑ์ฅํฉ๋๋ค.
๋ฐ๋์ Apache ์ ํ๊ตฐ ์์ฒด์ ๊ฒ์ด ์๋ ์๋ ์์ต๋๋ค.
๊ทธ ์ธ์๋ ๋น
ํ์๋ ๋ค์ํ
์ฐ๋ฆฌ๊ฐ Bigtop์ ๋ํด ์์๊ฐ๊ธฐ ์์ํ์ ๋, ์ฐ๋ฆฌ๋ ์ฐ์ ๋ค๋ฅธ Apache ํ๋ก์ ํธ์ ๋นํด ๊ทธ ๊ท๋ชจ๊ฐ ํฌ์ง ์๊ณ ๋ณด๊ธ๋ฅ ๊ณผ ์ธ๊ธฐ๋๊ฐ ๋์ผ๋ฉฐ ๋งค์ฐ ์์ ์ปค๋ฎค๋ํฐ์ ๋๋์ต๋๋ค. ์ด๋ก ์ธํด ์ ํ์ ๋ํ ์ ๋ณด๊ฐ ์ต์ํ๋๊ณ ํฌ๋ผ ๋ฐ ๋ฉ์ผ๋ง ๋ชฉ๋ก์์ ๋ฐ์ํ ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ์ฑ ์ ๊ฒ์ํด๋ ์ ํ ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง ์์ ์ ์์ต๋๋ค. ์ฒ์์๋ ๋๊ตฌ ์์ฒด์ ๊ธฐ๋ฅ์ผ๋ก ์ธํด ๋ฐฐํฌํ์ ์์ ํ ์กฐ๋ฆฝ์ ์๋ฃํ๋ ๊ฒ์ด ์ด๋ ค์ด ์์ ์ผ๋ก ํ๋ช ๋์์ง๋ง ์ด์ ๋ํด์๋ ์กฐ๊ธ ๋์ค์ ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค.
ํฐ์ ๋ก์, ํ๋ Gentoo ๋ฐ LFS์ ๊ฐ์ Linux ์ธ๊ณ์ ํ๋ก์ ํธ์ ๊ด์ฌ์ด ์์๋ ์ฌ๋๋ค์ ์ด ์์ ์ ์ํํ๋ ๊ฒ์ด ํฅ์๋ฅผ ๋ถ๋ฌ์ผ์ผํค๋ ์ฆ๊ฑฐ์์ ๋๋ ์ ์์ผ๋ฉฐ ์ฐ๋ฆฌ๊ฐ ์ฐพ๊ณ ์๋(๋๋ ์ฌ์ง์ด ๊ธ์ ์ฐ๋) "์์ฌ์์ ์ธ" ์๊ฐ์ ๊ธฐ์ตํ ์ ์์ต๋๋ค. ์๋ก์ด ํจ์น๋ก Mozilla๋ฅผ ebuildํ๊ณ ์ ๊ธฐ์ ์ผ๋ก ๋ค์ ๋น๋ํฉ๋๋ค.
Bigtop์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ ๊ธฐ๋ฐ์ด ๋๋ ๋๊ตฌ์ ๊ฐ๋ฐฉ์ฑ๊ณผ ๋ค์์ฑ์
๋๋ค. Gradle๊ณผ Apache Maven์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. Gradle์ Google์ด Android๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ์ฌ์ฉํ๋ ๋๊ตฌ๋ก ์ ์๋ ค์ ธ ์์ต๋๋ค. ์ ์ฐํ๋ฉฐ, ์์ "์ ํฌ ํ
์คํธ๋ฅผ ๊ฑฐ์ณค์ต๋๋ค." Maven์ Apache ์์ฒด์์ ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ ํ์ค ๋๊ตฌ์ด๋ฉฐ, ๋๋ถ๋ถ์ ์ ํ์ด Maven์ ํตํด ๋ฆด๋ฆฌ์ค๋๋ฏ๋ก ์ฌ๊ธฐ์๋ Maven ์์ด๋ ์ํํ ์ ์์ต๋๋ค. POM(ํ๋ก์ ํธ ๊ฐ์ฒด ๋ชจ๋ธ)์ ์ฃผ๋ชฉํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ์ด๋ Maven์ด ํ๋ก์ ํธ์ ํจ๊ป ์์
ํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ๊ฒ์ ์ค๋ช
ํ๋ "๊ธฐ๋ณธ" xml ํ์ผ์ด๋ฉฐ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ชจ๋ ์์
์ด ๊ตฌ์ถ๋ฉ๋๋ค. ์ ํํ ์๊ฐ
Maven์ ์ผ๋ถ์ด๋ฉฐ ์ฒ์ Bigtop ์ฌ์ฉ์๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์ง๋ฉดํ๋ ๋ช ๊ฐ์ง ์ฅ์ ๋ฌผ์ด ์์ต๋๋ค.
์ฐ์ต
๊ทธ๋ผ ์ด๋์๋ถํฐ ์์ํด์ผ ํ ๊น์? ๋ค์ด๋ก๋ ํ์ด์ง๋ก ์ด๋ํ์ฌ ์ต์ ์์ ๋ฒ์ ์ ์์นด์ด๋ธ๋ก ๋ค์ด๋ก๋ํ์ธ์. Bigtop์์ ์์งํ ๋ฐ์ด๋๋ฆฌ ์ํฐํฉํธ๋ ์ฐพ์ ์ ์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ์ผ๋ฐ์ ์ธ ํจํค์ง ๊ด๋ฆฌ์ ์ค์๋ YUM๊ณผ APT๊ฐ ์ง์๋ฉ๋๋ค.
๋๋ ๋ค์์์ ์ง์ ์ต์ ์์ ๋ฆด๋ฆฌ์ค๋ฅผ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค.
๊นํ๋ธ:
$ git clone --branch branch-1.4 https://github.com/apache/bigtop.git
'๋น ํ'์์ ๋ณต์ โฆ
remote: Enumerating objects: 46, done.
remote: Counting objects: 100% (46/46), done.
remote: Compressing objects: 100% (41/41), done.
remote: Total 40217 (delta 14), reused 10 (delta 1), pack-reused 40171
ะะพะปััะตะฝะธะต ะพะฑัะตะบัะพะฒ: 100% (40217/40217), 43.54 MiB | 1.05 MiB/s, ะณะพัะพะฒะพ.
ะะฟัะตะดะตะปะตะฝะธะต ะธะทะผะตะฝะตะฝะธะน: 100% (20503/20503), ะณะพัะพะฒะพ.
Updating files: 100% (1998/1998), ะณะพัะพะฒะพ.
๊ฒฐ๊ณผ ./bigtop ๋๋ ํ ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
./bigtop-bigpetstore
โ ๋ฐ๋ชจ ์ ํ๋ฆฌ์ผ์ด์
, ํฉ์ฑ ์์
./bigtop-ci
โ CI ํดํท, ์ ํจ์ค
./bigtop-data-generators
โ ๋ฐ์ดํฐ ์์ฑ, ํฉ์ฑ, ์ฐ๊ธฐ ํ
์คํธ ๋ฑ
./bigtop-deploy
- ๋ฐฐํฌ ๋๊ตฌ
./bigtop-packages
โ ๊ตฌ์ฑ, ์คํฌ๋ฆฝํธ, ์ด์
๋ธ๋ฆฌ์ฉ ํจ์น, ๋๊ตฌ์ ์ฃผ์ ๋ถ๋ถ
./bigtop-test-framework
โ ํ
์คํธ ํ๋ ์์ํฌ
./bigtop-tests
โ ํ
์คํธ ์์ฒด, ๋ถํ ๋ฐ ์ฐ๊ธฐ
./bigtop_toolchain
โ ์กฐ๋ฆฝ ํ๊ฒฝ, ๋๊ตฌ ์๋ ํ๊ฒฝ ์ค๋น
./build
โ ์์
๋๋ ํ ๋ฆฌ ๊ตฌ์ถ
./dl
โ ๋ค์ด๋ก๋ํ ์์ค ๋๋ ํ ๋ฆฌ
./docker
โ ๋์ปค ์ด๋ฏธ์ง ๊ตฌ์ถ, ํ
์คํธ
./gradle
- ๊ทธ๋๋ค ๊ตฌ์ฑ
./output
โ ๋น๋ ์ํฐํฉํธ๊ฐ ์ด๋ํ๋ ๋๋ ํฐ๋ฆฌ
./provisioner
โ ํ๋ก๋น์ ๋
์ด ๋จ๊ณ์์ ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ด ์ ์ ๊ธฐ๋ณธ ๊ตฌ์ฑ์
๋๋ค. ./bigtop/bigtop.bom
, ๋ฒ์ ๊ณผ ํจ๊ป ์ง์๋๋ ๋ชจ๋ ๊ตฌ์ฑ ์์๊ฐ ํ์๋ฉ๋๋ค. ์ฌ๊ธฐ์์ ์ ํ์ ๋ค๋ฅธ ๋ฒ์ (๊ฐ์๊ธฐ ๋น๋๋ฅผ ์๋ํ๋ ค๋ ๊ฒฝ์ฐ) ๋๋ ๋น๋ ๋ฒ์ (์๋ฅผ ๋ค์ด ์ค์ํ ํจ์น๋ฅผ ์ถ๊ฐํ ๊ฒฝ์ฐ)์ ์ง์ ํ ์ ์์ต๋๋ค.
ํ์ ๋๋ ํ ๋ฆฌ์๋ ํฐ ๊ด์ฌ์ด ์์ต๋๋ค. ./bigtop/bigtop-packages
, ์ด๋ ๊ตฌ์ฑ ์์์ ํจํค์ง๋ฅผ ์กฐ๋ฆฝํ๋ ๊ณผ์ ๊ณผ ์ง์ ์ ์ธ ๊ด๋ จ์ด ์์ต๋๋ค.
๊ทธ๋ผ ์์นด์ด๋ธ๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์์ถ์ ํ๊ฑฐ๋ github์์ ํด๋ก ์ ๋ง๋ค์์ต๋๋ค. ๋น๋๋ฅผ ์์ํด๋ ๋ ๊น์?
์๋์, ๋จผ์ ํ๊ฒฝ์ ์ค๋นํฉ์๋ค.
ํ๊ฒฝ ์ค๋น
๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์๋ ์์ ํด์์ด ํ์ํฉ๋๋ค. ๊ฑฐ์ ๋ชจ๋ ๋ณต์กํ ์ ํ์ ๋น๋ํ๋ ค๋ฉด ํน์ ํ๊ฒฝ์ด ํ์ํฉ๋๋ค. ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ์ด๋ JDK, ๋์ผํ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํค๋ ํ์ผ ๋ฑ, ๋๊ตฌ(์: ant, ivy2 ๋ฑ)์ ๋๋ค. Bigtop์ ํ์ํ ํ๊ฒฝ์ ์ป๋ ์ต์ ์ค ํ๋๋ ๋น๋ ํธ์คํธ์ ํ์ํ ๊ตฌ์ฑ ์์๋ฅผ ์ค์นํ๋ ๊ฒ์ ๋๋ค. ์ฐ๋์์ผ๋ก ๋ณด๋ฉด ํ๋ฆด ์๋ ์์ง๋ง ๋ฒ์ 1.0์๋ ์ฌ๊ธฐ์์ ์ฐพ์ ์ ์๋ ์ฌ์ ๊ตฌ์ฑ๋๊ณ ์ก์ธ์ค ๊ฐ๋ฅํ Docker ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ์ต์ ๋ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค.
ํ๊ฒฝ ์ค๋น์ ๊ดํด์๋ ์กฐ์์ธ Puppet์ด ์์ต๋๋ค.
๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ๊ณ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์์ ์คํํ ์ ์์ต๋๋ค.
๋๊ตฌ, ./bigtop:
./gradlew toolchain
./gradlew toolchain-devtools
./gradlew toolchain-puppetmodules
๋๋ ๊ผญ๋๊ฐ์๋ฅผ ํตํด ์ง์ :
puppet apply --modulepath=<path_to_bigtop> -e "include bigtop_toolchain::installer"
puppet apply --modulepath=<path_to_bigtop> -e "include bigtop_toolchain::deployment-tools"
puppet apply --modulepath=<path_to_bigtop> -e "include bigtop_toolchain::development-tools"
๋ถํํ๊ฒ๋ ์ด ๋จ๊ณ์์๋ ์ด๋ฏธ ์ด๋ ค์์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ ์ผ๋ฐ์ ์ธ ์กฐ์ธ์ ๋น๋ ํธ์คํธ์์ ์ง์๋๋ ์ต์ ๋ฐฐํฌํ์ ์ฌ์ฉํ๊ฑฐ๋ docker ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํด ๋ณด๋ ๊ฒ์ ๋๋ค.
์กฐ๋ฆฝ
์ฐ๋ฆฌ๋ ๋ฌด์์ ์์งํ๋ ค๊ณ ํ ์ ์๋์? ์ด ์ง๋ฌธ์ ๋ํ ๋ต์ ๋ช ๋ น์ ์ถ๋ ฅ์ ํตํด ์ ๊ณต๋ฉ๋๋ค.
./gradlew tasks
ํจํค์ง ์์
์น์
์๋ Bigtop์ ์ต์ข
๊ฒฐ๊ณผ๋ฌผ์ธ ์ฌ๋ฌ ์ ํ์ด ์์ต๋๋ค.
์ ๋ฏธ์ฌ -rpm ๋๋ -pkg-ind๋ก ์๋ณํ ์ ์์ต๋๋ค(๋น๋ฉ์ ๊ฒฝ์ฐ).
๋์ปค์์). ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ด ๊ฒ์ Hadoop์
๋๋ค.
๋น๋ ์๋ฒ ํ๊ฒฝ์์ ๋น๋ํด ๋ณด๊ฒ ์ต๋๋ค.
./gradlew hadoop-rpm
Bigtop ์์ฒด๋ ํน์ ๊ตฌ์ฑ ์์์ ํ์ํ ํ์ ์์ค๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์กฐ๋ฆฝ์ ์์ํฉ๋๋ค. ๋ฐ๋ผ์ ๋๊ตฌ์ ์๋์ Maven ์ ์ฅ์ ๋ฐ ๊ธฐํ ์์ค์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ์ฆ, ์ธํฐ๋ท ์ก์ธ์ค๊ฐ ํ์ํฉ๋๋ค.
์๋ ์ค์ ํ์ค ์ถ๋ ฅ์ด ์์ฑ๋ฉ๋๋ค. ๋๋ก๋ ์ค๋ฅ ๋ฉ์์ง์ ์ค๋ฅ ๋ฉ์์ง๊ฐ ๋ฌด์์ด ์๋ชป๋์๋์ง ์ดํดํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ๋๋ก๋ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ป์ด์ผ ํ ๋๋ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์ธ์๋ฅผ ์ถ๊ฐํ ๊ฐ์น๊ฐ ์์ต๋๋ค. --info
๋๋ --debug
, ๋ํ ์ ์ฉํ ์๋ ์์ต๋๋ค โstacktrace
. ๋ฉ์ผ๋ง ๋ฆฌ์คํธ์ ๋ํ ํ์ ์ก์ธ์ค๋ฅผ ์ํด ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์์ฑํ๋ ํธ๋ฆฌํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. --scan
.
Bigtop์ ๋์์ ๋ฐ์ ๋ชจ๋ ์ ๋ณด๋ฅผ ์์งํ์ฌ Gradle์ ์ ์ฅํ ํ ๋งํฌ๋ฅผ โโ์ ๊ณตํฉ๋๋ค.
์ด๋ฅผ ํตํด ์ ๋ฅํ ์ฌ๋์ ์กฐ๋ฆฝ์ด ์คํจํ ์ด์ ๋ฅผ ์ดํดํ ์ ์์ต๋๋ค.
์ด ์ต์
์ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์ ์ด๋ฆ, ๋
ธ๋, ํ๊ฒฝ ๋ณ์ ๋ฑ ์ํ์ง ์๋ ์ ๋ณด๊ฐ ๋
ธ์ถ๋ ์ ์์ผ๋ฏ๋ก ์ฃผ์ํ์๊ธฐ ๋ฐ๋๋๋ค.
์ข
์ข
์ค๋ฅ๋ ์กฐ๋ฆฝ์ ํ์ํ ๊ตฌ์ฑ ์์๋ฅผ ์ป์ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์์ค์ ํน์ ๋ถ๋ถ์ ์์ ํ๋ ํจ์น๋ฅผ ์์ฑํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค(์: ์์ค์ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์ ์๋ pom.xml์ ์ฃผ์). ์ด๋ ์ ์ ํ ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑํ์ฌ ๋ฐฐ์นํจ์ผ๋ก์จ ์ํ๋ฉ๋๋ค. ./bigtop/bigtop-packages/src/common/oozie/
์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ํ์์ ํจ์น patch2-fix.diff.
--- a/pom.xml
+++ b/pom.xml
@@ -136,7 +136,7 @@
<repositories>
<repository>
<id>central</id>
- <url>http://repo1.maven.org/maven2</url>
+ <url>https://repo1.maven.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
์๋ง๋ ์ด ๊ธฐ์ฌ๋ฅผ ์ฝ๋ ์์ ์์๋ ์์ ๋ฌธ์ ๋ฅผ ์ง์ ํด๊ฒฐํ ํ์๊ฐ ์์ ๊ฒ์ ๋๋ค.
์ด์ ๋ธ๋ฆฌ ๋ฉ์ปค๋์ฆ์ ํจ์น์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ ๋ ์ ๋ฆฌ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ด์ ๋ธ๋ฆฌ๋ฅผ "์ฌ์ค์ "ํด์ผ ํ ์๋ ์์ต๋๋ค.
./gradlew hadoop-clean
> Task :hadoop_vardefines
> Task :hadoop-clean
BUILD SUCCESSFUL in 5s
2 actionable tasks: 2 executed
์ด ์์ ์ ์ด ๊ตฌ์ฑ ์์์ ์ด์ ๋ธ๋ฆฌ์ ๋ํ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋กค๋ฐฑํ ํ ์ด์ ๋ธ๋ฆฌ๊ฐ ๋ค์ ์ํ๋ฉ๋๋ค. ์ด๋ฒ์๋ Docker ์ด๋ฏธ์ง๋ก ํ๋ก์ ํธ๋ฅผ ๋น๋ํด ๋ณด๊ฒ ์ต๋๋ค.
./gradlew -POS=centos-7 -Pprefix=1.2.1 hadoop-pkg-ind
> Task :hadoop-pkg-ind
Building 1.2.1 hadoop-pkg on centos-7 in Docker...
+++ dirname ./bigtop-ci/build.sh
++ cd ./bigtop-ci/..
++ pwd
+ BIGTOP_HOME=/tmp/bigtop
+ '[' 6 -eq 0 ']'
+ [[ 6 -gt 0 ]]
+ key=--prefix
+ case $key in
+ PREFIX=1.2.1
+ shift
+ shift
+ [[ 4 -gt 0 ]]
+ key=--os
+ case $key in
+ OS=centos-7
+ shift
+ shift
+ [[ 2 -gt 0 ]]
+ key=--target
+ case $key in
+ TARGET=hadoop-pkg
+ shift
+ shift
+ [[ 0 -gt 0 ]]
+ '[' -z x ']'
+ '[' -z x ']'
+ '[' '' == true ']'
+ IMAGE_NAME=bigtop/slaves:1.2.1-centos-7
++ uname -m
+ ARCH=x86_64
+ '[' x86_64 '!=' x86_64 ']'
++ docker run -d bigtop/slaves:1.2.1-centos-7 /sbin/init
+
CONTAINER_ID=0ce5ac5ca955b822a3e6c5eb3f477f0a152cd27d5487680f77e33fbe66b5bed8
+ trap 'docker rm -f
0ce5ac5ca955b822a3e6c5eb3f477f0a152cd27d5487680f77e33fbe66b5bed8' EXIT
....
ะผะฝะพะณะพ ะฒัะฒะพะดะฐ
....
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-yarn-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-mapreduce-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-namenode-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-secondarynamenode-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-zkfc-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-journalnode-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-datanode-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-httpfs-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-yarn-resourcemanager-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-yarn-nodemanager-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-yarn-proxyserver-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-yarn-timelineserver-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-mapreduce-historyserver-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-client-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-conf-pseudo-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-doc-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-libhdfs-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-libhdfs-devel-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-fuse-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-debuginfo-2.8.5-1.el7.x86_64.rpm
+ umask 022
+ cd /bigtop/build/hadoop/rpm//BUILD
+ cd hadoop-2.8.5-src
+ /usr/bin/rm -rf /bigtop/build/hadoop/rpm/BUILDROOT/hadoop-2.8.5-1.el7.x86_64
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.uQ2FCn
+ exit 0
+ umask 022
Executing(--clean): /bin/sh -e /var/tmp/rpm-tmp.CwDb22
+ cd /bigtop/build/hadoop/rpm//BUILD
+ rm -rf hadoop-2.8.5-src
+ exit 0
[ant:touch] Creating /bigtop/build/hadoop/.rpm
:hadoop-rpm (Thread[Task worker for ':',5,main]) completed. Took 38 mins 1.151 secs.
:hadoop-pkg (Thread[Task worker for ':',5,main]) started.
> Task :hadoop-pkg
Task ':hadoop-pkg' is not up-to-date because:
Task has not declared any outputs despite executing actions.
:hadoop-pkg (Thread[Task worker for ':',5,main]) completed. Took 0.0 secs.
BUILD SUCCESSFUL in 40m 37s
6 actionable tasks: 6 executed
+ RESULT=0
+ mkdir -p output
+ docker cp
ac46014fd9501bdc86b6c67d08789fbdc6ee46a2645550ff6b6712f7d02ffebb:/bigtop/build .
+ docker cp
ac46014fd9501bdc86b6c67d08789fbdc6ee46a2645550ff6b6712f7d02ffebb:/bigtop/output .
+ docker rm -f ac46014fd9501bdc86b6c67d08789fbdc6ee46a2645550ff6b6712f7d02ffebb
ac46014fd9501bdc86b6c67d08789fbdc6ee46a2645550ff6b6712f7d02ffebb
+ '[' 0 -ne 0 ']'
+ docker rm -f ac46014fd9501bdc86b6c67d08789fbdc6ee46a2645550ff6b6712f7d02ffebb
Error: No such container:
ac46014fd9501bdc86b6c67d08789fbdc6ee46a2645550ff6b6712f7d02ffebb
BUILD SUCCESSFUL in 41m 24s
1 actionable task: 1 executed
๋น๋๋ CentOS์์ ์ํ๋์์ง๋ง Ubuntu์์๋ ์ํํ ์ ์์ต๋๋ค.
./gradlew -POS=ubuntu-16.04 -Pprefix=1.2.1 hadoop-pkg-ind
๋ค์ํ Linux ๋ฐฐํฌ์ฉ ํจํค์ง๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ ์ธ์๋ ์ด ๋๊ตฌ๋ ์ปดํ์ผ๋ ํจํค์ง๋ก ์ ์ฅ์๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
./gradlew yum
Docker์ ์ฐ๊ธฐ ํ ์คํธ ๋ฐ ๋ฐฐํฌ์ ๋ํด์๋ ๊ธฐ์ตํ ์ ์์ต๋๋ค.
XNUMX๊ฐ ๋ ธ๋๋ก ๊ตฌ์ฑ๋ ํด๋ฌ์คํฐ๋ฅผ ๋ง๋ญ๋๋ค.
./gradlew -Pnum_instances=3 docker-provisioner
XNUMX๊ฐ ๋ ธ๋๋ก ๊ตฌ์ฑ๋ ํด๋ฌ์คํฐ์์ ์ฐ๊ธฐ ํ ์คํธ๋ฅผ ์คํํฉ๋๋ค.
./gradlew -Pnum_instances=3 -Prun_smoke_tests docker-provisioner
ํด๋ฌ์คํฐ๋ฅผ ์ญ์ ํฉ๋๋ค.
./gradlew docker-provisioner-destroy
Docker ์ปจํ ์ด๋ ๋ด๋ถ ์ฐ๊ฒฐ์ ์ํ ๋ช ๋ น์ ๊ฐ์ ธ์ต๋๋ค.
./gradlew docker-provisioner-ssh
์ํ ํ์:
./gradlew docker-provisioner-status
์ค๋ช ์์์ ๋ฐฐํฌ ์์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฝ์ ์ ์์ต๋๋ค.
ํ ์คํธ์ ๊ดํด ์ด์ผ๊ธฐํ๋ฉด ์ฃผ๋ก ์ฐ๊ธฐ์ ํตํฉ ๋ฑ ์๋นํ ๋ง์ ํ ์คํธ๊ฐ ์์ต๋๋ค. ์ด๋ค์ ๋ถ์์ ์ด ๊ธฐ์ฌ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ฉ๋๋ค. ๋ฐฐํฌํ์ ์กฐ๋ฆฝํ๋ ๊ฒ์ ์ธ๋ป ๋ณด๊ธฐ์ ๊ทธ๋ ๊ฒ ์ด๋ ค์ด ์์ ์ด ์๋๋ผ๊ณ ๋ง์๋๋ฆฌ๊ณ ์ถ์ต๋๋ค. ์ฐ๋ฆฌ๋ ํ๋ก๋์ ์์ ์ฌ์ฉํ๋ ๋ชจ๋ ๊ตฌ์ฑ ์์๋ฅผ ์กฐ๋ฆฝํ๊ณ ํ ์คํธ๋ฅผ ํต๊ณผํ์ผ๋ฉฐ ํ ์คํธ ํ๊ฒฝ์์ ๊ตฌ์ฑ ์์๋ฅผ ๋ฐฐํฌํ๊ณ ๊ธฐ๋ณธ ์์ ์ ์ํํ๋ ๋ฐ์๋ ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
Bigtop์ ๊ธฐ์กด ๊ตฌ์ฑ์์ ์ธ์ ๋ค๋ฅธ ๊ฒ์ ์ถ๊ฐํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ฉฐ, ์์ฒด ์ํํธ์จ์ด ๊ฐ๋ฐ๋ ๊ฐ๋ฅํฉ๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ด ์๋ฒฝํ๊ฒ ์๋ํ๋์ด ์์ผ๋ฉฐ CI/CD ๊ฐ๋ ์ ์ ํฉํฉ๋๋ค.
๊ฒฐ๋ก
๋ถ๋ช ํ ์ด๋ฐ ๋ฐฉ์์ผ๋ก ์ปดํ์ผ๋ ๋ฐฐํฌ ํจํค์ง๋ฅผ ์ฆ์ ํ๋ก๋์ ํ๊ฒฝ์ผ๋ก ๋ณด๋ด์๋ ์ ๋ฉ๋๋ค. ๋ฐฐํฌํ์ ๊ตฌ์ถํ๊ณ ์ง์ํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ ์ฌ๊ธฐ์ ๋๊ณผ ์๊ฐ์ ํฌ์ํด์ผ ํ๋ค๋ ์ ์ ์ดํดํด์ผ ํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ฌ๋ฐ๋ฅธ ์ ๊ทผ ๋ฐฉ์๊ณผ ์ ๋ฌธ ํ์ด ๊ฒฐํฉ๋๋ฉด ์์ ์ ์๋ฃจ์ ์์ด๋ ๊ฐ๋ฅํฉ๋๋ค.
๋น
ํ ํ๋ก์ ํธ ์์ฒด๋ ๊ฐ๋ฐ์ด ํ์ํ ์ํฉ์ด๊ณ ํ์ฌ ํ๋ฐํ ๊ฐ๋ฐ๋๊ณ ์๋ ๊ฒ ๊ฐ์ง๋ ์๋ค๋ ์ ์ ์ผ๋์ ๋๋ ๊ฒ์ด ์ค์ํ๋ค. ํ๋ก3์ด ๋ฑ์ฅํ ์ ๋ง๋ ๋ถ๋ถ๋ช
ํ๋ฐ, ๋ง์ฝ ํ๋ก3์ ๊ผญ ๊ตฌ์ถํด์ผ ํ๋ค๋ฉด ๋ค์์ ๋ณด๋ฉด ๋๋ค.
๋ค์ํ ์ถ๊ฐ ๊ตฌ์ฑ ์์(Ranger, Knox, NiFi)๊ฐ ์์ต๋๋ค.
Rostelecom์ ๊ฒฝ์ฐ Bigtop์ ํ์ฌ ๊ณ ๋ ค ์ค์ธ ์ต์ ์ค ํ๋์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ ํํ๋ ์ํ๋ ์๊ฐ์ด ๋งํด ์ค ๊ฒ์ ๋๋ค.
์ถฉ์
์ด์ ๋ธ๋ฆฌ์ ์ ๊ตฌ์ฑ ์์๋ฅผ ํฌํจํ๋ ค๋ฉด bigtop.bom ๋ฐ ./bigtop-packages์ ํด๋น ์ค๋ช ์ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ๊ธฐ์กด ๊ตฌ์ฑ์์์ ์ ์ฌํ๊ฒ ์ด๋ฅผ ์๋ํด ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๊ฒ์ ์์ ๋ด๋ ค๊ณ ๋ ธ๋ ฅํ์ญ์์ค. ์ธ๋ป๋ณด๊ธฐ์๋ ์ด๋ ต์ง ์์ต๋๋ค.
์ด๋ป๊ฒ ์๊ฐํ๋์? ๋๊ธ์ ํตํด ๊ทํ์ ์๊ฒฌ์ ํ์ธํ๊ฒ ๋์ด ๊ธฐ์๊ฒ ์๊ฐํ๋ฉฐ ๊ด์ฌ์ ๊ฐ์ ธ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
์ด ๊ธฐ์ฌ๋ Rostelecom ๋ฐ์ดํฐ ๊ด๋ฆฌํ์์ ์์ฑํ์ต๋๋ค.
์ถ์ฒ : habr.com