Spark
사전 설치
•
jdk8
•
hadoop-3.2.2
•
spark-3.1.1-bin-hadoop3.2
•
zeppelin-0.9.0
•
jupyter-notebook
•
rstudio
실행하기
Hadoop 실행
$ ./hadoop3/sbin/start-all.sh
WARNING: Attempting to start all Apache Hadoop daemons as spark in 10 seconds.
WARNING: This is not a recommended production deployment configuration.
WARNING: Use CTRL-C to abort.
Starting namenodes on [spark-master-01]
Starting datanodes
Starting secondary namenodes [spark-master-01]
Starting resourcemanager
Starting nodemanagers
Shell
복사
•
Hadoop Web UI: {IP}:50070
•
Yarn Web UI: {IP}:8088
자바 프로세스 보기
$ jps
0000 Jps
0001 ResourceManager
0002 SecondaryNameNode
0003 NameNode
Shell
복사
Pyspark 실행
$ cd spark
$ mkdir -p conf-yarn
$ cd conf-yarn
$ vim core-site.xml
$ vim yarn-site.xml
$ YARN_CONF_DIR=$HOME/spark3/conf-yarn ./bin/pyspark --master yarn
Shell
복사
•
core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master-01:9000/</value>
</property>
</configuration>
XML
복사
•
yarn-site.xml
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.resourcemanager.address</name>
<value>master-01:8132</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master-01:8130</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master-01:8188</value>
</property>
</configuration>
XML
복사
Pyspark ( + Resource 설정 )
$ YARN_CONF_DIR=$HOME/spark3/conf-yarn ./bin/pyspark \
--master yarn \
--executor-memory 2G \
--executor-cores 2 \
--num-executors 3
Shell
복사
HDFS 업로드
$ cd $HOME/hadoop3
$ ./bin/hdfs dfs -mkdir /data
$ ./bin/hdfs dfs -put $HOME/data /data/
Shell
복사
•
hdfs://{IP}:{PORT}/data/* 경로로 파일을 읽어올 수 있다
내용
•
YARN 이 각 worker 들을 관리
◦
master → worker-01, worker-02, worker-03
◦
pypsark 로 Application 을 실행하는 순간 기본적으로 1Core, 1GiB 가 할당되고 이를 나눠서 Container 들을 만듬 ( Yarn 기준 )
▪
YARN 은 Application Master (이하 A.M) 을 한개 더 띄움
▪
A.M 을 제외한 나머지 Worker 들은 overhead 로 인해 1GiB (고정수치는 아님) 메모리를 더 할당함
•
[Application Manager] → [Executors]
◦
Storage Memory 는 메모리에 캐시할 수 있는 영역이다
◦
Storage Memory 는 지정한 메모리의 50~60% 정도 할당된다
•
Shuffle 을 할 땐 기본적으로 Thread 를 200개 사용함 (튜닝 포인트)
•
Driver 가 파일 사이즈를 판단하여 각각 Task 를 분할함
•
(YARN + HDFS)으로 실행하는 경우 Executor 는 Spark 를 설치하지 않아도 된다
◦
필요한 라이브러리, 모듈등은 모두 HDFS 에 Staging 에 업로드 되고, Executor 는 그 내용을 사용한다