습관처럼
빅데이터 그리고 하둡 본문
빅데이터란 ?
데이터의 규모에 초점을 맞춘 정의 - 기존 데이터베이스 관리 도구의 데이터 수집, 저장, 분석하는 역량을 넘어서는 데이터
업무 수행 방식에 초점을 맞춘 정의 - 다양한 종류의 대규모 데이터로부터 저렴한 비용으로 가치를 추출하고, 데이터의 빠른 수집, 발굴, 분석을 지원하도록 고안된 차세대 기술 및 아키텍처
빅 데이터의 3대 요소 (3V)
크기(Volume)
- 비즈니스 특성에 따라 다를 수 있지만 일반 적으로 수십 테라바이트 혹은 수십 페타바이트 이상이 빅데이터에 해당합니다.
- 이러한 데이터는 기존 파일 시스템에 저장하기 어려울뿐더러 데이터 분석을 사용하는 기존 데이터웨어하우스 같은 솔루션에서 소화하기 어려울 정도로 데이터 양이 많습니다.
속도(Velocity)
- 매 순간 많은 양의 데이터가 생산되고 있기 때문에 데이터의 생산, 저장, 유통, 수집, 분석이 실시간으로 처리 되어야 합니다. 예를 들어, 게임의 채팅창에 불건전한 내용을 입력할 경우 시스템에서 이러한 문구를 빠르게 분석해 다른 사용자에게 피해가 없도록 해야 합니다.
다양성(Variety)
- 다양한 종류의 데이터들이 빅데이터를 구성하고 있다. 데이터 정형화의 종류에 따라 정형, 반정형, 비정형으로 나눌 수 있습니다. 정형 데이터는 문자 그대로의 데이터로 고정된 필드에 저장되는 데이터를 의미한다. 반 정형 데이터는 XML이나 HTML 같이 메타데이터나 스키마 등의 데이터를 의미합니다. 비정현 데이터는 동영상이나 사진 등 고정된 필드에 저장되 있지 않은 데이터를 의미합니다.
빅데이터는 위의 3가지 요소중 2가지 요소가 충족한다면 빅데이터라고 볼수 있습니다.
하둡이란?
하둡은 대용량 데이터를 분산 처리할 수 있는 자바 기반의 오픈소스 프레임워크입니다. 분산 파일 시스템인 HDFS(Hadoop Disributed File System)에 데이터를 저장하고 분산 처리 시스템인 맵리듀스를 이용해 데이터를 처리합니다.
WHY 하둡인가?
- 정형 데이터의 경우 기존의 관계형 데이터베이스(RDBMS)에 저장할 수 있지만 웹 로그 같은 비정형 데이터를 RDBMS에 저장하기에는 데이터 크기가 너무 큽니다.
- 오픈 소스 프로젝트이기 때문에 라이선스 비용에 대한 부담이 없습니다.
- 데이터 복제본을 저장하기 때문에 데이터의 유실이나 장애가 발생했을 때도 데이터 복구가 가능합니다.
- 여러 대의 서버에 데이터를 저장하고 각 서버가 동시에 데이터를 처리하는 방식으로 처리 속도가 빠르다. 신문 기사 1,100만 페이지를 아마존 EC2, S3, 하둡을 이용해 하루만에 PDF로 변환하는데 성공했습니다.
하둡 에코 시스템
- 하둡은 비지니스에 효율적으로 적용할 수 있게 다양한 서브 프로젝트를 제공합니다.
- 분산 데이터를 저장하는 HDFS와 분석 데이터를 처리하는 맵리듀스가 하둡 코어 프로젝트이고, 나머지 프로젝트는 하둡의 서브 프로젝트입니다.
- 코디네이터
- Zookeeper - 분산 환경에서 서버 간의 상호 조정이 필요한 다양한 서비스를 제공하는 시스템으로, 네 가지 역할을 수행합니다.
- 첫째, 하나의 서버에만 서비스가 집중되지 않게 서비스를 알맞게 분산해 동시에 처리하게 해줍니다.
- 둘째, 하나의 서버에서 처리한 결과를 다른 서버와도 동기화해서 데이터의 안정성을 보장합니다.
- 셋째, 운영(active) 서버에 문제가 발생해서 서비스를 제공할 수 없을 경우, 다른 대기 중인 서버를 운영 서버로 바꿔서 서비스가 중지 없이 제공되게 합니다.
- 넷째, 분산 환경을 구성하는 서버의 환경설정을 통합적으로 관리합니다.
- Zookeeper - 분산 환경에서 서버 간의 상호 조정이 필요한 다양한 서비스를 제공하는 시스템으로, 네 가지 역할을 수행합니다.
- 리소스 관리
- YARN - 얀(YARN)은 데이터 처리 작업을 실행하기 위한 클러스터 자원(CPU, 메모리, 디스크 등)과 스케줄링을 위한 프레임워크입니다. 맵 리듀스의 단점을 극복하기 위함입니다.
- Mesos
- 데이터 저장
- Hbase - H베이스(Hbase)는 HDFS 기반의 컬럼 기반 데이터베이스입니다.
- Kudu
- 데이터 수집
- Chukwa - 척와(Chukwa)는 분산 환경에서 생성되는 데이터를 HDFS에 안정적으로 저장하는 플랫폼입니다. 분산된 각 서버에서 에이전트를 실행하고, 콜렉터가 에이전트로부터 데이터를 받아 HDFS에 저장합니다.
- Flume - 플럼(Flume)은 척와처럼 분산된 서버에 에이전트가 설치되고, 에이전트로부터 데이터를 전달받는 콜랙터로 구성됩니다. 차이점은 전체 데이터의 흐름을 관리하는 마스터 서버가 있어서 데이터를 어디서 수집하고, 어떤 방식으로 전송하고, 어디에 저장할지를 동적으로 변경할 수 있습니다.
- Scribe
- Sqoop - 스쿱(Sqoop)은 대용량 데이터 전송 솔루션이며, HDFS, RDBMS, DW, NoSQL 등 다양한 저장소에 대용량 데이터를 신속하게 전송하는 방법을 제공합니다.
- Hiho
- Kafka
- 데이터 처리
- Pig - 피그(Pig)는 복잡한 맵리듀스 프로그래밍을 대체할 피그 라틴(Pig Latin) 이라는 자체 언어를 제공합니다. 맵리듀스 API를 매우 단순화한 형태이고 SQL과 유사한 형태로 설계 되었습니다.
- Mahout, Spark, Impala, Presto, Hive, Tajo
- 워크 플로우 관리
- Oozie - 우지(Oozie)는 하둡 작업을 관리하는 워크플로우 및 코디네이터 시스템입니다. 자바 웹 애플리케이션 서버이며, 맵리듀스 작업이나 피그 작업 같은 특화된 액션으로 구성된 워크플로우를 제어합니다.
- Airflow, Azkaban, Nifi
- 데이터 시각화
- Zepplin - 제플린(Zepplin)은 빅데이터 분석가를 위한 웹 기반의 분석 도구이며, 분석 결과를 즉시 표, 그래프로 표현하는 시각화까지 지원합니다.
- 데이터 직렬화
- Avro - RPC(Remote Procedure Call)와 데이터 직렬화를 지원하는 프레임워크입니다. JSON을 이용해 데이터 형식과 프로토콜을 정의하며, 작고 빠른 바이너리 포맷으로 데이터를 직렬화합니다.
- Thrift
하둡에 대한 오해
- 하둡은 RDBMS를 대체하지 않고 RDBMS와 상호보완입니다.
- 하둡은 무결성이 반드시 보장돼야 하는 데이터를 처리하는 데 적합하지 않습니다. 그 이유는 하둡은 배치성으로 데이터를 저장하거나 처리하는 데 적합한 시스템이기 때문입니다.
- 그렇다고 하둡으로 실시간 처리가 절대로 불가능한 것은 아닙니다. 스크라이브나 플럼 같은 솔루션을 통해 데이터를 실시간으로 HDFS에 저장하고 H베이스를 이용해 HDFS에 저장된 데이터에 실시간으로 접근하면 됩니다.
- 하둡은 NoSQL 이 아닙니다. 하둡은 데이터베이스 시스템의 역할을 수행하는 것은 아닙니다.***
하둡의 과제
고가용성 지원 -하둡의 가장 큰 문제는 고가용성입니다. 하둡은 HDFS에 파일을 저장하고 조회합니다. HDFS는 네임노드와 데이터노드로 구성되는데, 네임노드가 HDFS에 저장하는 모든 데이터의 메타 정보를 관리합니다. 네임노드에 장애가 발생하면 더는 HDFS에 저장할 수 없고 데이터 유실의 경우 조회할 수 없게됩니다.
파일 네임스페이스 제한 - 네임노드가 관리하는 메타 정보는 메모리로 관리되기 때문에 메모리의 용량에 따라 HDFS에 저장하는 파일과 디렉터리 개수가 제한을 받습니다.
데이터 수정 불가 - 하둡의 또 다른 단점은 한 번 저장한 파일은 더는 수정할 수 없다는 것입니다. HDFS에 파일을 저장하면 파일의 이동이나, 이름 변경과 같은 작업은 가능하지만 저장된 파일의 내용은 수정할 수 없습니다. 파일 읽기나, 배치 작업만이 하둡에 적합하다. 0.21 버전에서는 기존의 저장된 파일에 덧붙임(append) 기능이 제공됩니다.
POSIX 명령어 미지원 - 기존 파일 시스템에서 사용하던 rm, mv 같은 POSIX 형식의 파일 명령어를 이용할 수 없습니다. 하둡에서 제공하는 별도의 셸 명령어와 API를 이용해 파일을 제어해야만 합니다.
전문업체 부족 - 오라클, MS-SQL, DBMS는 다양한 유지보수 업체가 있지만 국내에는 하둡과 관련된 다양한 업체가 부족합니다.
'금융 & 디지털' 카테고리의 다른 글
블록체인 기본 용어 정리 (0) | 2020.03.18 |
---|---|
블록체인 투자 용어 정리 (0) | 2020.03.18 |
FIDO(Fast IDentity Online)이란? (0) | 2020.03.18 |
금융 그리고 Open API 활용 (0) | 2020.03.18 |
오픈소스 하드웨어란? (0) | 2020.03.18 |