one of a kind scene

4-1 데이터 처리 프로세스_대용량의 비정형 데이터 처리방법 본문

ADP/이론

4-1 데이터 처리 프로세스_대용량의 비정형 데이터 처리방법

specialscene 2019. 11. 18. 01:04

대용량의 비정형 데이터 처리방법

 

1. 대용량 로그 데이터 수집

     ① 로그(log)

          • 로그(log)는 기업에서 발생하는 대표적인 비정형 데이터로, 과거에는 문제 상황 보존을 위해 사용했고

          • 최근에는 마케팅/영업 전략 수립을 위한 사용자의 행태 분석 등에 사용

          • 용량이 방대하기 때문에 이를 분석하기 위해서는 고성능과 확장성을 가진 시스템이 필요

          • 로그 데이터 수집 시스템의 예 : 아파치 Flume_NG, 페이스북 Scribe, 아파치 Chukwa 등

     ② 대용량 비정형 데이터 수집 시스템의 특징

          • 초고속 수집 성능과 확장성

          • 데이터 전송 보장(안전성) 매커니즘

             - 성능과 안전성이라는 트레이드 오프(Trade-Off)가 존재

          • 다양한 수집과 저장 플러그인

             - 다양한 비정형 데이터를 몇가지 설정만으로도 수집이 가능하도록 내장 플러그인 제공

          • 인터페이스 상속을 통한 애플리케이션 기능 확장

 

2. 대규모 분산 병렬 처리

     ① 하둡(Hadoop)

          • 맵리듀스(MapReduce)시스템과 분산 파일시스템인 HDFS를 핵심 구성요소로 가지는 플랫폼 기술

          •  여러 대의 컴퓨터를 마치 하나의 시스템인 것처럼 묶어 분산 환경에서 빅데이터를 저장 및 처리할 수 있도록 하는 자바 기반의 오픈소스 프레임워크

          • 하둡은 비공유(Shared Nothing) 분산 아키텍처 : 비공유니깐 서버 추가하는 만큼 연산기능 및 저장기능이 향상됨

 

     ② 하둡의 특징

          • 선형적인 성능과 용량 확장 

             - 이론적으로 서버의 대수 제한 없고, 통상적으로 최소 클러스터 대수는 5대

             - 비공유 분산 아키텍쳐 시스템이기 때문에 서버르르 추가하면 연산기능과 저장기능이 서버의 대수에 비례해 증가

          • 고장 감내성

             - HDFS에 저장되는 데이터는 3중복제 되어 서로 다른 물리서버에 저장되어 데이터 유실을 방지할 수 있음

             - 특정 태스크에서 장애가 생기면, 시스템이 자동으로 감지해 장애가 발생한 특정 테스크만 다른서버에서 재실행 가능

          • 핵심 비즈니스 로직에 집중

             - 하둡의 맵리듀스는 맵과 리듀스라는 2개의 함수만 구현하면서 동작

             - 맵리듀스라는 데이터 처리분석 방식만 이해하고 비즈니스 목적에 맞게 간단한 코드만 작성하면, 데이터가 그고 작음에 신경 쓰지 않아도 된다.

          • 풍부한 에코시스템 형성

 

3. 하둡 에코시스템

하둡 에코시스템(출처 : 시작하세요! 하둡 프로그래밍(위키북스)

     - Zookeeper : 서버들간의 상호 조정이 필요한 다양한 서비스 제공

     - Oozie : 워크플로우 및 코디네이터 시스템

 

     - Hbase : HDFS기반의 컬럼 NoSQL 데이터베이스

 

     - Pig : 복잡한 MapReduce 프로그래밍을 대체할 Pig Latin 언어 제공

     - Hive : 하둡 기반의 데이터웨어하우스, 테이블단위의 데이터 저장과 HiveQl 쿼리를 지원

   

     - Mahout : 하둡 기반으로 데이터 마이닝 알고리즘을 구현한 오픈 소스 라이브러리

 

     - Hcatalog : 하둡 기반의 테이블 및 스토리지 관리

 

     - Avro : RPC(Remote Procedure Call)과 데이터 직렬화를 지원하는 프레임워크

 

     - Chukwa : 분산 환경에서 생성되는 데이터를 HDFS에 안정적으로 저장시키는 플랫폼

     - Flume : 소스서버에 에이전트가 설치되고, 에이전트로부터 데이터를 전달받는 콜렉터로 구성

     - Scribe : 페이스북에서 개발된 데이터 수집 플랫폼, Chukwa와 달리 중앙집중서버로 전송

 

     - Sqoop : 대용량 데이터 전송 솔루션, HDFS, RDBMS, DW, NoSQL 등 다양한 저장소에 대용량 데이터를 신속하게 전송할 수 있는 방법 제공

     - Hiho : Sqoop과 같은 대용량 데이터 전송 솔루션으로 하둡에서 데이터를 가져오기 위한 SQL을 지정할 수 있으며, JDBC 인터페이스 지원

 

     - YARN은 맵리듀스 단점을 극복하기 위해 하둡 2.0부터 제공되는 프로젝트로 분산 애플리케이션을 구현하기 위한 자원 관리 프레임워크를 지원

 

<표 : 하둡 에코시스템의 구성>

구분 주요기술
데이터 수집 Flume-NG, kafka
데이터 연동 Sqoop
분산 데이터베이스 Hbase
대용량 SQL질의 Hive, Pig
실시간 SQL질의 Impala, Tajo
워크플로 관리 Oozie, Azkaban


4. 데이터 연동 : Sqoop

     • 비정형 데이터로 분석을 수행하기 위해서는 기업 내의 정형 데이터와 분석하고자 하는 비정형 데이터를 연동하는 것이 필요

     • 하지만, 데이터베이스를 대상으로 맵리듀스와 같은 대규모 분산 병렬 처리를 하는 것은 심한 부하를 야기

     • 따라서, 데이터베이스의 데이터를 하둡으로 복사한 후 하둡에서 대규모 분산처리를 수행

     • 그 결과로 생성된 작은 요약 데이터 셋을 다시 데이터 베이스에 기록하는 방식으로 작업을 수행

     • 이때, 데이터 연동 기능 수행하는 대표적인 오픈 소스 솔루션이 스쿱(Sqoop)

     • 스쿱(Sqoop)은 MySQL, PostgreSQL, 사이베이스 등 JDBC를 지원하는 대부분의 관계형 데이터베이스와의 연동을 지원

     • Import 명령어를 이용하여 RDBMS → HDFS로 데이터를 옮김

     • Export 명령어를 이용하여 HDFSRDBMS로 데이터를 옮김

 

5. 대용량 질의 기술(병렬 쿼리 시스템)

     • 하둡은 코딩이 필요하기 때문에 분석가에게는 어려움

     • 따라서, 사용자에게 친숙한 SQL이라는 질의 기술을 이용하여 하둡에 저장된 데이터를 쉽게처리하고 분석할 수 있도록 해주는 하이브(Hive)가 등장

     • Sawzall, Hive, Pig 가 대용량 질의 기술(병렬 쿼리 시스템)에 해당 / SQL on 하둡 기술과는 구분됨!!!!

     • But, 하둡과 하이브는 대용량 데이터를 배치 처리하는데 최적화 되어있음

     • 실시간 조회 및 처리에 대한 제약을 극복하기 위해 실시간 SQL질의 분석 기술인 SQL on 하둡이 등장

 

6. SQL on 하둡 기술의 종류

     • 아파치 드릴(Drill)

     • 아파치 스팅거(Stinger) : 호튼웍스에서 개발

     • 샤크(Shark)

     • 아파치 타조(Tajo) : 고려대 대학원에서 시작된 프로젝트

     • 임팔라(Impala) : 클라우데라(Cloudera)에서 개발

     • 호크(HAWQ)

     • 프레스토 : 페이스북에서 자체적으로 개발