一、安裝依賴軟體Scala(所有節點)
1、下載Scala:http://www.scala-lang.org/files/archive/scala-2.10.4.tgz
2、解壓:
[root@Hadoop-NN-01 ~]# tar -xzvf scala-2.10.4.tgz -C /usr/local/
3、配置scala環境變數
[root@Hadoop-NN-01 ~]# vim /etc/profile
export SCALA_HOME=/usr/local/scala
export PATH=$PATH:${SCALA_HOME}/bin
[root@Hadoop-NN-01 ~]# source /etc/profile #使環境變數生效
4、測試scala執行環境
[root@Hadoop-NN-01 scala]# scala
scala> 15*15
res0: Int = 225
二、安裝spark
1、下載spark:http://archive.cloudera.com/cdh5/cdh/5/spark-1.5.0-cdh5.6.0.tar.gz
理論上講CDH的一套是沒有問題,可是我裝了三個版本都沒有裝成功,啟動的時候始終一個錯:Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/Logger
提示缺少slf4j依賴包:log4j-1.2.17.jar、 slf4j-api-1.7.10.jar、 slf4j-log4j12-1.7.10.jar
可我將這三個包放到lib下依然不行,最後只能下載的官方的安裝。如果有朋友知道原諒還請留言,謝謝!
引用【書憶江南】的回覆:
#CDH版的Spark安裝目錄下的/conf/spark-env.sh配置檔案中,新增以下環境變數:export SPARK_DIST_CLASSPATH=(/mnt/sda6/Hadoop/hadoop−2.6.0−cdh5.15.0/bin/hadoopclasspath),給這個變數新增你已經安裝的CDHHadoop的類路徑,我看到別的教程說等號後面可以直接(/mnt/sda6/Hadoop/hadoop−2.6.0−cdh5.15.0/bin/hadoopclasspath),給這個變數新增你已經安裝的CDHHadoop的類路徑,我看到別的教程說等號後面可以直接(hadoop classpath),我試過,這樣只能啟動Master,啟動Worker程式的時候還是會報缺Logger的錯。所以,必須要在括號內寫全CDH Hadoop的安裝路徑精確到/bin,然後再斜槓接上hadoop classpath才行。 export SPARK_DIST_CLASSPATH=$(/mnt/sda6/Hadoop/hadoop-2.6.0-cdh5.15.0/bin/hadoop classpath)
官方下載:http://www.apache.org/dyn/closer.lua/spark/spark-1.6.0/spark-1.6.0-bin-hadoop2.6.tgz
2、解壓:
[root@Hadoop-NN-01 ~]# tar xzvf spark-1.6.0-bin-hadoop2.6.tgz
3、配置Spark環境變數
[root@Hadoop-NN-01 ~]# vim /etc/profile
export SPARK_HOME=/home/hadoopuser/spark-1.6.0-bin-hadoop2.6
export PATH=$PATH:${SPARK_HOME}/bin
[root@Hadoop-NN-01 ~]# source /etc/profile #使環境變數生效
4、配置 ${SPARK_HOME}/conf/spark-env.sh
[hadoopuser@Hadoop-NN-01 conf]$ cp spark-env.sh.template spark-env.sh [hadoopuser@Hadoop-NN-01 conf]$ vim spark-env.sh export JAVA_HOME=/usr/java/jdk1.8.0_73 export SCALA_HOME=/usr/local/scala export HADOOP_HOME=/home/hadoopuser/hadoop-2.6.0-cdh5.6.0 export HADOOP_CONF_DIR=/home/hadoopuser/hadoop-2.6.0-cdh5.6.0/etc/hadoop
export SPARK_MASTER_IP=192.168.107.82 export SPARK_MASTER_PORT=8070 export SPARK_MASTER_WEBUI_PORT=8090
export SPARK_WORKER_CORES=1 #每個Worker使用的CPU核數 export SPARK_WORKER_INSTANCES=1 #每個Slave中啟動幾個Worker例項 export SPARK_WORKER_PORT=8092 #Worker的WebUI埠號 export SPARK_WORKER_MEMORY=1g #每個Worker使用多大的記憶體
其它引數:
SPARK_MASTER_IP |
繫結一個外部IP給master。 |
SPARK_MASTER_PORT |
從另外一個埠啟動master(預設: 7077) |
SPARK_MASTER_WEBUI_PORT |
Master的web UI埠(預設:8080) |
SPARK_WORKER_PORT |
啟動Spark worker 的專用埠(預設:隨機) |
SPARK_WORKER_DIR |
伸縮空間和日誌輸入的目錄路徑(預設:SPARK_HOME/work) |
SPARK_WORKER_CORES |
作業可用的CPU核心數量(預設:所有可用的) |
SPARK_WORKER_MEMORY |
作業可使用的記憶體容量,預設格式1000M或者 2G (預設:所有RAM去掉給作業系統用的1 GB)注意:每個作業自己的記憶體空間由SPARK_MEM決定。 |
SPARK_WORKER_WEBUI_PORT |
worker 的web UI 啟動埠(預設:8081) |
SPARK_WORKER_INSTANCES |
每個機器上執行worker數量(預設:1)當你有一個非常強大的計算機的時候和需要多個Spark worker程式的時候你可以修改這個預設值大於1。如果你設定了這個值。要確保SPARK_WORKER_CORE 明確限制每一個r worker的核心數,否則每個worker 將嘗試使用所有的核心。 |
SPARK_DAEMON_MEMORY |
分配給Spark master和 worker 守護程式的記憶體空間(預設:512m) |
SPARK_DAEMON_JAVA_OPTS |
Spark master 和 worker守護程式的JVM 選項(預設:none) |
5、配置 {SPARK_HOME}/conf/ slaves
[hadoopuser@Hadoop-NN-01 conf]$ cp slaves.template slaves
[hadoopuser@Hadoop-NN-01 conf]$ vim slaves
#注意這裡新增所有工作節點的主機名或者ip
#Hadoop-NN-01(如果既想當master又想當worker的話,可以配置上。)
Hadoop-DN-01
Hadoop-DN-02
6、程式分發
scp -r spark-1.6.0-bin-hadoop2.6. hadoopuser@Hadoop-DN-01:/home/hadoopuser/
scp -r spark-1.6.0-bin-hadoop2.6. hadoopuser@Hadoop-DN-02:/home/hadoopuser/
7、啟動spark叢集
[hadoopuser@Hadoop-NN-01 sbin]# ./start-all.sh
單節點啟動:
sbin/start-master.sh #啟動主節點
sbin/start-slave.sh 192.168.107.82:8070 #啟動從節點
8、執行示例程式
[hadoopuser@Hadoop-NN-01 spark-1.6.0-bin-hadoop2.6.]# ./bin/run-example SparkPi 10 > Sparkpilog.txt
9、驗證
1)jps
主節點多了Master
從節點多了Worker
2)瀏覽器檢視http://192.168.107.82:8090/
10、使用spark-shell
[hadoopuser@Hadoop-NN-01 spark-1.5.0-cdh5.6.0]# bin/spark-shell
瀏覽器訪問SparkUI http:// 192.168.107.82:4040/
可以從 SparkUI 上檢視一些 如環境變數、Job、Executor等資訊。
至此,整個 Spark 分散式叢集的搭建就到這裡結束。
11、停止spark叢集
[hadoopuser@Hadoop-NN-01 sbin]# ./stop-all.sh