개인(팀) 프로젝트/기타 프로젝트 & 활동

04. 수집 요구사항 정의 + HDFS, 주키퍼 설치 및 실행

한소희DE 2021. 6. 16. 19:54

오늘은 우리의 프로젝트 수집 요구사항을 구체적으로 정의해보고, 수집에 필요한 프로그램 중 HDFS와 주키퍼를 설치해보는 실습을 해볼 것이다.

그리고, 간단한 HDFS와 주키퍼 실행을 공부해볼 것이다.

 

 

 

 

 

 

 

목차

수집 요구사항 정의

HDFS와 주키퍼 설치

HDFS와 주키퍼 실행

 


 

 

 

01. 수집 요구사항 정의

 

앞서 포스팅한 프로젝트 개요에서도, 빅데이터 수집 요구사항을 정의했었다. 그 요구사항을 보다 더 자세히 정의해 볼 것이다.

 

우선 요구사항을 크게 두 가지로 정의할 수 있다.

 

요구사항 1: 차량의 다양한 장치로부터 발생하는 로그 파일을 수집해서 기능별 상태를 점검

요구사항 2: 운전자의 운행 정보가 담긴 로그를 실시간으로 수집해서 주행 패턴을 분석

 

해당 요구사항을 구체화해보겠다.

수집 요구사항 구체화 분석 및 해결방안
1. 스마트카로부터 로그 파일 주기적 발생 플룸으로 대용량 배치파일 및 실시간 로그파일 수집
2. 스마트카 배치 로그 파일 이벤트 감지 필요 플룸의 Source 컴포넌트 중 SpoolDir 이용해 주기적 로그 파일 발생 이벤트 감지
3. 스마트카 실시간 로그 발생 이벤트 감지 필요 플룸의 Source 컴포넌트 중 Exec-Tail 이용해 주기적 로그 파일 발생 이벤트 감지
4. 로그데이터 중 가비지데이터 있을 가능성 있음 플룸 intercepter로 정상 패턴 데이터만 필터링
5. 수집 도중 장애 발생해도 안전하게 처리해야 함 플룸 메모리 채널 + 카프카 브로커 -> 데이터 임시 저장
6. 스마트카 실시간 로그파일은 비동기 처리이며 빠른 수집 필요 플룸에서 수집한 데이터를 카프카 Sink 컴포넌트 이용해 카프카 Topic에 비동기 전송

※ 비동기: 동시에 일어나지 않는다는 의미

 


 

02. HDFS와 주키퍼 설치

 

이번엔 클라우데라 매니저를 통해 Server02에 설치하겠다.

 

우선 그러기 위해서는 클라우데라 매니저에 서버를 생성해야 하니까, Server01을 일단 만들어준다. 이때, 우선적으로는 HDFS랑 주키퍼 그리고 얀을 깔아준다.

 

위처럼, 크롬을 통해 클라우데라 매니저를 열어서 사용자 지정 서비스를 클릭해 원하는 소프트웨어를 선택해주면 된다.

클라우데라 매니저를 쓰면 엄청 편해진다!

 

HDFS의 네임 노드와 데이터 노드 등 설정은 아래와 같이 해준다.

 

 

나머지 역할 할당도 아래와 같이 해주었다.

 

역할 분배의 기준?

나도 이 강의를 보면서 한 거라 이 부분을 정확히 이해하지 못했다! 답변이 오면 다시 적어두겠다!

 

 

2-1. HDFS 설치 에러 오류

 

위와 같이 설치를 잘 실행했는데, 마지막에 설치 부분에서 에러가 나거나, 설치 후 위와 같이 차트가 보이지 않는다면, HDFS의 세이프 모드(Safe Mode)가 자동 설정되어서일 수 있다.

 

그 에러의 해결 방법은 아래 포스팅에 작성해두었다.

 

https://eng-sohee.tistory.com/59

 

4-1. 클라우데라 매니저 HDFS 에러 해결

앞서 ※ 4번째 포스팅에서, 클라우데라 매니저를 설치했는데 아래와 같은 오류가 났다... 설치와 동시에 HDFS 에서 먹통이 일어난 것! ※ 포스팅 링크 그래서 오류 해결을 하는 과정을 한번 포스팅

eng-sohee.tistory.com

 

 


 

03. HDFS와 주키퍼 실행

 

3-1. txt 파일을 HDFS로 옮기는 방법

 

한번 텍스트 파일을 HDFS에 저장해보겠다. 순서는 아래와 같다.

1. filezila를 통해 로컬 PC의 txt 파일을, Server02의 bigdata폴더(임의로 생성)로 이동

2. PuTTY로 HDFS 명령어를 통해, Server02에 저장한 폴더를 HDFS로 옮겨 저장

 

cd /home/bigdata

# Sample.txt 파일을 HDFS의 /tmp 디렉토리에 저장
hdfs dfs -put Sample.txt /tmp

# HDFS에 저장한 파일 확인
hdfs dfs -ls /tml

# HDFS에 저장한 파일 내용 확인
hdfs dfs -cat /tmp/Sample.txt

 

이렇게 수행했을 때 수행이 잘 되면 HDFS에 Sample.txt 파일이 잘 저장된 것이다.

 

이 외에도, 추가적인 HDFS 명령을 알아보겠다.

 

저장한 파일의 상태를 조회하는 방법?

hdfs dfs -stat '%b %o %r %u %n' /tmp/Sample.txt 
※ %b : 파일크기, %o : 파일 블록 크기, %r : 복제수, %u : 소유자명, %n : 파일명 정보를 보여준다.

 

파일의 이름을 바꾸는 방법?

hdfs dfs -mv /tmp/Sample.txt /tmp/Sample2.txt
코드 해석: 기존 파일명인 Sample.txt를 Sample2.txt로 변경한다는 의미

 

해당 서버의 네임 노드가 무엇인지, 데이터 노드 개수가 몇 개인지, 파일 상태는 어떤지 등 HDFS의 파일 시스템 상태를 검사하는 방법은 아래 코드와 같다.

hdfs fsck /


# (추가) 파일 시스템의 전체 상태(통계 정보)를 한 번에 보고 싶을 때는 아래코드를 이용
hdfs dfsadmin -report

 

🔥 그렇다면 HDFS에 저장한 파일을 로컬로 가져오는 방법은 무엇일까?
get 명령어를 써주면 된다.

hdfs dfs -get /tmp/Sample.txt
HDFS 파일 삭제 방법 (영구삭제 방법)

hdfs dfs -rm /tmp/Sample.txt
이 명령을 하면, 휴지통에 임시 삭제되어 특정 시간이 지나면 영구 삭제된다. 하지만 만약 임시 삭제가 필요 없다면 -skipTrash 옵션을 추가하면 된다.

 

 

 

3-2. 주키퍼 명령어 사용

 

우선 주키퍼는, 주키퍼 클라이언트 내에서 명령을 해야 하므로 아래 코드를 이용해 주키퍼 클라이언트에 접속해준다.

zookeeper-client

 

주키퍼의 Z노드를 등록/조회/삭제해보는 명령어를 시행해보겠다.

# 생성
create /pilot-pjt bigdata

# pilot-pjt가 생성되었으므로, 기존 zookeeper와 pilot-pjt가 뜬다.
ls /

# 결과값으로 bigdata가 출력된다.
get /pilot-pjt

# 삭제
delete /pilot-pjt