4. 4 9/27/2013
• 누구나 Mobile device
• Facebook, Twitter 등의 서비스 포탈
> 100억장의 사진 수 PB 스토리지
• 이동통신
> 시간당 250 GB 이상
> 하루 6TB
> 1년, 5년, 10년?
• IT 서비스 융합
> Mobile + Biz(금융, 쇼핑 등)
Data paradigm shift
10244
10245
10248
10246
10247
5. 5 9/27/2013
• Change Chance
Big Data = Big Chance
2011년 2012년 2013년
1 클라우드 컴퓨팅 미디어 태블릿 이후 모바일 기기 대전
2
모바일 앱과 미디어
태블릿
모바일 중심 애플리케이션과
인터페이스
모바일 앱과 HTML5
3
소셜 커뮤니케이션 및
협업
상황인식과 소셜이 결합된 사용자
경험
퍼스널 클라우드
4 비디오 M2M IoT
5 차세대 분석 앱스토어와 마켓 플레이스
하이브리드 IT와 클라우드
컴퓨팅
6 소셜 분석 차세대 분석 전략적 빅데이터
7 상황인식 컴퓨팅 빅데이터 실행 가능한 분석
8 스토리지급 메모리 인메모리 컴퓨팅 인메모리 컴퓨팅
9 유비쿼터스 컴퓨팅 저전력 서버 통합 에코시스템
10 패브릭 기반 컴퓨팅 클라우드 컴퓨팅 엔터프라이즈 앱스토어
Data 관리
- 생산
- 관리
- 활용
7. 7 9/27/2013
• 데이터를 수집하고 처리하는데 많은 시간과 비용이 듬
> 인프라의 구조, 데이터 센터 수용 가능성
> 기존 인프라는 독립적 시스템, 애플리케이션 개발, 유지보수
> 플랫폼이 필요
• 데이터를 저장할 수 있는 값싼(?) 구조
> HDFS
• 데이터를 처리를 위한 Bundling Framework
> Map + Reduce
• Logic on Data
> Data Locality 보장
• I/O 집중적이면서 CPU 연산
> 파일처리 사고, 멀티노드 부하분산 사상
• 하드웨어 추가시 성능 Linear
> 결국, DB 보다 체감속도 존재 함
Why Hadoop
11. 11 9/27/2013
• POSIX 요구사항 일부를 만족
• 다수의 독립 머신으로 시스템으로 성능과 비용을 모두 만족
• 수백만 개의 수십 기가바이트 크기의 파일을 저장 가능
> 수십 PB 이상도 가능
• Scale out 모델
> 대용량 스토리지 구성을 위해 RAID 대신 JBOD를 지원
> 애플리케이선 수준의 데이터 복제로 가용성 확보와 높은 성능 유지
• 큰 파일의 스트리밍 읽기와 쓰기에 더 최적화
> 하둡은 다수의 작은 파일에 대한 매우 느린 응답
> 배치 실행이 응답 속도보다 더 중요
• Fault Tolerance
> 머신과 디스크 등의 컴포넌트 실패에 대처
• 맵리듀스 Framework 연계 가능해야 함
HDFS Goal and Motivation
12. 12 9/27/2013
• User Level File System
> 커널 외부에서 Application이 수행 됨, System Mount 불필요
> FUSE 사용 시에는?
• Distributed File System
• Disk Block Size
> Default Size 64M
> 128MB, 256MB, 1GB 늘릴 수 있음(Trade-off)
> 왜 블록 사이즈를 느릴까? 드라이브 탐색 조작 최소화 I/O 성능 향상
• Data Protection
> 여러 머신에 데이터 블록 복제
> 데이터는 한 번 쓰게 되면 수정 불가능
> 데이터 READ 시에는 복제 중 하나만 읽음
– 네트워크 상 가장 가까운 머신의 레플리카에서 데이터를 가져오게 됨
HDFS Design
13. 13 9/27/2013
• 네임노드(NameNode)
> 파일시스템 메타데이터 전부 메모리에 저장
> 1백만 블록의 메타데이터를 저장하기 위해 1GB의 Heap 필요
• 보조 네임노드(Secondary NameNode)
> 백업은 용도는 아님
> 네임노드 이미지를 관리, 일종의 Check Pointer Server
HDFS Daemon
Daemon 클러스터당 개수 용도
네임노드 1 파일시스템의 메타데이터 저장,
파일시스템의 글로벌 이미지 제공
보조 네임노드 1 네임노드 트랜잭션 로그의 체크포인트
작업수행
데이터노드 다수 블록 데이터 저장(파일내용)
14. 14 9/27/2013
HDFS 동작방식(Read)
Name Node
Secondly
Name Node
Data Node Data Node Data Node Data Node Data Node
rack1 rack2
HDFS
Application
Hadoop Client
1. 파일경로: /foo/bar/test.txt 요청
2. 블록1, 호스트… 응답
Host1 Host2 Host3
3. 블록1 읽기 요청
4. 데이터 응답
15. 15 9/27/2013
HDFS 동작방식(Write)
Name Node
Secondly
Name Node
Data Node Data Node Data Node Data Node Data Node
rack1 rack2
HDFS
Application
Hadoop Client
1. 파일 생성을 위한 파일경로 생성 요청
- 파일경로: /foo/bar
- 복제본수: 3
Memory
2.1 파일 경로 정보 생성(메모리에 생성)
2.2 락 생성(다른 클라이언트가 생성하지 못하게)
Host1 Host2
3.1파일 데이터를 저장할 데이터 노드 선택 후
호스트 정보 반환 (Host1, Host2, Host3)
4. 파일 데이터 및 데이터 노드 목록 전송
Host3
5.1 로컬저장 5.2복제본 저장 5.3복제본 저장
edits
5.4 저장완료 (close()명령)
6. 메모리의 내용을 edits 파일에 기록(네임스페이스 등록)
정해진 블록크기를 넘어서면
클라이언트는 네임 노드로
새로운 데이터 노드 요청
fsimage
주기적으로 다운로드 후
edits와 fsimage 병합
fsimage 파일을
Name Node로 전송
16. 16 9/27/2013
HDFS 동작방식(메타데이터)
Name Node
Secondly
Name Node
1. edit 파일 회전(보관, edits.new 생성)
2. fsimage와 edits 파일 복사
4. 새로운 fsimage 파일 전송
Disk
3. 두 파일을 읽어서 edits 를 반영,
새로운 fsimage 파일 생성5. edits.new 파일명을 edits로 변경
Disk
• 매시간(기본값) 또는 네임노드 edits 파일의 크기가 64MB가 되면 발생
• 최근 하둡버전은 트랜잭션 개수 기준으로 체크 포인트를 수행
17. 17 9/27/2013
NFS
• Hadoop NameNode는 SPOF
• 따라서 HA 구조로 만들어야 함
• HA 기본 기능은 Hadoop 1.x 버전 이하에서는 존재하지 않음
> Hadoop 2.0(YARN)의 가장 인기있는 기능
• NFS, Zookeeper 등을 이용하여 HA 구현
Hadoop HA(NameNode)
Zookeeper
Quorum
복구
컨트롤러
복구
컨트롤러
네임노드(Ac
tive)
네임노드(St
andby)
메타데이
터
공유
메타데이
터
메타데이
터
* 그 밖의 페더레이션 구조가 있음
19. 19 9/27/2013
• MapReduce Framework 사상
> Logic on Data; Data Locality 반영
• MapReduce: Simplified Data Processing on Large Clusters
• 개발 단순성
> 한 번에 하나의 레코드만을 다루는 데이처 처리 프로그램만 작성하면 됨
> 하지만, Functionality Programming 개념을 숙지; KEY-VALUE
– 사실, Java MapReduce 는 변종
> Filtering, Projection, Grouping, Aggregation 등을 구현
• 확장성
> 태스크들은 서로 통신하거나, 상태를 공유하지 않고 분산된 머신에서
병렬 수행
• 내고장성
> 실패는 예외가 아니라 항상 일어나는 일
> 클러스터의 워커 노드에서 태스크가 실패하면 다시 시도
MapReduce 의 Features
21. 21 9/27/2013
• Job Tracker
> 1개임
> Client와 Task Tracker와 RPC 통신 수행
> Task Tracker는 Heartbeat으로 상태과 정보를 보내 줌
> Job Configuration 책임
• Task Tracker
> 사용자 코드를 수행하는 데몬
> Job Tracker에게 주기적으로 진행과정 보고
> Job Tracker로부터 할당 받으면 새로운 프로세스 만들어 Task
Attempt함
– Task vs. Task Attempt
MapReduce Daemon
23. 23 9/27/2013
1. 하둡 배포판 버전 선택
2. 하드웨어 선택
3. 운영체제 선태과 준비 사항
4. 커널 튜닝
5. 네트워크 설계
Cluster Planning
24. 24 9/27/2013
• Apache Hadoop vs. Packaging Hadoop
> Apache Hadoop
> Hortonworks
> Cloudera
하둡 패포판과 버전 선택
25. 25 9/27/2013
• 20대 미만 클러스터(소형 클러스터) 마스터 하드웨어 저비용 투자
> CPU: 2.6GH, 쿼드코어 CPU 2개
> MEM: DDR3 RAM 24GB
> NT: 1GB NIC 2개
> Controller: SAS 드라이버 Controller, SAS II(OS 디바이스 JBOD)
> Disk Storage: 최소 1TB 이상
• 300대 미만
> Memory만 24GB 혹은 48GB
• 대형 Cluster
> Memory 96GB
하드웨어 선택
구분 대상 고려사항
마스터
하드웨어
선택
네임노드 • 독립머신, 메타데이터를 메모리에 저장
• CPU보다 메모리 위주
보조
네임노드
• 네임노드와 같음, 동일한 메모리, 디스크 용량
필요
잡 트래커 • 많은 메모리를 사용, 네임노드와 같은 Spec
26. 26 9/27/2013
하드웨어 선택
구분 대상 고려사항
워커
하드웨어
선택
데이터 노드 • 저장과 계산 두 역할 모두 함
• 따라서 CPU, Disk Storage 고려
• 복제 계수, X 3
• MapReduce 임시 저장, 20~30% 추가 저장
• 메모리 보다, Disk 위주
• 연산을 위한 CPU 선택
태스크
트래커
중급(많은 메모리, 많은 디스크, 1GB 이더넷) 고급(대용량 메모리, 초고속 디스크, 10GB
이더넷)
• CPU: 2.9GHz, 15MB 캐시 6코어 CPU 2개
• 메모리: DDR3-1600 ECC 64GB
• 디스크 컨트롤러: SAS 6GB/S 1개
• 디스크: 3TB LFF SATA II 7200 RPM HDD 12개
• 네트워크: 1GB 이더넷 2개
• 비고: 인텔 하이퍼 쓰레딩 QPI 기능 권장
• 3 또는 4 채널 메모리 설정
• CPU: 2.9GHz, 15MB 캐시 6코어 CPU 2개
• 메모리: DDR3-1600 ECC 96GB
• 디스크 컨트롤러: SAS 6GB/S 2개
• 디스크: 3TB LFF SATA II 7200 RPM HDD 24개
• 네트워크: 10GB 이더넷 1개
• 비고: 인텔 하이퍼 쓰레딩 QPI 기능 권장
• 3 또는 4 채널 메모리 설정
27. 27 9/27/2013
• Scale up 대신 Scale out
• 가상화를 일반적으로 사용하지 않는다.
> 베어메탈 등의 하이퍼바이저는 I/O 성능에 영향을 줌
하드웨어 선택: 클러스터 규모 결정
일일 수집 용량 1TB
복제 인수 3(블록 사본 수)
일일 실제 용량 3TB 일일수집 용량 X 복제인수
노드 저장 요량 24TB 2TB SATA II HDD 12개
맵리듀스 임시 데이터 용량 25% 맵리듀스 임시 데이터
노드 가용 저장소 용량 18TB 노드저장용량 – 맵리듀스 임시 데이터
용량
1년 61 노드 일일수집용량 X 복제인수 X 365 / 노드
가용 저장소 용량
1년(매월 5% 증가) 81 노드
1년(매월 10% 증가) 109 노드
28. 28 9/27/2013
• RedHat, CentOS, Ubuntu, SuSE 등 리눅스 운영체제 최적화
• Puppet, Chef 등의 설정관리 시스템 필요(오픈소스)
• 소프트웨어
> Oracle Java 1.6 이상
– Hadoop RPM 사용하려면, Oracle Java도 RPM 버전으로 설치
> Cron Daemon
> ntp
> SSH
> SNTP
> rsync
• Hostname, DNS 인식
> /etc/hostname, /etc/hosts, java dns
운영체제 선택과 준비사항
30. 30 9/27/2013
• 커널 매개변수 /etc/sysctl.conf 설정
> 반드시 재시작해야 반영
• vm.swappiness
> 데이터와 메모리간의 SWAP
> 0~100, 수치가 높을수록 데이터를 더 많이 스왑
> 대략 60~80이면 적당
• Vm.overcommit_memory
> malloc() 함수 호출하여 메모리 할당 옵션
> 0: 메모리가 충분하면 애플리케이션 메모리 할당
> 1: 물리 메모리 초과할 때 vm.overcommit_ratio 기준으로 스왑후 할당
– ratio 50이고, 물리 메모리 1GB이면 커널 스왑 포함해서 1.5GB
> 2: 커널은 애플리케이션 메모리 할당 요청을 무조거 수용
– 절대 권고하지 않음
커널 튜닝
31. 31 9/27/2013
• 리눅스의 LVM 사용 금지
> /dev/sd* 아닌 /dev/vg* 이면 잘 못된 설정
• 대부분 운영체제 파일시스템 따라 감
> ext3, ext4, xfs
• 항상 마운트 옵션에 추가해야 함
디스크 설정
32. 32 9/27/2013
• 꼭 네트워크 엔지니어와 함께 설계해야 함
• 고립된 네트워크가 최적
• 1,152 지원 장비
> Cisco Nexus 7000
> 스파인 패브릭 스위치 2개
네트워크 설계
48x10GbE
48x10GbE
4 x 10GbE
48x10GbE
4 x 10GbE
48x10GbE
4 x 10GbE
Host Host Host
34. 34 9/27/2013
• Apache Hadoop
> Tarball 경우 압축해제로 끝
> 전문적 관리를 위해 디렉터리 위치 조정 가능
• Cloudera, Hortonworks
> Installation Manager가 존재
> Cloudera Manager
> Hortonworks Management Center
하둡 배포판에 따라서
35. 35 9/27/2013
• 버전 관리가 용이
• 디렉토리 위치 일관성
> /etc/hadoop
– conf 디렉터리(뒤장에 설명)
> /etc/rc.d/init.d
– 데몬 형식의 시작/종료/재식 스크립트
> /usr/bin
– hadoop 실행파일과 태스크 컨트롤러 바이너리 파일
> /usr/include/hadoop
– 하둡 파이프를 위한 C++ 헤더 파일
> /usr/lib
– 하둡 C 라이브러리
> /usr/libexec
> /usr/sbin/
> /usr/share/doc/hadoop
RPM 패키지 사용했을 경우
38. 38 9/27/2013
name value 설명
fs.default.name(core-site.xml) hdfs://centos1:9000 파일시스템의 URL 지정
dfs.name.dir /data/1/dfs/nn 네임노드 메타데이터 저장소
dfs.data.dir /data/1/dfs/dn 데이터 노드 블록 저장소
fs.checkpoint.dir /data/1/dfs/snn 체코포인트 메타데이터 저장소
dfs.permission.supergroup hadoop 슈퍼유저그룹으로 모든 HDFS
조작수행
io.file.buffer.size(core-site.xml) 65536 IO버퍼 크기 클수록 네트워크
전송효율 높아짐 하지만, 메모리
소비와 지연시간도 늘어남
dfs.balance.bandwidthPerSec 분산된 블록의 균형을 맞추기 위한
도구
dfs.block.size 134217728 새로운 파일이 생성시 필요한 블록
크기
fs.trash.interval (core-site.xml) 1440(24시간) 휴지통 기능
HDFS Configurations(hdfs-site.xml)
• dfs.datanode.du.reserved,
• dfs.namenode.handler.count,
• dfs.datanode.failed.volumes.tolerated
• dfs.hosts
• dfs.host.exclude
39. 39 9/27/2013
MapReduce Configurations(mapred-site.xml)
name value 설명
mapred.job.tracker hdfs://centos1:9000 Job Tracker URL scheme
mapred.local.dir /data/1/mapred/local 로컬 디스크에 임시 출력을 저장
mapred.java.child.opts -Xmx2g JVM 메모리 사용 공간에
mapred.child.ulimit 1572864 태스크의 가상 메모리 용량을 제한
mapred.tasktracker.map.tasks.maximu
m
16 각 머신이 동시에 실행할 수 있는 태스크
수는
mapred.tasktracker.reduce.tasks.
maximum
8 각 머신이 동시에 실행할 수 있는 태스크
수는
mapred.compress.map.output org.apache.io.compress.SnappyCodec 뱀 태스크의 출력을 디스크에 저장할 때 기본
설정
mapred.output.compression.type BLOCK maprecl.output.compression.
type 에 지정된 압축 방식
• mapred.jobtracker.taskScheduler
• mapred.reduce.parallel.copies
• mapred.reduce.tasks
• tasktracker.http.threads
• mapred.reduce.slowstart.completed.maps
40. 40 9/27/2013
• HDFS 블록 사본은 서로 다른 머신에 저장
> 하지만, 위치 정보가 없다면 하나의 랙에 모두 저장 가능성이 있음
> 랙 전체가 실패할 경우 가용성 문제 발생
• 첫 번째 복제 저장소는 임의로 결정
• 두 번째, 세 번째 복제 저장소는 다른 랙의 두 머신 저장
> 3개의 랙에 저장하지 않는 이유는 머신의 실패보다 랙의 실패가 적다.
> 두 번째, 세 번째 동일 랙 내의 머신에 배치하면 데이터 교환 손 쉬움
– 랙 스위치만 거치게 되니까.
• 스크립트로 작성하여 Configuration 설정
Rack Topology
42. 42 9/27/2013
• 대개 Kerberos 사용
> 주체, 인스터스 영역의 세 가지 컴포넌트
> Kerberos 자체만으로 학습해야 하며, Learning Curve 상당히 큼
> 따라서, 시스템 관리자/운영자와 함께
> 오히려 하둡은 core-site.xml/mapred-site.xml 설정파일만 수정하면
끝
식별, 인증, 허가
name value
hadoop.security.authentication Kerberos
hadoop.securitY.authorization true
dfs.namenode.keytab.file
dfs.datanode.keytab.file
/etc/hadoop/conf/hdfs.keytab
dfs.block.access.token
dfs.namenode.kerberos.principal
dfs.namenode.kerberos.https.principal
dfs.datanode.kerberos.principal
dfs.datanode.kerberos.https.principal
host/ _HOST@MYREALM.MYCOMPANY.COM
dfs.https.address
dfs.datanode.http.address
0.0.0.0
0.0.0.0:1006
dfs.https.port 50470
dfs.datanode.address 0.0.0.0:1004
dfs.datanode.data.dir.perm 0700
43. 43 9/27/2013
• 다른 에코시스템과 권한/인증/허가 설정을 해야 함
• 안전하거나 아니거나!
> 데이터는 소중하다. 따라서 일반적인 데이터 센터 내에서도 TOP Level
위치
> 기업 내 SOC(Security Official Center) 운영
– 섬! 인터넷, 휴대폰도 운용되지 않음
– 따라서 개발 Cluster와 구분되어야 함
– Hadoop Client 연결되는 노드가 필수로 필요함
• 아니면, 완벽한 보안 가이드 준수
> 하지만, 보안 레벨이 높을수록 성능은 저하 됨
> 데이터 암호화
– 디코딩 레벨을 하둡에서 할 것인가? 아니면 외부 서버에서 할 것인가?
– 대게 하둡에서는 하지 않음 디코딩 자체가 극심한 IO 문제를 발생함
Hadoop Security Planning
46. 46 9/27/2013
MapReduce Scheduler
• FIFO 스케줄러
> 먼저 오면 먼저 처리
> 독점 문제 발생
> 우선순위 지원
– 매우 낮음 < 낮음 < 보통 < 높음 < 매우 높음
> 소형, 실험용, 개발 클러스터에만 적용
• Fair 스케줄러
> 큐에 제출된 잡은 풀 중 하나에 배치
> 클러스터의 총 슬롯 용량
> 다른 풀의 현재 요청, 최소 보장 슬롯, 기용 슬롯 용량 등으로 태스크
슬롯 수 결정
• Capacity 스케줄러
> 총 클러스터 슬롯 수를 가진 다수의 큐를 설정
> 큐에 요청이 있을 때만 예약
47. 47 9/27/2013
Fair 스케줄러 알고리즘 설명
풀 요청 최소분
배
실제분
배
조엘 20 0 20
라이언 40 0 40
총 슬롯 용량: 80
풀 요청 최소분
배
실제분
배
조엘 20 0 20
라이언 40 0 30
싸이먼 120 0 30
총 슬롯 용량: 80
풀 요청 최소분
배
실제분
배
조엘 40 0 25
라이언 30 0 25
싸이먼 30 50 30
총 슬롯 용량: 80
풀 요청 최소분
배
실제분
배
조엘 40 0 15
라이언 30 0 15
싸이먼 60 50 50
총 슬롯 용량: 80
풀 요청 가중치 실제분
배
조엘 80 1 26
라이언 60 2 53
총 슬롯 용량: 80
53. 53 9/27/2013
• 성능 모니터링
> JVM, dfs, mapred
> Job status, Failed Job, Task 개수
• 상태 모니터링
> CPU, Memory, Disk, Network Traffic
> Hadoop Daemon, Hadoop Log
• 상용 툴을 이용하는 방법
> 상당히 고가
• 일반적인 오픈소스 활용
> Ganglia + Nagios + Ambari(Hadoop Ecosystem)
Monitoring
54. 54 9/27/2013
• 데이터 백업
> 분산 복제(distcp)
> 병렬 데이터 수집시 바로 데이터 이중화
– Apache Flume 이용하여 HDFS 싱크로 통해 Direct 저장
• 메타 데이터 백업
> 내장 웹서버 /getimage 서블릿 호출
> getimage=1, fsimage 추출
# curl –o fsimage.201309 ‘http://centos1:50070/getimage?getimage=1’
> getedit=1, edits 추출
# curl –o fsimage.201309 ‘http://centos1:50070/getimage?getedits=1’
Backup and Recovery
Hadoop Cluster 1
Hadoop Cluster 2
Flume
sink
Data source
동시 저장
55. 55 9/27/2013
• 기본 사용 방법
# hadoop distcp hdfs://centos1:50030/path/one hdfs://remote:50030/path/two
> -m: 매퍼수 제어
> -overwrite: 기존파일 덮어쓰기
> -update: 변경된 부분만 복사
> -delete: 원본에는 없고 목적지에 있는 파일 삭제
• 기본 동종 클러스터
> hdfs://
• 이기종 클러스터
> webhdfs://
> httpfs://
• Amazon S3 지원
> s3://
분산복제 Distcp
58. 58 9/27/2013
YARN
• Resource Manager
> Job Tracker의 자원 관리
> 클러스터 모니터링
• Node Manager
> Task Tracker 역할
– Map과 Reduce 관리
> 실질적 MapReduce 수행
• Application Master
> 단일 Job Tracker가 아님
Notas del editor
Velocity: Batch, Near Real-time, Real-time, StreamVolume: Terabytes, Records, Transaction, Table, fileVariety: 정형, 반정형, 비정형모든 데이터Complex: IT 융합
맵과 리듀스는 LISP 코드에서 유래,FunctionalityProgramming의 프로그래밍 모델,Map과 Reduce그래서 어떤 언어로도 가능하지만,Functional Language에 적합자바는 변종Map + Reduce 구글 GFS 발표 이후 논문에서 공개 더그 커팅이 자바로 개발
개인적으로 최악의 이름이지 않았나 싶다. 네임노드가 죽어도 보조 네임노드 때문에 클러스터가 동작으로 수행한다고 믿고 있다.
하둡 0.15부터 소스 분석, 초기버전에서 HDFS하둡 0.19버전 MapReduce 버전 분석하지만, 버전별로 너무 힘들었다.
fsimage와 edits 파일이 매우 중요,fsimage는 파일시스템의 메타데이터 스냅샷이고,edits 메타데이터의 누적된 변경 내용edits 파일은 WAL로 지속적인 파일 추가조작을 하므로 I/O 작업의 부하도 적고, 성능저해하는 탐색도 조작 가능, 하지만 시간이 지날수록 커지게 되므로 fsimage에 반영이런 일을 하기에는 클라이언트의 클러스터 요청 처리도 해야 함. 따라서 보조 네임노드가 필요하게 됨.1 보조 네임노드는 네임노드에게 edits 파일을 보관하고 edits.new 파일에 로그를 쓰라고 지시한다.2 보조 네임노드는 네임노드의 fsimage와 edits 파일을 로걸 처|크포인트 checkpoint 디렉터리로 복사한다.3 보조 네임노드는 fsimage를 로드하고 edits를 위에서부터 반영하여 새로운 파일을 만든 후 fsimage를 디스크에 저장한다.4 보조 네임노드는 새 fsimage를 네임노드에 보내고 그것을 바로 적용하도록 지시한다.5 네임노드는 edits.new 파일의 이름을 edits로 변경한다
리눅스 HA는 사용하지 않는 이유는 리눅스-HA는 정적 컨텐츠를 제공하는 무상태 서비스에 적합하고네임노드는 같은 상태-기반 시스템에는 맞지 않다. 또한 가상 IP사용하기 때문에 리눅스 HA 적합하지 않음
프로세스를 시작하거나 fork () 함수를 호출하면 전체 페이지 테이블이 복제된다. 다른 말로하면,자식 프로세스는 부모 프로세스 메모리의 완전한 사본을 저장하므로 메모리가 두 배 필요하다. 또한자식 프로세스가 exec() 힘수를통해 부모 메모리를 복사히는 시간도 낭비된다. 그런데 fork ()의 호출이 너무 빈번하여 부모 메모리를 복사하지 않는 vfork () 힘수가 탄생하게 되었다. 다른 말로 하면,자식 프로세스가 직접 exec() 함수를 호출할 때까지 메모리를 복사하지 않는다. 침고로 HotSpot ]VM은 vfork () 함수가 아닌 fork ()로 자바의 fork 조작을 구현했으므로 문제가 있다.이것이 왜 히둡에 문제가 될까? 하둡 스트리밍 (다른 프로그래밍 언어에서 기본 입력과 출력으로 랩리듀스 잡을 실행하도록 지원하는 라이브러리)은 사용자 코드를 시작할 때자식 프로세 스를 생성시키고 파이프라인을 경유해 데이터를 주고받는다. 따라서 자식 태스크를 위해 추가 메모리가 펼요하다. 또한 프로세스가 시작될 때 시간도 낭비되지만, 우리가 예상히는 대로 메모리도 두 배 시용한다. 이런 이유로 vm. overcommlt_memroy를 1 로 설정해야하며, 이와관련된 vm.overcommit_ratio도정확히 설정해야한다.
48x 12 =576
• hadoop-env.sh하둡 스크립트는 본bourne셀로 작성되며, 이 파일은 하둡에 필요한 JDK. JDK 데몬의 옵션.P ID 파일, 로그파일의 디렉터리 등 환경 변수들을 지정효떼 이 변수들은 1 20페이지 ‘환경 변수와 셀 스크립트’에서 설영효tcf .• core-site.xml모든 하둡 데몬과클라이언트에 관련된 따라미터를 지정한 XML 파일이다• hdfs-site.xmlHDFS 데몬과클라이언트에 필요한 파라미터를 지정한 XML 파일이다• mapred -site.xml업리듀스 데몬들과클라이언트에 필요한 따라미터를 지정한 XML 파일이다 .• log4j.properties모든로그 설정 정보를 포함한 지바 속성 파일이다 이 속성들은 1 23페이지 ‘로그 설정’에서 설명효H각 .• masters (옵선)보조 네임노드가 실행되는 머신들의 목록으로 한 줄에 하나씩 등록된다. 이 파일은 start-*.sh형식의 보조스크립트에서사용효봐• slaves (옵션)데이터노드l태스크트래커 ~fQ l 실행되는 머신틀의 목록으로 한 줄에 하나씩 등록효κt이 파일은 staη- *.sh형식의 보조 스크립트에서 사용효떼 .• fair-scheduler.xml (옵션)업리듀스의 태스크 스케줄러 플러그인 중 페어 스케줄러Fair Scheduler으| 자원 풀과 설정을 정의한 파일이다• capacity-scheduler.xml (옵션)업리듀스의 태스크 스케줄러 플러그인 중 케떠시티 스케줄러Capacity Scheduler의 큐와 설정을 정의한 파일이다• dfs.include (옵션, 관용명)네임노드 접속을 허용할 머신들의 목록으로 한 줄에 하나씩 등록흔tcf .• dfs.exclude(옵선, 관용명 )네임노드 접속을 허용하지 않을 머신들의 목록으로 한줄어| 하나씩 등록한다 .• hadoop-policy.xml하둡과 통신할 때 특정 RPC 할수의 호출을 허용할 계정 또는 그룹을 지정한 XML 따일이다• mapred-queue - acls.xml업리듀스 잡 큐에 잡의 저|출이 허용된 계정 또는 그룹을 지정한 XML 파일이다• taskCtrller.cfg보안 모드로 실행할 때 업리듀스 보조 프로그램인 setuid태스크 컨트롤러에 필요한 값을 지정한 자바 속성형식의파일이다.
CPU 코어 개수가 12이면 x 1.5를 수행 18개2/3는 맵태스트,1/3은 리듀스태스크