Big Data 플랫폼 구현기술의 이해
제타바이트의 시대
빅데이터란 기존의 관리 및 분석 체계로는 감당할 수 없을 정도의 거대한 데이터의 집합을 지칭
- 빅데이터의 정의는 데이터 규모와 기술 측면에서 출발했으나, 빅데이터의 가치와 활용효과 측면으로 의미가 확대되는 추세
ICT 주도권이 데이터로 이동
- 모바일, 클라우드, SNS의 등장으로 근본적인 인프라와 데이터의 변화가 일어나며 데이터를 바라보는 시각이 변화
- 축적과 공유를 통해 유의미하게 분석할 수 있는 데이터 자원(빅데이터)이 쌓이자 데이터의 역할은 분석과 추론(전망)의 방향으로 진화
- 빅데이터는 대용량 데이터, 비정형화된 데이터의 수집, 검색, 데이터 전처리 및 분석 기술, 시각화 기술 등이 중요
공간, 시간, 관계, 세상을 담는 데이터
- 최근 소셜 미디어에서 나타나는 행동·이용패턴을 분석하여 기업, 제품에 대한 인식 및 의견을 확인하기 위한 소셜 분석이 이슈
미래 경쟁력과 가치창출의 원천
- 빅데이터는 잠재적 가치와 잠재적 위험이 공존하며, 사회·경제적으로 성패를 좌우하는 핵심 원천이 될 것으로 평가
빅데이터의 3대요소
숨겨진 정보를 채굴하는 디지털 시대의 마이닝
디지털 시대에서는 쌓여 있는 데이터 속에서 유용하고, 가치 있는 정보를 찾기 위한 노력이 끊임없이 진행 중
-
데이터 마이닝(Data Mining)
-
텍스트 마이닝(Text Mining)
-
웹 마이닝
-
소셜 분석, 소셜 마이닝
-
현실 마이닝(Reality Mining)
-
- 사람들의 행동패턴을 예측하기 위해 사회적 행동과 관련된 정보를 기기를 토앻 얻고 분석하는 기법
- 휴대폰 등 모바일 기기들을 통해 현실에서 발생하는 정보를 기반으로 인간관계와 행동 양태 등을 추론
기업들은 수많은 고객·업무·거래 데이터를 활용하여 발 빠른 의사결정, 미래 수요예측, 경영 성과관리에 기여하는 BI전략 도입
데이터 마이닝에서 빅데이터 마이닝으로 맥락 이해와 추론이 기반이 되는 인공지능형 서비스, 상황인식 서비스, 개인맞춤 서비스의 발전
빅데이터의 주요 특성과 요소
- 스마트 시대 주요 패러다임 선도를 위해서는 빅데이터의 활용이 핵심이며, 그 수준이 경쟁력과 성패를 좌우
- 빅데이터의 특성은 일반적으로 3V(Volume, Variety, Velocity)를 기본으로 1V(Value)나 1C(Complexity)의 특성이 추가되어 설명
빅데이터의 3대 요소
- 자원 : 활용할 수 있는 빅데이터 발견하기
- 기술 : 빅데이터 프로세스와 신기술 이해하기
- 인력 : 데이터 사이언티스트 역량 키우기
자원
데이터 경제시대의 도래와 무한한 데이터 자원
활용할 수 있는 빅데이터 발견하기
- 최근에는 웹, 소셜 미디어, 포털 검색 데이터 등을 분석하여 여론 확인, 기업의 마케팅 서비스 등에 적용하는 사례가 증가
- 국내외적으로 공공 데이터의 개발을 확대하는 추세이며, 공공 오픈 데이터를 활용한 다양한 환경 분석이 가능
기술
스마트 시대의 핵심 키(Key): 빅데이터
빅데이터의 처리 프로세스
-
빅데이터란 기존의 관리, 분석체계로는 감당하기 어려운 막대한 데이터집합과 이를 해결하기 위한 플랫폼, 분석 기법 등을 포괄
-
빅데이터와 관련하여 다음과 같은 기술들이 새롭게 등장
-
대용량 데이터 처리 능력을 위한 분석처리 기술 : 하둡(Hadoop) 분산 파일 시스템(HDFS), 분산 데이터베있스(HBase), MapReduce 등
-
인메모리(In-Memory) 기술 : 인메모리 기술에서는 메모리상에 필요한 데이터와 이의 인덱스를 보관함으로써 데이터검색 시간을 크게 줄일 수 있음
-
의미분석 기술과 진보된 알고리즘 및 데이터마이닝 기술 : 예를 들어 통계 계산 및 그래픽을 위한 R언어
-
비정형 데이터를 처리하기 위한 NoSQL 기술 : 아파치 Cassandra 와 CouchDB, 구그르이 BigTable, 아마존 다이나모(Dynamo) DB, IBM Lotus Domino 등
-
-
빅데이터는 데이터 생성 → 수집 → 저장 → 분석 → 표현의 처리 과정을 거치며 각 프로세스마다 세부영역과 관련기술이 등장
-
분석기술은 통계, 데이터 마이닝, 기계학습, 자연어처리, 패턴인식, 소셜 네트워크 분석, 비디오·오디오·이미지 프로세싱 등이 해당
-
빅데이터의 활용, 분석, 처리 등을 포함하는 인프라에는 BI, DW, 클라우드 컴퓨팅, 분삭데이터베이스(NoSQL), 분산 병렬처리, 분산파일시스템 등이 해당
-
인력
빅데이터 시대의 연금술사, 데이터 사이언티스트
- 구조화되지 않은 대규모 데이터 속에서 숨겨진 정보를 찾아내는 데이터 사이언티스트는 스마트 시대에서 최고의 인재
데이터 사이언티스트의 역략과 조건
데이터 과학자의 자질 6가지
- 수학과
- 공학능력
- 비판적 시각
- 글쓰기 능력
- 대화 능력
- 호기심과 개인의 행복
데이터 사이언티스트는 대규모 데이터를 분석한 결과를 생성하고 차별화되게 시각화하여 이해하기 쉽게 전달하는 역량도 중요
- 국내외적으로 데이터 사이언티스트에 대한 공급부족을 인식하고 유능한 인재 육성 프로그램과 교육과정을 개설
- 데이터 사이언티스트는 경영 전략과 밀접한 관계가 있으므로 외부에 아웃소싱인력을 활용하는 것보다는 내재화가 바람직
오픈소스 빅데이터 플랫폼
빅데이터를 둘러싼 전쟁과 시사점
빅데이터 서비스 프레임워크를 통한 공급자 전략의 이해
빅데이터 시장을 이해하기 위해 빅데이터 에코시스템에서 출발해 빅데이터 서비스 프레임워크를 구축
빅데이터 서비스 주도권을 위한 공급자간 전쟁
빅데이터를 둘러싼 경쟁은 크게 다음 3가지로 요약할 수 있음
- 장치 전쟁
- 사용자 확보
- 가치 탐색
하둡이란
데이터 경제시대의 도래와 무한한 데이터 자원
- 대용량 데이터를 처리하는 분산 응용 프로그램을 작성하고 실행시키기 위한 오픈소스프레임워크
- 데이터를 금맥(유용한 정보)을 찾는데 필요한 자원(resource)으로 분다면, 리소스를 키우는 전략은 중요한 성공 전략 중 하나
다른 분산 컴퓨팅과 다른 주된 차이점
- 접근
- 견고성
- 확장가능성
- 간단성
하둡의 특징
- 오픈소스
- 데이터가 있는 곳으로 코드를 이동
- 스케일 아웃
- 단순한 데이터 모델 (MapReduce 프로그래밍)
- 오프라인 배치 프로세싱에 최적화
하둡 에코시스템
하둡은 빅데이터 저장과 처리의 기본적 기능만 제공하기 때문에, 이의 부족함을 보완하는 다양한 오픈소스 소프트웨어들이 필요
-
빅데이터 수집
-
Flume
-
Sqoop
-
-
빅데이터 저장, 활용
- HBase
-
빅데이터 처리
-
Hive
-
Pig
-
Mahout
-
-
빅데이터 관리
-
Oozie
-
HCatalog
-
Zookeeper
-
Zookeeper
- 분산 환경에서 서버 간의 상호 조정이 필요한 다양한 서비스를 제공하는 시스템
- 하나의 서버에만 서비스가 집중되지 않게 서비스를 알맞게 분산해 동시에 처리
- 하나의 서버에서 처리한 결과를 다른 서버와도 동기화해서 데이터의 안정성 보장
- 운영 서버가 문제가 발생해서 서비스를 제공할 수 없을 경우, 다른 대기 중인 서버를 운영서버로 바꿔서 서비스가 중지 없이 제공되게 해줌
- 분산환경을 구성하는 서버들의 환경설정을 통합적으로 관리해줌
Ooozie
- 하둡 작업을 관리하는 워크플로우 및 코디네이터 시스템
- 자바 서블릿 컨테이너에서 실행되는 자바 웹 애플리케이션 서버이며, 맵리듀스 작업이나 프그 작업 같은 특화된 액션으로 구성된 워크플로우를 제어
HCatalog
- 하둡으로 생성한 데이터를 위한 테이블 및 스토리지 관리 서비스
- 가장 큰 장점은 하둡 에코시스템 간의 상호 운영성 향상
- Hive에서 생성한 테이블이나 데이터 모델을 Pig나 맵리듀스에서 손쉽게 이용할 수 있다.
Hive
- 하둡 기반의 데이터웨어하우징용 솔루션
- 페이스북에서 개발 됐으며, 오픈소스로 전환 SQL과 매우 유사한 HiveQL은 내부적으로 맵리듀스 잡으로 변환되어 실행
- 자바를 모르는 데이터 분석가들도 쉽게 하둡 데이터를 분석 할 수 있게 도와줌
Pig
- 야후에서 개발 됐으며, 오픈소스로 전환 SQL과 유사하기만 할 뿐 SQL 지식의 활용은 어려움
- Pig Latin이라는 자체 언어를 제공
- 맵리듀스를 크게 단순화
Mahout
Hbase
- HDFS 기반의 칼럼 기반 데이터베이스
- 실시간 랜덤 조회 및 업데이트 가능하며, 각 프로세스는 개인의 데이터를 비동기적으로 업데이트 할 수 있다. 단 맵리듀스는 일괄 처리 방식으로 수행
Chunkwa
- 분산 환경에서 생성되는 데이터를 HDFS에 안정적으로 저장하는 플랫폼
- 분산된 각 서버에 에이전트를 실행하고 콜렉터가 에이전트로부터 데이터를 받아 HDFS에 저장
- 콜렉터는 100개의 에이전트당 하나씩 구동되며, 데이터 중복 제거 등의 작업은 맵리듀스로 처리
Flume
- Chunkwa 와의 차이점은 전체 데이터의 흐름을 관리하는 마스터 서버가 있어서 데이터를 어디서 수집하고, 어떤 방식으로 전송하고, 어디에 저장할지를 동적으로 변경할 수 있다는 것
Sqoop
- 대용량 데이터 전송 솔루션이며, HDFS, RDBMS, NoSQL등 다양한 저장소는 대용량 데이터를 신속하게 전송할 수 있는 방법을 제공
Hiho
- Sqoop과 같은 대용량 데이터 전송 솔루션, 현재 깃허브(Github)에 공개
- 하둡에서 데이터를 가져오기 위한 SQL을 지정할 수 있으며, JDBC 인터페이스를 지원
Avro
- RPC(Remote Procedure Call)과 데이터 직렬화를 지원하는 프레임워크
- JSON을 이용해 데이터 형식과 프로토콜을 정의하며, 작고 빠른 바이너리 포멧으로 데이터를 직렬화한다.
Scribe
- 페이스북에서 개발한 데이터 수집 플랫폼, Chunkwa와는 다르게 데이터를 중앙 집중 서버로 전송하는 방식
- 최종 데이터는 HDFS외에 다양한 저장소를 활용할 수 있으며, 다양한 프로그래밍 언어를 지원, HDFS에 저장하려면 JNI(Java Native Interface)를 이용
HDFS 설계
- HDFS는 범용 하드웨어로 구성된 클러스터에서 실행되고 데이터 엑세스 패턴을 스트리밍 방식으로 지원하며 매우 커다란 파일들을 저장할 수 있도록 설계된 파일시스템
- 매우 커다란 파일
- 데이터 엑세스를 스트리밍 방식으로 지원
- 범용 하드웨어
HDFS가 잘 맞지 않는 응용분야
-
빠른 응답시간의 데이터 엑세스
-
많은 수의 작은 파일
-
다중 라이터, 임의의 파일 수정
-
HDFS의 파일들은 단일 라이터에 의해 쓰인다.
-
쓰기 작업은 항상 파일의 끝에서 이루어진다.
-
HDFS 개념
블록
- 디스크는 블록 크기를 가지며, 블록은 한 번에 쓸 수 있는 데이터의 최대량
- 단일 디스크를 위한 파일시스템은 블록들 안에 있는 데이터를 관리함으로써 구축 디스크 블록의 배수 크기에 대한 전체 집합이 바로 파일시스템 그 자체
- 파일시스템 블록은 전형적으로 수 킬로바이트 크기이오, 반면에 디스크 블록은 기본적으로 512바이트
- HDFS의 블록 크기 64MB와 같이 훨씬 더 커다란 단위, 단일 디스크를 위한 파일시스템처럼 HDFS 파일들은 블록 크기의 청크로 쪼개 지고, 독립적인 단위로 저장된다.
- 블록은 내고장성과 가용성을 제공하기 위한 복제를 효율적으로 수행 할 수 있게 해준다.
- 손상된 블록과 디스크/서버 장애에 대응하기 위해서 각 블록은 물리적으로 분리된 몇 개의 서버(일반적으로 3개)로 복제
- 만일 하나의 블록을 이용할 수 없게 되면, 클라이언트에는 투명한 방식으로 하나의 복사본이 또 다른 위치에서 읽혀질 수 있다.
- 복제 계수가 정상 수준으로 다시금 되돌아오게 하기 위하여 손상 또는 서버장애로 더 이상 이용할 수 없는 블록은 또 다른 복사본의 위치로 부터 다른 살아있는 서버드롤 복제될 수 있다.
- 네임노드와 데이터노드
- 추가적으로 클러스터에서 노드 당 하나며 노드에 붙은 스토리지를 관리하는 수 많은 데이터노드가 있다.
- HDFS 는 파일 시스템 네임스페이스를 노출하고 사용자의 데이터를 파일로 저장 되도록 허용
- 내부적으로 파일은 하나 또는 그 이상의 블록으로 쪼개지며 이러한 블록들은 데이터노트의 집합 안에 저장
빅데이터 병렬 처리
맵리듀스
- 맵리듀스는 데이터 처리를 위한 프로그래밍 모델이다.
- 하둡은 다양한 언어로 쓰인 맵리듀스 프로그램을 구동시킬 수 있다.
- 맵리듀스 프로그램은 타고난 병행성을 내포하고 있고, 누구든지 임의로 활용할 수 있는 충분한 서버를 이용하여 대규모 데이터 분석을 할 수 있다.
맵과 리듀스
- 하둡이 제공하는 병렬 처리를 이용하기 위해 쿼리를 맵리튜스 잡으로 표현해야 할 필요가 있다.
- 맵리듀스는 맵 단계와 리튜스 단계로 처리 과정을 나누어 작업한다.
- 각 단계는 입력과 출력으로써 키-값 쌍을 가지고 있고 그 타입은 프로그래머가 선택한다.
- 맵과 리듀스 함수는 프로그래머가 직접 작성한다.
- 맵 단계에서 입력은 NCDC 원본 데이터이다.
- 맵 함수는 분석 대상인 연도와 기온을 추출하며 잘못된 레코드를 제거하는 역할 수행
- 행은 키-값 쌍으로 맵 함수에 보내진다.
- 키는 파일 내에서 몇 번째 행인지 나타내는 오프셋이고 맵 함수에서는 무시된다.
- 맵 함수는 단순히 연도와 기온을 추출하고 그것을 출력으로 방출한다.
분산형으로 확장하기
- 맵리튜스 잡은 클라이언트가 수행하려는 작업 단위다.
- 하둡은 잡을 맵 태스크와 리듀스 태스크로 나누어 실행한다.
- 분할 크기를 너무 작게 하면 분할 관리와 맵 태스크 생성을 위한 오버헤드가 전체 잡 실행 시간을 압도하기 시작한다.
- 최적의 스플릿 크기가 HDFS 블록 크기와 같아야 하는 이유는 블록 크기가 단일 노드에 저장된다고 확신할 수 있는 가장 큰 입력 크기이기 때문이다.
잡 실행
얀(맵리듀스 2)
- 고전적인 맵리듀스 시스템은 4000 노드 이상의 매우 큰 클러스터를 확장하는 과정에서 병목현상을 일으키기 시작하여 이 문제를 해결하기 위해 야후의 한 조직이 2010년에 차세대 맵리듀스를 설계하기 시작하였는데 그 결과가 바로 얀(YARN)이다.
- 얀은 고전적인 맵리듀스의 확장성 문제를 해결하기 위해 잡트래커의 책임을 여러 개의 책임자에게 분리해서 나눠준다.
- 잡트래커는 잡 스케줄링과 태스크 진행 상황 모니터링을 모두 관리한다.
- 리소스 매니저는 클러스터 전반에 걸쳐 리소스 이용을 관리한다.
- 애플리케이션 마스터는 클러스터에서 실행 중인 애플리케이션의 생명주기를 관리한다.
- 잡트래커와는 다르게, 응용프로그램의 각 인스턴스는 애플리케이션 마스터를 고정적으로 할당시켜 응용프로그램의 지속성을 유지시킨다.
- 얀 설계의 아름다움은 동일 클러스터에서 여러 다른 얀 애플리케이션이 함께 실행될 수 있다는 것이다.
- 심지어 다른 버전의 맵리듀스를 같은 얀 클러스터에서 실행할 수 있다.