[Hadoop] Ubuntu에 Hadoop 설치하기(Java/SSH/Hadoop)

2024. 5. 8. 17:57·Dev/Hadoop

Notebook: M1 Macbook Pro

VM machine: UTM

OS: Ubuntu 22.04 (LTS)

hadoop: 3.4.0

 

맥 환경에서는 터미널에서 하둡을 설치가 가능하지만 리눅스 환경에 익숙해지기 위해서 우분투로 진행해보려고 한다. 맥에서 바로 하둡 설치하다가 막힌 건 비밀..

진행 순서

1. 자바

 1.1. 자바 설치

 1.2. 자바 환경변수 설정

 

2. ssh 연결

 2.1. openssh-sever & pdsh 설치

 2.2. ssh 공개키 & 개인키 생성

 2.3. ssh 키 접속

 

3. 하둡

 3.1. 하둡 설치

 3.2. 하둡 환경변수 설정

 3.3. 하둡 파일 변경

 3.4. 하둡 실행

 

시작 전)

sudo dhclient

putty 등을 쓰지 않고 가상 머신 위에 우분투 하나로 실행할 때는 인터넷 ip 획득을 위해 DHCP 클라이언트를 통해서 네트워크 인터페이스를 구성하고 인터넷에 연결하기. 보통 윈도우에서는 putty를 사용하고, 맥은 터미널에서 바로 설치할 수 있기 때문에 사용은 잘 안 함.


1. 자바

1.1. 자바 install

sudo apt-get update

apt 업데이트 실행

sudo apt-get install openjdk-11-jdk

자바 11버전 설치 실행

java -version
javac --version

자바 버전 확인

 

1.2. 자바 환경변수 설정

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/*:.

자바 환경변수 설정 -> 위 코드를 vi ~/.bashrc로 들어가서 맨 아래에 3줄 추가

- JAVA_HOME: JDK가 설치된 폴더

- PATH: 실행 프로그램 대상 검색

- CLASSPATH: 사용자 정의 클래스 및 패키지를 찾아야 하는 위치를 지정

source ~/.bashrc

source로 변경사항 적용하기

echo 명령어를 사용해서 경로 확인하기. 위처럼 나오면 적용 완료.


2. SSH 연결

2.1. openssh-server & pdsh 설치

sudo apt-get install openssh-server

Openssh Server 설치. 하둡이 클러스터에 접속할 때 SSH를 통해 터미널을 이용하여 관리 및 작업을 수행할 수 있다.

sudo apt-get install pdsh

pdsh 설치. PDSH를 설치하면 클러스터의 각 노드에 동시에 명령을 내려 수행할 수 있다. 하둡 설치 및 관리를 위해서 SSH 서버가 필요하고, pdsh를 설치하면 클러스터 노드 간의 효율적이 명령 실행이 가능해진다.

2.2. ssh 공개키 & 개인키 생성

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

공개키 생성

  • ssh-keygen : SSH 키 생성 및 관리를 위한 유틸리티
  • -t rsa : RSA 알고리즘을 사용하여 키 생성
  • -P '' : 비밀번호를 설정하지 않고 생성
  • -f ~/.ssh/id_rsa : 생성할 키 파일의 이름과 경로를 지정
  • ~/.ssh 디렉토리에 'id_rsa'(개인키)와 'id_rsa.pub'(공개키)파일이 생성
  • SSH 키를 통해 원격 접속이나 파일 전송 등에서 비밀번호 입력 없이 보연 연결을 제공하는 데 사용
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

# authorized_keys에 추가되었는지 확인
vim authorized_keys  

# ssh localhost를 입력하면 암호 없이 접속하기 위해 권한 부여
chmod 0600 ~/.ssh/authorized_keys

 

  • cat : 파일의 내용을 출력하는 명령어
  • '>>' : 리다이렉션 연산자, 오른쪽의 파일에 데이터 추가
  • chmod : 파일 권한을 변경하는 명령어
  • 0600 : 'authorized_keys'의 파일의 새로운 권한을 나타내는 숫자로 첫 번째 자리는 소유자 권한, 두 번째 자리는 그룹 권한, 세 번째 자리는 다른 사용자권한. 즉 소유자에게 읽기와 쓰기 권한만 주고, 그룹과 다른 사용자에게는 권한을 주지 않음을 의미
  • ssh localhost : 로컬 머신으로 SSH 접속을 시도하는 명령어

2.3. ssh 키 접속

ssh 키로 비밀번호 없이 접속 성공

 

이때 rcmd socket permission denied 에러가 발생하면 아래 글 확인

https://min8282.tistory.com/35

 

[Hadoop] rcmd socket permission denied

문제)원인은 pdsh 기본 rcmd가 ssh가 아닌 rsh로 되어 있다. 즉, ssh 원격 로그인 인증이 동일하지 않을 때 발생한다. 해결)~/.bashrc 파일에 아래의 환경변수 내용을 추가한 뒤, 적용해 준다.$ export PDSD_RC

min8282.tistory.com


3. 하둡

3.1. 하둡 설치

wget https://archive.apache.org/dist/hadoop/common/hadoop-3.4.0/hadoop-3.4.0.tar.gz

하둡 다운로드

tar xvfz hadoop-3.4.0.tar.gz

다운 받은 하둡 압축해제 -> hadoop-3.4.0 폴더 생성됨

 

3.2. 하둡 환경변수 설정

vi ~/.bashrc

vi ~/.bashrc 명령어로 자바 환경변수 설정하는 것처럼 아래 코드를 맨 아래에 추가

export HADOOP_HOME=/home/ubuntu/hadoop-3.4.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
source ~/.bashrc

추가 후 source 명령어로 변경 사항 적용

 

하둡과 자바 경로 연결

hadoop-3.4.0 -> etc -> hadoop 폴더로 가서

vi hadoop-env.sh

hadoop-env.sh 파일 아래처럼 변경

JAVA_HOME과 HADOOP_HOME 앞에 #을 지워 주석처리를 없애고 자신의 자바 경로와 하둡 경로 작성

3.3. 하둡 파일 변경

동일하게 hadoop-3.4.0 -> etc -> hadoop 폴더로 가서 4개의 파일을 변경

 

1. core-site.xml

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://localhost:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/home/ubuntu/temp</value>
        </property>
</configuration>

- hadoop.tmp.dir : hadoop 프레임워크에서 임시 파일 및 디렉토리를 저장하는 경로 설정

- fs.default.name : hadoop의 파일시스템의 기본 위치를 설정

 

2. hdfs-site.xml

<configuration>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
</configuration>

- dfs.replication : HDFS에서 데이터의 복제 수 설정

 

3. mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.application.classpath</name>
        <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
    </property>
</configuration>

- mapreduce.framework.name : 맵리듀스 작업 실행하는 데 사용할 프레임워크

- yarn.app.mapreduce.am.env : YARN 맵리듀스 어드민 환경변수

- mapreduce.map.env :맵리듀스 job의 map task가 실행될 때 사용되는 환경 변수

- mapreduce.reduce.env : 맵리듀스 job의 reduce task 실행될 때 사용되는 환경 변수

 

4. yarn-site.xml

<configuration>
<!-- Site specific YARN configuration properties -->
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
        <property>
                <name>yarn.nodemanager.env-whitelist</name>
                <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>
        </property>
</configuration>

- yarn.nodemanager.aux-services : YARN에서 실행되는 보조 서비스 설정

- yarn.nodemanager.aux-services.mapreduce.shuffle.class : YARN의 보조서비스인 맵리듀스 셔플링을 처리하는 클래스를 지정

source ~/.bashrc

변경사항 적용

 

3.4. 하둡 실행

hdfs namenode -format

처음 한 번만 HDFS 포맷 진행

 

 

start-all.sh로 하둡 데몬 실행. 종료할 때는 stop-all.sh

start-dfs.sh # dfs 실행

jps # jps를 통해 데이터 노드, 네임 노드, 세컨더리 네임노드 실행 확인

start-yarn.sh # yarn 실행 
jps           # 리소스매니저, 노드매니저 실행 확인

dfs와 yarn을 따로 실행도 가능

Hadoop daemon 상태를 확인하려면 start-all.sh로 각 데몬을 실행시킨 후 jps 명령어로 확인.

정상적으로 돌아가고 있는 것을 볼 수 있다.

 

 

나는 가상 머신에 DHCP로 인터넷을 연결했기 때문에 localhost:8088 말고 192.168.64.4:8088 접속했다. putty 등으로 우분투 서버를 연결했거나 로컬에서 진행하면 localhost로 접속하길 바란다.

 

YARN resource manager
http://192.168.64.4:8088

 

NameNode UI
http://192.168.64.4:9870

 

DataNode
http://192.168.64.4:9864

 


Reference

우분투 환경에서 설치 참고

  • https://velog.io/@dbswlfnvl/%EC%9A%B0%EB%B6%84%ED%88%AC-%ED%95%98%EB%91%A1%EC%84%A4%EC%B9%98
  • https://mingg123.tistory.com/125
  • https://spidyweb.tistory.com/214

 

맥 환경에서 설치 참고

  • https://benban.tistory.com/70
  • https://velog.io/@boyunj0226/M1-%EB%A7%A5%EC%97%90%EC%84%9C-Hadoop-Spark-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0

 

'Dev > Hadoop' 카테고리의 다른 글

[Linux/Ubuntu] DHCP Client/sudo dhclient  (2) 2024.05.08
[Hadoop] rcmd socket permission denied  (1) 2024.05.08
'Dev/Hadoop' 카테고리의 다른 글
  • [Linux/Ubuntu] DHCP Client/sudo dhclient
  • [Hadoop] rcmd socket permission denied
min8282
min8282
  • min8282
    min8282
    min8282
  • 전체
    오늘
    어제
    • 분류 전체보기 (110)
      • Security (33)
        • System & Network (2)
        • Application (5)
        • Cloud (20)
      • Dev (18)
        • Node.js (12)
        • Hadoop (3)
        • BOJ (2)
      • Web3 & Blockchain (2)
        • Web3 (2)
      • K-Shield.Jr (15)
      • Web Security Academy (3)
      • Wargame (13)
        • Dreamhack (3)
        • Bandit (10)
      • NS (16)
        • CTF (6)
  • 블로그 메뉴

    • 홈
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    스마트 컨트랙트
    보안 그룹
    ELB
    web3 보안
    Session Manager
    aws 트리거
    systems manager
    스마트컨트랙트
    amazon s3 트리거
    File Upload
    메타코드M
    메타코드
    정처기
    aws lambda
    티스토리챌린지
    metacodem
    ESC1
    정처기 필기
    metacode
    오블완
    Path Traversal
    web3
    정보처리기사
    AWS CLI
    정처기필기
    prepared statement
    탈중앙화
    web security academy
    splunk db connect
    AWS SSM
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
min8282
[Hadoop] Ubuntu에 Hadoop 설치하기(Java/SSH/Hadoop)
상단으로

티스토리툴바