온프레미스 환경에서 하둡 클러스터 구성 및 스파크로 분석

김형선·2023년 7월 26일
0

아직 미완.

8대의 노트북으로 하둡 클러스터를 구성한 뒤 데이터를 넣고 스파크로 분석을 진행해보고 싶었다.
client, namenode, secondnode, datanode1~5로 구성하였고, 대용량 데이터를 처리를 더 빨리하고 싶기도 했고, 컴퓨터 한대로 분석을 진행할 때에 비해 얼마나 더 효율적으로 빠르게 돌아가는지도 확인하고 싶었다.

먼저 각각의 노트북을 전부 포맷하고 윈도우 삭제한 후 usb를 통해서 우분투를 설치했다.(※ 컴퓨터 몇 대가 USB를 통해 Ubuntu 운영체제를 설치하려고 해도 설치되지 않는 현상 발생
기존에 windows 운영체제 파티션 충돌 문제로 인해 설치가 되지 않았다.
수동으로 파티션에 있는 걸 모두 비어준 다음 설치하니 제대로 작동이 되었다.)

그 뒤에 한글 설정,

java1.8 설치(링크텍스트),

고정ip 설정(터미널에서 ifconfig 치고 inet, netmask, broadcast 세가지 와이파이 접속한 다음에 IPv4 들어가서 manual로 바꾸고 address, netmask, gateway에 입력),

miniconda설치를 하였다.

sudo adduser hadoop 하고 비번 hadoop으로 설정
su hadoop해서 들어가고
그리고 hostname을 바꿔주고 싶어서
sudo hostnamectl set-hostname namenode를 하는데 hadoop이 sudo 권한이 없어서

sudo visudo로 들어간 다음에 밑에 가서
#User privilege specification
root ALL=(ALL:ALL) ALL밑에다가
hadoop ALL=(ALL:ALL) 추가한다 그러고 ctrl+x로 나온다.

그러고 다시 sudo hostnamectl set-hostname namenode하면 hostname바꿀수있다.
exit했다가 다시 들어가면 namenode로 바뀐거 볼수 있음.
hadoop@encore에서 hadoop@namenode로 바뀜.

그리고 방화벽 꺼야함.
sudo systemctl status ufw 상태확인
sudo systemctl stop ufw 멈추고
sudo systemctl disable ufw 방화벽 끈다 ( 통신할라고 했는데 우선 편의상 다 꺼버림, 원래는 해당하는 포트만 열어줘야함 > ufw allow 포트번호 프로토콜(프로토콜 안써도 됨) )

재규한테 ssh-keygen -t rsa하면 key받는데 public키 보낸다.
cd ~/.ssh하고 ls해보면 id_rsa, id_rsa.pub있는거 보임.
cat id_rsa.pub 나온거 복사해서 재규한테 보냄.
재규가 이거를 authorized_keys파일에다가 다 모아서 다시 보내줌
scp ./authorized_keys datanode4:/home/hadoop/.ssh/ 이러면 보낼수 있음
scp는 복사하는거고 뒤에 authorized_keys를 datanode4에다가 저 경로에 보낸다는 것임.
cd ~/.ssh경로에서 sudo chmod 600 authorized_keys도 해줘야한다.

sudo apt install openssh-server
: ssh 설치
서로 통신할 수 있게 설치 해주세요

서로 통신할수 있게 되면 재규가 authorized_keys보내줌
cd ~/.ssh하고 ls해보면 나옴.
노드 간 통신 설정
퍼블릭 키를 authorized_keys에 적어 scp 명령어를 통해 모든 노드에 복사
권한 설정을 하여 서로 ssh를 통해 접속 가능하게 설정

cd ~/.ssh .ssh로 이동

cat id_rsa.pub >> authorized_keys authorized_keys에 노트북 7대에 퍼블릭 키를 받아 작성

chmod 600 ./authorized_keys 소유자에게만 읽기,쓰기 권한 부여

scp ./authorized_keys client:/home/hadoop/.ssh/
scp ./authorized_keys namenode:/home/hadoop/.ssh/
scp ./authorized_keys secondnode:/home/hadoop/.ssh/
scp ./authorized_keys datanode1:/home/hadoop/.ssh/
scp ./authorized_keys datanode2:/home/hadoop/.ssh/
scp ./authorized_keys datanode3:/home/hadoop/.ssh/
scp ./authorized_keys datanode4:/home/hadoop/.ssh/
scp ./authorized_keys datanode5:/home/hadoop/.ssh/

7대에 퍼블릭 키를 모아둔 파일을 모든 노드에 복사

위의 명령어를 이용하여 모든 노드에서 키 공유

sudo apt vim후에
sudo vim /etc/hosts들어가서
192.168.80.14 datanode1
192.168.80.150 datanode2
192.168.80.169 datanode3
192.168.80.160 datanode4
192.168.80.155 datanode5
192.168.80.4 namenode
이거 추가하면 이름만으로 서로 접속가능.
ssh datanode5하면 datanode5에 접속가능.돌아가려면 exit

  • 우분투 노트북 덮개 닫아도 대기모드에 진입하지 않게 설정하려면
    https://dontdiethere.tistory.com/m/27 여기 참조.
  • battery 들어가서 절전모드로 해야함

Hadoop 설치
hadoop 계정 cd ~에서

wget https://archive.apache.org/dist/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz 하둡 파일 다운로드

tar xzf hadoop-3.2.1.tar.gz hadoop tar 파일 압축 해제

mv ./hadoop-3.2.1 ./hadoop 파일명 hadoop으로 변경

cd ~에서 다른 노트북에도 hadoop 설치를 위해 파일 scp를 이용해 복사

scp -r ./hadoop namenode:/home/hadoop/

miniconda 설치
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh 미니콘다 설치(wget)

sh ./Miniconda3-latest-Linux-x86_64.sh 쉘스크립트 설치 파일 실행

source ~/.bashrc 적용

쉘 스크립트 만들어보기
여러 노드에 명령어를 계속치지 않으려 쉘 스크립트로 만들어 보았다. (feat. chatGPT)
#!/bin/bash

local_directory="./hadoop" # 로컬 디렉토리 경로
remote_hosts=("datanode2" "datanode3" "datanode4" "datanode5" "client" "namenode" "secondnode") # 원격 호스트 이름 > 목록
remote_directory="/home/hadoop/" # 원격 디렉토리 경로

for host in "remotehosts[@]";doscpr"{remote_hosts[@]}"; do scp -r "local_directory" "host:host:remote_directory"
done
한개의 파일에 경우는 scp로 만으로도 복사가 되지만,
대량의 파일을 전송할 경우에는 -r 옵션을 사용해야 함

0개의 댓글