본문 바로가기

카테고리 없음

하둡이란 .. ?

 하하, 원래 스레드와 멀티스레드에 대해서 포스팅 하려고 했는데, 그것은 잠시만 미룰게요!

죄송합니다ㅠㅠ

 갑자기 스레드가 게임에서 어떻게 쓰이는지 보고싶어서 엔씨소프트 홈페이지에 들어가봤는데..

 

엔씨소프트 공식 블로그 (출처:https://blog.ncsoft.com/rd/all/)

 위 사진은 엔씨소프트의 공식 블로그 캡쳐사진인데요, 저도 처음 들어가봤어요 ㅎㅎ

 

 엔씨소프트 공식블로그에 보면, 엔씨소프트에서 올린 다양한 컨텐츠가 ! 두둥 ! 그 중에는 R&D도 있고 ㅎㅎ

그래서 언제부터 있나 봤더니, 무려 2014년부터 꾸준히 올려주셨더라구요! (관리자분 감사드립니다ㅠㅠ)

 

 2014년의 첫 컨텐츠는 무려! 하둡! HADOOOOOOOOOOP! 하둡~ 지금은 아주 핫해진 기술인데, 저도 데이터 처리 응용소프트웨어, 빅데이터 분야에서 많이 사용한다? 라고만 알고 있었어요 .. 반성해야합니다ㅠㅠ 엔씨소프트가 하둡을 도입한 2011년 당시 하둡을 사용하는 기업이 우리나라엔 별로 없었을텐데, 엔씨소프트 점점 가고싶은 회사네요!

 

 여담을 잠깐 하자면, 개발자 커뮤니티에서 리팩토링에 대한 견해들이 올라온 적이 있는데..

내용은 대기업인데도 불구하고 리팩토링을 불필요한 작업이라고 생각하는 기업도 많다는 것! (제 소스처럼.. ㅠㅠ)

그런데도, 당시 엄청나게 점유율을 높이던 하둡을 빠르게 받아들인 기업이라니.. 탐나요ㅠㅠ

  

 알아본 결과, 하둡은 두가지 기능을 위한 응용소프트웨어입니다! 

 그 2가지 기능은 병렬처리와 분산저장입니다. 

 

 우선 병렬처리, 병렬이란 직렬의 반대말로,

직렬 프로그래밍은 CPU가 한가지 일만 하도록 만드는 프로그래밍 방식입니다. 예를 들어, 빨대(처리방식)이 하나인데, 컵(CPU)이 두개가 된다고 두 음료를 한번에 마실수는 없겠죠? 병렬처리를 통해 CPU의 성능을 최대화하는 것입니다. 

 

 위의 예를 보면, 빨대를 두개로 늘리거나 한개의 빨대를 두 컵에 동시에 연결하는 방식을 생각해볼 수 있는데요! 

동시에 작업이 이루어지는 느낌! 동시성! 이 느껴지나요?

 CPU는 한번에 한가지 일밖에 못합니다. (그래서 코어가 여러개인 CPU가 인기를 끌었습니다!만 CPU가 여러 코어를 가지고 있다고해서 .. 여러일을 수행하긴 힘들죠.. )

그런 CPU에게 프로그래밍적으로(?) 동시에 여러 일을 처리하도록 하는 것이 병렬처리 프로그래밍입니다.

 병렬처리는 두가지 일을 동시에 가능케하지만, 두 음료를 한번에 먹는 것.. 어떤 맛일지 어떤 파장을 일으킬지 모르는 위험이 항상 도사리고 있습니다. 이렇듯 병렬처리를 채택할 때는 신중히 해야겠죠?! 병렬처리는 여기까지하고,

(나중에 병렬처리에 대해 깊게 배워 설명하는 포스팅도 진행하도록 하겠습니다^^)

 

 그 다음, 분산저장입니다. 여러 개의 물리디스크를 마치 연결한 하나의 디스크처럼 사용하는 기술을 말하는 것이죠..!

각각의 디스크는 다르지만, 사실 하나의 디스크처럼 사용하게 하는 기술입니다.

 이는 데이터의 안정성과 성능을 높여줄 수 있어요.

 성능이라면, 고성능의 서버 한 대를 쓰는 것이 물론 좋습니다. 하지만, 수많은 데이터를 처리하고 전송하기에 한 대의 서버를 계속 코어를 늘리는 방식으로 성능개선 하는 것은 비용이 어마어마하겠죠.. 그래서 저사양의 서버들로 구성하여 각 서버에서 단순한 처리를 하고 전송하는 방식으로 구현하여, 서버 한 대가 고장나서 데이터가 다 날라가는 일도 줄이는 것이 분산저장 방식입니다.

 하지만, 수도 없이 데이터를 많은 저사양 컴퓨터들이 처리하고 전송하는 속도가 너무 커져, 오히려 성능 저하를 일으키게 됩니다. 이를 해결한 것이, 구글의 유명한 맵리듀스 방식이구요!(여기서 맵리듀스 방식은 너무 길어져 생략..하겠습니다ㅠㅠ) 하둡 역시, 맵리듀스 방식을 기반으로 자신만의 분산 저장(HDFS)을 구현하였습니다. 

 

 이렇게 두가지를 핵심으로 하는 것이 하둡이지만,

 하둡은 병렬처리의 위험성, 즉, 트랜잭션이나 데이터 무결성을 보장하지는 않습니다.

 아까 말한 위험성이 중요한 은행 입출금 등의 업무에는 맞지 않는 것이죠.. 대신 그런 부분은 DBMS에 맡기고 하둡은 빠른 병렬처리에 집중합니다. 그게 하둡의 장점이기도 단점이기도 하구요!

 그러니 , 엔씨소프트에서 게임로그 같은 데이터를 저장하기엔 최적인거죠! 굿초이스랄까 ?ㅎㅎ

 

 하둡에 대해 간단하고 부족하게 설명했는데, '하둡은 이런거구나~' 생각하시고 도움이 되었으면 합니다^^

 이번 포스팅은 이렇게 마치겠습니다. 감사합니다.