빅데이터 적재
내/외부 원천 데이터
적재 저장소 유형
- 실시간 처리
- No-SQL
- MongoDB, Cassandra, ...
- 대규모 메시지 전체를 영구 저장
- MoM
- Cached
Hadoop
hadoop 개요
- 기능
- 대용량 데이터 분산 저장
- 분산 저장된 데이터 가공/분석 처리
주요 구성 요소
- DataNode
- 서버
- 블록(64MB/128MB) 단위로 분할된 대용량 파일들이 디스크에 저장 및 관리
- NameNode
- DataNode에 저장된 파일들의 메타 정보를 메모리상에서 로드하여 관리
- EditsLog / FsImage
- 파일들의 변경 이력 정보 저장
- NameNode의 메타 정보의 스냅샷 이미지
- Ver. 1x
- MapReduce v1
- Job Tracker
- Task Tracker
- Ver. 2x
- Active/Stand-by NameNode
- NameNode 이중화
- 실패 처리를 대비한 Stand-by
- MapReduce v2 + YARN
- 자원 중앙 관리
- 클러스터 위에 다양한 앱 실행 및 관리
- 확장성과 호환성 향상
- Resource Manager / Node Manager
- Container(단위)
- Application Master
- JournalNode
MapReduce
- Map
- 분산 저장되어 있는 데이터로부터 효율적으로 작업 분리하여 실행
- Reduce
- 여러 컴퓨터가 나눠서 실행한 결과들을 하나로 모음
- 사례
- 요청 사항
- 전체 고객 정보에서 VIP 고객의 평균 연봉 구하기
- 고객 정보(1TB) >> server(100GB/10GB/500GB...) >> VIP 고객 정보(50MB) >> VIP 평균 연봉(1KB)
Zookeeper
Zookeeper 개요
- 하둡, HBase, 카프카, 스톰 내부에서 주키퍼에 의존해 클러스터 멤버쉽 기능 및 환경 설정의 동기화 등을 사용
주요 구성 요소
- client
- ZNode에 담긴 데이터에 대한 쓰기, 읽기, 삭제 등의 작업을 요청
- ZNode
- 주키퍼 서버에 생성되는 파일 시스템의 디렉토리
- 클라이언트의 요청 정보(환경 설정)를 계층적으로 관리
- 버전, 접근 구너한, 상태, 모니터링 객체 관리...
- Ensemble
- 3대 이상의 주키퍼 서버를 하나의 클러스터로 구성한 HA 아키텍처
- Leader Server
- Ensemble 내부에는 유일한 리더 서버가 선출되어 존재
- 클라이언트의 요청을 받은 서버는 해당 요청을 리더 서버에 전달
- 리더 서버는 모든 팔로워 서버에게 클라이언트 요청이 전달되도록 보장
- Follower Server
- Ensemble 안에서 한 대의 리더 서버를 제외한 나머지 서버
- 리더 서버와 메세지를 주고 받으면서 ZNode의 데이터 동기화
- 리더 서버에 문제가 발생할 경우, 내부적으로 새로운 리더를 선출하는 역할 수행
- 라이선스
적재 환경 구성
cluster 웹 관리자
- 9870
- HDFS 상세 >> DataNode >> DataNode 웹 UI
resource manager
- 8088
- YARN 상세 >> 웹 UI >> ResourceManager 웹 UI
job history
- 19888
- YARN 상세 >> 웹 UI >> HistoryServer 웹 UI
적재 기능 테스트
flume event 작동
- spool dir이 바라보고 있는 car batch log에 상태 정보 파일이 이동한 순간 발동
mv SmartCarStatusInfo_20160101.txt /home/.../car-batch-log/
flume 수집 확인
tail -f flume-cmf-flume-AGENT-server02.hadoop.com.log
hdfs.BucketWriter: Creating / ...
- log 파일이 tmp 파일로 생성됨
- 최종 생성된 파일 이름이 등장하면 완료
hadoop 적재 확인
hdfs dfs -ls -R /pilot-pjt/collect/car-batch-log
- 64MB가 넘는 용량이므로 파일이 두 개로 나누어짐
- 내용 확인
hdfs dfs -cat /pilot-pjt/.../car-batch-log...
cat 명령은 용량이 클 때, 오버헤드를 발생시킬 수 있으므로 잠깐 파일 내용을 확인하고 싶을 때에는 tail 명령 사용 권장