[hadoop] 하둡 클러스터 구축을 위한 설정

Use_Silver·2022년 2월 1일
0

하둡

목록 보기
3/12

나자바바 님의 하둡 클러스터 구축을 위한 설정 강의를 보고 정리한 내용입니다.

01. 실습 환경 하둡

4개의 리눅스를 가상화 (컴퓨터가 4개 필요)
1개 namenode, 3개 datanode

  • (primary)NameNode(master)
    - fsimage, edits 저장

  • DataNode(slave1)

    • blk, blk.meta 저장
    • block을 저장하기 위한 설정들이 추가
  • Secondary NameNode(backup)
    - master namenode의 사본을 저장

  • 리눅스 운영체제 필요

02. 하둡 클러스터 구축 순서

  • jdk 설치 : java SE8 (하둡 버전에 따라 선택)

  • Hadoop 설치 : 3.x

  • Linux 설정

    • 환경변수 추가
    • 네트워크 설정 - 서로간의 통신
    • 방화벽 설정 - 기본적으로 리눅스 방화벽은 다 차단되어있기 때문에, 게스트 os끼리 데이터 주고받으려면 방화벽 설정이 필요
    • SSH 설정 - Linux에서 다른 Linux로 접속할 때 매번 ID와 비밀번호를 입력해 접속하는 것이 불편하기 때문에 서로 인증된+신뢰된 상태로 만들어 비밀번호 없이 접근하기 위한 설정
  • Hadoop 설정파일 수정

    • hadoop-env.sh - jdk 경로 설정(java home)
    • core-site.xml - 공통 설정
    • hdfs-site.xml - file system 설정
    • mapred-site.xml - mapreduce 설정
    • yarn-site.xml - yarn 설정
    • worker(2.x는 slaves) - 데이터 노드들이 무엇이 있는지 알려주는 설정
    • 기타
      - 노드를 추가하거나 삭제할 때 사용하는 것
      • include,hosts
      • exclude.hosts

03. 리눅스에 프로그램을 설치하는 방법

  • tar -xvf xxx.tar.gz

    • 실행한 폴더에 압축 해제
    • x : 압축 해제
    • c : 압축 진행
    • v : 압축 실행/풀리는 과정을 화면에 보여줘라
    • f : 실제 파일을 지정
    • xxx.tar.gz tar
      • tar : 여러개의 파일을 묶어둔 것
      • gz : 압축한 형태
    • jdk, hadoop, hive 등 설치에 사용됨
  • yum 프로그램 이름
    - yum repository에서 해당 프로그램이름에 해당하는 파일을 찾아 다운로드/설치

    • 보통 리눅스에 라이브러리 설치할 때 많이 사용
  • make & make install
    - c언어 -> 소스 컴파일 -> 빌드 -> 설치

  • installer.sh
    - .sh => shell 실행 가능한 명령어가 포함된 스크립트

04. 리눅스 vi 에디터 사용법

i : insert, 현재 커서의 위치에 글자 삽입
I : Insert , 커서가 있는 줄(line)의 맨 앞에 글자를 삽입
a : Append, 현재 커서 위치의 다음 칸에 글자를 추가
A : Append, 커서가 있는 줄(line_의 맨 뒤에 글자를 추가
o : Open Line, 현재의 줄 다음에 새로운 줄을 삽입
O : Open Line, 현재의 줄 앞에 새로운 줄 삽입
^ : 맨 앞
$ : 맨 뒤
y : 복사
d : 삭제
p : 붙여넣기

05. jdk 설치

06. hadoop 설치

07. 환경변수 설정

  • $ : 일반 사용자
  • # : root 사용자
  • $ vi ~/.bashrc
    - ~ : 현재 사용자의 홈디렉토리
    - / : 디렉토리 구분
    • .bashrc : 파일명
    • PATH 지정
      java 설치 directory 경로 알려주기
      export JAVA_HOME=~/jdk1.8.0_271
      export PATH=PATH:PATH:JAVA_HOME/bin
      hadoop 설치 directory 경로 알려주기
      export HADOOP_HOME=~/hadoop-3.1.4
      export PATH=PATH:PATH:HADOOP_HOME/bin:$HADOOP_HOME/sbin
  • $ source ~/.bashrc
    - 수정한 파일을 실행시키기 위한 명령어
    • 환경변수를 반영한다.
    • 명령은 실행한 쉘에만 반영
  • $ hadoop version
  • $ java -version

08. 호스트명 설정

  • 아이피 주소 & 호스트명(도메인) 설정
  • root 권한을 가진 사용자로 수정해야 함
# vi /etc/hosts

192.168.100.150 master
192.168.100.151 slave01
192.168.100.152 slave02
192.168.100.153 slave03 backup 

09. 방화벽 설정

  • 방화벽 규칙 설정 후 방화벽 서비스 재시작
  • root 권한을 가진 사용자로 수정
  • /etc/sysconfig/iptables 파일에 방화벽 설정 추가 및 재시작
    - # vi /etc/sysconfig/iptables
    A INPUT -s 192.168.100.0/24 -d 192.168.100.0/24 -j ACCEPT
    A OUTPUT -s 192.168.100.0/24 -d 192.168.100.0/24 -j ACCEPT
    - # service iptables restart
  • /etc/sysconfig/iptables 파일에 방화벽 설정 추가 및 재시작
    # firewall-cmd --permanent --zone=public --add-source=192.168.100.0/24
    # firewall-cmd --permanent --zone=public --add-port=50070/tcp
    # firewall-cmd --permanent --zone=public --add-port=9870/tcp
    # firewall-cmd --permanent --zone=public --add-port=9864/tcp
    # firewall-cmd --permanent --zone=public --add-port=22/tcp
    # firewall-cmd --reload
    # systemctl restart firewalld

10. SSH 설정

SSH 설정이 필요한 이유

  1. master namenode가 datanode에 명령을 전송/ 데이터 보내줘야 함
  2. master namenode는 데이터 노드에 파일을 저장할 쓰기 권한이 있어야 함
  3. 이를 위해 데이터 노드로 접속을 해야함
  4. 리눅스는 접속을 하려면 id, password를 입력해야 함 BUT 매번 id, password를 입력하게 하기 어려움
  5. 네임노드가 데이터 노드에 별다른 제재없이 접속하게 하기 위한 설정이 SSH 설정

SSH 설정

  1. 네임노드에서 하는 작업과 데이터 노드에서 하는 작업이 있음
  2. 네임노드에서 일반 사용자로 키를 생성
  • $ ssh-keygen -t rsa 키 생성
  • t rsa : key type 지정 (생략 가능)
  1. 네임노드에 .ssh라는 디렉토리가 생김
  2. .ssh 디렉토리에 id_rsa(개인키), id_rsa.pub(공개키) 파일이 생성됨
  3. key들의 사본을 만들어서 데이터 노드에 보내줘야 함
    5-1) 데이터노드에서 .ssh 폴더를 생성해줘야 함 (authorized_key의폴더)
    5-2) 폴더의 권한 변경
    mkdir .ssh
    chmod 700 .ssh => 현재 사용자에게는 모든 권한. 다른사용자는 권한 x
    5-3) key들의 이름은 authorized_keys로 되어있어야 함 (데이터 노드에)
  [권한 변경]
    user 7 이진수 변경 111 => 1(r-읽기)1(w-쓰기)1(x-실행) 
    group 0 권한 x 
    other 0 권한 x 
  1. SSH 설정 확인
    $ ssh nova@slave1
profile
과정은 힘들지만😨 성장은 즐겁습니다🎵

0개의 댓글