본문 바로가기

data engineering

하둡 운영

데이터는 SK데이터허브(

https://www.bigdatahub.co.kr/index.do)에서 받았음 데이터의 크기: 2.95MB
하둡 구성 

호스트 명 하둡설치 내용
server01 주키퍼액티브 네임노드저널노드데이터노드리소스매니저
server02 주키퍼스탠바이 네임노드저널노드데이터노드노드매니저
server03 주키퍼저널노드데이터노드노드매니저
server04 데이터노드노드매니저

 

 

HDFS 운영

- 네임노드에게 클라이언트는 권한을 받으면 데이터노드에 접근해 데이터 저장

- 데이터는 블록 단위 (기본 64MB 또는 128MB)로 나눠져 저장

- HDFS의 블록 복제수는 기본적으로 3

- 네임노드는 데이터 노드에 장애가 나면 그 데이터노드의 블록들을 다른 서버로 복제

 

 

 

Q. 블록이 어떻게 복제되어 저장되나

A. 블록은 생성이 되면 다른 데이터노드들과 파이프라인을 형성해 복제

 

server01bigdata 계정으로 로그인 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분 뒤에 장애 판정이남)

 

 

 

-server02blk_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