데이터실무
DA, SQL, DB보안 등 실무자를 위한 위한 DB기술 바이블!
지금까지는 데이터베이스에 데이터를 저장하고 이를 SQL 쿼리로 분석했다. 그렇기 때문에 데이터가 트랙잭션 데이터인지, 분석과 리포트 데이터인지에 따라 DBMS가 달라져야만 했다. 바야흐로 모든 기기가 인터넷에 연결되는 사물인터넷 시대가 도래했다. 사물인터넷에서 발생하는 데이터는 흔히 말하는 대용량 데이터이기 때문에 전통적인 DBMS에서 저장ㆍ처리하기에는 한계가 따를 수 있다. 맵리듀스(MapReduce)는 2004년 구글에서 대용량 데이터를 분산처리하기 위해 발표한 대용량 분산 처리 프레임워크다. 이 프레임워크는 테라바이트 또는 페타바이트 이상의 대용량 데이터를 저렴한 x86 서버를 클러스터링해 분산 처리한다. 하둡 맵리듀스(MapReduce)는 HDFS(Hadoop Distributed File System)에 저장된 데이터를 처리하기 위한 기술 가운데 하나이다. 맵리듀스의 특징은 다음과 같다. 맵리듀스는 간단히 맵과 리듀스의 메소드로 구성된다. 이들 처리는 다음과 같다. 맵 메소드는 K1과 V1으로 구성된 데이터를 입력 받아서 사용자 로직에 따라 분류ㆍ가공돼 K2, V2라는 리스트를 반환한다. 당연히 K2는 여러 개가 될 수 있다. 즉, 다른 키의 종류가 많다는 것을 의미하며, 리듀스는 K2로 그룹핑된 리스트를 입력을 받아 집계 처리해 새로운 K3와 V3를 반환한다. 이것의 절차를 [그림 Ⅲ-1-1]에서 워드카운트 맵리듀스로 표현해 보았다. [그림 Ⅲ-1-1] 맵리듀스 처리 과정 맵리듀스 프레임워크는 하둡 1.x 버전과 2.x 버전이 다르다. 그렇다고 맵리듀스 코드까지 아주 달라진 것은 아니다. 기존의 하둡 1.x로 만든 맵리듀스 코드는 하둡 2.x에서도 잘 실행된다. 이것은 YARN 기반의 하둡 2.x에서 호환성을 유지하기 때문이다. 하둡 1.x 버전으로 만든 맵리듀스 프레임워크를 설명한 다음, 후반부에 YARN에 대해 소개하겠다.개요
분산 환경은 시스템의 성능과 저장 측면에서 발달해왔다. 정보를 빠르게 처리하는 것이 분산처리의 목적이라면, 분산 저장 시스템은 저장공간을 효율적으로 확장하는데 역점을 두고 있다. 이 차원에서 구글은 「The Google File System」과 「MapReduce」라는 논문을 통해 분산 저장 및 처리 기술을 공개했다. 이를 참조해 하둡(Hadoop)이라는 기술이 등장해 빠르게 발전하고 있다. 현재의 하둡 2.x버전은 1.x 버전에서 많은 혁신을 이룩했다. 1.x 버전에서 대표적인 기술 2개는 데이터 저장을 위한 HDFS와 데이터 처리를 위한 맵리듀스(MapReduce)다. 2.x 버전부터는 자원관리의 핵심인 YARN을 기반으로 수많은 컴포넌트들이 추가되면서 발전하고 있다. 여기에서는 맵리듀스를 기반으로 데이터를 처리하는 것에 초점을 두며. 로컬 또는 클러스터 환경이 구축돼 있다고 전제하고 하둡을 소개한다.
맵리듀스
맵리듀스에서 데이터를 처리하는 기본 단위는 매퍼(Mapper)와 리듀스(Reduce)다. 많은 양의 데이터를 맵리듀스 형태로 작성하면, 클러스터링 환경에서 효과적으로 분산 처리할 수 있다. 맵리듀스의 핵심은 입력과 출력이며 Key와 Value로 구성된다. 맵(Map)은 산재된 데이터를 키와 벨류 형태로 연관성이 있는 데이터로 묶는 작업을 하며, 리듀스는 맵 작업 결과에서 중복 데이터를 제거한 후 원하는 데이터를 추출하는 작업을 수행한다.
하둡에서 잡은 1:n 방식으로 실행되는데, 1은 잡트레커라고 할 수 있고 n은 태스크 트레커라고 할 수 있다. 잡트레커는 태스크 트레커가 수행할 각각의 태스크를 스케줄링해 시스템 내에서 수행하는 모든 잡이 실행되도록 조절하는 역할을 수행한다. 태크스(Task) 트레커는 각각의 태스크를 수행한 후, 각각의 실행 결과를 잡트레커에 보내는 역할을 한다. 맵리듀스의 논리적 데이터 처리 절차는 다음과 같다.
맵리듀스의 특징
맵리듀스의 개념
맵리듀스 프레임워크