데이터는 SK데이터허브(
https://www.bigdatahub.co.kr/index.do)에서 받았음 데이터의 크기: 2.95MB
하둡 구성
호스트 명 | 하둡2 설치 내용 |
server01 | 주키퍼, 액티브 네임노드, 저널노드, 데이터노드, 리소스매니저 |
server02 | 주키퍼, 스탠바이 네임노드, 저널노드, 데이터노드, 노드매니저 |
server03 | 주키퍼, 저널노드, 데이터노드, 노드매니저 |
server04 | 데이터노드, 노드매니저 |
■ HDFS 운영
- 네임노드에게 클라이언트는 권한을 받으면 데이터노드에 접근해 데이터 저장
- 데이터는 블록 단위 (기본 64MB 또는 128MB)로 나눠져 저장
- HDFS의 블록 복제수는 기본적으로 3개
- 네임노드는 데이터 노드에 장애가 나면 그 데이터노드의 블록들을 다른 서버로 복제
Q. 블록이 어떻게 복제되어 저장되나
A. 블록은 생성이 되면 다른 데이터노드들과 파이프라인을 형성해 복제
○ server01을 bigdata 계정으로 로그인 example_data 폴더 생성
- hadoop 실행
[bigdata@server01 ~]$ mkdir example_data |
○ FileZilar를 이용해 HDFS에 저장할 데이터를 example_data에 옮기기
○ /home/bigdata/example_data에 있는 call_chicken_04month.csv 데이터를 hdfs에 저장
[bigdata@server01 hadoop-2.9.1]$ ./bin/hdfs dfs -put /home/bigdata/example_data/call_chicken_04month.csv testDir |
○ 데이터 확인
[bigdata@server01 hadoop-2.9.1]$ ./bin/hdfs dfs -ls testDir |
○ HDFS 파일 시스템 상태 확인 : fsck
-files -blocks 옵션 : 블록 보고서 출력
[bigdata@server01 hadoop-2.9.1]$ ./bin/hdfs fsck testDir/call_chicken_04month.csv -files -blocks |
- 블록 아이디: blk_1073741835_1011
- 블록 크기 : 2463189 B
- 블록 복제 수: 3
○ server01의 데이터노드 로그를 확인하고 블록이 어떤 서버로 복제되었는 지 확인
[bigdata@server01 hadoop-2.9.1]$ cd /home/bigdata/hadoop-2.9.1/logs [bigdata@server01 logs]$ vi hadoop-bigdata-datanode-server01.log |
- server01, server02, server04에 복제 된 것을 확인 가능
- 데이터노드 블록들이 저장되는 디렉토리는 hdfs-site.xml에서 설정한
/home/bigdata/data/dfs/datanode 안에 있음
- 아래 경로로 이동하여 블록확인
$ cd /home/bigdata/data/dfs/datanode/current/BP-995797781-192.168.56.101-1527652230556/current/finalized/subdir0/subdir0 |
○ FileZilar를 이용해 HDFS에 저장할 데이터를 example_data에 옮기기
○ /home/bigdata/example_data에 있는 SmartCarStatus.txt 데이터를 hdfs에 저장
- 파일크기: 대략 100mb -> 2개의 블록으로 쪼개짐
[bigdata@server01 hadoop-2.9.1]$ ./bin/hdfs dfs -put /home/bigdata/example_data/SmartCarStatus.txt testDir |
○ HDFS에 적재한 SmartCarStatus.txt 파일 상태 및 블록 확인
[bigdata@server01 hadoop-2.9.1]$ ./bin/hdfs fsck testDir/SmartCarStatus.txt -files -blocks |
○ server01의 데이터노드 로그를 확인하고 블록이 어떤 서버로 복제됐는지 확인
[bigdata@server01 hadoop-2.9.1]$ cd /home/bigdata/hadoop-2.9.1/logs [bigdata@server01 logs]$ vi hadoop-bigdata-datanode-server01.log |
Q. 데이터노드에 장애가 생기면 네임노드는 어떻게 대처하는 가
A. 장애가 생긴 데이터 노드의 블록이 다른 데이터노드로 복제됨
- blk_1073742127_1303 블록은 현재 server01, server03, server04에 저장됨
- server02에는 블록이 없음
- jps로 데이터노드의 프로세스 아이디를 확인 후 server04의 데이터노드를 끔
[bigdata@server04 ~]$ jps |
[bigdata@server04 ~]$ kill -9 1512 |
- server01:50070에 접속해 server04 데이터노드 상태 확인(대략 6분 뒤에 장애 판정이남)
-server02에 blk_1073742127_1303 블록이 복제됨
'data engineering' 카테고리의 다른 글
Flume 설치 및 간단한 예제 (0) | 2018.09.26 |
---|---|
Flume 개요 (0) | 2018.09.11 |
빅데이터 수집 (0) | 2018.07.29 |
Hadoop의 개요 #4 - MapReduce와 YARN (0) | 2018.07.25 |
Hadoop의 개요 #4 - 네임노드 HA(High Availability:고가용성) (0) | 2018.07.23 |