티스토리 뷰

하둡의 단일 클러스터 구성

문득..꼭 데비안을 써야하는가에 대한 의문이 들어서 찾아보니, 안정성을 위해선 데비안이 가장 안정적이라고 함
어차피 우분투도 데비안 기반이라서 사용하는 명령어가 크게 다를 것 같지 않음.

그리고 데비안 너무 아무것도 안깔려서 새로 다 설치해야하는 문제점이 있음..
따라서 아래부터는 우분투 기준으로 실행하였습니다

java 설치

참고: https://settembre.tistory.com/516

 

Ubuntu 20.04 - OpenJDK 11 설치

1. Install OpenJDK ( Using apt) $ sudo apt-get update && sudo apt-get upgrade 2. Install openjdk-11-jdk $ sudo apt-get install openjdk-11-jdk 더보기 2-1. OpenJRE 만 설치하고 싶다면 $ sudo apt-get install openjdk-11-jre 3. Check java version $ ja

settembre.tistory.com

ubuntu 18.04 기준으로 jdk11 버전으로 실행하였음

 

ssh 설정

ssh 설치

sudo apt install openssh-server

ssh 시작
service ssh start

ssh 확인
service ssh status

하둡과 ssh 연결함
ssh hadoop@localhost

 

하지만.. 에러가 뜨고 SHA가 뜨는데 이게 맞나? 안되는것 같아서
vim /etc/ssh/sshd_config에서 아래그림과 같이 설정하고 service ssh restart

다시 ssh hadoop@localhost 접속했더니 비밀번호 입력후 들어가짐

영상강의에선 비밀번호 없이 접속하기 위한 설정을 해줌

 

  • 비밀번호 없이 접속하는 설정

ssh-keygen -t rsa

비밀번호를 설정하지 않기 위해서, 아무것도 입력하지 않고 엔터 3번 누름

  • 키 파일을 사용해서 접속하게 설정함(?)

cat .ssh/id_rsa.pub >> .ssh/authorized_keys

 

다시 ssh hadoop@localhost했더니 비밀번호 없이 사용할 수 있었음

 

logout하면 빠져나올 수 있음 어차피 같은 머신이라 똑같지만..

 

hadoop 설정

hdfs는 하둡 분산 파일 시스템을 의미 hadoop distributed filesystem

  • HDFS의 기본 구성 요소
    • 네임노드 (NameNode):파일 시스템의 메타데이터(파일 이름, 디렉토리 구조, 파일 블록의 위치 등)를 관리함. 네임노드는 데이터를 직접 저장하지 않고, 데이터 블록이 어디에 저장되어 있는지를 추적함
    • 데이터노드 (DataNode): 실제 데이터를 저장하는 노드. 데이터는 여러 블록으로 나뉘어 데이터노드에 저장됨. 각 데이터노드는 정기적으로 네임노드에 상태를 보고하고, 네임노드는 이를 바탕으로 데이터의 위치를 관리함

 

초기화 설정하기

 

config 할 수 있는 폴더로 이동

cd hadoop-3.4.0/etc/hadoop/

 

core-site.xml 파일을 편집할 것임

`vim core-site.xml`

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://localhost:9000</value>
        </property>
</configuration>

(GPT 해석)

  • fs.defaultFS: 이 설정은 하둡 클러스터의 기본 파일 시스템을 지정합니다. 여기서는 HDFS를 기본 파일 시스템으로 설정하고, 네임노드의 주소를 hdfs://localhost:9000으로 지정한 것입니다.
  • hdfs://localhost:9000: HDFS 네임노드가 로컬 호스트의 9000번 포트에서 동작함을 의미합니다. 네임노드는 HDFS의 메타데이터를 관리하는 역할을 합니다. 이 설정을 통해 클러스터 내의 모든 노드는 파일 시스템 작업을 수행할 때 이 주소를 기본 파일 시스템으로 사용합니다.

hdfs-site.xml을 수정

`vim hdfs -site.xml`

<configuration>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>/home/hadoop/hdfs/namenode/</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>/home/hadoop/hdfs/datanode/</value>
        </property>
</configuration>

(GPT 해석)

  • dfs.replication: HDFS에서 각 데이터 블록의 복제본 수를 지정합니다.
    • 1: 각 데이터 블록이 하나의 복제본만 가지도록 설정한 것입니다. 이는 개발이나 테스트 환경에서 적절하지만, 실제 운영 환경에서는 보통 3 이상의 복제본을 사용하여 데이터의 내결함성을 높입니다.
  • dfs.namenode.name.dir: 네임노드가 사용하는 디렉토리를 지정합니다.
    • /home/hadoop/hdfs/namenode/: 네임노드의 메타데이터(파일 시스템의 구조, 각 블록의 위치 등)가 저장될 디렉토리입니다. 네임노드가 이 디렉토리를 사용하여 HDFS의 메타데이터를 저장하고 관리합니다.
  • dfs.datanode.data.dir: 데이터노드가 데이터를 저장하는 디렉토리를 지정합니다.
    • /home/hadoop/hdfs/datanode/: 실제 데이터 블록이 저장될 위치입니다. 데이터노드는 이 디렉토리를 사용하여 파일의 데이터 블록을 저장하고, 이를 통해 클러스터에서 데이터 읽기 및 쓰기 작업을 수행합니다.
  • 폴더 생성
    mkdir -p hdfs/datanode
    mkdir -p hdfs/namenode

 

hadoop 내의 JAVA 경로 설정

 

하둡에게 java에 대한 폴더 경로 설정이 필요함

ls /usr/lib/jvm/java-11-openjdk-amd64/ java에 대한 폴더 확인

config 파일에 java에 대한 경로 수정

vim hadoop-env.sh 열어서 아래와 같이 경로 작성

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

 

파일 시스템을 처음엔 초기화해주어야 함

bin 폴더로 이동
cd ~/hadoop-3.4.0/bin
초기화 명령어
./hdfs namenode -format

hadoop 실행

cd ~/hadoop-3.4.0/sbin

./start-dfs.sh

localhost:9870 을 확인해봅시다

hadoop 정지

./stop-all.sh

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함