Big Data
Spark
Scala
tags: Common
- Spark cluster 叢集可自行運作,也可以建置在 Hadoop 叢集系統之上
- 如果要在 Hadoop 叢集系統上建置 Spark 叢集,則 master 與所有 slave 節點都要安裝 Spark & Scala
Scala
- 可直譯、可編譯、靜態、可運行於JVM 之上
- 可與Java 互操作、融合物件導向編程特性與函式編程風格的程式語言
SBT
- Simple Build Tool
- 簡單來說就是 Scala 世界的 Maven
1. 確認 Java 版本
- Java 8+:
java -version
2. 安裝 Scala
-
下載網址:Link
- 找 Debian,副檔名為
.deb
- 找 Debian,副檔名為
-
下載指令:
wget 網址
wget http://www.scala-lang.org/files/archive/scala-2.13.0-M4.deb
-
安裝 package:
dpkg -i package.deb
sudo dpkg -i scala-2.13.0-M4.deb
-
安裝 Scala:
sudo apt-get install scala
補充:移除 Scala
sudo apt-get remove --auto-remove scala-library
3. 設定環境
-
開啟設定檔:
gedit ~/.bashrc
- 於檔案末,增加
export SCALA_HOME=/usr/share/scala -
使設定檔生效:
source ~/.bashrc
-
檢查 Scala 版本:
scala -version
-
啟動 Scala:
scala
-
離開 Scala shell:
:quit
或直接ctrl + Z
4. 安裝 SBT
- 下載網址:Link
- 找 Debian,副檔名為
.deb
- 找 Debian,副檔名為
- 下載指令:
wget 網址
wget http://dl.bintray.com/sbt/debian/sbt-1.2.1.deb
- 安裝 package:
dpkg -i package.deb
sudo dpkg -i sbt-1.2.1.deb
5. 安裝 Spark
- 下載網址:Link
- 下載指令:
wget 網址
wget https://www.apache.org/dist/spark/spark-2.3.1/spark-2.3.1-bin-hadoop2.7.tgz
- 解壓縮:
tar zxf 檔案名稱
或tar zxvf 檔案名稱
tar zxf spark-2.3.1-bin-hadoop2.7.tgz
- 移動資料夾:
sudo mv spark-2.3.1-bin-hadoop2.7 /usr/local/spark
6. 設定 Spark 環境變數
- 將 hadoop 加入使用者群組:
sudo addgroup hadoop
- 更改 owner 權限:
sudo chown -R 使用者名稱:使用者名稱 /usr/local/spark/
sudo chown -R test:test /usr/local/spark/
- 更改安裝模式:
sudo chmod -R 755 /usr/local/spark/
- 修改設定檔:
gedit ~/.bashrc
- 添加
export SPARK_HOME=/usr/local/spark export SPARK_CONF_DIR=/usr/local/spark/conf export PATH=$PATH:$SPARK_HOME/bin export PATH=$PATH:$SPARK_HOME/sbin - 使設定檔生效:
source ~/.bashrc
7. 設定 Spark 相關檔案
-
切換路徑:
cd /usr/local/spark/conf
-
複製檔案
sudo cp spark-env.sh.template spark-env.sh sudo cp spark-defaults.conf.template spark-defaults.conf sudo cp slaves.template slaves -
設定 spark-env:
sudo gedit spark-env.sh
- 於檔案末,加入
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop export SPARK_MASTER_HOST=master export SPARK_MASTER_PORT=7077 export SPARK_CONF_DIR=/usr/local/spark/conf -
設定 spark-defaults:
sudo gedit spark-defaults.conf
- 於檔案末,加入
spark.master spark://master:7077 spark.serializer org.apache.spark.serializer.KryoSerializer -
設定 slaves:
sudo gedit slaves
- 刪除:
localhost
- 添加:
192.168.61.132 # Hadoop master/data and Spark master/worker 192.168.61.131 # Hadoop data and Spark worker - 刪除:
-
設定 workers 所有節點:
gedit /usr/local/hadoop/etc/hadoop/workers
master slave -
設定 YARN:
gedit /usr/local/hadoop/etc/hadoop/yarn-site.xml
- 添加:
<property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property>
8. 重複步驟 1~7
- slave
- 其他 workers
- 下載過的檔案,可以直接複製過去其他虛擬機/主機
9. 建立 HDFS 目錄
master
sudo rm -rf /usr/local/hadoop/hadoopdata/hdfs
mkdir -p /usr/local/hadoop/hadoopdata/hdfs/namenode
mkdir -p /usr/local/hadoop/hadoopdata/hdfs/datanode
sudo chown -R 使用者名稱:使用者名稱 /usr/local/hadoop
- 格式化 HDFS NameNode:
hdfs namenode -format
- 格式化 HDFS DataNode:
hdfs datanode -format
- 檢查 Java processes:
jps
slave
sudo rm -rf /usr/local/hadoop/hadoopdata/hdfs
mkdir -p /usr/local/hadoop/hadoopdata/hdfs/datanode
sudo chown -R 使用者名稱:使用者名稱 /usr/local/hadoop
- 格式化 HDFS DataNode:
hdfs datanode -format
- 檢查 Java processes:
jps
10. 啟動 Spark/Hadoop
架構
-
Singleton object:SparkContext
步驟
-
啟動 HDFS:
start-dfs.sh
-
啟動 YARN:
start-yarn.sh
-
啟動 Spark:
/usr/local/spark/sbin/start-all.sh
-
檢查 Spark:顯示有幾個 Workers
- 開啟 Firefox,並輸入
master:8080
- 開啟 Firefox,並輸入
11. Spark Shell
-
進入 Spark Shell:
spark-shell
- 此為 Standalone mode
-
查看 Spark shell application UI
- 開啟 Firefox,並輸入
master:4040
- 開啟 Firefox,並輸入
-
查看 Executors
- 點選 “Executors”
- Master(Driver) + Worker*2
- driver → active:代表 Spark cluster 架設完成
停止 Hadoop/Spark
- 停止 Hadoop:
stop-all.sh
- 停止 Spark:
/usr/local/spark/sbin/stop-all.sh
Extensive 延伸閱讀
- Install Spark 2.3.1 on Hadoop 3.0.0 multi-node cluster on Ubuntu
http://gaurav3ansal.blogspot.com/2017/09/installing-spark-220-on-hadoop-yarn-300.html - Spark 編程指南繁體中文版
https://taiwansparkusergroup.gitbooks.io/spark-programming-guide-zh-tw/ - 語言技術:Scala Gossip:https://openhome.cc/Gossip/Scala/
- GNU / Linux 各種壓縮與解壓縮指令:http://note.drx.tw/2008/04/command.html
沒有留言:
張貼留言