Article 1. 빅데이터 플랫폼 1121
Section 2. 빅데이터 기술 및 제도
Paragraph 1. 빅데이터 플랫폼의 개념
- 빅데이터에서 가치를 추출하기 위해 일련의 과정(수집 ➔ 저장 -> 처리 -> 분석 -> 시각화)을 규격화한 기술
- 특화된 분석(의료, 환경, 범죄, 자동차 등)을 지원하는 빅데이터 플랫폼이 발전하는 추세
Paragraph 2. 빅데이터 플랫폼 구성요소
빅데이터 플랫폼은 크게 수집, 저장, 분석, 활용 단계로 구성된다
- 데이터 수집
- 원천 데이터의 정형/반정형/비정형 데이터 수집
- ETL, Crawler, EAI 등
- 데이터 저장
- 정형 데이터, 반정형 데이터, 비정형 데이터 저장
- RDBMS, NoSQL 등
- 데이터 분석
- 텍스트 분석, 머신러닝, 통계, 데이터 마이닝
- SNS 분석, 예측 분석 등
- 데이터 활용
- 데이터 가시화 및 BI, Open API 연계
- 히스토그램, 인포그래픽 등
Paragraph 3. 빅데이터 플랫폼 데이터 형식
빅데이터 플랫폼의 데이터 형싱은 대표적으로 HTML, XML, JSON, CSV가 있음
-
HTML
- HyperText Markup Language
- 웹 페이지를 만들 때 사용되는 문서 형식
- 텍스트, 태그, 스크립트로 구성
-
XML
- eXtensible Markup Language
- SGML 문서 형식을 가진, 다른 특수한 목적을 갖는 마크업 언어를 만드는 데 사용하는 다목적 마크업 언어
- 데이터 표현을 위해 태그 사용
- 엘리먼트, 속성, 처리 명령, 엔티티, 주석, CDATE 섹션으로 구성
-
CSV
- Comma Separated Values
- 몇 가지 필드를 쉼표로 구분한 텍스트 데이터 및 텍스트 파일
-
JSON
- JavaScript Object Notation의 약자
- <키-값>으로 이루어진 데이터 오브젝트를 전달하기 위해 텍스트를 사용하는 개방형 표준 포맷 키-값>
<?xml version="1.0" encoding="UTF-8"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
{ "id": "0001", "type": "donut", "name": "Cake", "ppu": 0.55, "batters": { "batter": [ { "id": "1001", "type": "Regular" }, { "id": "1002", "type": "Chocolate" }, { "id": "1003", "type": "Blueberry" }, { "id": "1004", "type": "Devil's Food" } ] }, "topping": [ { "id": "5001", "type": "None" }, { "id": "5002", "type": "Glazed" }, { "id": "5005", "type": "Sugar" }, { "id": "5007", "type": "Powdered Sugar" }, { "id": "5006", "type": "Chocolate with Sprinkles" }, { "id": "5003", "type": "Chocolate" }, { "id": "5004", "type": "Maple" } ] }
Paragraph 4. 빅데이터 플랫폼 구축 소프트웨어
빅데이터 플랫폼 구축을 위한 주요 소프트웨어로는 R, 우지, 플럼, HBase, 스쿱이 있다
- R
- 핵심
- 빅데이터 분석
- 목적
- 통계 프로그래밍 언어인 S 언어를 기반으로 만들어진 오픈 소스 프로그래밍 언어
- 다양한 그래프 패키지들을 통하여 강력한 시각화 기능 제공
- 핵심
- Oozie
- 핵심
- 워크플로우 관리
- 목적
- Hadoop 작업을 관리하는 워크플로우 및 코디네이터 시스템(스케쥴링/모니터링)
- 맵리듀스나 피그와 같은 특화된 액션들로 구성된 워크플로우 제어
- 핵심
- Flume
- 핵심
- 데이터 수집
- 목적
- Event와 Agent를 활용하여 많은 양의 로그 데이터를 효율적으로 수집, 집계, 이동
- 핵심
- HBase
- 핵심
- 데이터 수집
- 목적
- 컬럼 기반 저장소로 HDFS와 인터페이스 제공
- 핵심
- Sqoop
- 핵심
- 정형 데이터 수집
- 목적
SQL to Hadoop
의 약자- Connector를 사용하여 RDBMS에서 Hadoop 파일 시스템(HDFS)으로 데이터를 수집하거나, Hadoop 파일 시스템에서 관계형 데이터페이스로 데이터를 보내는 기능 수행
- 핵심
Clause 1. 분산 컴퓨팅 환경 소프트웨어 구성 요소
-
Map Reduce
-
Key-Value 형태의 데이터 처리
-
Map ➔ Shuffle ➔ Reduce 순서대로 데이터 처리
-
Map
Key-Value 형태로 데이터를 취함
-
Shuffle
데이터를 통합하여 처리
-
Reduce
맵 처리된 데이터를 정리
-
-
-
YARN
-
Hadoop의 맵리듀스 처리 부분을 새롭게 만든 자원 관리 플랫폼
-
리소스 매니저(Master)와 노드 매니저(Slave)로 구성
-
리소스 매니저
스케쥴러 역할을 수행하고 클러스터 이용률 최적화를 수행
-
노드 매니저
노드 내의 자원을 관리하고 리소스 매니저에게 전달 수행 및 컨테이너를 관리
-
애플리케이션 마스터
리소스 매니저와 자원의 교섭을 책임지고, 컨테이너를 실행
-
컨테이너
프로그램 구동을 위한 격리 환경을 지원하는 가상화 자원
-
-
-
Apache Spark
- Hadoop 기반 대규모 데이터 분산처리시스템
- 스트리밍 데이터, 온라인 머신러닝 등 실시간 데이터 처리
- 스칼라, 자바, 파이썬, R 등에 사용 가능
-
HDFS
-
Hadoop Distributed File System의 약자
-
대용량 파일을 분산된 서버에 저장하고, 그 저장된 데이터를 빠르게 처리할 수 있게 하는 Hadoop 분산 파일 시스템
-
네임 노드(Master)와 데이터 노드(Slave)로 구성
-
네임 노드(Master)
파일 이름, 권한 등의 속성 기록
-
데이터 노드(Slave)
일정한 크기로 나눈 블록 형태로 저장
-
-
-
Apache Hadoop
-
분산 파일 시스템(HDFS)과 맵리듀스를 중심으로 다양한 프로그램으로 구성된 Hadoop 에코시스템을 가짐
-
클라우드 플랫폼 위에서 클러스터를 구성해 데이터 분석
Spark, Hive, YARN, Cassandra, Pig 등
-
Paragraph 5. Hadoop 에코시스템(Hadoop Ecosystem)
SubParagraph 1. Hadoop 에코시스템의 수집, 저장, 처리 기술
-
비정형 데이터 수집
- Chuckwa
- 분산된 각 서버에서 에이전트를 실행하고, Collector가 에이전트로부터 데이터를 받아 HDFS에 저장
- Flume
- 많은 양의 로그 데이터를 효율적으로 수집, 집계, 이동하기 위해 Event와 Agent를 활용하는 기술
- Scribe
- 다수의 서버로부터 실시간으로 스트리밍되는 로그 데이터를 수집하여 분산 시스템에 데이터를 저장하는 대용량 실시간 로그 수집 기술
- 최종 데이터는 HDFS 외에 다양한 저장소를 활용 가능
- HDFS에 저장하기 위해서는 JNI를 이용
- Chuckwa
-
정형 데이터 수집
- Sqoop
- 대용량 데이터 전송 솔루션
- Connector를 사용하여 RDBMS에서 HDFS으로 데이터를 수집하거나, HDFS으로 데이터를 수집하거나, HDFS에서 RDBMS로 데이터를 보내는 기능 수행
- Oracle, MS-SQL, DB2와 같은 상용 RDBMS와 MySQL과 같은 오픈소스 RDBMS 지원
- Hiho
- Sqoop과 같은 대용량 데이터 전송 솔루션이며, 현재 Github에서 공개되어 있음
- Hadoop에서 데이터를 가져오기 위한 SQL을 지정할 수 있으며, JDBC 인터페이스를 지원, 현재는 Oracle, MySQL의 데이터만 전송 지원
- Sqoop
-
분산 데이터 저장
- HDFS
- 대용량 파일을 분산된 서버에 저장하고, 그 저장된 데이터를 빠르게 처리할 수 있게 하는 Hadoop 분산 파일 시스템
- HDFS
-
분산 데이터 처리
- Map Reduce
- 대용량 데이터 세트를 분산 병렬 컴퓨팅에서 처리하거나 생성하기 위한 목적으로 만들어진 소프트웨어 프레임워크
- 모든 데이터를 Key-Value 쌍으로 구성, ,데이터를 분류
- Map Reduce
-
분산 데이터 베이스
-
HBase
- 컬럼 기반 저장소로 HDFS와 인터페이스 제공
- 실시간 랜덤 조회 및 업데이트를 할 수 있으며, 각각의 프로세스는 개인의 데이터를 비동기적으로 업데이트할 수 있음
-
SubParagraph 2. Hadoop 에코 시스템의 데이터 가공 및 분석, 관리를 위한 주요 기술
- 데이터 가공
- Pig
- 대용량 데이터 집합을 분석하기 위한 플랫폼으로 Hadoop을 이용하여 Map Reduce를 사용하기 위한 높은 수준의 스크립트 언어인 Pig Latin이라는 자체 언어를 제공
- Map Reduce API를 매우 단순화시키고, SQL과 유사한 형태로 설계됨
- SQL과 유사하기만 할 뿐, 기존 SQL 지식을 활용하는 것이 어려움
- Hive
- Hadoop 기반의 DW 솔루션
- SQL과 매우 유사한 HiveQL이라는 쿼리를 제공
- HiveQL은 내부적으로 Map Reduce로 변환되어 실행됨
- Pig
- 데이터 마이닝
- Mahout
- Hadoop 기반으로 데이터 마이닝 알고리즘을 구현한 오픈 소스
- 분류, 클러스터링, 추천 및 협업 필터링, 패턴 마이닝, 회귀 분석, 진화 알고리즘 등 주요 알고리즘 지원
- Mahout
- 실시간 SQL 질의
- Impala
- Hadoop 기반의 실시간 SQL 질의 시스템
- 데이터 조회를 위한 인터페이스로 HiveQL을 사용
- 수초 내에 SQL 질의 결과를 확인할 수 있으며, HBase와 연동이 가능
- Impala
- 워크플로우 관리
- Oozie
- Hadoop 작업을 관리하는 워크플로우 및 코디네이터 시스템
- 자바 서블릿 컨테이너에서 실행되는 자바 웹 애플리케이션 서버
- Map Reduce나 Pig와 같은 특화된 액션들로 구성된 워크플로우 제어
- Oozie
- 분산 코디네이션
- Zookeeper
- 분산 환경에서 서버들 간에 상호 조정이 필요한 다양한 서비스를 제공
- 하나의 서버에만 서비스가 집중되지 않도록 서비스를 알맞게 분산하여 동시에 처리
- 하나의 서버에서 처리한 결과를 다른 서버들과도 동기화하여 데이터의 안정성을 보장
- Zookeeper