Big Data Vs RDBMS
- 정형화된 비즈니스적인 중요 데이터의 경우 RDBMS 사용
- RDBMS: seletct -> 처리 -> 보내기 / Big-Data : 작동방식(funtion)-> 처리 -> 처리완료
- 개발 방식의 변화 OOP(object-oriented Programming) -> FP(Funtion Programming)
- 비즈니스적으로는 중요하지만, 분석을 통하여 새로운 정보를 추출하는 경우 Big-Data 사용
- 결론적으로, RDBMS와 Big-Data는 적절한 업무 및 환경 파악을 통하여 효율적인 구축이 필요합니다. ( 각 업무와 환경에 맞는 DB를 선택적으로 선별하여 사이트구축, 정형화되고 표준화된 Database -> 비정형화되고 다양한 형태의 Database 형태로 변화하고 있습니다)
데이터 분석 순서
- 데이터 수집 ( Flune,Scribe, Chukwa)
- 데이터 저장 ( HDFS)
- 트렌젝션 데이터저장 (NO-SQL)
- 실시간 분석 (S4, Strom, OEP)
- 배치 분석 (Map/Reduce)
- 데이터 마이닝/통계 ( Mahout R)
- 클러스터 관리 (zookeeper, HIVE)
- 데이터직렬화 (Arvo 등)
HaDoop Distributed File System
- HDFS 의 장단점
- 장점 : X86 장비내보 로컬디스크, 수천개의 대규모 클러스터, 고가용성(1-5000), 장애시 자동감시 및 복구, 서버 추가 및 재설치 불필요, 분석용 데이터 저장가능
- 단점 : 저장가능한 파일수의 한계, Namenode의 SPOF, 범용스토리지를 사용할 경우의 제약
- 단일 고장점(single point of failure, SPOF)는 시스템 구성 요소 중에서, 동작하지 않으면 전체 시스템이 중단되는 요소를 말한다.
- 데이터 저장 방식
- NameNode에서 해당 데이터의 위치정보를 따라 Client를 통해 DataNode에 내려가게 되면, 해당 데이터는 복제(default: 3) 되어 DataNode에 저장됩니다.
- DataNode가 사용할 수 없게 될 경우, NameNode에서는 해당데이터와 같은 내용이 복제되어 저장된 DataNode의 메타정보를 통하여 Read & Write를 진행하고 다시 한번 더 복제가 발생하여 보관됩니다.
Name Node
- NameNode: 실데이터 DataNode 분산저장, 각 데이터 위치에 대한 메타정보 및 변경된 내역에 대한 Log정보를 가지고 있습니다.(기본 64MB, 복제: 3), 메모리 상에 올려놓고 각 데이터의 위치정보를 주는 역할과 변경된 내용을 저장하는 역할을 담당합니다.
- Fsimage : 각 데이터의 위치정보, 메타정보를 가지고 있어서 쓰기 및 읽을 경우, 반드시 Name Node를 통하여 데이터를 이용할 수 있습니다.(메타정보관리)
- Edit logs: DataNode에서 수정 및 반영된 모든 내용을 Edit log에 기록하는 역할을 담당합니다.(RDBMS의 Redolog와 비슷한 역할)
- Namenode의 경우, 그 역활이 중요하기 때문에 SecondaryNameNode를 통하여 실시간(5분)으로 병합 및 동기화를 통하여 혹시나 발생할 수 있는 장애에 대비해야 합니다.
- 1개의 NameNode에 대략 5000개의 DataNode 클러스터를 구성할 수 있습니다.
SecondaryNameNode
- SecondaryNamenode의 경우, NameNode의 Fsimage(메타정보) 백업 및 edit log 정보를 병합 및 동기화하는 역할을 수행합니다.
- NameNode에 장애가 발생할 경우, 백업된 메타정보와, 병합 및 동기화된 edit log 정보를 통하여 IP및 DNS정보를 변경하여 SecondaryNamenode-> NameNode로 변경하여 장애처리가 가능합니다.
- Edit log가 많이 쌓이고 SecondaryNamenode가 없을 경우, 해당 로그정보들이 모두 처리되기 전까지 구동되지 않는 경우가 발생할 수 있습니다. 또한 수행 속도의 저하 및 메모리 낭비현상도 발생할 수 있습니다.
HDFS Client
- HDFS Client의 경우 NameNode와 DataNode 사이에서 데이터의 Read와 Write를 조율해주는 역할을 해줍니다.
- Client에서 데이터를 요청했을 경우, NameNode에서 먼저 해당 데이터에 대한 메타정보를 HDFS Client에게 보내주게 되고, 해당 정보를 바탕으로 각 DataNode에 분산되어 복제되어 있는 데이터를 가져오는 형태로 진행됩니다.
Data Node
- Data Node의경우 실 데이터가 보관되어 있는 node로 데이터가 저장될 경우, 복제(default :3)가 발생하여 위 그림과 같이 각기 다른 노드에 복제되어 저장되어 있게 됩니다. 복제된 위치정보의 경우 NameNode에 의하여 관리되게 됩니다.
- DataNode는 HeartBeat를 NameNode에게 날리면서 자신이 살아있음을 지속적으로 표현하고 혹시나 DataNode가 사용할 수 없게 될 경우 복제된 다른 노드에서 데이터를 가지고 올 수 있도록 합니다.
- 결론적으로 NameNode의 메타정보가 분실될 경우, 데이터를 사용할 수 없게 됩니다.
MapReduce
- 평균 계산 및 분산처리 결과 추출(병렬)시 뛰어난 성능을 발휘 합니다. 단, Sorting시 어려운 점이 있습니다.
- Key-Value 형태로 데이터를 정리하고(Mapping) 각 데이터별로 Sorting을 통하여 (Shuffling) 핵심 데이터로 줄여서 (Reducing) 그 결과를 사용자에게 제공합니다.
- Map/Reduce Job 을 구성한 클래스
- Reducer
- Mapper의 출력을 읽어 처리
- 입력 Mapper의 Key와 Value 목록, 출력 Key-Value
- Mapper
- InputSplit에서 파일을 읽어서 처리
- Driver
- 각종 파일, 파라미터 처리
- Hadoop Map/Reduce Job 실행
- Combiner
- Mapper에서 동작하는 Minireducer(성능 개선 시 추가되는 Class)
- Patitiner
- Mapper의 Key를 어느 Reducer에 보낼지 처리(확장 개선 시 추가되는 Class)
- InputFormat / RecordReal : 입력파일을 읽어드리는 역할
Data Read 및 Write 과정
- Client Data Read -> Namenode에서 해당 Data의 메타정보를 -> HDFS Client에게 전송 -> Map/Reduce -> Job Client에 Job을 제출(XML파일) -> JobTracker -> TaskerTracker -> DataNode(파이프라인) -> 데이터 찾기 완료 -> Client에게 ACK 전송(완료)
- Client Data Write -> 반대로 -> Name Node 메모리와 Log에 변경내용 저장
- Hadoop(Big-data)의 경우, Update 및 데이터 변경이 어렵습니다.
[참고자료]
거침없이 배우는 하둡(Hadoop IN Action)
http://hadoopdb.sourceforge.net/guide/
http://hadoop.apache.org/docs/r0.20.2/hdfs_design.html
http://www.ibm.com/developerworks/kr/library/
http://bradhedlund.com/2011/09/10/understanding-hadoop-clusters-and-the-network/
'1. IT Story > DB' 카테고리의 다른 글
Oracle VPD(Virtual Private Database) (0) | 2013.03.31 |
---|---|
Splunk install-Linux (0) | 2013.02.09 |
Big-Data Hive 환경구성(MySql) (0) | 2013.02.09 |
Big-Data Hadoop 환경구성 (0) | 2013.02.09 |
Oracle RAC 11.2.0.3 with ASM / Vmware Oracle DB 설치 (0) | 2013.02.09 |
Oracle RAC 11.2.0.3 with ASM / Vmware-Oracle 엔진 설치 및 ASM 구성 (0) | 2013.02.09 |
Oracle RAC 11.2.0.3 with ASM / Vmware-리눅스설정2 (0) | 2013.02.09 |
Oracle RAC 11.2.0.3 with ASM / Vmware-리눅스 설정1 (0) | 2013.02.09 |