본문 바로가기

Linux

Hadoop 3.3.6 / Spark 3.4.1 설치

 

 이전 글에서 구축한 가상환경에 Hadoop과 Spark를 설치하려고 합니다.

 

 Hadoop / Spark는 분산 처리 시스템으로, 대용량의 데이터를 병렬적으로 처리해 데이터를 빠른 시간 내에 처리할 수 있도록 하는 시스템입니다.

 

 해당 링크 및 책(Jules S. Damji, Brooke Wenig, Tathagata Das, Denny Lee (2022). 러닝 스파크 (2판). (박종영, 이성수 역). 제이펍.)을 참고하여 설치를 진행했습니다.

 

https://velog.io/@e_sin528/Hadoop-Hadoop-3.3.0-standalone-%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%B6%95-%EC%82%BD%EC%A7%88%EA%B8%B0

 

[Hadoop] Hadoop 3.3.0 standalone 서버 구축 삽질기

Hadoop standalone 서버 구축 가이드

velog.io

 

https://robomoan.medium.com/ubuntu-%ED%99%98%EA%B2%BD%EC%97%90%EC%84%9C-apache-spark-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0-c81d0cf332e3

 

Ubuntu 환경에서 Apache Spark 설치하기

아파치 스파크(Apache Spark)는 대규모 분산 데이터 처리를 위해 설계된 통합형 엔진입니다. 이번 포스트에서는 ubuntu 서버 환경에 spark를 설치하고, 구성하는 방법에 대해 알아보려고 합니다.

robomoan.medium.com

 

https://domdom.tistory.com/526

 

[hadoop] 3. apache hadoop 위에 spark 설치하기

[hadoop] 1. ubuntu 18.04에 하둡(Hadoop) 설치하기 https://domdom.tistory.com/524 [hadoop] 2. 로컬에 있는 파일을 HDFS에 전송하기 https://domdom.tistory.com/525 이번에는 하둡 위에 apache spark를 설치해보려합니다. 1. 아파

domdom.tistory.com

 


1. 버전 확인 및 업데이트

 

 먼저 ubuntu 패키지를 업데이트 한 뒤 Python 버전을 확인해야 합니다.

 

 현재 나온 Spark 3.4.1 이상의 경우 Python 3.8 이상에서 작동하기 때문에 필요한 경우 버전 업그레이드를 진행해야 합니다.

 

 이후 환경변수 설정을 위해 vim 패키지를 설치합니다.

 

$ sudo apt update
$ sudo apt upgrade

$ python3 --version

$ sudo apt install vim

 

2. Java 설치

 

 Spark의 경우 Java 8 이상의 버전을 설치해야 하고, JAVA_HOME 환경 변수를 세팅해야 합니다.

 

 먼저 설치의 경우 아래 코드를 입력하면 가능합니다.

 

$ sudo apt install openjdk-11-jdk

# java 설치 확인

$ java -version

 

3. SSH 통신을 위한 라이브러리 설치

 

 하둡 사용을 위해 비밀번호 없는 SSH 통신이 가능하게 하기 위해 Openssh Server. pdsh를 설치합니다.

 

 > 수정: pdsh는 설치하지 않아도 무방합니다. pdsh로 인해 오히려 실행이 되지 않는 경우가 생깁니다.

 

$ sudo apt-get install openssh-server
$ sudo apt-get install pdsh

 

4. SSH 설정

 

$ ssh-keygen -t rsa -P ''
$ cat /home/myubuntu/.ssh/id_rsa.pub >> /home/myubuntu/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
$ ssh localhost

 

5. Hadoop 설치

 

 Hadoop 다운로드 디렉토리에 들어가 버전을 확인 후 다운로드 받습니다.

 

https://archive.apache.org/dist/hadoop/common/

 

Index of /dist/hadoop/common

 

archive.apache.org

 

 저는 작성일 기준 제일 최신 버전인 3.3.6을 다운로드 받았습니다.

 

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

 

 다운로드가 완료된 후 압축해제를 진행하고, 심볼릭 링크를 생성합니다.

 

$ tar –xzvf hadoop-3.3.6.tar.gz

$ ln -s hadoop-3.3.6 hadoop

 

 이후 아래 코드를 작성합니다. 앞으로 데이터가 저장될 폴더를 생성하는 과정입니다.

$ mkdir -p ~/hadoopdata/hdfs/namenode 
$ mkdir -p ~/hadoopdata/hdfs/datanode

 

6. 환경변수 설정

 

 이후 Hadoop 환경변수 설정을 진행합니다.

 

 다음과 같이 작성을 진행합니다.

 

$ sudo vi ~/.bashrc

# 이후 뜨는 파일 맨 아래에 내용을 추가합니다.

export PDSH_RCMD_TYPE=ssh
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export HADOOP_HOME=/home/myubuntu/hadoop03.3.6
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"

# 파일 저장 후 나와서 터미널 진행
$ source ~/.bashrc

 

hadoop-ev.sh 파일 설정

 

vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh

# 주석처리 되어 있는 JAVA_HOME 경로 설정

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

# 맨 아래 추가

export HDFS_NAMENODE_USER="myubuntu"
export HDFS_DATANODE_USER="myubuntu"
export HDFS_SECONDARYNAMENODE_USER="myubuntu"
export YARN_RESOURCEMANAGER_USER="myubuntu"
export YARN_NODEMANAGER_USER="myubuntu"

 

 hdfs와 상세 속성들을 정의하는 파일 core-site.xml 수정

$ vi $HADOOP_HOME/etc/hadoop/core-site.xml

# hadoop.tmp.dir의 파일명은 임의로 수정이 가능합니다.

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

 

 DataNode, NameNode 저장소 디렉토리를 설정하는 파일 hdfs-site.xml을 수정합니다.

 

$ vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml

<configuration>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
 
        <property>
                <name>dfs.name.dir</name>
                <value>file:///home/myubuntu/hadoopdata/hdfs/namenode</value>
        </property>
 
        <property>
                <name>dfs.data.dir</name>
                <value>file:///home/myubuntu/hadoopdata/hdfs/datanode</value>
        </property>
</configuration>

 

 MapReduce 파일 값을 정의하기 위한 파일인 mapred-site.xml 파일을 수정합니다.

 

$ vi $HADOOP_HOME/etc/hadoop/mapred-site.xml

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
</configuration>

 

 yarn에 관한 세팅 파일 yarn-site.xml을 수정합니다.

 

$ vi $HADOOP_HOME/etc/hadoop/yarn-site.xml

<configuration>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

 

7. 네임노드 초기화 및 실행

 

$ hdfs namenode –format

$ start-all.sh

# 아래 명령어를 입력 후 총 6개의 내용이 뜨면 이상없이 실행된 것입니다.
$ jps

 

8. 외부 접속을 위한 방화벽 해제

 

 외부에서 접속할 수 있도록 방화벽 해제를 진행합니다.

 

$ sudo apt install firewalld

$ sudo firewall-cmd --permanent --add-port=9870/tcp 
$ sudo firewall-cmd --permanent --add-port=8088/tcp
$ sudo firewall-cmd --reload

 

9. Spark 설치파일 다운로드

 

 Spark의 경우 Hadoop 버전과 맞춰서 설치를 진행해야 합니다.

 

 아래 사이트에서 Hadoop 버전에 맞는 Spark 버전을 찾아 설치를 진행합니다.

 

 Hadoop 3.3.6의 경우 최신 버전인 Spark 3.4.1과 호환되기 때문에 3.4.1로 설치를 진행했습니다.

 

 또한 Scala가 포함되어 있는 버전으로 설치를 진행했습니다.

 

https://spark.apache.org/downloads.html

 

Downloads | Apache Spark

Download Apache Spark™ Choose a Spark release: Choose a package type: Download Spark: Verify this release using the and project release KEYS by following these procedures. Note that Spark 3 is pre-built with Scala 2.12 in general and Spark 3.2+ provides

spark.apache.org

 

$ wget https://dlcdn.apache.org/spark/spark-3.4.1/spark-3.4.1-bin-hadoop3-scala2.13.tgz

 

 그 후 압축해제를 진행한 뒤 환경 변수 설정 등을 깔끔하게 하기 위해 폴더명 변경을 진행하고 심볼릭 링크를 생성합니다.

 

$ tar –xzvf spark-3.4.1-bin-hadoop3-scala2.13.tgz

$ mv spark-3.4.1-bin-hadoop3-scala2.13 spark-3.4.1

$ ln -s spark-3.4.1 spark

 

10. 환경변수

 

 환경변수 설정을 진행합니다.

 

$ sudo vi ~/.bashrc

# i를 눌러 편집모드
# 아래 4줄의 내용을 맨 아래에 작성

export SPARK_HOME="/home/myubuntu/spark-3.4.1"
export PATH=:$PATH:/usr/lib/jvm/java-11-openjdk-amd64/lib/tools.jar:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$SPARK_HOME/bin

# esc를 눌러 편집모드 종료
# :wq를 입력 후 엔터(저장 후 나가기)

$ source ~/.bashrc

 

 11. 설치 확인

 

 모두 마무리한 뒤 spark-shell, spark-sql, pyspark를 실행시켜 봅니다.

 

 모두 정상적으로 실행이 된다면 설치가 잘 진행된 것입니다.

 


추가 내용

 

 Hadoop이나 Spark를 로드할 때 다음과 같은 에러가 뜨는 경우 해결법입니다.

 

Unable to load native-hadoop library for your platform

 

 해당 사항은 libhadoop 라이브러리를 로드할 수 있도록 설정을 변경하면 됩니다.

 

 보통 libhadoop.so 파일은 $HADOOP_HOME/lib/native 디렉토리에 위치하는데, 이 경로를 참조할 수 있도록 설정을 해야 합니다.

 

$ vi ~/.bashrc

# 내용 추가
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native

$ vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh

# 내용 추가
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native

# 내용 적용
source ~/.bashrc

 

 Spark의 경우 환경변수를 설정해주어야 합니다.

 

 보통 spark/conf에 spark-env.sh.template을 copy해서 적용해야 합니다.

 

$ cd $SPARK_HOME/conf

$ cp spark-env.sh.template spark-env.sh

$ vi spark-env.sh

# 해당 내용을 맨 아래 추가합니다.
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native

 

참고: https://hbase.tistory.com/114

 

[Hadoop] 'Unable to load native-hadoop library for your platform' 에러

하둡 클라이언트를 통해서 데이터노드(Datanode)에 있는 데이터를 읽다보면 로그 파일에 다음과 같은 에러가 찍혀있는 경우가 있다. Unable to load native-hadoop library for your platform ShortCircuit Read라는 기

hbase.tistory.com

https://m.blog.naver.com/firstpcb/221762669146

 

Unable to load native-hadoop library with spark

WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using built...

blog.naver.com

 

'Linux' 카테고리의 다른 글

VirtualBox Ubuntu - Windows 공유폴더 설정  (0) 2023.09.07
VirtualBox SSH 연결하기  (0) 2023.09.05
VirtualBox + Ubuntu 22.04.3 LTS 설치  (0) 2023.09.04