์ด ํ๋ก์ ํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์ํ ์ด๋ฒคํธ์ ์ฒ๋ฆฌ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด Storm์ ์ฌ์ฉํ๋ฉด ์ค์๊ฐ์ผ๋ก ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ๋ถ์ํ๊ณ , ๊ธฐ๊ณ ํ์ต ์์ ์ ์คํํ๊ณ , ์ง์์ ์ธ ์ปดํจํ ์ ๊ตฌ์ฑํ๊ณ , RPC, ETL ๋ฑ์ ๊ตฌํํ ์ ์์ต๋๋ค. ์ด ์์คํ ์ ํด๋ฌ์คํฐ๋ง, ๋ด๊ฒฐํจ์ฑ ๊ตฌ์ฑ ์์ฑ, ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ชจ๋ ๋ณด์ฅ์ ์ง์ํ๋ฉฐ ํ๋์ ํด๋ฌ์คํฐ ๋ ธ๋์์ ์ด๋น ๋ฐฑ๋ง ๊ฐ๊ฐ ๋๋ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ์ ์ถฉ๋ถํ ๊ณ ์ฑ๋ฅ์ ๊ฐ์ถ๊ณ ์์ต๋๋ค.
๋ค์ํ ๋๊ธฐ์ด ์ฒ๋ฆฌ ์์คํ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ์ ๊ณผ์ ํตํฉ์ด ์ง์๋ฉ๋๋ค. Storm ์ํคํ ์ฒ์๋ ๋ค์ํ ๊ณ์ฐ ๋จ๊ณ ๊ฐ์ ๋ถํ ํ ์ ์๋ ์์์ ๋ณต์กํ ํ๋ก์ธ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์กฐํ๋์ง ์๊ณ ์ง์์ ์ผ๋ก ์ ๋ฐ์ดํธ๋๋ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ์์ ํ๊ณ ์ฒ๋ฆฌํ๋ ์์ ์ด ํฌํจ๋ฉ๋๋ค. ์ด ํ๋ก์ ํธ๋ Twitter๊ฐ ์๋ ํ๋ ์์ํฌ๋ฅผ ๊ฐ๋ฐํ ํ์ฌ์ธ BackType์ ์ธ์ํ ํ Apache ์ปค๋ฎค๋ํฐ์ ๋๊ฒจ์ก์ต๋๋ค. ์ค์ ๋ก Storm์ BackType์์ ์ฌ์ฉ๋์ด ์๋ก์ด ํธ์๊ณผ ๊ทธ ์์ ์ฌ์ฉ๋ ๋งํฌ๋ฅผ ์ฆ์์์ ๋น๊ตํจ์ผ๋ก์จ ๋ง์ดํฌ๋ก๋ธ๋ก๊ทธ์ ์ด๋ฒคํธ ๋ฐ์์ ๋ถ์ํ์ต๋๋ค(์๋ฅผ ๋ค์ด ํธ์ํฐ์ ๊ฒ์๋ ์ธ๋ถ ๋งํฌ๋ ๊ณต์ง ์ฌํญ์ด ๋ค๋ฅธ ์ฐธ๊ฐ์์ ์ํด ์ด๋ป๊ฒ ์ฌ๋ฐฉ์ก๋์๋์ง ํ๊ฐ๋์์ต๋๋ค). ).
Storm์ ๊ธฐ๋ฅ์ Hadoop ํ๋ซํผ๊ณผ ๋น๊ต๋ฉ๋๋ค. ์ฃผ์ ์ฐจ์ด์ ์ ๋ฐ์ดํฐ๊ฐ ์จ์ดํ์ฐ์ค์ ์ ์ฅ๋์ง ์๊ณ ์ธ๋ถ์์ ์์ง๋์ด ์ค์๊ฐ์ผ๋ก ์ฒ๋ฆฌ๋๋ค๋ ์ ์ ๋๋ค. Storm์๋ ๋ด์ฅ๋ ์คํ ๋ฆฌ์ง ๊ณ์ธต์ด ์์ผ๋ฉฐ ๋ถ์ ์ฟผ๋ฆฌ๋ ์ทจ์๋ ๋๊น์ง ๋ค์ด์ค๋ ๋ฐ์ดํฐ์ ์ ์ฉ๋๊ธฐ ์์ํฉ๋๋ค(Hadoop์ ์ ํ ์๊ฐ MapReduce ์์ ์ ์ฌ์ฉํ๋ ๋ฐ๋ฉด Storm์ "ํ ํด๋ก์ง"๋ฅผ ์ง์์ ์ผ๋ก ์คํํ๋ค๋ ์์ด๋์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค). ํธ๋ค๋ฌ ์คํ์ ์ฌ๋ฌ ์๋ฒ์ ๋ถ์ฐ๋ ์ ์์ต๋๋ค. Storm์ ์๋ก ๋ค๋ฅธ ํด๋ฌ์คํฐ ๋ ธ๋์ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ ์๋์ผ๋ก ๋ณ๋ ฌํํฉ๋๋ค.
์ด ์์คํ
์ ์๋ Clojure๋ก ์์ฑ๋์์ผ๋ฉฐ JVM ๊ฐ์ ๋จธ์ ๋ด๋ถ์์ ์คํ๋ฉ๋๋ค. Apache Foundation์ Storm์ Java๋ก ์์ฑ๋ ์ ์ปค๋๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ๋ ๊ณํ์ ์์ํ์ผ๋ฉฐ ๊ทธ ๊ฒฐ๊ณผ๋ Apache Storm 2.0 ๋ฆด๋ฆฌ์ค์์ ์ ์๋์์ต๋๋ค. ํ๋ซํผ์ ๋ชจ๋ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์๋ Java๋ก ๋ค์ ์์ฑ๋์์ต๋๋ค. Clojure์์ ํธ๋ค๋ฌ ์์ฑ์ ๋ํ ์ง์์ ์ ์ง๋์์ง๋ง ์ด์ ๋ ๋ฐ์ธ๋ฉ ํํ๋ก ์ ๊ณต๋ฉ๋๋ค. Storm 2.0.0์๋ Java 8์ด ํ์ํฉ๋๋ค. ๋ฉํฐ์ค๋ ๋ ์ฒ๋ฆฌ ๋ชจ๋ธ์ด ์์ ํ ์ฌ์ค๊ณ๋์ด ๋ค์์ ํ์ฉํฉ๋๋ค.
์ ๋ฒ์ ์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์คํ์ผ ์์ ์ ์ฌ์ฉํ์ฌ ํธ๋ค๋ฌ๋ฅผ ์ ์ํ ์ ์๋ ์๋ก์ด ํ์์ Streams API๋ ์ ๊ณตํฉ๋๋ค. ์๋ก์ด API๋ ํ์ค ๊ธฐ๋ณธ API ์์ ๊ตฌํ๋๋ฉฐ ์์ ์๋ ๋ณํฉ์ ์ง์ํ์ฌ ์ฒ๋ฆฌ๋ฅผ ์ต์ ํํฉ๋๋ค. ์ฐฝ ์์ ์ ์ํ Windowing API์๋ ๋ฐฑ์๋์์ ์ํ๋ฅผ ์ ์ฅํ๊ณ ๋ณต์ํ๊ธฐ ์ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
๋ค์์ ๊ตญํ๋์ง ์๋ ๊ฒฐ์ ์ ๋ด๋ฆด ๋ ์ถ๊ฐ ์์์ ๊ณ ๋ คํ๋๋ก ์ง์
๋คํธ์ํฌ ๋ฐ GPU ์ค์ ๊ณผ ๊ฐ์ CPU ๋ฐ ๋ฉ๋ชจ๋ฆฌ. ํ๋ซํผ๊ณผ์ ํตํฉ์ ๋ณด์ฅํ๊ธฐ ์ํด ๋ง์ ๊ฐ์ ์ด ์ด๋ฃจ์ด์ก์ต๋๋ค.
Storm ์ ์ฉ ๋ถ์ผ:
- ์๋ก์ด ๋ฐ์ดํฐ ์คํธ๋ฆผ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋ฐ์ดํธ๋ฅผ ์ค์๊ฐ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
- ์ฐ์ ์ปดํจํ : Storm์ ์ฐ์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ณ ์ฐ์ ์คํธ๋ฆผ์ ์ฒ๋ฆฌํ์ฌ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ค์๊ฐ์ผ๋ก ํด๋ผ์ด์ธํธ์ ์ ๋ฌํ ์ ์์ต๋๋ค.
- RPC(๋ถ์ฐ ์๊ฒฉ ํ๋ก์์ ํธ์ถ): Storm์ ๋ฆฌ์์ค ์ง์ฝ์ ์ธ ์ฟผ๋ฆฌ์ ๋ณ๋ ฌ ์คํ์ ์ ๊ณตํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. Storm์ ์์ (โํ ํด๋ก์งโ)์ ์ฒ๋ฆฌ๊ฐ ํ์ํ ๋ฉ์์ง๊ฐ ๋์ฐฉํ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๋ ธ๋ ์ ์ฒด์ ๋ถ์ฐ๋ ๊ธฐ๋ฅ์ ๋๋ค. ๋ฉ์์ง๋ฅผ ๋ฐ์ ํ ํจ์๋ ์ด๋ฅผ ๋ก์ปฌ ์ปจํ ์คํธ์์ ์ฒ๋ฆฌํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค. ๋ถ์ฐ RPC๋ฅผ ์ฌ์ฉํ๋ ์๋ก๋ ๊ฒ์ ์ฟผ๋ฆฌ๋ฅผ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ๊ฑฐ๋ ๋๊ท๋ชจ ์งํฉ ์งํฉ์ ๋ํ ์์ ์ ์ํํ๋ ๊ฒ์ ๋๋ค.
ํญํ์ ํน์ง:
- ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ํฌ๊ฒ ๋จ์ํํ๋ ๊ฐ๋จํ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ๋๋ค.
- ๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ง์ํฉ๋๋ค. Java, Ruby ๋ฐ Python์ฉ ๋ชจ๋์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ง์ํ๋ ๋ฐ ์ฝ 100์ค์ ์ฝ๋๊ฐ ํ์ํ ๋งค์ฐ ๊ฐ๋จํ ํต์ ํ๋กํ ์ฝ ๋๋ถ์ ๋ค๋ฅธ ์ธ์ด์ ๋ํ ์ ์๋ ์ฝ์ต๋๋ค.
- ๋ด๊ฒฐํจ์ฑ: ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์ ์ ์คํํ๋ ค๋ฉด ์ฝ๋๊ฐ ํฌํจ๋ jar ํ์ผ์ ์์ฑํด์ผ ํฉ๋๋ค. Storm์ ์ด jar ํ์ผ์ ํด๋ฌ์คํฐ ๋ ธ๋ ์ ์ฒด์ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌํ๊ณ , ์ด์ ๊ด๋ จ๋ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ฐ๊ฒฐํ๊ณ , ๋ชจ๋ํฐ๋ง์ ๊ตฌ์ฑํฉ๋๋ค. ์์ ์ด ์๋ฃ๋๋ฉด ๋ชจ๋ ๋ ธ๋์์ ์ฝ๋๊ฐ ์๋์ผ๋ก ๋นํ์ฑํ๋ฉ๋๋ค.
- ์ํ์ ํ์ฅ์ฑ. ๋ชจ๋ ๊ณ์ฐ์ ๋ณ๋ ฌ ๋ชจ๋์์ ์ํ๋๋ฉฐ, ๋ก๋๊ฐ ์ฆ๊ฐํ๋ฉด ์ ๋ ธ๋๋ฅผ ํด๋ฌ์คํฐ์ ์ฐ๊ฒฐํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ถฉ๋ถํฉ๋๋ค.
- ์ ๋ขฐํ ์ ์์. Storm์ ๋ค์ด์ค๋ ๋ชจ๋ ๋ฉ์์ง๊ฐ ์ ์ด๋ ํ ๋ฒ์ ์์ ํ ์ฒ๋ฆฌ๋๋๋ก ํฉ๋๋ค. ๋ชจ๋ ํธ๋ค๋ฌ๋ฅผ ํต๊ณผํ ๋ ์ค๋ฅ๊ฐ ์์ ๊ฒฝ์ฐ ๋ฉ์์ง๋ ํ ๋ฒ๋ง ์ฒ๋ฆฌ๋๋ฉฐ, ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ์คํจํ ์ฒ๋ฆฌ ์๋๊ฐ ๋ฐ๋ณต๋ฉ๋๋ค.
- ์๋. Storm์ ์ฝ๋๋ ๊ณ ์ฑ๋ฅ์ ์ผ๋์ ๋๊ณ ์์ฑ๋์์ผ๋ฉฐ ๋น ๋ฅธ ๋น๋๊ธฐ ๋ฉ์์ง์ ์ํด ์์คํ
์ ์ฌ์ฉํฉ๋๋ค.
์ ๋กMQ .
์ถ์ฒ : opennet.ru