* 본 가이드는 필요 파일과 이전 포스팅까지 작업이 완료되었다는 가정하에 진행

 

주요 스펙

호스트OS - windows10 home

게스트OS들 - centOS7

Hadoop - 3.1.0

Zookeeper - 3.4.10

jdk - 1.8.0_191

MobaXterm을 활용하여 작업 진행

공유기(WI-FI) 연결 환경

 

서버 6대를 활용한 하둡 HA 구성:

nn01: 액티브 네임노드, 저널노드 역할

rm01: 스탠바이 네임노드, 리소스 매니저, 저널노드 역할

jn01: 저널노드 역할

dn01: 데이터 노드 역할

dn02: 데이터 노드 역할

dn03: 데이터 노드 역할

 

실행 환경:

Action Server: 명령을 수행할 서버(hostname)

User: 명령을 수행할 계정

Pwd: 명령을 수행할 경로

 


 

지난 시간엔 하둡(hadoop)과 주키퍼(zookeeper)를 사용할 계정을 생성하고 권한 부여 및 ssh 통신 설정을 마쳤습니다.

이번 포스팅에서는 주키퍼 계정에 직접 주키퍼를 설하는 과정을 진행하겠습니다.

 

ssh 통신이 설정되어있지 않으면 본 과정을 진행 시 차질이 있습니다. 설정은 마친 후 진행해주세요!

developer-woong.tistory.com/19

 

(하둡 설치) ep06_하둡(hadoop), 주키퍼(zookeeper) 계정 생성 및 권한 설정, ssh 통신

* 본 가이드는 필요 파일과 이전 포스팅까지 작업이 완료되었다는 가정하에 진행 주요 스펙 호스트OS - windows10 home 게스트OS들 - centOS7 Hadoop - 3.1.0 Zookeeper - 3.4.10 jdk - 1.8.0_191 MobaXterm을 활..

developer-woong.tistory.com


 

* 주키퍼(zookeeper)는 nn01, rm01, jn01에서만 설치되며, nn01서버의 zookeeper계정에 먼저 설치 후, 파일 설정을 마치고 rm01, jn01에게 배포하는 방식으로 진행

 

 

주키퍼(zookeeper) 계정 접속 - nn01서버만

Action Server: nn01

User: root

Pwd: /root

# nn01에서 설치 및 환경 설정 후 rm01, jn01서버에 배포
# 사용자 변경
su - zookeeper

 


주키퍼(zookeeper) 설치

Action Server: nn01

User: zookeeper

Pwd: /home/zookeeper

# wget이 없다면 설치
# yum install wget
# 주키퍼 다운로드 (본 가이드에서는 3.4.10v)
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.10.tar.gz

 


주키퍼(zookeeper) 압축 파일 해제

Action Server: nn01

User: zookeeper

Pwd: /home/zookeeper

# 압축 해제
tar xvfz zookeeper-3.4.10.tar.gz

# 확인
ls


주키퍼(zookeeper) config 파일 접근

Action Server: nn01

User: zookeeper

Pwd: /home/zookeeper

# 경로 이동
cd zookeeper-3.4.10

 


주키퍼(zookeeper) config 파일 수정

Action Server: nn01

User: zookeeper

Pwd: /home/zookeeper/zookeeper-3.4.10

# 파일 복사
cp conf/zoo_sample.cfg conf/zoo.cfg

# 파일 수정
vi conf/zoo.cfg


tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/zookeeper/data
clientPort=2181
maxClientCnxns=0
maxSessionTimeout=180000
server.1=nn01:2888:3888
server.2=rm01:2888:3888
server.3=jn01:2888:3888


 

주키퍼(zookeeper) 재압축을 위한 경로 이동

Action Server: nn01

User: zookeeper

Pwd: /home/zookeeper/zookeeper-3.4.10

# 경로 이동
cd ..
# pwd -> home/zookeeper 

 


주키퍼(zookeeper) 재압축

Action Server: nn01

User: zookeeper

Pwd: /home/zookeeper

# 폴더 이름 확인
ls

# 위 과정을 통해 zoo.cfg 파일 설정을 마쳤으니 재압축 후 rm01, jn01 서버에 배포할 것
# zookeeper.tar.gz 이름으로 재 압축
tar cvfz zookeeper.tar.gz zookeeper-3.4.10

# 확인
ls

 


주키퍼(zookeeper) 재압축 파일 배포

Action Server: nn01

User: zookeeper

Pwd: /home/zookeeper

# rm01, jn01서버에 배포
# 오류 시 ssh 설정 다시 확인
scp zookeeper.tar.gz zookeeper@server02:/home/zookeeper
scp zookeeper.tar.gz zookeeper@server03:/home/zookeeper

 


배포한 재압축 주키퍼(zookeeper)파일 압축 해제

Action Server: rm01, jn01

User: zookeeper

Pwd: /home/zookeeper

# 배포받은 rm01, jn01서버에서 압축 해제
# zookeeper 계정으로 접속후 진행
tar xvfz zookeeper.tar.gz

# 확인
ls

 


주키퍼(zookeeper) myid 지정

Action Server: nn01, rm01, jn01

User: zookeeper

Pwd: /home/zookeeper

# data 폴더 생성
mkdir data

# 경로 이동
cd data

# id 생성
# nn01은 1, rm01은 2, jn01은 3 적어주고 wq!
vi myid

# 돌아오기
cd ~

 


주키퍼(zookeeper) 서버 실행

Action Server: nn01, rm01, jn01

User: zookeeper

Pwd: /home/zookeeper

# 경로 이동
cd zookeeper-3.4.10

# 주키퍼 서버 실행
./bin/zkServer.sh start

 


주키퍼(zookeeper) 서버 상태 확인

Action Server: nn01, rm01, jn01

User: zookeeper

Pwd: /home/zookeeper

# 서버 별 상태 확인
./bin/zkServer.sh status

# 한 서버는 leader, 두 서버는 follower, 모든 서버가 실행중이어야 정상적으로 출력됩니다
# 실행 시 마다 달라질 수 있음. 비율은 맞아야 함

 


주키퍼(zookeeper) 서버 종료

Action Server: nn01, rm01, jn01

User: zookeeper

Pwd: /home/zookeeper

./bin/zkServer.sh stop

 

 

이렇게 주키퍼(zookeeper) 설치 및 환경 설정까지 마치고 서버까지 실행시켜보았습니다.

다음 시간에는 하둡(hadoop) 설치에 대해 포스팅하겠습니다.

감사합니다!!!

 

developer-woong.tistory.com/21

 

(하둡 설치) ep08_하둡(hadoop)설치 및 환경 설정

* 본 가이드는 필요 파일과 이전 포스팅까지 작업이 완료되었다는 가정하에 진행 주요 스펙 호스트OS - windows10 home 게스트OS들 - centOS7 Hadoop - 3.1.0 Zookeeper - 3.4.10 jdk - 1.8.0_191 MobaXterm을 활..

developer-woong.tistory.com

 

반응형

* 본 가이드는 필요 파일과 이전 포스팅까지 작업이 완료되었다는 가정하에 진행

 

주요 스펙

호스트OS - windows10 home

게스트OS들 - centOS7

Hadoop - 3.1.0

Zookeeper - 3.4.10

jdk - 1.8.0_191

MobaXterm을 활용하여 ssh원격 접속 후 작업 진행

호스트OS는 공유기(WI-FI) 연결 환경

 

서버 6대를 활용한 하둡 HA 구성:

nn01: 액티브 네임노드, 저널노드 역할

rm01: 스탠바이 네임노드, 리소스 매니저, 저널노드 역할

jn01: 저널노드 역할

dn01: 데이터 노드 역할

dn02: 데이터 노드 역할

dn03: 데이터 노드 역할

 

실행 환경:

Action Server: 명령을 수행할 서버(hostname)

User: 명령을 수행할 계정

Pwd: 명령을 수행할 경로

 


 

지난 포스팅에서 mobaXterm을 활용하여 ssh 원격 접속 작업 환경 설정 및 jdk 환경변수를 설정하였다.

이번 포스팅에서는 주키퍼(zookeeper)계정을 생성하고 설치하는 작업을 진행한다.

 

주키퍼(zookeeper)란?:

developer-woong.tistory.com/11

 

(하둡 기초) ep06_주키퍼(Zookeeper)란?

효과적인 분산 코디네이션 시스템을 위한 주키퍼(Zookeeper)에 대해 알아본다. 하둡이란?: developer-woong.tistory.com/7 (하둡 기초) ep02_하둡에코시스템(Hadoop EcoSystem) 하둡의 역사에 대해 궁금하다면?! d..

developer-woong.tistory.com


주키퍼(zookeeper)계정 생성과 설치는 nn01, rm01, jn01 3대의 서버에서 진행한다.

* dn01, dn02, dn03 서버는 설치 X

 

주키퍼(zookeeper) 계정 생성

Action Server: nn01, rm01, jn01

User: root

Pwd: /root

# nn01, rm01, jn01 서버만

# 계정 추가
adduser zookeeper

# 패스워드 설정
passwd zookeeper
# 후 원하는 값 입력
# 작업은 계속 root계정에서

 


하둡(hadoop)계정 생성과 설치는 모든 6대의 서버에서 진행한다

 

하둡(hadoop)계정 생성

Action Server: all

User: root

Pwd: /root

# 모든 서버에서 실행

# 계정 추가
adduser hadoop

# 패스워드 설정
passwd hadoop
# 후 원하는 값 입력
# 작업은 계속 root계정에서

 


하둡을 사용할 계정(hadoop)에게 HDFS 관련 폴더에 대한 권한 부여

Action Server: all

User: root

Pwd: /root

# 모든 서버에서 실행

# 폴더 생성
mkdir /dfs
mkdir /yarn
mkdir /pids

# hadoop계정에게 권한 부여
chown hadoop /dfs
chgrp hadoop /dfs
chown hadoop /yarn
chgrp hadoop /yarn
chown hadoop /pids
chgrp hadoop /pids

# 확인
ls -l


 

주키퍼(zookeeper) ssh 통신

가이드 초반 게스트OS간 ssh 통신 설정 과정과 동일

developer-woong.tistory.com/17

 

(하둡 설치) ep04_게스트OS간 통신(SELINUX, SSH, NTP, 방화벽)

* 본 가이드는 필요 파일과 이전 포스팅까지 작업이 완료되었다는 가정하에 진행 주요 스펙 호스트OS - windows10 home 게스트OS들 - centOS7 Hadoop - 3.1.0 Zookeeper - 3.4.10 jdk - 1.8.0_191 공유기(WI-FI)..

developer-woong.tistory.com


 

주키퍼(zookeeper) 계정 접속

Action Server: nn01, rm01, jn01

User: root

Pwd: /root

# nn01, rm01, jn01 서버에서만 실행
# 계정 접속
su - zookeeper

 


각 서버의 주키퍼(zookeeper)계정 ssh 키 생성

Action Server: nn01, rm01, jn01

User: zookeeper

Pwd: /home/zookeeper

# 주키퍼 계정에서 실행
# ssh 키 생성, 입력 값 없이 계속 Enter
ssh-keygen

 


주키퍼(zookeeper) ssh 키 공유

Action Server: nn01, rm01, jn01

User: zookeeper

Pwd: /home/zookeeper

# 주키퍼 계정들 간 ssh 키 공유
# nn01, rm01, jn01 3개의 서버에서 모두 실행
ssh-copy-id -i .ssh/id_rsa.pub zookeeper@nn01
ssh-copy-id -i .ssh/id_rsa.pub zookeeper@rm01
ssh-copy-id -i .ssh/id_rsa.pub zookeeper@jn01

# 비밀번호 입력 여부 없이 접속 확인
ssh nn01
exit

ssh rm01
exit

ssh jn01
exit

 


root 계정으로 전환

Action Server: nn01, rm01, jn01

User: zookeeper

Pwd: /home/zookeeper

# root 사용자로 변경
exit

 


 

하둡(hadoop) ssh 통신

 

하둡(hadoop)계정 접속

Action Server: all

User: root

Pwd: /root

# 모든 6대의 서버에서 실행
# 하둡 계정으로 접속
su - hadoop

 


각 서버의 하둡(hadoop)계정 ssh 키 생성

Action Server: all

User: hadoop

Pwd: /home/hadoop

# 모든 서버에서 실행
# ssh 키 생성
ssh-keygen

 


하둡(hadoop) ssh 키 공유

Action Server: all

User: hadoop

Pwd: /home/hadoop

# 하둡 계정들 간 ssh 키 공유
# 모든 6개의 서버에서 모두 실행
ssh-copy-id -i .ssh/id_rsa.pub hadoop@nn01
ssh-copy-id -i .ssh/id_rsa.pub hadoop@rm01
ssh-copy-id -i .ssh/id_rsa.pub hadoop@jn01
ssh-copy-id -i .ssh/id_rsa.pub hadoop@dn01
ssh-copy-id -i .ssh/id_rsa.pub hadoop@dn02
ssh-copy-id -i .ssh/id_rsa.pub hadoop@dn03

# 비밀번호 입력 여부 없이 접속 확인
ssh nn01
exit

ssh rm01
exit

ssh jn01
exit

ssh dn01
exit

ssh dn02
exit

ssh dn03
exit

 


다음 포스팅에선 주키퍼(zookeeper)계정에 주키퍼를 설치하는 가이드를 작성하겠습니다.

감사합니다!!

developer-woong.tistory.com/20

 

(하둡 설치) ep07_주키퍼(zookeeper)설치 및 환경 설정

* 본 가이드는 필요 파일과 이전 포스팅까지 작업이 완료되었다는 가정하에 진행 주요 스펙 호스트OS - windows10 home 게스트OS들 - centOS7 Hadoop - 3.1.0 Zookeeper - 3.4.10 jdk - 1.8.0_191 MobaXterm을 활..

developer-woong.tistory.com

 

반응형

* 본 가이드는 필요 파일과 이전 포스팅까지 작업이 완료되었다는 가정하에 진행

 

주요 스펙

호스트OS - windows10 home

게스트OS들 - centOS7

Hadoop - 3.1.0

Zookeeper - 3.4.10

jdk - 1.8.0_191

MobaXterm을 활용하여 ssh원격 접속 후 작업 진행

호스트OS는 공유기(WI-FI) 연결 환경

 

서버 6대를 활용한 하둡 HA 구성:

nn01: 액티브 네임노드, 저널노드 역할

rm01: 스탠바이 네임노드, 리소스 매니저, 저널노드 역할

jn01: 저널노드 역할

dn01: 데이터 노드 역할

dn02: 데이터 노드 역할

dn03: 데이터 노드 역할

 

실행 환경:

Action Server: 명령을 수행할 서버(hostname)

User: 명령을 수행할 계정

Pwd: 명령을 수행할 경로

 


 

앞 선 포스팅에 의해 각 게스트OS들은 서로 SSH를 통해 통신이 가능하고, 호스트OS를 통해 외부 인터넷과 접속이 가능하게 되었고, NTP, 방화벽, SELINUX등의 환경 설정이 끝났다.

 

이번 시간에는 MobaXterm을 활용해 6개의 서버를 보다 편리한 UI로 작업하고, STFP 기능을 통해 윈도우 로컬의 파일들을 마우스 드래그로 편리하게 이동하며 작업을 진행할 것 이다.

 

필요 파일들:

developer-woong.tistory.com/13

 

(하둡 설치) ep00_필요 파일 준비 과정

서버 6대를 활용하여 하둡 고가용성(HA)모드로 클러스터를 구축한다. 주요 스펙 호스트OS - windows10 home 게스트OS들 - centOS7 Hadoop - 3.1.0 Zookeeper - 3.4.10 jdk - 1.8.0_191 공유기(WI-FI) 연결 환경 서..

developer-woong.tistory.com


MobaXterm이란?:

putty, Xshell, SecureCRT과 같은 원격 ssh 접속 프로그램, ssh접속 뿐 아니라 Telnet, RDP, Browser, AWS S3, WSL등의 다양한 기능을 지원한다. 윈도우 리눅스간 별 다른 프로그램 설치에 무관하게 편리한 전송이 가능하고, 한 번 ssh를 활용한 session연결 후 다음 접속부터 비밀번호 없이 연결이 가능하고, 무료로 사용이 가능하다.

 

본 하둡 설치 가이드 과정 중 이번 포스팅부터 MobaXterm으로 작업할 것이다.

매우 매우 편리하다! 사용해보면 느낄것이다. 웬만한 기능들 다 된다.

 

[참조1]cloudest.tistory.com/42

[참조2]m.blog.naver.com/PostView.nhn?blogId=comlo1&logNo=221301669929&proxyReferer=https:%2F%2Fwww.google.com%2F

 


MobaXterm 실행 및 가상 서버와 SSH 연결:

MobaXterm 실행 - 좌측 상단 Session클릭

 

Remote host 설정 - Port(SSH Default Port 22) 확인 - OK 클릭

 

각 서버의 계정이름과 비밀번호 입력 시 접속 완료

(* 다음 접속부터는 계정이름만 타이핑해주면 자동으로 접속된다. 모든 서버 6대를 모두 SSH로 원격 접속한다.)

 


JAVA(JDK) 환경 변수 설정

* ep0에서 jdk1.8.0_191이 로컬(윈도우)에 설치되어있음을 가정

 


java가 설치되어있는지 확인

Action Server: all

User: root

Pwd: /root

# 자바 설치 여부 확인
java -version

# 설치 되어있다면 정보 확인
rpm -qa | grep jdk

# jdk 삭제 (로컬에 설치해놓은 jdk 사용할 것)
yum remove [현재 jdk]

# 삭제 확인 (error)
java -version

 


새로 설치할 jdk 폴더 생성

Action Server: all

User: root

Pwd: /root

# 폴더 생성
mkdir -p /opt/apps

# 작업 폴더로 이동
cd /opt/apps

 


jdk 압축 파일 옮기기

죄측 하단 sftp 클릭 - Name 위에 경로 /opt/apps 타이핑 - 로컬에 설치해놓은 jdk-8u191-linux-x64.tar 압축 파일을 드래그

 


jdk 압축 해제 및 폴더명 변경

Action Server: all

User: root

Pwd: /opt/apps

# 모든 서버 동일하게 설정
# 이름 확인
ls

tar xvfz jdk-8u191-linux-x64.tar.gz

ls

# 가독성을 위한 폴더명 변경
mv jdk1.8.0_191 jdk8

 


jdk 환경 변수 설정

Action Server: all

User: root

Pwd: /root

# root로 경로 변경
cd ~

# 환경 변수 설정
vi /etc/profile.d/java.sh

export JAVA_HOME=/opt/apps/jdk8
export PATH=$PATH:$JAVA_HOME/bin #추가 (* ctrl+c 하고 vi 에디터 내에서 shift+insert 하면 붙여넣기 가능)

# 변경 내역 적용
source /etc/profile.d/java.sh

# 적용 확인
java -version

 


모든 서버에서 확인

/etc/profile.d/java.sh

java -version

 


 

처음 MobaXterm을 접했을 때 너무 편하고 신세계였는데 진짜 좋죠?ㅎㅎ

이번 시간까지 jdk 환경 변수 설정까지 끝마쳤고 계속해서 MobaXterm을 통해 작업을 할 것이고,

다음 시간엔 하둡(hadoop), 주키퍼(zookeeper)계정을 생성, 권한을 설정하는 과정을 포스팅하겠습니다! 감사합니다!!

 

developer-woong.tistory.com/19

 

(하둡 설치) ep06_하둡(hadoop), 주키퍼(zookeeper) 계정 생성 및 권한 설정, ssh 통신

* 본 가이드는 필요 파일과 이전 포스팅까지 작업이 완료되었다는 가정하에 진행 주요 스펙 호스트OS - windows10 home 게스트OS들 - centOS7 Hadoop - 3.1.0 Zookeeper - 3.4.10 jdk - 1.8.0_191 MobaXterm을 활..

developer-woong.tistory.com

 

반응형

* 본 가이드는 필요 파일과 이전 포스팅까지 작업이 완료되었다는 가정하에 진행

 

주요 스펙

호스트OS - windows10 home

게스트OS들 - centOS7

Hadoop - 3.1.0

Zookeeper - 3.4.10

jdk - 1.8.0_191

공유기(WI-FI) 연결 환경

 

서버 6대를 활용한 하둡 HA 구성:

nn01: 액티브 네임노드, 저널노드 역할

rm01: 스탠바이 네임노드, 리소스 매니저, 저널노드 역할

jn01: 저널노드 역할

dn01: 데이터 노드 역할

dn02: 데이터 노드 역할

dn03: 데이터 노드 역할

 

실행 환경:

Action Server: 명령을 수행할 서버(hostname)

User: 명령을 수행할 계정

Pwd: 명령을 수행할 경로

 


 

앞선 과정들로 서버6대를 구축하고, 각 서버(게스트OS)가 호스트OS를 통해 외부 인터넷 접속까지 완료된 상황이다.

이번 포스팅에서는 기본적인 리눅스 환경 설정과 게스트OS간의 통신 과정을 거친다.

 


SELINUX 해제

* SELINUX란?:

SELINUX(Security Enhanced Linux)는 리눅스의 소스코드가 공개되어있는 환경이고 설치 이후 보안에 필요한 설정을 하지 않아 보안에 취약하다. 이러한 취약점을 보안하기위한 모델이 selinux이고 최초 리눅스 설치시 enforcing(적용)이 되어있다. 관리자라면 다른 보안 설정으로 취약점을 보완할 수 있기 때문에 selinux를 비활성화하여 사용하는 일이 많다.

하둡 구축 과정 중에서 이 selinux를 끈 채로 진행한다.

[참조]m.blog.naver.com/PostView.nhn?blogId=shackerz&logNo=220375507309&proxyReferer=https:%2F%2Fwww.google.com%2F

Action Server: all

User: root

Pwd: /root

# 모든 서버에서 실행 및 수정

vi /etc/sysconfig/selinux

# selinux=enforcing 를 selinux=disabled로 변경

* 주의!: 맨 하단에 SELINUXTYPE=targeted를 변경하지 않도록 주의! 이 부분을 변경할 경우 부팅이 안되는 오류 발생!

 


방화벽 해제

방화벽이란?:

허용된 접속을 제외하고 외부 사용자들이 내부 네트워크에 접근하지 못하게 하는 네트워크 방어 도구

 

하둡 클러스터 간(게스트OS) 원활한 통신을 위해 방화벽 기능을 끈 채 작업 진행

[참조]bamdule.tistory.com/63

Action Server: all

User: root

Pwd: /root

# 모든 서버 실행 및 확인

systemctl stop firewalld.service

systemctl disable firewalld.service

systemctl restart network

firewall-cmd --state

 


필요 모듈들 설치

Action Server: all

User: root

Pwd: /root

# 모든 서버에서 실행

yum update

yum install wget

yum install ntp

 


ntp설정

NTP: (네트워크로 연결되어있는 컴퓨터들 끼리 클록 시각을 같게 동기화 시키는 프로토콜

하둡에 저장되는 데이터의 신뢰성을 위해 각 서버간 시각을 같게 동기화

[참조]mindnet.tistory.com/entry/NTP

Action Server: all

User: root

Pwd: /root

# 모든 서버에서 실행 및 수정
# 각 서버별로 수정 내용 다름!

vi /etc/ntp.conf

# 모든 서버 동일 - 주석 처리
# server 0.--.--.-- - 주석 처리
# server 1.--.--.-- - 주석 처리
# server 2.--.--.-- - 주석 처리
# server 3.--.--.-- - 주석 처리

# 모든 서버 동일 - 주석 해제
restrict 10.10.31.0 mask 255.255.0.0 nomodify notrap - 주석 해제

# nn01
server 127.127.1.0 - 추가

# rm01
server nn01 - 추가
server 127.127.1.0 - 추가

# jn01, dn01, dn02, dn03
server nn01 - 추가
server rm01 - 추가

 

 


ntp 구동

Action Server: all

User: root

Pwd: /root

# 모든 서버에서 실행

systemctl enable ntpd

systemctl start ntpd

ntpq -p

nn01

rm01

 

jn01, dn01, dn02, dn03

3


 

SSH 설정

SSH(Secure Shell Protocol)이란 네트워크 프로토콜 중 하나로 컴퓨터와 컴퓨터가 인터넷과 같은 pUbilc Network를 통해 데이터 전송, 원격 제어 등의 서로간의 통신을 보안적으로 안전하게 해주는 프로토콜

[참조]baked-corn.tistory.com/52

Action Server: all

User: root

Pwd: /root

# 모든 서버에서 실행

ssh-keygen # ssh 키 생성

# 빈 칸으로 나둔 채 계속 해서 enter


 

SSH 통신

Action Server: all

User: root

Pwd: /root

# 모든 서버에서 실행

ssh-copy-id -i .ssh/id_rsa.pub root@nn01
ssh-copy-id -i .ssh/id_rsa.pub root@rm01
ssh-copy-id -i .ssh/id_rsa.pub root@jn01
ssh-copy-id -i .ssh/id_rsa.pub root@dn01
ssh-copy-id -i .ssh/id_rsa.pub root@dn02
ssh-copy-id -i .ssh/id_rsa.pub root@dn03

# 비밀번호 물음 없이 원격 접속 되는지 확인

ssh nn01
exit
ssh rm01
exit
ssh jn01
exit
ssh dn01
exit
ssh dn02
exit
ssh dn03

ex)

 


 

이렇게 각 게스트OS간 통신까지 마쳤다.

다음 포스팅에서는 ep00에서 설치받았던 MobaXterm을 사용하여 보다 편리하게 작업하기 위한 UI와 로컬에서 가상 서버로의 파일 전송(SFTP)등을 사용할 것이다.

 

감사합니다!!

 

developer-woong.tistory.com/18

 

(하둡 설치) ep_05 MobarXterm ssh연결 및 STFP 활용 centOS7 java(jdk) 환경 설정

* 본 가이드는 필요 파일과 이전 포스팅까지 작업이 완료되었다는 가정하에 진행 주요 스펙 호스트OS - windows10 home 게스트OS들 - centOS7 Hadoop - 3.1.0 Zookeeper - 3.4.10 jdk - 1.8.0_191 MobaXterm을 활..

developer-woong.tistory.com

 

반응형

* 본 가이드는 필요 파일과 이전 포스팅까지 작업이 완료되었다는 가정하에 진행

 

주요 스펙

호스트OS - windows10 home

게스트OS들 - centOS7

Hadoop - 3.1.0

Zookeeper - 3.4.10

jdk - 1.8.0_191

호스트OS는 공유기(WI-FI) 연결 환경

 

서버 6대를 활용한 하둡 HA 구성:

nn01: 액티브 네임노드, 저널노드 역할

rm01: 스탠바이 네임노드, 리소스 매니저, 저널노드 역할

jn01: 저널노드 역할

dn01: 데이터 노드 역할

dn02: 데이터 노드 역할

dn03: 데이터 노드 역할

 

실행 환경:

Action Server: 명령을 수행할 서버(hostname)

User: 명령을 수행할 계정

Pwd: 명령을 수행할 경로


 

 

필요 파일:

developer-woong.tistory.com/13

 

(하둡 설치) ep00_필요 파일 준비 과정

서버 6대를 활용하여 하둡 고가용성(HA)모드로 클러스터를 구축한다. 하둡이란? developer-woong.tistory.com/7 (하둡 기초) ep02_하둡에코시스템(Hadoop EcoSystem) 하둡의 역사에 대해 궁금하다면?! developer-w..

developer-woong.tistory.com

이전 포스팅:

developer-woong.tistory.com/15

 

(하둡 설치) ep02_가상 머신 서버 실행

앞선 포스팅을 통해 필요한 파일들과 환경이 구축되어있음을 가정! 하둡이란?: developer-woong.tistory.com/7 (하둡 기초) ep02_하둡에코시스템(Hadoop EcoSystem) 하둡의 역사에 대해 궁금하다면?! developer-wo..

developer-woong.tistory.com

 

 

* 모든 서버(nn01, rm01, jn01, dn01, dn02, dn03)에 대부분 비슷한 과정을 거치되,

약간의 설정 차이(고정ip할당 등)가 있으니 각 챕터별 실행 경로 및 계정 확인!

6대의 서버를 모두 실행 중 상태로 변경 후 작업하면 편함!

앞 선 포스팅들에서도 언급했지만, 한 서버에 모든 설정을 끝내고 복제하는 방식도 있을 수 있다.

하지만 본 가이드에서는 하둡 설정에 관해 몸에 익히기 위해 복제를 하지않고 직접 모든 서버를 설정한다.

 


각 서버 실행 후 hostname 설정

Action Server: all

User: root

Pwd: /root

# hostnamectl set-hostname [서버이름] - 모든 서버에서 명령 실행

# nn01
hostname set-hostname nn01

# rm01
hostname set-hostname rm01

# jn01
hostname set-hostname jn01

# dn01
hostname set-hostname dn01

# dn02
hostname set-hostname dn02

# dn03
hostname set-hostname dn03

 


/etc/hosts 수정

Action Server: all

User: root

Pwd: /root

vi /etc/hosts

192.168.56.100 nn01
192.168.56.101 rm01
192.168.56.102 jn01
192.168.56.103 dn01
192.168.56.104 dn02
192.168.56.105 dn03

* 여기서 잠깐! (각 서버의 IP가 192.168.56.---인 이유)

필자의 환경은 아래와 같은 IP주소로 후에 진행될 고정IP설정 시 호스트OS의 네트워크 대역 범위 내에서 게스트OS의 IP를 설정할 수 있다. 앞선 포스팅 과정에 이에 관련된 내용이 있고 가상 머신의 호스트 네트워크 관리자 설정이 안되어있다면 아래 포스팅을 참고하길 바랍니다.

 

developer-woong.tistory.com/14

 

(하둡 설치) ep01_가상머신 서버 생성 (Virtual Machine)

* 들어가기에 앞서 필요 파일들이 모두 설치되어있다는 가정하에 시작! 아래 링크 참조! 필자의 호스트OS는 windows10 home이다. 공유기(WI-FI)에 인터넷 연결이 되어있음을 가정 서버 6대: nn01: 액티브

developer-woong.tistory.com

윈도우 탐색기 – cmd – ipconfig 입력 – VirtualBox Host-Only Network 주소 확인

 

 


고정 IP 할당

ip addr show 명령을 실행하면 enp0s3, enp0s8이 나타난다. 

이는 네트워크 어댑터들로서, 앞 선 포스팅과 같은 과정을 거쳤다면,

enp0s3은 기본으로 설정되는 NAT, enp0s8은 추가 설정해준 호스트 전용 네트워크이다.

앞 선 포스팅에 나오듯 서버 최초 실행 시 enp0s3(NAT) 네트워크 어댑터의 스위치를 ON으로 설정하였고(더 이상 설정할 것 X), enp0s8(호스트 전용 네트워크)를 수정하여 고정 IP를 할당할 것이다.

* 앞 선 과정을 거치지 않았다면 글 상단 링크를 통해 구축 후 진행 바랍니다!

 

Action Server: all

User: root

Pwd: /root

 

# 모든 서버에서 실행, 대부분의 수정내역은 비슷하되, 각 서버 당 IPADDR만 다르게!!

# enp0s3의 onboot가 yes 인 것만 확인, no라면 yes로 수정, 다른 것은 수정 X
cat /etc/sysconfig/network-scripts/ifcfg-enp0s3

# enp0s8 내용 수정
vi /etc/sysconfig/network-scripts/ifcfg-enp0s8

 


enp0s3 (ONBOOT=yes 확인)


enp0s8 수정

(네모 박스친 부분만 수정 및 추가, GATEWAY는 호스트OS(WINDOWS10)의 VirtualBox Host-Only Network 주소,

각 서버 별로 IPADDR만 다르게 수정)

VirtualBox Host-Only Network 주소 확인: 윈도우 탐색기 - cmd - ipconfig (위에 나와 있음!)

nn01: 192.168.56.100

rm01: 192.168.56.101

jn01: 192.168.56.102

dn01: 192.168.56.103

dn02: 192.168.56.104

dn03: 192.168.56.105


재부팅 후 테스트

Action Server: all

User: root

Pwd: /root

# 네트워크 재시작
systemctl restart network

# 서버 재시작
reboot

# hostname 확인
hostname

# 각 서버의 IP확인
ip addr show

# 외부 인터넷 접속 확인
ping -c 2 google.com

 

 


 

위 과정까지 문제없이 완료되었다면 각각의 게스트OS들은 외부 인터넷과 호스트OS를 통해 접속이 가능해졌다.

다음 포스팅에서는 게스트OS간 통신을 위한 설정(SSH, NTP, SELINUX, 방화벽 해제)을 진행할 것이다.

 

감사합니다!!

 

developer-woong.tistory.com/17

 

(하둡 설치) ep04_게스트OS간 통신(SELINUX, SSH, NTP, 방화벽)

* 본 가이드는 필요 파일과 이전 포스팅까지 작업이 완료되었다는 가정하에 진행 주요 스펙 호스트OS - windows10 home 게스트OS들 - centOS7 Hadoop - 3.1.0 Zookeeper - 3.4.10 jdk - 1.8.0_191 공유기(WI-FI)..

developer-woong.tistory.com

 

반응형

* 본 가이드는 필요 파일과 이전 포스팅까지 작업이 완료되었다는 가정하에 진행

 

주요 스펙

호스트OS - windows10 home

게스트OS들 - centOS7

Hadoop - 3.1.0

Zookeeper - 3.4.10

jdk - 1.8.0_191

호스트OS는 공유기(WI-FI) 연결 환경

 

서버 6대를 활용한 하둡 HA 구성:

nn01: 액티브 네임노드, 저널노드 역할

rm01: 스탠바이 네임노드, 리소스 매니저, 저널노드 역할

jn01: 저널노드 역할

dn01: 데이터 노드 역할

dn02: 데이터 노드 역할

dn03: 데이터 노드 역할

 


 

 

하둡이란?:

developer-woong.tistory.com/7

 

(하둡 기초) ep02_하둡에코시스템(Hadoop EcoSystem)

하둡의 역사에 대해 궁금하다면?! developer-woong.tistory.com/6 (하둡완벽설치!) ep01_하둡(Hadoop)의 역사, 등장 배경 데이터 시대 2013, 2014년 기준으로 뉴욕증권거래소에서는 하루 4.5테라바이트의 데이터

developer-woong.tistory.com

필요 파일 준비:

developer-woong.tistory.com/13

 

(하둡 설치) ep00_필요 파일 준비 과정

서버 6대를 활용하여 하둡 고가용성(HA)모드로 클러스터를 구축한다. 하둡이란? developer-woong.tistory.com/7 (하둡 기초) ep02_하둡에코시스템(Hadoop EcoSystem) 하둡의 역사에 대해 궁금하다면?! developer-w..

developer-woong.tistory.com

 

가상 머신 서버 생성:

developer-woong.tistory.com/14

 

(하둡 설치) ep01_가상머신 서버 생성 (Virtual Machine)

* 들어가기에 앞서 필요 파일들이 모두 설치되어있다는 가정하에 시작! 아래 링크 참조! 필자의 호스트OS는 windows10 home이다. 공유기(WI-FI)에 인터넷 연결이 되어있음을 가정 서버 6대: nn01: 액티브

developer-woong.tistory.com

ep01을 통해 가상 서버 6대(nn01, rm01, jn01, dn01, dn02, dn03)을 구축하였고,

본 포스팅에서는 서버 실행과 동시에 기본 설정을 진행한다.

 

먼저 구축한 nn01을 예제로 설정을 진행할 것이고

다른 5대의 서버들도 같은 과정을 거친다.

 


 

nn01 서버 시작

 

서버 이름 옆 네모 박스는 회사 업무 중 복구를 위한 스냅샷으로 본 가이드와는 무관하므로 가림.

 

*스냅샷: 가상 서버를 활용해 작업을 할 시, 어떠한 오류로 인해 서버 자체가 다운되는 등의 심각한 오류가 발생할 수 있는데, 특정 지점을 스냅샷으로 저장해두면 오류가 나더라도 지정한 스냅샷으로 서버가 복구된다.

 

하둡을 구축하는 과정은 환경 설정이 매우 많고 오류 추적이 꽤 힘드므로 각 설정마다 스냅샷을 저장해두는 습관 중요!


 

시작

 


Install CentOS7 Enter

 


좌측 상단 파일 - 환경 설정 - 입력 - 호스트 키 조합 설정(게스트 OS에서 호스트OS로 빠져나올 때 혹은 반대)

 


언어 설정(본 가이드는 디폴트) - Countinue

 


INSTALLATION DESTINATION 클릭

 


별다른 클릭 없이 Done 클릭 (* 경고 표시가 사라짐, 이 과정을 거치지 않아도 자동으로 설정됨)


 

NETWORK & HOST NAME 클릭


enp0s3 이더넷 스위치 ON 클릭 후 Done (* enp0s8은 건드리지 않는다 – 서버 실행 후 설정할 예정)

 


Begin Installation 클릭

 


 

설치가 진행된다. ROOT PASSWORD 클릭

 


비밀번호 설정 후 Done (* 비밀번호가 권장하는 형식이 아니어도 Done을 두 번 클릭하면 설정되어 넘어간다.)

 


Reboot 클릭

 


Enter

 


root - 비밀번호 입력 - 접속 확인

 


위와 같은 과정을 다른 서버 5대(rm01, jn01, dn01, dn02, dn03)에도 똑같이 해준다.

앞 포스팅에서 언급했듯이 복제하는 방법도 있겠지만, 초기 설치에는 여러 환경 설정을 반복하여

몸에 익혀가는게 중요하다.

 

글이 길어지는 것 같아 다음 포스팅에서 더 이어가겠습니다!

감사합니다!!

developer-woong.tistory.com/16

 

(하둡 설치) ep03_가상 머신 서버 환경 설정(hostname, 고정 ip 할당)

* 본 가이드는 필요 파일과 이전 포스팅까지 작업이 완료되었다는 가정하에 진행 필요 파일: developer-woong.tistory.com/13 (하둡 설치) ep00_필요 파일 준비 과정 서버 6대를 활용하여 하둡 고가용성(HA)

developer-woong.tistory.com

 

반응형

* 본 가이드는 필요 파일과 이전 포스팅까지 작업이 완료되었다는 가정하에 진행

 

주요 스펙

호스트OS - windows10 home

게스트OS들 - centOS7

Hadoop - 3.1.0

Zookeeper - 3.4.10

jdk - 1.8.0_191

호스트OS는 공유기(WI-FI) 연결 환경

 

서버 6대를 활용한 하둡 HA 구성:

nn01: 액티브 네임노드, 저널노드 역할

rm01: 스탠바이 네임노드, 리소스 매니저, 저널노드 역할

jn01: 저널노드 역할

dn01: 데이터 노드 역할

dn02: 데이터 노드 역할

dn03: 데이터 노드 역할


 

 

위 서버들을 활용해 하둡 고가용성(HA) 클러스터를 구축할 것이며,

기본 지식을 습득한 후 설치 과정을 거친다면 이해에 큰 도움이 된다.

 

하둡이란?:

developer-woong.tistory.com/7

 

(하둡 기초) ep02_하둡에코시스템(Hadoop EcoSystem)

하둡의 역사에 대해 궁금하다면?! developer-woong.tistory.com/6 (하둡완벽설치!) ep01_하둡(Hadoop)의 역사, 등장 배경 데이터 시대 2013, 2014년 기준으로 뉴욕증권거래소에서는 하루 4.5테라바이트의 데이터

developer-woong.tistory.com

 

필요 파일 준비:

developer-woong.tistory.com/13

 

(하둡 설치) ep00_필요 파일 준비 과정

서버 6대를 활용하여 하둡 고가용성(HA)모드로 클러스터를 구축한다. 하둡이란? developer-woong.tistory.com/7 (하둡 기초) ep02_하둡에코시스템(Hadoop EcoSystem) 하둡의 역사에 대해 궁금하다면?! developer-w..

developer-woong.tistory.com

하둡 고가용성(HA:High Availability)이란?

developer-woong.tistory.com/12

 

(하둡 기초) ep07_하둡 고가용성(HA:High Availability)이란?

하둡이란?: developer-woong.tistory.com/7 (하둡 기초) ep02_하둡에코시스템(Hadoop EcoSystem) 하둡의 역사에 대해 궁금하다면?! developer-woong.tistory.com/6 (하둡완벽설치!) ep01_하둡(Hadoop)의 역사, 등..

developer-woong.tistory.com


 

가상 머신(Virtual Machine, VM)이란?:

물리적 하드웨어 시스템에 구축되어 자체 CPU, 메모리, 네트워크 인터페이스 및 스토리지를 갖추고 가상 컴퓨터 시스템으로 작동하는 가상환경이다.

자신의 로컬PC위에 마치 여러 컴퓨터를 더 생성하는 것과 같으며,

하둡은 기본적으로 분산처리이기 때문에 여러 컴퓨터를 통해 구축이 되고,

실제로 테스트 해보기 위해 많은 컴퓨터들을 개인적으로 실제 구축하기에 힘든 점을

이 가상머신을 통해 보완하고 실제와 같은 환경으로 테스트 해 볼 수 있다.

[참조]www.redhat.com/ko/topics/virtualization/what-is-a-virtual-machine

윈도우 탐색기 – cmd – ipconfig 입력 – VirtualBox Host-Only Network 주소 확인

(아래 Virtual Machine 내 호스트 네트워크 관리자 설정에 필요)

 

 


가상 머신(Virtual Box) 실행 및 호스트 네트워크 관리자 설정

 


IPv4 주소에 위 명령 프롬포트 창의 VirtualBox Host-Only Network 주소를 입력

다음과 같이 설정


가상 서버 생성

(이름 설정에 ‘cent’를 입력하면 자동으로 리눅스 계열로 설정된다, 후 원하는 서버 이름 입력)

 


메모리 크기 설정


 

아래와 같이 체크 확인 후 다음

 


아래와 같이 체크 확인 후 다음

 


 

아래와 같이 체크 확인 후 다음

 


아래와 같이 체크 확인 후 다음


 

아래 순서에 따라 클릭

(서버 이름(nn01)옆 네모 박스는 회사 업무 중 복구를 위한 스냅샷, 본 가이드와는 무관하여 가림 처리, 초기 설치 시 없어도 그대로 진행) 


다운로드 받았던 디스크 이미지 파일 등록


 

후 네트워크 클릭 - 어댑터1에 디폴트로 NAT 어댑터가 등록되어있음을 확인

 


어댑터 2를 새로 추가 - 아래와 같이 설정

 


 

여기서 잠깐!!

Virtual box 네트워크 어댑터 설정 방법:

가상 서버를 생성하였을 때, 기본적으로 어댑터 1에는 NAT 어댑터가 등록된다.

NAT 어댑터는 게스트 OS(새로 생성한 가상서버)가 호스트OS(로컬PC의 운영체제 여기서는 WINDOWS 10)의 IP를 통해 외부 인터넷에 연결해주는 가장 간단한 방법이다. 외부 인터넷과의 연결을 통해 wget등의 명령어로 필요한 모듈들을 설치한다. 하지만 게스트OS간의 통신이 불가하다.

 

호스트 전용 어댑터는 외부 인터넷과는 단절되어 있지만 구축한 게스트OS간의 통신이 가능하다.

 

이 두 어댑터를 사용하여 서로의 단점을 보완, 게스트->외부 인터넷, 게스트 -> 게스트 통신이 가능하다.

하둡은 분산 처리 시스템이기 때문에 각 게스트OS간의 통신이 원활이 이루어져야 한다.

[참조] https://technote.kr/213

 

VirtualBox, 가상 네트워크 설정하기

VirtualBox에 OS를 설치하고 Network이 되는지 확인해 보면 일반적으로 별 탈 없이 잘 되곤한다. 잘 되니까 별다르게 신경쓰는 일이 없는 것이 사실이다. 네트워크와 관련된 작업을 하지 않는 이상 별

technote.kr

위와 같은 과정으로 rm01, jn01, dn01, dn02, dn03의 서버를 생성한다

jdk, selinux, 방화벽등의 설정들을 초기 생성한 nn01에 먼저 설정 후에 복제하는 방법도 있지만,

필자는 하둡 구축에 대해 공부해나가는 단계였기에 일일이 모든 서버에 설정을 해주며 이해를 해나갔다.

솔직히 복제했을 때 uuid가 같다는 등... 이런 부분이 뭔가 나중에 오류가 있을까라는 생각(안 날수도 있고, 다른 복제 방법이 있을 수 있지만..)과 직접 여러 과정을 반복하며 익숙해지기 위함도 있다.

 


완성된 6개의 서버

(* 서버 이름 옆 네모 박스는 회사 업무 중 복구를 위한 스냅샷,

본 가이드와는 무관하므로 가림 처리.)

 

*스냅샷: 가상 서버를 활용해 작업을 할 시, 어떠한 오류로 인해 서버 자체가 다운되는 등의 심각한 오류가 발생할 수 있는데, 특정 지점을 스냅샷으로 저장해두면 오류가 나더라도 지정한 스냅샷으로 서버가 복구된다.

 

하둡을 구축하는 과정은 환경 설정이 매우 많고 오류 추적이 꽤 힘드므로 각 설정마다 스냅샷을 저장해두는 습관 중요!


 

다음 포스팅에서 이어가겠습니다!

감사합니다!!

developer-woong.tistory.com/15

 

(하둡 설치) ep02_가상 머신 서버 실행

앞선 포스팅을 통해 필요한 파일들과 환경이 구축되어있음을 가정! 하둡이란?: developer-woong.tistory.com/7 (하둡 기초) ep02_하둡에코시스템(Hadoop EcoSystem) 하둡의 역사에 대해 궁금하다면?! developer-wo..

developer-woong.tistory.com

 

반응형

서버 6대를 활용하여 하둡 고가용성(HA)모드로 클러스터를 구축한다.

 

주요 스펙

호스트OS - windows10 home

게스트OS들 - centOS7

Hadoop - 3.1.0

Zookeeper - 3.4.10

jdk - 1.8.0_191

호스트OS는 공유기(WI-FI) 연결 환경

 

서버 6대를 활용한 하둡 HA 구성:

nn01: 액티브 네임노드, 저널노드 역할

rm01: 스탠바이 네임노드, 리소스 매니저, 저널노드 역할

jn01: 저널노드 역할

dn01: 데이터 노드 역할

dn02: 데이터 노드 역할

dn03: 데이터 노드 역할

 


 

하둡이란?

developer-woong.tistory.com/7

 

(하둡 기초) ep02_하둡에코시스템(Hadoop EcoSystem)

하둡의 역사에 대해 궁금하다면?! developer-woong.tistory.com/6 (하둡완벽설치!) ep01_하둡(Hadoop)의 역사, 등장 배경 데이터 시대 2013, 2014년 기준으로 뉴욕증권거래소에서는 하루 4.5테라바이트의 데이터

developer-woong.tistory.com

 

하둡 고가용성(HA:High Availability)이란?

developer-woong.tistory.com/12

 

(하둡 기초) ep07_하둡 고가용성(HA:High Availability)이란?

하둡이란?: developer-woong.tistory.com/7 (하둡 기초) ep02_하둡에코시스템(Hadoop EcoSystem) 하둡의 역사에 대해 궁금하다면?! developer-woong.tistory.com/6 (하둡완벽설치!) ep01_하둡(Hadoop)의 역사, 등..

developer-woong.tistory.com

 

● jdk 압축 파일 (본 가이드에서는 jdk-8u191-linux-x64.tar) https://www.oracle.com/kr/java/technologies/javase/javase8-archive-downloads.html

● centOS7 디스크 이미지 파일(* 최상단 kakao 혹은 naver가 빠름)

http://isoredirect.centos.org/centos/7/isos/x86_64/

● virtualbox 6.1 - https://www.virtualbox.org/wiki/Downloads (* Windows hosts 클릭, 다운로드 후 .exe 실행)

● MobaXterm 8.6 - https://mobaxterm.software.informer.com/8.6/ (* 다운로드 후 .exe 실행)

 


 

하둡 HA 클러스터 구축 시작!

감사합니다!!

developer-woong.tistory.com/14

 

(하둡 설치) ep01_가상머신 서버 생성 (Virtual Machine)

* 들어가기에 앞서 필요 파일들이 모두 설치되어있다는 가정하에 시작! 아래 링크 참조! 필자의 호스트OS는 windows10 home이다. 공유기(WI-FI)에 인터넷 연결이 되어있음을 가정 서버 6대: nn01: 액티브

developer-woong.tistory.com

반응형

하둡이란?:

developer-woong.tistory.com/7

 

(하둡 기초) ep02_하둡에코시스템(Hadoop EcoSystem)

하둡의 역사에 대해 궁금하다면?! developer-woong.tistory.com/6 (하둡완벽설치!) ep01_하둡(Hadoop)의 역사, 등장 배경 데이터 시대 2013, 2014년 기준으로 뉴욕증권거래소에서는 하루 4.5테라바이트의 데이터

developer-woong.tistory.com

 

고가용성(HA:High Availability):

고가용성이란 서버와 네트워크, 프로그램 등의 정보 시스템이 상당히 오랜 기간 동안 지속적으로 정상 운영이 가능한 성질을 말한다.

 

고가용성의 등장배경과 필요성:

하둡1에서의 HDFS(Hadoop Distributed FileSystem)는 네임노드 메타데이터를 다수의 파일시스템에 복제하는 방식, 보조 네임노드를 사용하여 체크포인트를 생성하는 방식으로 데이터의 손실을 방지하지만, 파일시스템의 고가용성을 궁극적으로 지원하지는 않는다.

 

이는 네임노드가 여전히 단일 고장점(SPOF:Single Point Of Failure)이기 때문이다. 네임노드에 장애가 발생하면 맵리듀스 잡을 포함, 모든 클라이언트가 파일의 읽기, 쓰기, 조회가 모두 불가능해진다. 이는 네임노드는 메타데이터와 파일 블록의 매핑 정보를 보관하는 유일한 저장소이기 때문이다. (= 네임노드의 이중화 필요)

 

 

HDFS(Hadoop Distributed FileSystem)란? - 하둡 1버전에서의 HDFS:

developer-woong.tistory.com/8

 

(하둡가이드) ep03_하둡 분산 처리 파일시스템(HDFS:Hadoop Distributed FileSystem)

하둡의 주요 구성 중 핵심 프레임워크 중 하나인 HDFS에 대해 알아본다. 하둡이란? developer-woong.tistory.com/7 (하둡완벽설치!)ep02_하둡에코시스템(Hadoop EcoSystem) 하둡의 역사에 대해 궁금하다면?! devel..

developer-woong.tistory.com


HDFS 네임노드에 문제 발생 시 재구동 과정(Not Support HA):

네임노드의 장애 복구를 위해 관리자는 파일시스템 메타데이터 복제본을 보유하고 있는 새 네임노드를 구동한 후 모든 데이터노드와 클라이언트에 새 네임노드를 사용하도록 알려주는 방식

 

- 새 네임노드는 네임스페이스 이미지를 메모리 상에 로드

 

- 에디트 로그(Edit Log, 변경 내역) 갱신

 

- 전체 데이터노드에서 블록 리포트를 받은 후 안전 모드를 벗어날 때까지 어떠한 요청도 처리 불가

 

하둡 2.x 릴리즈 버전의 HDFS 고가용성(HA):

위 문제의 해결을 위해 하둡 2.x 릴리즈부터 HDFS 고가용성(HA)를 지원한다.

고가용성은 활성대기(active-standby)상태로 설정된 한 쌍의 네임노드로 구성되는데 활성 네임노드(active namenode)에 장애 발생 시 대기 네임노드(standby namenode)가 역할을 이어 받아 중단 없이 클라이언트의 요청을 처리한다.

이러한 방식의 지원을 위해 HDFS의 구조를 변경하였다.

 

변경된 HDFS:

 

- 네임노드는 에디트 로그의 공유를 위해 고가용성 공유 스토리지를 반드시 사용해야한다. 대기 네임노드(Standby Namenode)가 활성화 시 우선적으로 기존 활성 네임노드(Active Namenode)의 상태의 동기화를 위해 공유 에디트 로그(Edit log, 변경 로그)를 읽고, 이어서 활성 네임노드(Active Namenode)에 새로 추가된 항목도 마저 읽는다

 

- 블록 매핑 정보는 디스크가 아닌 네임노드의 메모리에 보관되기 때문에 데이터 노드(Data Node)는 블록 리포트를 두 개의 네임노드에 보낸다.

 

- 클라이언트는 네임노드 장애를 사용자에게 투명한 방식으로 처리 가능하도록 구성해야 한다.

 

- 대기 네임노드(Standby Namenode)는 보조 네임노드(Secondary Namenode)의 역할을 포함하고, 활성 네임노드 네임스페이스(Active Namenode Namespace)의 체크포인트(Check Point) 작업을 주기적으로 수행해야 한다.

 

(* 활성 네임노드(Active Namenode)에 장애 발생 시 대기 네임노드(Standby Namenode)는 수십초 이내의 매우 빠른 시간으로 기존의 네임노드를 대체할 수 있는데, 활성과 대기 네임노드는 모두 최신 에디트 로그(Edit log, 변경 로그)와 실시간으로 갱신되어지는 블록 매핑정보를 메모리 상에 유지하고 있기에 가능하다. 실제 장애 복구 시간을 보면 대략 1분정도가 소요되는데 이는 시스템이 활성네임노드에 문제가 있다고 판단하는 것은 매우 신중해야하기 때문이다.)

 

 

(* 기존 하둡1버전에서의 HDFS의 구조가 궁금하다면 위 링크 참조!)

 

[하둡2.x 릴리즈버전 분산 파일시스템 고가용성의 구조(Hadoop Distributed FileSystem High Availability)QJM(QuorumJournalManager)방식

이미지 출저 http://pippisgoing.blogspot.com/2018/05/hadoop-2-hahigh-availability.html

 

고가용성 HDFS 주요 구성(Hadoop Distributed FileSystem High Availability):

   
저널노드(Journal node) - 하둡1버전은 네임노드에서만 에디트 로그, 즉, 변경 사항을 저장하였는데 하둡2버전 부터는 여러 서버에 에디트 로그를 복제해서 저장한다.

- 저널노드(데몬)는 에디트로그를 자신이 실행되는 서버의 로컬디스크에 저장한다.

- 네임노드는 클라이언트가 되어 저널노드에 접근 후 저장을 요청
(* 에디트 로그를 저장할 권한은 액티브 네임노드에게만 존재하고, 스탠바이 네임노드는 조회만 요청 가능)

- 저널노드는 최소 3대 이상의 서버에서 실행되야 하고, 홀수 단위로만 실행 가능하다.
(* 절반 이상의 저널노드가 동작 중이어야 에디트 로그를 파일이미지(fsimage)에 반영할 수 있기 때문 / 과반수 이상)

- 네임노드가 저널노드의 장애 발생에 영향을 받지 않기 위해선 (전체 저널노드 설치대수/2)+1 만큼 실행되어야 한다.
(* ex) 저널노드가 5대라면 최소 3대 이상의 저널노드가 실행되어야 한다.)

- 저널노드는 기본적으로 리소스를 적게 사용하기 때문에 네임노드, 잡트래커, 리소스매니저와 같은 데몬이 실행중인 서버에도 함께 구동이 가능하다.
주키퍼(Zookeeper) - 네임노드 HA 상태 정보를 저장하는 저장소

- 여러 서버들 중 어떤 서버가 액티브 네임노드인지 스탠바이 네임노드인지 선출 및 저장

- 분산시스템 코디네이터 역할
(* 애플리케이션들의 원할한 구동 환경을 위한 중재
분산 서버 간의 정보를 공유
서버의 상태변화를 타 노드들에게 전달 / ex) 서버 생성 및 삭제 등
서버의 모니터링 / ex) 오류로 인해 연결이 끊어진 노드 삭제 등
시스템관리, 분산 락 처리, 네이밍 서비스 등등의 서비스 제공
주키퍼(Zookeeper 더 알아보기) -> developer-woong.tistory.com/11)

- 주키퍼 마스터는 홀수 단위로 실행시킨다.

- 주키퍼 클라이언트의 요청에 주키퍼 마스터의 응답이 부재 시 다른 주키퍼 마스터에게 요청
(* 과반 정족수 이상으로 서버가 다운되었을 때, 서비스 중지 /
ex) 주키퍼 서버 2대 중 1대가 다운될 시에 바로 서비스 종료, 3대 중 1대가 다운되더라도 서비스 진행 -> 서버의 갯수를 홀수로 맞추는 이유)

ZKFC
(주키퍼 장애 컨트롤러ZookeeperFailoverController)
- 로컬 네임노드의 상태를 모니터링한다.

- 액티브 네임노드가 정상 상태이면 주키퍼 마스터에 대한 세션을 유지한다.

- 액티브 네임노드에 장애 발생 시, 이를 감지하여 자동적으로 zkfc와 주키퍼 마스터간의 세션을 종료하고 스텐바이 네임노드를 액티브 네임노드로 전환한 후 다운된 기존의 액티브 네임노드를 제거한다.
네임노드(Name Node) - 네임노드 내부에 있는 QJM(QuorumJournalManager)이 저널노드에 에디트 로그를 출력한다.
(* QJM: HDFS에서 구현하였고 에디트 로그 HA를 제공하기 위한 목적으로 설계되었으며 권장되는 옵션이다. QJM은 그룹의 저널노드를 실행, edit event는 대다수의 저널노드에 작성된다)

- 절반 이상의 저널노드가 실행되고 있어야 파일이미지(fsimage)에 에디트 로그를 반영 가능하다.

- 액티브 네임노드만이 저널노드에 에디트 로그를 쓸 수 있는 권한을 가지고, 스탠바이 네임노드는 저널노드에서 에디트 로그의 조회 및 파일이미지(fsimage)를 갱신할 수 있다.(= 보조네임노드를 실행할 필요가 없는 이유)
데이터노드(Data Node) - 액티브 네임노드와 스탠바이 네임노드 모두에게 블록 리포트를 전송한다.

- 액티브 네임노드에 오류 발생 시에도 곧바로 스탠바이 네임노드에 투입되어 기능 작동이 가능하다.

 

필요 지식:

 

얀(YARN)이란?

developer-woong.tistory.com/9

 

(하둡 기초) ep05_YARN이란?

하둡의 구성 요소 중 핵심 프레임워크인 Yarn에 대해 알아본다. 하둡이란? developer-woong.tistory.com/7 (하둡완벽설치!)ep02_하둡에코시스템(Hadoop EcoSystem) 하둡의 역사에 대해 궁금하다면?! developer-woo..

developer-woong.tistory.com

맵리듀스(MapReduce)란?

developer-woong.tistory.com/10

 

(하둡 기초) ep04_ MapReduce 맵리듀스란?

하둡 분산 파일시스템(HDFS)와 함께 핵심 구성 요소인 MapReduce에 관해 알아본다. 하둡이란? developer-woong.tistory.com/7 (하둡완벽설치!)ep02_하둡에코시스템(Hadoop EcoSystem) 하둡의 역사에 대해 궁금하다..

developer-woong.tistory.com

주키퍼(Zookeeper)란?

developer-woong.tistory.com/11

 

(하둡 기초) ep06_주키퍼(Zookeeper)란?

효과적인 분산 코디네이션 시스템을 위한 주키퍼(Zookeeper)에 대해 알아본다. 하둡이란?: developer-woong.tistory.com/7 (하둡 기초) ep02_하둡에코시스템(Hadoop EcoSystem) 하둡의 역사에 대해 궁금하다면?! d..

developer-woong.tistory.com

[참고1] Hadoop The Dfinitive Guide (하둡 완벽가이드 4판) - 톰 화이트 지음, 장형석, 장정호, 임상배, 김훈동 옮김

[참고2]brocess.tistory.com/194

[참고3]pippisgoing.blogspot.com/2018/05/hadoop-2-hahigh-availability.html

[참고4]eyeballs.tistory.com/251

[참고5]kadensungbincho.tistory.com/33?category=910848

 

자! 그럼 이제 본격적으로 서버 6대를 활용한 하둡 HA 클러스터 구축을 시작해보겠습니다!

감사합니다!!

developer-woong.tistory.com/13

 

(하둡 설치) ep00_필요 파일 준비 과정

서버 6대를 활용하여 하둡 고가용성(HA)모드로 클러스터를 구축한다. 하둡이란? developer-woong.tistory.com/7 (하둡 기초) ep02_하둡에코시스템(Hadoop EcoSystem) 하둡의 역사에 대해 궁금하다면?! developer-w..

developer-woong.tistory.com

 

반응형

효과적인 분산 코디네이션 시스템을 위한 주키퍼(Zookeeper)에 대해 알아본다.

 

하둡이란?:

developer-woong.tistory.com/7

 

(하둡 기초) ep02_하둡에코시스템(Hadoop EcoSystem)

하둡의 역사에 대해 궁금하다면?! developer-woong.tistory.com/6 (하둡완벽설치!) ep01_하둡(Hadoop)의 역사, 등장 배경 데이터 시대 2013, 2014년 기준으로 뉴욕증권거래소에서는 하루 4.5테라바이트의 데이터

developer-woong.tistory.com

주키퍼(Zookeeper)의 필요성:

분산 애플리케이션을 작성하는 것은 매우 어려운 일이다. 가장 큰 이유는 부분 실패(Partial Failure)때문이다. 네트워크로 연결된 두 노드 사이에 메시지가 전송된 후 네트워크가 끊겼을 때 송신자는 수신자가 메시지를 수신했는지 여부를 모르게 된다. 네트워크가 끊기기 전에 잘 도착할 수도, 그렇지 않을 수도, 수신자 프로세스가 메시지는 받았지만 처리 도중 죽었을 수도 있다. 즉, 어떤 일이 일어났는지 송신자 입장에서 알 수 있는 방법은 수신자에게 다시 연결하여 물어보는 것 뿐이다. 이러한 상황이 부분 실패이며, 작업의 실패 여부조차 모르게 되는 상황이다.

 

물론 주키퍼를 사용한다해서 부분 실패를 절대 피할 수 있는 것은 아니지만, 안전하게 처리할 수 있는 분산 애플리케이션을 구축하기 위한 도구로서 큰 필요성을 가지고 최근까지 많은 관심을 받고있다.


 

주키퍼(Zookeeper)란:

주키퍼는 두 개의 네임노드를 이용한 HA를 가능하게 하는 분산 코디네이터이다.

 

고가용성(HA:High Availability)이란?

developer-woong.tistory.com/12

 

(하둡 기초) ep07_하둡 고가용성(HA:High Availability)이란?

하둡이란?: developer-woong.tistory.com/7 (하둡 기초) ep02_하둡에코시스템(Hadoop EcoSystem) 하둡의 역사에 대해 궁금하다면?! developer-woong.tistory.com/6 (하둡완벽설치!) ep01_하둡(Hadoop)의 역사, 등..

developer-woong.tistory.com

(* 분산 컴퓨팅에서 코디네이션의 예는 그룹 멤버십(Group Membership), 잠금제어(Locking), 공급/구독(Publisher/Subscriber), 리더 선정(Leader Election), 동기화(Synchornization) 등이 있다.)

 

하둡의 분산 상호 조정 서비스를 이용하여 분산환경에서 노드들 간 정보의 공유, Lock, 이벤트 등의 보조 기능을 제공한다. 하둡은 주키퍼를 통해 어떤 네임노드가 Active인지 혹은 Standby인지를 저장함으로서 네임도드들을 관리한다.

하둡은 기본적으로 3대의 주키퍼 서버가 할당되어있어야한다.

 

하둡의 이전 버전은 단일 실패 지점(SOF:Single Of Failure)라는 개념으로 네임노드에 장애 발생 시 모든 기능을 수행할 수 없는 단점이 존재하였는데 주키퍼는 이러한 장애 발생 시 부분적 실패를 안전하게 다루면서 분산 응용 프로그램을 구축할 수 있는 도구를 제공한다.

 

이미지 출저 https://brunch.co.kr/@timevoyage/77


 

주키퍼(Zookeeper)의 특징:

 

- 단순한 주키퍼:

단순한 몇 개의 핵심 연산을 제공하는 간소화(Stripped-Down)된 하나의 파일시스템 이벤트와 관련된 순서화(Ordering)와 통지(Notification) 같은 추상화를 제공

 

- 다양한 활용:

상호조정에 필요한 다양한 데이터 구조체와 프로토콜 구축을 위한 풍부한 원천, 기초(Primitive)를 제공

 

- 고가용성:

클러스터상에서 동작하고, 장애 발생을 허용하며 기능 수행에 지장이 없도록 고가용성을 보장되게끔 설계

 

- 느슨한 상호작용 연결:

상호작용 참여자의 익명성을 보장하고 서로의 존재나 네트워크 세부사항을 모르더라도 프로세스가 서로 상호 발견, 소통할 수 있다.

 

- 라이브러리:

주키퍼는 상호조정 패턴에 대한 구현물과 그 방법을 무료 오픈 소스로 제공한다.

 

- 뛰어난 처리량:

주키퍼를 만든 야후(Yahoo)에서 테스트 해본 결과, 수백 개의 클라이언트가 만들어내는 쓰기 위주의 작업 부하 벤치마크에서 초당 10,000개가 넘는 처리량을 보였고, 일반적 사례인 읽기 위주의 작업 부하에서는 그보다 몇 배 높은 처리량을 보였다.

 

- 순차적인 일관성:

클라이언트로부터의 업데이트는 그들이 보내졌을 때 순서대로 적용된다.

 

- 원자성:

업데이트는 성공하거나 실패 둘 중 하나이다. 그 외 결과는 없다.

 

- 단일 시스템 이미지:

클라이언트는 연결된 서버에 관계없이 같은 시스템을 바라보는 것처럼 동작한다.

 

- 신뢰성, 지속성:

한 번 업데이트가 적용되면, 클라이언트가 업데이트를 덮어 쓰기 전까지 지속된다.

(= 업데이트 연산 성공 시, 내역은 유지되고 취소되지 않을 것)

 

- 적시성:

시스템의 클라이언트 시각적 관점은 특정 시간 내에 처리 될 수 있도록 보장된다. 뒤처진 정보를 클라이언트에게 주지 않는다.


주키퍼의 서비스(Zookeeper Service):

 

이미지 출저 https://over153cm.tistory.com/entry/what-is-ZooKeeper
이미지 출저 https://alnova2.tistory.com/1044

- 주키퍼 클러스터 구조는 기본적으로 복제 모드(replicated mode)로 수행되고 이러한 클러스터 구조를 앙상블이라 한다.

 

- 하나의 서버에만 서비스가 집중되지 않도록, 서비스를 알맞게 분산하여 동시 처리

 

- 하나의 서버의 처리 결과를 다른 서버들과 공유, 동기화하여 데이터 안정성 보장

 

- 운영(Active)서버에 문제 발생 시 다른 대기 중인 서버(Standby)를 운영서버로 바꾸며 서비스의 중지를 막음

 

- 분산 환경을 구성하는 서버들의 환경설정을 통합적으로 관리

 

- 일반적으로 3대 이상의 서버를 사용하고 홀수의 서버 갯수로 구성됨

(* 서버 간의 데이터 불일치 시 데이터 보정이 필요한데 이 때, 과반수의 룰을 적용하기 때문에 서버의 갯수를 홀수로 하는 것이 데이터 정합성 측면상 유리하다.)

 

- Leader 서버는 주키퍼 서버 구동시 주키퍼의 자체 내부 알고리즘에 의해 자동 선정 된다.

 

- Follwers 서버들은 클라이언트로부터 받은 모든 업데이트 이벤트를 리더에게 전달한다.

 

- 클라이언트는 모든 주키퍼 서버에서 읽을 수 있고, Leader를 통해 쓰기가 가능

 

- 앙상블 내에 과반수 서버의 승인이 필요하다.

(* 최소 3대의 서버, 홀수 개로 구성하는 이유)


주키퍼의 데이터 모델(Zookeeper Data Model):

주키퍼는 계층적인 네임스페이스(namespace)를 제공하며 네임스페이스 내에 존재하는 모든 개별 노드를 znode라고 부른다. 모든 znode는 데이터(바이트 배열)을 가질 수 있고 자식 znode를 가질 수도 있다.

 

이미지 출저 https://alnova2.tistory.com/1044

 

- 절대 경로 '/'로 구분, 상대 참조가 없으며 명칭에 유니코드 문자 포함 가능, 변경 발생 시 버전 번호 증가

(= 유닉스 파일시스템 구조)

 

- 상대경로를 지원하지 않고 절대경로만 지원

 

- 데이터는 항상 전체를 읽고 쓰는 구조, znode는 1M 이하의 데이터와 자식 노드를 가질 수 있다.

 

영속 종류에 따른 노드 구분(Type of Znoe):

   
영구 노드(Persistent Nodes) 클라이언트가 명시적으로 삭제하기 전까지 존재
임시 노드(Ephemeral Nodes) 세션이 유지되는 동안 활성, 세션 종료 시 주키퍼에 의해 삭제, 자식 노드를 가실수 없다.
순차 노드(Sequence Nodes) 경로의 끝에 일정하게 증가하는 카운터의 추가, 영구 및 임시 노드 모두 적용 가능
저장하는 순서에 따라 자동으로 일련번호가 붙는 노드

 

감시(Watch):

znode가 변경 시 watch를 설정(watcher 생성)한 클라이언트에게 변화를 알려준다.

이미지 출저 https://alnova2.tistory.com/1044

- 특정 znode에 watch를 설정해야 한다.

 

- watch 설정 후 생성된 watcher는 해당 znode의 변경을 알아내어 watch를 설정한 클라이언트에게 이벤트를 전달 시 해당 watcher는 삭제된다.

 

- 즉 한 번 설정해놓으면 지속적인 감시를 하는 watch기능이 아닌 event change 발생 시 이를 알려주고 삭제되는 one time trigger이다.

 

 

Watcher가 감지하는 znode의 변경 이벤트 종류:

   
NODE_CREATE 노드가 생성됨을 감지
NODE_DELETE 노드가 삭제됨을 감지
NODE_DATA_CHANGED 노드의 데이터가 변경됨을 감지
NODE_CHILDREN_CHANGED 자식 노드가 변경됨을 감지

주키퍼 연산(Zookeeper Operation):

   
Create znode 생성
부모 znode가 존재한다는 가정
Delete znode 삭제
어떤 znode도 존재하지 않는다는 가정
Exists znode의 존재 여부 확인, 메타데이터를 구함
getACL, serACL znode에 대한 ACL설정을 얻음 or 설정
getChildren znode 자식의 목록을 얻음
getData, setData znode와 관련있는 데이터를 얻음 or 저장
sync znode의 클라이언트 뷰와 주키퍼를 동기화
Multi(다중 갱신) 여러 개의 premitive 연산의 하나의 갱신단위로 묶은 후 연산의 성공 실패 여부를 반환
전역적인 불변성을 유지해야하는 분산환경의 구조체를 구축하는데 유용하다.

 

필요 지식:

 

하둡 분산 파일시스템이란(HDFS:Hadoop distributed FileSystem)?:

developer-woong.tistory.com/8

 

(하둡 기초) ep03_하둡 분산 처리 파일시스템(HDFS:Hadoop Distributed FileSystem)

하둡의 주요 구성 중 핵심 프레임워크 중 하나인 HDFS에 대해 알아본다. 하둡이란? developer-woong.tistory.com/7 (하둡완벽설치!)ep02_하둡에코시스템(Hadoop EcoSystem) 하둡의 역사에 대해 궁금하다면?! devel..

developer-woong.tistory.com

얀(YARN)이란?

developer-woong.tistory.com/9

 

(하둡 기초) ep05_YARN이란?

하둡의 구성 요소 중 핵심 프레임워크인 Yarn에 대해 알아본다. 하둡이란? developer-woong.tistory.com/7 (하둡완벽설치!)ep02_하둡에코시스템(Hadoop EcoSystem) 하둡의 역사에 대해 궁금하다면?! developer-woo..

developer-woong.tistory.com

맵리듀스(MapReduce)란?

developer-woong.tistory.com/10

 

(하둡 기초) ep04_ MapReduce 맵리듀스란?

하둡 분산 파일시스템(HDFS)와 함께 핵심 구성 요소인 MapReduce에 관해 알아본다. 하둡이란? developer-woong.tistory.com/7 (하둡완벽설치!)ep02_하둡에코시스템(Hadoop EcoSystem) 하둡의 역사에 대해 궁금하다..

developer-woong.tistory.com

 

[참고1]jyoondev.tistory.com/61

[참고2]blog.acronym.co.kr/372

[참고3]over153cm.tistory.com/entry/what-is-ZooKeeper

[참고4] Hadoop The Dfinitive Guide (하둡 완벽가이드 4판) - 톰 화이트 지음, 장형석, 장정호, 임상배, 김훈동 옮김

[참고5]alnova2.tistory.com/1044

[참고6]m.blog.naver.com/ssdyka/221038856587

[참고7]jaemunbro.medium.com/zookeeper-%EC%A3%BC%ED%82%A4%ED%8D%BC%EC%9D%98-%EA%B8%B0%EB%B3%B8-%ED%8A%B9%EC%A7%95-7da2a51351c5

[참고8]rjswn0315.tistory.com/37

 

감사합니다!

반응형

+ Recent posts