빅데이터와 빅데이터 플랫폼에 대한 개인적인 생각들을 정리합니다.
빅데이터
요즘 4차 산업혁명이라는 말과 함께 여기저기에서 빅데이터
라는 단어를 들을 수 있다. 또한 빅데이터에 대한 정의는 아직까지 사람마다, 업계마다 조금씩 다른 것 같다. 그런 의미에서 빅데이터에 관심있는 사람들은 한 번쯤 “빅데이터란 어느정도 크기의 데이터를 말하는걸까?” 하는 고민이 있었을 것이다. 개인적으로 생각했던 빅데이터의 기준은 “하나의 컴퓨터(서버)로 핸들링할 수 없는 크기의 데이터”이다. 이렇게 생각한 근거는 개인적인 경험에 있다.
옛날에 주식데이터 분석 프로젝트에서 예상치 못한 난관을 만났던 적이 있다. 주식데이터를 열심히 크롤링해서 많은 데이터 소스를 가지게 되었고 이를 바탕으로 데이터 분석을 진행하려고 하였으나, 하나의 컴퓨터에서 모아둔 모든 데이터를 매니징 할 수 없었다. 파일을 전부 열 수도 없었고, 그렇기에 분석도 진행할 수 없었다. 물론 아마도 실제 운영에 사용하는 서버였다면 가능했겠지만 우리는 현재 사용중인 노트북이 전부였기에 이런 부분은 예상하지 못한 문제였던 것이다. 그 때 “아, 이게 빅데이터구나” 라는 것을 느꼈다. 빅데이터는 절대적인 크기가 있는 것이 아니라 제공된 자원에서 일반적인 방식으로 관리할 수 없는 크기의 데이터라는 생각이 문뜩 스쳐갔다.
빅데이터 플랫폼
그렇다면 위 상황에서 우리의 선택은 무엇이겠는가? 바로 빅데이터를 처리할 수 있는 여러 도구들을 찾아봤으며, 그 중 현실적으로 가능한 방안이 바로 저렴한 라즈베리 파이로 하둡 클러스터를 구축하는 것이었다. (클러스터 구축 관련된 글은 이 링크를 클릭하면 볼 수 있다) 이때 처음 서버 여러 대를 하나의 컴퓨터처럼 사용하는 빅데이터 플랫폼에 대해서 알게 되었다.
하둡(Hadoop)
하둡은 대표적인 빅데이터 플랫폼 중 하나로, 여러 대의 서버를 클러스터로 구축하여 데이터들을 분산처리를 할 수 있는 플랫폼이다. 하둡의 구성은 크게 파일 저장소인 HDFS와 리소스 매니징을 담당하는 YARN으로 구성되어 있으며, 하둡에 저장된 모든 데이터에 관련된 처리는 맵리듀스(MR, MapReduce)라는 엔진으로 이루어진다. 즉, 하둡을 사용하기 위해서는 맵리듀스 요청 프로그램을 직접 작성할 수 있어야 한다. 하둡은 자바(JAVA) 언어로 만들어졌기에 요청 프로그램도 자바로 작성한다. 그 후 “jar” 파일을 생성해서 MR엔진이 있는 YARN을 통해 실행시키면 된다.
그렇다면 자바 개발자만 하둡을 사용할 수 있는가? 과거에는 그랬다. 하지만 지금은 많은 에코 시스템이 생겼기 때문에 sql문으로도 하둡 클러스터에 저장된 데이터를 가져올 수 있다. sql엔진으로는 하이브(hive)와 임팔라(impala), 스파크(spark) 등이 있다. 이처럼 하둡을 기반으로 한 여러 에코 시스템들이 존재한다. 현재 빅데이터 엔지니어로 일하면서 하둡 및 에코 시스템들을 실제 업무에서 사용하고 있으며, 또 공부한 내용들을 블로그에 하나씩 저장해두려고 한다. 다음 글부터는 하둡의 코어 서비스인 HDFS와 YARN를 시작으로 삼아 각각의 에코 시스템들을 기본 아키텍쳐에 대해서 정리할 계획이다.