2021년 8월 25일 수요일

Vagrant를 이용한 Hadoop과 Spark 설치

1. 설치환경 

virtualbox 설치된 상태

2. vagrant 다운로드 및 설치 : 다운로드 25분 정도 소요

wget https://raw.githubusercontent.com/spark-in-action/first-edition/master/spark-in-action-box.json

vagrant box add --name manning/spark-in-action spark-in-action-box.json

vagrant init manning/spark-in-action

3. 환경설정 파일 수정

nano Vagrantfile

-- 두개 수정 및 활성화

  config.vm.network "private_network", ip: "192.168.10.2"

  config.vm.network "public_network"

--

4. 가상환경 시작  

vagrant up 

# 나중에 virtualbox를 전원끄기 vagrant halt, 초기화시키고 싶으면 vagrant destroy 

# 모든 자료 없애기 vagrant box remove manning/spark-in-action  

5. 터미널 연결  

ssh spark@192.168.10.2

#password spark

로그인 하면 spark@spark-in-action으로 들어옴

6. 설치환경 확인

spark-submit --version

hadoop version

java -version

7. 사용자 하둡 운용환경 설정

nano .bashrc

--

## hadoop setup

export HADOOP_HOME=/opt/hadoop-2.7.2

export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native

--

source .bashrc

8. 하둡 시작

start-dfs.sh

start-yarn.sh

jps

hadoop fs -ls

hadoop fs -mkdir text

touch testfile0

echo >> testfile0 '안녕 안녕 나는 열심이 열심이 공부 공부 공부 사람'

hadoop fs -put testfile0 text

9. 하둡과 스파크 연동 준비

nano /opt/spark-2.0.0-bin-hadoop2.7/conf/spark-defaults.conf

--- master 를 local[*]을 yarn으로 변경

nano /opt/spark-2.0.0-bin-hadoop2.7/conf/spark-env.sh

---추가

export HADOOP_CONF_DIR=/opt/hadoop-2.7.2/etc/hadoop

---

# hdfs://localhost:9000/user/spark/text/test.txt파일의 경우 

---


10. 하둡과 스파크 연동

spark 클러스터 구동

$ start-master.sh

$ start-slaves.sh

$ jps  : 총 8개 프로세스 확인

---

3328 DataNode

3153 NameNode

4418 Worker

4467 Jps

3700 ResourceManager

3546 SecondaryNameNode

3853 NodeManager

4286 Master

---
이로서 스파크와 하둡 클러스터 연동 완료


11. 스파크에서 하둡파일 불러서 word count 하기

참고로 아래와 같이

### spark-shell scala wordcount

sc.textFile('text/test.txt').flatMap(_.split('\\W+')).map(w =>(w,1)).reduceByKey((a,b) =>(a+b)).foreach(println)

$ spark-shell 실행

--- 이후 scala 코드

var linesRDD = sc.textFile("hdfs://localhost:9000/user/spark/text/testfile0")

var wordsRDD = linesRDD.flatMap(_.split(" "))

var wordsKvRdd = wordsRDD.map((_, 1))

var wordCounts = wordsKvRdd.reduceByKey(_ + _ )

wordCounts.first

wordCounts.take(5)

# HDFS에 저장

wordCounts.saveAsTextFile("hdfs://localhost:9000/user/spark/text/word_counts")

### 


12. spark-sumit를 이용한 작업

spark-submit --master local /opt/spark-2.0.0-bin-hadoop2.7/examples/src/main/python/pi.py