pNIIC : 실제 운영하는 물리적 네트워크
nat : 10.xx 망으로 되어있음
<- dnf update, jdk, hadoop
hadoop 분산모드 구성
hostadapter 구성 => switch 장비를 둠 == vSwitch
192.168.56.x => 망
192.168.56.106 NN01
192.168.56.107 NN02
192.168.56.108 NN03
LAN 카드 두개 구성 WHY?
update하거나 log 받야아 할 상황에서 외부망을 씀 -> nat 연결
hadoop에 완전 분산 모드 만들음 => 망을 이용
web server가 밖에서 공유하는 ip
참고: https://waspro.tistory.com/517
SSH(Secure Shell Protocol)
왜 FTP, Telnet와 같은 통신 프로토콜은 사용하지 않는가?
SSH의 통신 방법
- 한 쌍의 Key(Private Key/Public Key)를 통해 접속하려는 컴퓨터와 인증 과정을 거침
사용자(클라이언트)와 서버(호스트)는 각각의 키를 보유 => 키를 이용해서 상대를 인증하고 안전하게 데이터를 주고 받음
키 페어 : 공개키와 개인키 두 가지로 이루어진 한 쌍을 뜻하며
공개키 : .pub / 개인키 : .pem의 형식을 띔
비대칭키 방식과 대칭키 방식으로 동작함
비대칭키 방식
대칭키 방식
[참고]
SSH란 ? https://library.gabia.com/contents/infrahosting/9002/
대칭키, 비대칭키? https://universitytomorrow.com/22
====================================
- Oracle Virtual Box 6.1 / 포인트 장치 -> usb
====================================
--> VM
Memory hostname ip
------------------------------------------------
- CentOS_HadoopNN01 : 3072 hadoop01 192.168.56.101/24
- CentOS_HadoopDN02 : 3072/2048 hadoop02 192.168.56.102/24
- CentOS_HadoopDN03 : 3072/2048 hadoop03 192.168.56.103/24
=> hostnamectl set-hostname hadoop01
=> hostnamectl set-hostname hadoop02
=> hostnamectl set-hostname hadoop03
각 서버마다 host명으로 접근 가능하도록 hosts 파일 설정
hadoop01, hadoop02, hadoop03에서 다 변경
=> vi /etc/hosts
=>192.168.56.101 hadoop01
=>192.168.56.102 hadoop02
=>192.168.56.103 hadoop03
=> nmcli networking off
=> nmcli networking on
* 방화벽
: 내부망을 보호하기 위한 네트워크 구성요소
: 외부로부터의 유입을 차단
=> systemctl stop firewalld.service # 방화벽 서비스 해제
=> systemctl disable firewalld.service # 재부팅시 방화벽 실행 x
=> ping -c 3 서로
root@hadoop01 $
ping hadoop02 -c 3
ping hadoop03 -c 3
root@hadoop02 $
ping hadoop01 -c 3
ping hadoop03 -c 3
root@hadoop03 $
ping hadoop01 -c 3
ping hadoop02 -c 3
SELinux
- 리눅스에 도입된 접근 권한 보안 모듈
- SELinux의 보안정책으로 서비스 구동이 원활하지 않을 수 있음 => but SELinux는 가급적 끄거나 비활성화하는걸 권장 x
- 이번 실습에서는 SELinux 끄고 실행
sentenforce 0
sentenforce 0
(Permissive 상태)getenforce
으로 SELinux 상태 확인 vi /etc/sysconfig/selinux
=> SELINUX=disabled
reboot
su - hadoop
java -version
hadoop version
jps
- 하둡이 서로 소통하기 위해서 공개키 갖고있어야 함
- 동떨어진 PC가 서로 소통하기 위해서는 신뢰할 수 있는 환경 => 공개키로 만든다
- 공개키를 다 DATANODE에 COPY해놓아야 함
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 640 ~/.ssh/authorized_keys
ssh localhost
ssh-keygen -t rsa
같은 키로 구성이되어야 연계가 됨
이 과정은 master(hadoop01)에서 해야함
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
public에 생긴걸 추가를 한다
(authorized keys 파일이 이미 있으면=> rm authorized_keys 한 다음에 cat부터 해야 함)
root에서 hadoop 계정에 인증서 있는지 확인
ll /home/hadoop/.ssh/id_rsa.pub
root 계정
// /home/hadoop/.ssh/id_rsa.pub
// hadoop02, hadoop03 에 키 복사
$ ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@hadoop02
$ ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@hadoop03
##########################################################
만약 key_permission deny 문제가 생긴다면
ssh-keygen-t rsa
를 입력 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 640 ~/.ssh/authorized_keys
ssh localhost
exit
hadoop01의 root에서 02, 03에 키값을 넘겨줌
$ ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@hadoop02
$ ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@hadoop03
hadoop01에서 hadoop으로 로그인
ssh 접속 확인 - hadoop02, hadoop03
master에서 다른 pc 접속
master에서 copy
hadoop02, 03에서 key 생성 확인
ssh 확인
ssh hadoop02
ssh hadoop03
dnf info openssh
systemctl status sshd
systemctl restart sshd
dnf info vsftpd
dnf install vsftpd -y
systemctl restart vsftpd
systemctl status vsftpd
systemctl enable vsftpd
dnf install java-1.8.0-openjdk
dnf info java-1.8.0-openjdk
dnf remove java-1.8.0-openjdk
dnf install java-1.8.0-openjdk-devel.x86_64 -y
java -version
==> /etc/profile 환경변수
[hadoop]
==> /.bashrc 환경변수
cp .bashrc .bashrc~ <== 복사본 .bashrc~
cat >> .bashrc <== hadoop 계정 환경변수 추가
export HADOOP_HOME=/home/hadoop/hadoop-3.2.2
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
/home/hadoop/hadoop-3.2.2/ ls
- rm -rf data
[hadoop01]
/data
/namenode
/datanode
[hadoop02~03]
/data
/datanode
1. 파일설정 <1>
[ hadoop01 ~ 03]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~/hadoop-env.sh
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~ /core-site.xml
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:9000</value>
</property>
</configuration>
hadoop-env.sh 확인
cat hadoop-env.sh | grep "JAVA_HOME"
수정 - hadoop02, 03도 core를 향하게 수정
2. 파일설정 <2>
[ hadoop01 ]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~ /hdfs-site.xml
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>file:///home/hadoop/hadoop-3.2.2/hdfs/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///home/hadoop/hadoop-3.2.2/hdfs/datanode</value>
</property>
</configuration>
[ hadoop02~03]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~ /hdfs-site.xml
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///home/hadoop/hadoop-3.2.2/hdfs/datanode</value>
</property>
</configuration>
3. 파일설정 <3>
[ hadoop01 ~ 03]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~ /mapred-site.xml
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~ /yarn-site.xml
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
==< HDFS 서비스 실행> =======================================
[ hadoop01 ]
hdfs namenode -format
start-dfs.sh
jps
[ hadoop02 ~ 03 ]
start-dfs.sh
jps
[ hadoop01 ~ 03 ]
start-yarn.sh
jps