
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


rebootsu - hadoopjava -versionhadoop versionjps
- 하둡이 서로 소통하기 위해서 공개키 갖고있어야 함
- 동떨어진 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_keyschmod 640 ~/.ssh/authorized_keysssh localhostexit
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 opensshsystemctl status sshdsystemctl restart sshd


dnf info vsftpddnf install vsftpd -ysystemctl restart vsftpdsystemctl status vsftpdsystemctl 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

