꼭 알아야해까진 아니여서 간략하게 읽을 수 있도록 정리 하고, 추후 글 추가 및 수정으로 공부한 내용을 올리겠습니다.
1. Bigdata 란
서버 한 대로 처리할 수 없는 규모의 데이터
- 아마존의 data scientist의 존 라우저가 2012년 아마존 클라우드 컨퍼런스에서 정의한 말
- 가지고 있는 데이터를 제대로 처리하기 위해 분산 화ㄴ경이 필요하느냐에 포커스를 둔 정의
경영 컨설팅 회사들은 20TB를 빅데이터의 기준점이라 말하며, 3V라는 정의(현재는 4V라고도 함)를 내새웁니다.
- Volume(규모) : 데이터의 크기
- Velocity(속도) : 데이터가 얼마나 빠르게 생성되는지
- Variety(다양성) : 데이터가 구조화/비구조화된 데이터를 다 포함하는지 여부
- Variability(변동성) : Variety와 연관된 것으로 데이터의 형태가 아예 알려져 있지 않은지 아니면 급변하는지 여부
2. Bigdata 예
- 웹 검색엔진 데이터
- 웹 페이지 데이터
검색어 로그와 클릭 로그 데이터
디바이스에서 생성되는 데이터
- 스마트폰의 TV, 전화, 위치 정보, 앱 다운 등 (시스코에 따르면 2015년에 생성되는 데이터만 6.3ExaByte)
- 보잉 제트엔진(비행기 엔진)의 경우 매 30분마다 10TB의 데이터를 생성
- 스마트 미터 (전기사용량을 측정)
- 강우량이나 풍량 같은 날씨를 관측하는 센서
소셜미디어의 데이터
- 페이스북 / 트위터 등
3. Hadoop의 역사
- 웹 검색 엔진인 아파치 너치(Apache Nutch)의 일부 - 창시자 : 더그 커팅
- 웹 사이트를 크롤하고 색인하는 소프트웨어와 서버와 데이터의 관리가 필요
- Nutch는 2002년에 개발 시작하였지만 수십 억 웹 페이지로 확장될 수 없었음.
- 2003년 GFS(Google File System)라는 구글 분산 파일시스템의 아키텍처가 기술된 논문 공개
- 2004년 NDFS(Nutch Distributed File System)을 오픈소스로 구현
- 2004년 구글의 MapReduce를 소개하는 논문 출판
- 2005년초 너치에 맵리듀스를 구현, 2005년 중반까지 주요 너치 알고리즘이 MapReduce + NDFS 를 사용하기 위해 포팅
- NDFS + MapReduce는 검색 분야 외의 여러 분야에서 응용
- 2006년 2월에 NDFS + MapReduce는 하둡이라고 명명된 독립 서브 프로젝트를 구성하기 위해 너치 밖으로 빠져나옴 (이때, NDFS를 HDFS로 이름을 변경)
- 비슷한 시기에 더그 커팅은 야후에 합류
- 2008년 2월 웹 규모의 시스템으로 전환하기 위해 전용 팀과 리소스를 제공
- 이후 하둡은 야후 뿐만 아니라 다양한 회사에서 사용
- 대기업 벤더인 EMC, IBM, MS, Oracle, Cloudera, Hortonworks, MapR 같은 하둡 전문 기업이 하둡을 배포
4. Hadoop 기반의 빅데이터 처리
- 데이터 수집 : 수집 후 분산 파일 시스템에 저장 (Flume, Chukwa, Kafka)
데이터 저장 및 처리 : MapReduce
- 하둡은 기본적으로 큰 데이터릐 배치 프로세싱에 적합하고, 실시간으로 데이터를 분석하는 용도로 사용하기에는 버겁다는 점
처리데이터 액세스 모듈
- 기존 관계형 데이터베이스 : sqoop( RDB to HDFS or HDFS to RDB )
- NoSQL : HBase, Cassandra, MongoDB
- 검색 엔진 : Lucene, Solr, ElasticSearch
데이터의 분포 등을 보여주는 시각화 : Matlab, R(R-Hadoop), (Datameer, Pentaho 의 제품)
- R-Hadoop 이란 RMR(R-MapReduce), RHDFS, RHBase등 하둡 기반 기술들에 R 인터페이스를 접목한 프로젝트
작업 워크플로우 관리 정의 모듈 : Cascading, Oozie, Azkaban, Ambrose
Oozie : xml로 잡들을 어떻게 이어서 실행할지 설정 Cascading :자바 API를 통해 설정 Azkaban : 링크드인 내부에서 사용하는 워크플로우 관리 오픈소스 툴 Ambrose : 트위터 내부에서 사용하는 워크플로우 툴을 오픈소스 화
5. Hadoop의 특징
- 오픈소스 : 무료
- 스케일 아웃
- 단, 스케일 업이 어느정도 적용된 스케일 아웃
- 너무 낮은 사양을 사용할 경우 공간적 제약이 너무 심함
- 서버 수를 어느정도 늘린 후에는 서버의 스펙을 올리는 편
- 병렬처리를 가능하게 해주는 단순한 데이터 모델
- MapReduce 프로그래밍 특징 상 데이터는 다음과 같아야 합니다.
- 데이터는 레코드의 집합
- 각 레코드는 Key와 Value를 갖는다.
- MapReduce 프로그래밍 특징 상 데이터는 다음과 같아야 합니다.
- 오프라인 배치 프로세싱에 최적화
- Hadoop은 오프라인 배치를 처리하는데 적합한 framework
- 현재는 Spark, Storm, Kafka 등으로 오프라인 배치라는 제약이 약해짐.
- 불편 파일만 저장
- 파일은 HDFS의 업로드 후에는 내용을 변경하지 않는다는 가정
- NameNode
- 파일 시스템의 namespace를 namenode의 메모리상에서 관리하기 때문에 Hadoop의 저장할 수 있는 파일과 디렉토리의 개수는 namenode의 제약을 받는다.
- SPOF(Single Point Of Failure)
- 이는 Secondary NameNode를 구성하면 NameNode의 데이터를 주기적으로 백업함으로써 어느정도 해결 할수 있다.
1차적인 글은 이걸로 마치겠습니다. 이론적인 내용이 많아 하둡 완벽 가이드 클라우드 컴퓨팅 구축을 위한 실전 안내서 와 Do it! 직접 해보는 하둡 프로그래밍의 책을 많이 참조 하였습니다. 이후 추가 및 수정할 내용이 있으면 바로 바로 수정해서 올리겠습니다.