핀아의 저장소 ( •̀ ω •́ )✧
[Hadoop] Hadoop HDFS 설치 - 1 본문
앞서 만든 가상환경에 설치해주면 된다!!!!
HDFS(Hadoop Distributed File System) 는 수십 테라 또는 페타바이트 이상의 대용량 파일을 분산된 서버에 저장하고, 많은 클라이언트가 저장된 데이터를 빠르게 처리할 수 있게 설계된 파일 시스템을 말한다.
1. Hadoop-3.3.1 버전을 6대의 서버로 구성 Hadoop Cluster ,mast01 서버가 manage의 역할도 겸임
2. IP는 본인의 IP로 수정할 것!
3. '[ ]'의 내용은 해당되는 서버 혹은 몇번째 줄인지 참고하거나 알려주는 가이드로 내용만 확인하고 해당 파일에 대괄호와 대괄호 안 내용을 넣지 아니할 것
서버 | 서비스 |
mast01 (IP : 192.168.x.101) | Zookeeper, ResourceManager, Journalnode, Namenode |
mast02 (IP : 192.168.x.102) | Zookeeper, ResourceManager, Journalnode, Namenode |
mast03 (IP : 192.168.x.103) | Zookeeper, Journalnode |
work01 (IP : 192.168.x.104) | Nodemanager, Datanode |
work02 (IP : 192.168.x.105) | Nodemanager, Datanode |
work03 (IP : 192.168.x.106) | Nodemanager, Datanode |
1. hostname
hostname
hostname -f
- User: root
- Action Server: all
- Action Directory (pwd): /root
- Description: Hostname 정보 확인
vi /etc/hostname
- User: root
- Action Server: all
- Action Directory (pwd): /root
- Description: Hostname 정보 수정
- Setting Value:
[mast01 서버] mast01 [mast02 서버] mast02 [mast03 서버] mast03 [work01 서버] work01 [work02 서버] work02 [work03 서버] work03 |
- 여기서 mast는 저장 및 hadoop 프로세스 관리의 역할을 하는 서버라 보면 되고, work가 실제 데이터들이 저장되는 장소로 생각하면 된다.
- work가 3대인 이유는 hadoop이 데이터를 저장할 때 1인 데이터가 들어와도 3만큼 저장을 하기 때문에 최소 대수인 3대로 진행하였다.
2. hosts
vi /etc/hosts
- User: root
- Action Server: all
- Action Directory (pwd): /root
- Description: IP 정보 입력
- Setting Value:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.x.101 mast01 192.168.x.102 mast02 192.168.x.103 mast03 192.168.x.104 work01 192.168.x.105 work02 192.168.x.106 work03 |
※ 6개의 가상환경 전부에 기입해줄 것!
3. Network
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
- User: root
- Action Server: all
- Action Directory (pwd): /root
- Description: 네트워크 고정 IP 설정
- Setting Value:
TYPE=Ethernet BOOTPROTO=static DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=no IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=enp0s3 UUID= (.................. 값이 자동적으로 할당) DEVICE=enp0s3 ONBOOT=yes IPADDR= (.............고정ip ex 10.10.31.79) PREFIX=24 GATEWAY= ............... (ex 10.10.31.1) DNS1=8.8.8.8 DNS2=8.8.4.4 |
vi /etc/resolv.conf
- User: root
- Action Server: all
- Action Directory (pwd): /root
- Description: 요청할 DNS 서버 설정
- Setting Value:
nameserver 8.8.8.8 nameserver 8.8.4.4 |
service network restart
- User: root
- Action Server: all
- Action Directory (pwd): /root
- Description: 네트워크 재시작
4. firewalld
systemctl stop firewalld.service
systemctl disable firewalld.service
- User: root
- Action Server: all
- Action Directory (pwd): /root
- Description: 방화벽 중단 및 영구 비활성화
5. SSH Key
SSH란?
Secure SHell의 준말로 네트워크를 통해 다른 컴퓨터에 접근하거나 그 컴퓨터에서 명령을 실행할 수 있도록 해주는 프로토콜이다. 즉, SSH를 통해 다른 컴퓨터에서 리눅스에 접속하여 명령어 및 프로그램을 실행할 수 있다.
ssh-keygen
- User: root
- Action Server: all
- Action Directory (pwd): /root
- Description: SSH Key 생성
- Setting Value: 실행 후 계속 Enter
yum install -y openssh-clients
- User: root
- Action Server: all
- Action Directory (pwd): /root
- Description: SSH key 교환을 위한 SSH client 설치
ssh-copy-id -i .ssh/id_rsa.pub root@mast01
ssh-copy-id -i .ssh/id_rsa.pub root@mast02
ssh-copy-id -i .ssh/id_rsa.pub root@mast03
ssh-copy-id -i .ssh/id_rsa.pub root@work01
ssh-copy-id -i .ssh/id_rsa.pub root@work02
ssh-copy-id -i .ssh/id_rsa.pub root@work03
- User: root
- Action Server: all
- Action Directory (pwd): /root
- Description: 각 서버에 생성한 key 할당
ssh mast01
exit
ssh mast02
exit
ssh mast03
exit
ssh work01
exit
ssh work02
exit
ssh work03
exit
- User: root
- Action Server: all
- Action Directory (pwd): /root
- Description: 비밀번호 입력 없이 로그인 여부 확인
6. NTP
NTP(Network Time Protocol)는 인터넷에서 라우터 및 기타 하드웨어 디바이스의 클럭을 동기화하는 데 널리 사용되는 프로토콜이다.
yum install ntp
- User: root
- Action Server: all
- Action Directory (pwd): /root
- Description: ntp 설치
vi /etc/ntp.conf
- User: root
- Action Server: all
- Action Directory (pwd): /root
- Description: ntp 환경 설정
- Setting Value:
[모든서버] # server 0.xx.xx.xx # server 1.xx.xx.xx # server 2.xx.xx.xx # server 3.xx.xx.xx 모두 주석처리 [mast01] restrict 192.168.x.101 mask 255.255.0.0 nomodify notrap server 127.127.1.0 --------------------------------------------------------------- [mast02] restrict 192.168.x.102 mask 255.255.0.0 nomodify notrap server mast01 server 127.127.1.0 --------------------------------------------------------------- [mast03,work01,work02,work03] server mast01 server mast02 |
systemctl enable ntpd
- User: root
- Action Server: all
- Action Directory (pwd): /root
- Description: ntp 서비스 자동 등록
systemctl start ntpd
- User: root
- Action Server: all
- Action Directory (pwd): /root
- Description: ntp 서비스 시작
ntpq -p
- User: root
- Action Server: all
- Action Directory (pwd): /root
- Description: ntp 확인
7. SELINUX
vi /etc/sysconfig/selinux
- User: root
- Action Server: all
- Action Directory (pwd): /root
- Description: 모든 서버 selinux 해제
- Setting Value: SELINUX=disabled
reboot
- User: root
- Action Server: all
- Action Directory (pwd): /root
8. JDK
mkdir -p /opt/apps
- User: root
- Action Server: all
- Action Directory (pwd): /root
- Description: JDK 설치 디렉토리 생성
cd /opt/apps
- User: root
- Action Server: all
- Action Directory (pwd): /opt/apps
- Description: JDK 설치 디렉토리 이동
tar xvfz jdk-8u221-linux-x64.tar.gz
- User: root
- Action Server: all
- Action Directory (pwd): /opt/apps
- Description: JDK 압축해제 (JDK 설치파일이 /opt/apps 로 이동되어있어야함)
+) Linux와 window 파일 교환을 위해 winSCP 사용
https://winscp.net/download/WinSCP-5.21.8-Setup.exe
Downloading WinSCP-5.21.8-Setup.exe :: WinSCP
Problems with the download? Direct download
winscp.net
mv jdk1.8.0_221 jdk8
- User: root
- Action Server: all
- Action Directory (pwd): /opt/apps
- Description: JDK 디렉토리명 변경
vi /etc/profile.d/java.sh
- User: root
- Action Server: all
- Action Directory (pwd): /opt/apps
- Description: JDK 환경변수 설정
- Setting Value:
export JAVA_HOME=/opt/apps/jdk8 export PATH=$PATH:$JAVA_HOME/bin |
source /etc/profile.d/java.sh
- User: root
- Action Server: all
- Action Directory (pwd): /opt/apps
- Description: JDK 환경변수 적용
java -version
- User: root
- Action Server: all
- Action Directory (pwd): /opt/apps
- Description: JDK 버전 확인
9. Create User, Hadoop Directory
adduser zookeeper
passwd zookeeper
- User: root
- Action Server: mast01,mast02,mast03
- Action Directory (pwd): /root
- Description: zookeeper 계정 생성(mast01, mast02, mast03 서버) / 생성한 zookeeper 계정의 비밀번호 설정
adduser hadoop
passwd hadoop
- User: root
- Action Server: all
- Action Directory (pwd): /root
- Description: hadoop 계정 생성 / 생성한 hadoop 계정의 비밀번호 설정
mkdir /dfs
mkdir /yarn
mkdir /pids
chown hadoop /dfs
chgrp hadoop /dfs
chown hadoop /yarn
chgrp hadoop /yarn
chown hadoop /pids
chgrp hadoop /pids
- User: root
- Action Server: all
- Action Directory (pwd): /root
- Description: HDFS의 여러 정보를 저장하기 위한 디렉토리 생성 및 Hadoop 계정 접근 권한 설정
chgrp 명령어는 파일또는 디렉토리의 소유 group 을 변경하고 chown 은 파일 또는 디렉토리의 소유 계정을 변경한다.
chgrp [options] group file_list chown [options] owner file_list
10. SSH Key in Zookeeper
Zookeeper란??
분산 애플리케이션을 위한 코디네이션 시스템이다. 분산 애플리케이션이 안정적인 서비스를 할 수 있도록 분산되어 있는 각 애플리케이션의 정보를 중앙에 집중하고 구성 관리, 그룹 관리 네이밍, 동기화 등의 서비스를 제공한다.
su - zookeeper
- User: root
- Action Server: mast01
- Action Directory (pwd): /root
- Description: zookeeper 계정 접속
ssh-keygen
- User: zookeeper
- Action Server: mast01
- Action Directory (pwd): /home/zookeeper
- Description: zookeeper 계정에서의 SSH key 생성
ssh-copy-id -i .ssh/id_rsa.pub zookeeper@mast01
ssh-copy-id -i .ssh/id_rsa.pub zookeeper@mast02
ssh-copy-id -i .ssh/id_rsa.pub zookeeper@mast03
- User: zookeeper
- Action Server: mast01
- Action Directory (pwd): /home/zookeeper
- Description: 각 서버(mast01,mast02,mast03)에 생성한 key 할당
ssh mast01
exit
ssh mast02
exit
ssh mast03
exit
- User: zookeeper
- Action Server: mast01
- Action Directory (pwd): /home/zookeeper
- Description: 비밀번호 입력 없이 로그인 여부 확인
11. Zookeeper install
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
- User: zookeeper
- Action Server: mast01
- Action Directory (pwd): /home/zookeeper
- Description: 주키퍼 설치 파일 다운로드
tar xvfz zookeeper-3.4.10.tar.gz
- User: zookeeper
- Action Server: mast01
- Action Directory (pwd): /home/zookeeper
- Description: 주키퍼 설치 파일 압축 해제
cd zookeeper-3.4.10
cp conf/zoo_sample.cfg conf/zoo.cfg
vi conf/zoo.cfg
- User: zookeeper
- Action Server: mast01
- Action Directory (pwd): /home/zookeeper
- Description: 폴더 이동 및 복사 후 주키퍼 config 파일 설정
- Setting Value:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/zookeeper/data
clientPort=2181
maxClientCnxns=0
maxSessionTimeout=180000
[nn01같은건 앞에서 설정한 이름으로 바꿔줄 것 ex. server.1=Mast01:2888:3888]
server.1=nn01:2888:3888
server.2=rm01:2888:3888
server.3=jn01:2888:3888
tar cvfz zookeeper.tar.gz zookeeper-3.4.10
- User: zookeeper
- Action Server: mast01
- Action Directory (pwd): /home/zookeeper
- Description: 설정 완료된 주키퍼 디렉토리 압축
scp zookeeper.tar.gz zookeeper@mast02:/home/zookeeper
scp zookeeper.tar.gz zookeeper@mast03:/home/zookeeper
- User: zookeeper
- Action Server: mast01
- Action Directory (pwd): /home/zookeeper
- Description: 압축한 주키퍼 디렉토리 다른 서버에 배포
tar xvfz zookeeper.tar.gz zookeeper-3.4.10
- User: zookeeper
- Action Server: mast02, mast03
- Action Directory (pwd): /home/zookeeper
- Description: 배포 된 주키퍼 디렉토리 압축 해제
mkdir data
cd data
- User: zookeeper
- Action Server: mast01, mast02, mast03
- Action Directory (pwd): /home/zookeeper
- Description: 주키퍼 홈에서 data 디렉토리 생성
vi myid
- User: zookeeper
- Action Server: mast01, mast02, mast03
- Action Directory (pwd): /home/zookeeper/data
- Description: 주키퍼 클러스터내에서 각각의 주키퍼 노드를 구분하기 위하여 ID 를 생성
ex) mast01 서버는 1, mast02 서버는 2, mast03 서버는 3 - Setting Value:
[mast01 서버내용]
1
[mast02 서버내용]
2
[mast03 서버내용]
3
cd /home/zookeeper/zookeeper-3.4.10
./bin/zkServer.sh start
- User: zookeeper
- Action Server: mast01, mast02, mast03
- Action Directory (pwd): /home/zookeeper/zookeeper-3.4.10
- Description: zookeeper-3.4.10 폴더로 이동 후 각 서버별로 주키퍼 실행
./bin/zkServer.sh status
- User: zookeeper
- Action Server: mast01, mast02, mast03
- Action Directory (pwd): /home/zookeeper/zookeeper-3.4.10
- Description: 각 서버별로 status 확인, 1대의 서버는 Leader, 2대의 서버는 Follower
- Leader가 꼭 mast01이 아니어도 된다.
- 한명이 리더고 나머지가 follwer로, zookeeper leader가 죽으면 다른 follower가 leader가 된다.
+) 나는 서버 돌리니까 아래와 같은 오류가 난다!!! 하시는 분들 config파일을 제대로 작성하였는지 먼저 확인해주시고
그래도 안 된다면 쉘 파일 start 할 때 start-foreground로 에러 확인 후 구글에 검색해보시길 바랍니다!!
👇에러 시 참고한 글들👇
./zkServer.sh status Error contacting service. It is probably not running
I have installed zookeeper 3.4.9 version and my zoo.cfg file configuration is as following initLimit=10 syncLimit=5 dataDir=/usr/local/zookeeper/ clientPort=2181 DataLogDir=/usr/local/log/ ...
stackoverflow.com
zookeeper 실행하기 및 주의 사항
zookeeper의 설치 방법은 https://mslee89.tistory.com/188 에 잘 나와 있습니다. 참고 하시고요. 전 zookeeper를 실행하는 방법에 대해 글을 적습니다. zookeeper 실행하기 글을 적는 이유는 하다 보면 저 처럼 단
khstar.tistory.com
다음 게시글에서는 본격적으로 하둡 설치를 진행해보겠습니다~!
혹시 질문 사항이 있거나 피드백이 있으신 경우 댓글 달아주세요 ><
'Big Data > Engineering' 카테고리의 다른 글
00_02. Batch & Stream Processing (0) | 2023.05.09 |
---|---|
00_01. 데이터 엔지니어링에 대하여 (0) | 2023.05.08 |
[Hadoop] hadoop failover 테스트 (0) | 2023.05.04 |
[Hadoop] Hadoop HDFS 설치 - 2 (1) | 2023.05.02 |
[Hadoop] 하둡 설치 전 가상 환경 구축 (1) | 2023.04.28 |