Search

2016년 10월 22일 토요일

[Bigdata] [Talking] 빅데이터, 하둡, 스파크에 대한 잡담.

#1. 들어가기
필자는 현재 빅데이터 관련 분야에서 일을 하고있데, 최근들어 많이 받는 질문들이 몇 개 있다.
간단하게 주저리주저리 개인적인 생각을 정리해보고자 한다.


#2. 빅데이터는 뭐야?
정말 어려운 말이 될 수도 있고, 정말 쉬운 말이 될 수도 있다.
때로는 무수하게 쌓인 데이터를 보고 단순하게 빅데이터라 부르기도 하는데, 우리는 주로 가공하고 정제하여 활용가치가 있는 커다란 데이터를 보고 빅데이터라 부른다.

예를 들어, 플라스틱 패트병과 알루미늄 캔들이 있다고 해보자. 우리는 이것들을 모아 재활용하여 하나의 자원으로 재활용 해서 쓸 수 있다. 하지만, 쓰래기 매립장에서 미친듯이 뒤섞여있는 플라스틱 패트병과 알루미늄 캔들을 보고 자원이라 부르지 않는다. 그저 압착해서 묻혀질 쓰래기일 뿐이다.

다시 데이터로 돌아와 예를 들어보자. 온라인 마켓에서 매일 수백억 줄씩 고객들의 로그데이터가 생성된다고 해보자. 과거에는 그저 '구매'한 결과 기록만을 놓고 고객의 소비 성향을 분석했다. 이때 로그 데이터는 그저 무지막지하게 큰 데이터 쓰래기일 뿐이었다. 왜냐하면 그것을 분석하는데 필요한 시간과 비용이 터무니없이 큰데 비해 가시화된 소득이 거의 없기 때문이다. 그럼에도 일부 기업들은 그것을 단순하게 '저장'해두었다.
  하지만, 시간이 지나 저장소의 가격이 떨어지고, 컴퓨터의 성능이 향상되어 기존 분석에 추가로 이것저것을 섞어 더 나은 분석을 할만한 환경이 조성되었다. 또한, 새로운 시각이 생겨나기 시작했다. 가령, 고객이 클릭하고 머무른 시간을 살펴보면 무엇인가 의미를 얻을 수 있지 않을까? 그리고 그것을 통해 수익을 늘릴 수 있지 않을까? 라는 식의 접근이다. 게다가 최근 이런 아이디어들을 실현시켜줄 만한 멋진 프로그램들도 많이 나왔다. 그래서 서서히 과거에 쌓인 데이터들에 눈을 돌려 의미를 파악하기 시작했다. 빅데이터라는 이름 아래.

정리하면, 빅데이터는 무지막지하게 큰 데이터가 맞다. 하지만 그 속에서 의미를 찾을 수 있어야만 진정한 빅데이터라 할 수 있다.


#3. 하둡이 뭐야? 스파크가 뭐야?
최근에 여기저기에서 빅데이터를 언급하다보니 주변 친구들중 일부 관심이 있는 사람이라면 Hadoop, Spark란 말까지 듣고 물어보는 경우가 있다. 하둡에 대해 찾아보면 어려운말도 많고 이것저것 이론에 대해 많이 나온다. 하지만, 그런 말들을 비전공자들이 이해할 수 있을리는 만무하다...

필자는 아주아주 간단하게 이렇게 설명해준다.
아주아주 커다란 데이터를 하드디스크 하나에 다 저장할 수 없으면 여러개로 조각내서 여러개의 하드디스크에 저장해야 하겠지? 우리는 Hadoop을 이용해 그렇게 할 수 있고, HDFS(하둡분산파일시스템)이라고 불러. 그런데 여기저기다 잘라서 넣어놨는데, 이것들을 가지고 분석을 해야만 한다고 생각해봐... 조각난 부분들의 값들을 일일이 찾아보고 종합해서 집계를 하려면 엄청 오래 걸리겠지? 그래서 그걸 조금 더 빠르고 쉽게 하려고 메모리를 이용해. 그걸 가능하게 만드는게 Spark라는 친구야.


#4. 하둡이랑 스파크 써서 분석하면 더 좋아?
보통은 위의 질문에서 이 질문까지 넘어오곤 한다. 결론부터 말하면 상황에 따라 다르다고 말할 수 있다.
왜 그런말도 있지 않은가... 닭잡는데 닭칼 쓰고, 소잡는데 소칼 써야한다고...

엑셀로도 간단하게 정제해서 그래프를 그리고 의미를 파악할 수 있는데, 굳이 하둡에 데이터 밀어 넣고, 스파크로 가공한 후에 R로 차트를 그려야할만한 이유가 있을까...?
  어떤 일이든 상황에 맞는 적절한 대처 방법이 있을 것이다. 빅데이터 기술을 사용하기 전에 먼저 지금 놓여있는 상황을 살펴보고 진행하는 것이 바람직하다고 생각한다. 기존의 데이터베이스로도 충분히 빠르고 정확하게 데이터를 핸들링하여 유의미한 정보를 뽑아낼 수 있는데 굳이 주변 환경에 휩쓸려 NoSQL환경도 적용해보고, 분산병렬처리도 해보고싶다 한다면... 정말 말려주고 싶다...
  한 평짜리 밭에서 농장물을 재배하는데 삽 하나면 충분하지 않은가? 굳이 옆마을에서 최신식 경운기를 들여와 농작물 수확 잘했다고 해서 내가 경운기를 살 필요는 없지 않나...?

만약, 데이터가 정말 방대해서 분석하기 어려운 상황이거나, 이미 데이터를 분산해 관리하고 있는 환경이라고 한다면 물론 '예스'라고 대답해줄 수 있겠다. 일반적인 데이터베이스에 약 100억건정도 데이터를 넣고 핸들링 해본다면 왜 분산병렬처리가 필요한지 슬슬 깨닫게 된다. 물론 이때에도 많은 상황들이 고려되어져야 하겠지만... 가령 트랜젝션 처리에 최적화를 시켜야 하느냐, Join이 빈번하게 발생하는 상황에 놓여있느냐, R/W에 최적화를 해야하느냐 등등... 이 부분은 우선 그렇다 치고 넘어가도록 하자.

중요한 것은, 현재의 상황을 고려한 후 빅데이터 분석환경을 구성해야겠다고 판단했느냐이다.


#5. 정리하며
빅데이터가 국내에서 막 조명을 받기 시작한지 몇년 안되어 이거저거 궁굼한 사람들이 많아지는것 같다. 그래서 주저리주저리 몇자 적어봤는데, 다시 쭉 읽어보니 이미 이 분야를 공부한 한 사람들에게는 별로 도움이 될만한 글이 아닌 것 같다... 뭐 그래도 약간의 독자는 이 글을 읽고 아주 간단하게나마 도움이 되길 바라본다.




댓글 없음:

댓글 쓰기