Copyright © 2019 Linyer. All Rights Reserved
目錄
先準備好以下l兩個包(點擊以下載):
scala-2.10.7.tgz
spark-1.6.3-bin-hadoop2.6.tgz
上接實驗一:Hadoop集羣搭建
實驗二建立在實驗一的基礎上!
點擊以查看實驗一
實驗二:Spark 集羣構建
上傳解壓 配置環境變量
- 在 SparkMaster 上:
- 創建目錄
mkdir /usr/lib/scala
mkdir /usr/lib/spark
- 上傳 Scala 至
/usr/lib/scala
目錄下。 - 上傳 Spark 至
/usr/lib/spark
目錄下。 - 解壓它們
cd /usr/lib/scala
tar -zxvf scala-2.10.7.tgz
cd /usr/lib/spark
tar -zxvf spark-1.6.3-bin-hadoop2.6.tgz
- 環境變量配置,增加以下內容:
export SCALA_HOME=/usr/lib/scala/scala-2.10.7
export SPARK_HOME=/usr/lib/spark/spark-1.6.3-bin-hadoop2.6
export PATH=${SPARK_HOME}/bin:${SCALA_HOME}/bin:
source ~/.bashrc
- 輸入
scala -version
查看是否配置成功。 - 使用
scp
命令複製到 SparkWorker1 和 SparkWorker2 上。 - 如果發現 NetworkManager 和 network 衝突可執行以下命令關閉 NetworkManager:
service NetworkManager stop
配置 Spark
SparkMaster 上
- 進入 spark 的 conf 目錄:
cd /usr/lib/spark/spark-1.6.3-bin-hadoop2.6/conf
修改 slaves 文件
- 首先把 slaves.template 複製爲 slaves
cp slaves.template slaves
- 修改 slaves 文件內容爲:
SparkWorker1
SparkWorker2
配置 spark-env.sh
- 首先把 spark-env.sh.template 複製爲 spark-env.sh
cp spark-env.sh.template spark-env.sh
- 配置如下:
export JAVA_HOME=/usr/java/jdk1.8.0_221-amd64
export SCALA_HOME=/usr/lib/scala/scala-2.10.7
export HADOOP_HOME=/usr/lib/hadoop/hadoop-2.6.5
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export SPARK_MASTER_IP=SparkMaster
export SPARK_WORKER_MEMORY=1g
複製到 SparkWorker1 和 SparkWorker2 上
scp slaves root@SparkWorker1:/usr/lib/spark/spark-1.6.3-bin-hadoop2.6/conf
scp slaves root@SparkWorker2:/usr/lib/spark/spark-1.6.3-bin-hadoop2.6/conf
scp spark-env.sh root@SparkWorker1:/usr/lib/spark/spark-1.6.3-bin-hadoop2.6/conf
scp spark-env.sh root@SparkWorker2:/usr/lib/spark/spark-1.6.3-bin-hadoop2.6/conf
啓動 Spark 分佈式集羣並查看信息
1. 啓動 Hadoop 集羣
- 在 SparkMaster 使用
jps
命令:
cd $HADOOP_HOME/sbin
./start-dfs.sh
./start-yarn.sh
./mr-jobhistory-daemon.sh start historyserver
2. 啓動 Spark 集羣
- 啓動操作如下:
cd $SPARK_HOME/sbin
./start-all.sh
-
此時使用
jps
命令,發現 SparkWorker1 和 SparkWorker2 上都出現了新進程 Worker
-
可以進入 Spark 集羣 Web 頁面,訪問
http://192.168.80.131:8080
,可以看到有兩個 Worker 節點及這兩個節點的信息:
-
此時進入Spark 的 bin 目錄,使用 spark-shell 控制檯。
cd $SPARK_HOME/bin
spark-shell
- 此時進入 Spark 的 shell 世界,根據輸出的提示信息,可以通過
http://192.168.80.131:4040
從 Web 的角度看一下 SparkUI 的情況。
- 同時也可以看一下 Executors 。
- 至此,Spark 集羣搭建成功!
測試 Spark 集羣
- 把 Spark 安裝包下文件 README.md 上傳到 HDFS 。
cd $SPARK_HOME
hadoop fs -put README.md /data
- 通過
http://192.168.80.131:50070/explorer.html#/data
在 Web 控制檯上發現成功上傳了文件。
- 使用 MASTER=spark://SparkMaster:7077 ./spark-shell 命令啓動 Spark shell。
cd $SPARK_HOME/bin
MASTER=spark://SparkMaster:7077 ./spark-shell
- 接下來通過以下命令讀取剛剛上傳到 HDFS 上的 README.md 文件:
val file = sc.textFile("hdfs://SparkMaster:9000/data/README.md")
- 對讀取的文件進行一下操作:
val count = file.flatMap(line => line.split("")).map(word => (word,1)).reduceByKey(_+_)
- 接下來使用 collect 命令提交併執行 Job。
count.collect
- 從 Web 控制檯可以看到程序成功在集羣上運行。
- 上述信息表明程序成功在 Spark 集羣上運行!