본문 바로가기
[ Linux ]

[빅데이터] 하둡(Hadoop)에 Spark 설치하기

by 히앤님 2020. 10. 8.
반응형
SMALL

아파치 스파크(Apache Spark)


마태 자하리아가 UC 버클리에서 박사 과정 논문의 일부로 개발한 강력한 오픈소스 분산 쿼리 및 처리 엔진.
다양한 종류의 데이터 관련 문제, 예를 들어 반구조(semi-structured), 구조, 스트리밍 또는 머신 러닝/데이터 과학 관련 문제를 해결하기 위해 쉽고 빠르게 쓸 수 있는 프레임워크이다.

 

스파크는 데이터를 읽고, 변형하고, 합계를 낼 수 있으며, 복잡한 통계 모델들을 쉽게 학습하고 배포할 수 있다.

파이썬 pandas 라이브러리와 R의 data.frames 또는 data.tables를 이용하는 데이터 분석가, 데이터 과학자 또는 연구우너들에게 적합한 여러 라이브러리를 제공한다.

 

 

설치하기


1. dn01의 root 계정에서

[root@dn01 ~]# cd /tmp
[root@dn01 tmp]# wget http://apache.mirror.cdnetworks.com/spark/spark-2.4.7/spark-2.4.7-bin-hadoop2.7.tgz
[root@dn01 tmp]# tar xzvf spark-2.4.7-bin-hadoop2.7.tgz
[root@dn01 tmp]# mkdir -p /opt/spark/2.4.7
[root@dn01 tmp]# mv spark-2.4.7-bin-hadoop2.7/* /opt/spark/2.4.7/
[root@dn01 tmp]# ln -s /opt/spark/2.4.7 /opt/spark/current
[root@dn01 tmp]# chown -R hadoop:hadoop /opt/spark/
[root@dn01 tmp]# su - hadoop


[hadoop@dn01 ~]$ vi ~/.bash_profile

 

[~/.bash_profile  : vi 부분]

( 주석 하단에 추가 )

###### spark  ######################
        export SPARK_HOME=/opt/spark/current
        export PATH=$PATH:$SPARK_HOME/bin
        export PATH=$PATH:$SPARK_HOME/sbin
#### spark ######################

 

저장 필수!!

[hadoop@dn01 ~]$ source ~/.bash_profile
[hadoop@dn01 ~]$ cd $SPARK_HOME/conf
[hadoop@dn01 conf]$ pwd

-> 경로확인 : /opt/spark/current/conf

 

[hadoop@dn01 conf]$ mv slaves.template slaves
[hadoop@dn01 conf]$ ls
[hadoop@dn01 conf]$ vi slaves

 

코드

 

[slaves] nn01 dn02 설정

[slaves : vi 부분]

nn01

dn02

( 기존 localhost는 지우고 입력하기 )

 

[hadoop@dn01 conf]$ mv spark-defaults.conf.template  spark-defaults.conf
[hadoop@dn01 conf]$ ls
[hadoop@dn01 conf]$ vi spark-defaults.conf

 

[spark-defaults.conf : vi 부분]

spark.yarn.jars /opt/spark/current/jars/*

( 주석 하단에 추가 )

 

코드

 

[hadoop@dn01 conf]$ mv log4j.properties.template  log4j.properties
[hadoop@dn01 conf]$ ls
[hadoop@dn01 conf]$ vi log4j.properties

 

[log4j.properties : vi 부분]

#INFO -> ERROR로 바꿔 줌 -> Spark 로그에 정신없는 INFO가 안나타남

log4j.rootCategory=ERROR, console

 

[log4j.properties  : vi 부분 ]

 

[hadoop@dn01 conf]$ mv spark-env.sh.template  spark-env.sh
[hadoop@dn01 conf]$ ls
[hadoop@dn01 conf]$ vi spark-env.sh

 

[spark-env.sh  : vi 부분]

( 주석 하단에 추가 )

SPARK_MASTER_HOST=dn01

export JAVA_HOME=/opt/jdk/current

export HADOOP_HOME=/opt/hadoop/current

export SPARK_HOME=/opt/spark/current

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop

export SPARK_DRIVER_MEMORY=2g

export SPARK_EXECUTOR_INSTANCES=2

export SPARK_EXECUTOR_CORES=1

export SPARK_EXECUTOR_MEMORY=2g

export SPARK_MASTER_IP=192.168.56.102

#export SPARK_WORKER_DIR=/spark_data/spwork

#export SPARK_PID_DIR=/spark_data/sptmp

export SPARK_DIST_CLASSPATH=$(/opt/hadoop/current/bin/hadoop classpath):/opt/spark/current/jars/*

#export PYTHONPATH=/opt/python/current/python3

#export PYSPARK_PYTHON=/opt/python/current/python3

 

[hadoop@dn01 ] spark-shell

-> spark-shell 확인

   scala> sc.setLogLevel("WARN")
   scala> val f = sc.textFile("file:///etc/hosts")
   scala> f.count
   scala> f.first
   scala> f.collect
   scala> :quit

spark에 잘 들어갔다.

:quit로 빠져 나온다.


2. dn01 노드(root 계정)에서

- dn02와 nn01로 전송 복사

[hadoop@dn01 ] su - root
[hadoop@dn01 ] scp -r /opt/spark  dn02:/opt/spark
> yes
[hadoop@dn01 ] scp -r /opt/spark  nn01:/opt/spark
yes

 

scp로 전송하면 softlink는 안잡힌다.

current가 디렉토리로 된 거 확인하고 디렉토리를 지우고 softlink로 설정

 

 

3. dn02 노드와 nn01(root 계정)에서 확인

[ dn02 계정 ]

[root@dn02 ~]# rm -rf /opt/spark/current
[root@dn02 ~]# ln -s /opt/spark/2.4.7 /opt/spark/current
[root@dn02 ~]# ll /opt/spark/
[root@dn02 ~]# chown -R hadoop:hadoop /opt/spark/
[root@dn02 ~]# su - hadoop
[hadoop@dn02 ~]$ vi ~/.bash_profile

[~/.bash_profile  : vi 부분]

( 주석 하단에 추가 )

###### spark  ######################

        export SPARK_HOME=/opt/spark/current

        export PATH=$PATH:$SPARK_HOME/bin

        export PATH=$PATH:$SPARK_HOME/sbin

#### spark ######################

[hadoop@dn02 ~]$ source ~/.bash_profile

추가

 

[ nn01 계정으로 이동 ]

[hadoop@nn01 ~]$ vi ~/.bash_profile

 

[~/.bash_profile  : vi 부분]

( 주석 하단에 추가 )

###### spark  ######################

        export SPARK_HOME=/opt/spark/current

        export PATH=$PATH:$SPARK_HOME/bin

        export PATH=$PATH:$SPARK_HOME/sbin

#### spark ######################

[hadoop@nn01 ~]$ source ~/.bash_profile

꼭 저장까지 완료하기.

 


4. dn01 노드 hadoop 계정에서

Spark Start ( hadoop start와 이름이 같으므로 반드시 해당 경로로 이동후 실행하기)

[hadoop@dn01 ] $ SPARK_HOME/sbin/start-all.s

끝낼때는

[hadoop@dn01 ]$ ./stop-all.sh

 


5-1. 안전하게 [ 끄는법 ]

 

1) dn01에서

$SPARK_HOME/sbin/stop-all.sh

일단 스팍부터 죽이기

 

2) nn01에서 

stop-all.sh

(하둡 종료)

 

5-2. [다시 켤 때]

1) nn01에서 하둡부터 켜고

start-all.sh

 

2) dn01에서

$SPARK_HOME/sbin/start-all.sh

해야함

반응형
LIST

댓글