Spark簡介
Apache Spark 是專為大規(guī)模數(shù)據(jù)處理而設(shè)計的快速通用的計算引擎。
Spark最初作為一個研究項目峦剔,誕生于加州大學伯克利分校AMP實驗室,主要原因是AMP實驗室的研究人員發(fā)現(xiàn)在機器學習迭代算法場景下,Hadoop MapReduce的效率很低。為了迭代算法和交互式查詢兩種典型的場景昂羡,于是Spark應運而生。
Spark剛誕生時摔踱,常常被稱為內(nèi)存計算虐先,主要原因是在典型應用中,Spark讀取HDFS中的文件派敷,加載到內(nèi)存蛹批,在內(nèi)存中使用彈性分布式數(shù)據(jù)集(Resilient Distributed Dataset,RDD)來組織數(shù)據(jù)篮愉。RDD可以重用腐芍,支持重復訪問,在機器學習的各個迭代中它都會駐留在內(nèi)存试躏,這樣可以顯著的提升性能猪勇。即便是必須使用磁盤進行復雜計算的場景,Spark也常常比Hadoop MapReduce更加高效颠蕴。
Saprk是一個通用計算框架埠对,包含了特定場景下的計算庫:Streaming络断、SQL、MLlib项玛、Graphx等貌笨,除了支持常見的MapReduce范式,還能夠支持圖計算襟沮、流式計算等復雜計算場景锥惋,在很大程度上彌補了Hadoop的不足。
Spark分布式安裝部署
安裝Scala
首先在集群中的主節(jié)點服務器hadoop-1中進行安裝配置开伏,Scala安裝包可以到官方網(wǎng)站https://www.scala-lang.org/進行下載膀跌。
使用Xftp將Scala和Spark安裝包上傳到hadoop-1的/usr目錄下:
安裝Scala,進入/user目錄固灵,使用tar命令將壓縮包進行解壓捅伤,執(zhí)行命令:
# tar zxvf scala-2.12.2.tgz
解壓完成后會在/usr目錄下生成scala-2.12.2目錄:
使用vim編輯環(huán)境變量:
# vim /etc/profile
新增內(nèi)容如下:
export SCALA_HOME=/usr/scala-2.12.2
export PATH=$SCALA_HOME/bin:$PATH
保存退出,巫玻,執(zhí)行命令使修改生效:
# source /etc/profile
執(zhí)行以下命令查看安裝是否成功:
# scala -version
顯示版本信息則安裝成功丛忆,hadoop-2和hadoop-3節(jié)點主機環(huán)境變量做相同配置。
安裝Spark
Spark安裝包可以到官方網(wǎng)站http://spark.apache.org/進行下載仍秤。
安裝Spark熄诡,進入/user目錄,使用tar命令將壓縮包進行解壓诗力,執(zhí)行命令:
# tar zxvf spark-2.4.4-bin-hadoop2.7.tgz
解壓完成后會在/usr目錄下生成spark-2.4.4-bin-hadoop2.7目錄:
使用vim編輯環(huán)境變量:
# vim /etc/profile
新增內(nèi)容如下:
export SPARK_HOME=/usr/spark-2.4.4-bin-hadoop2.7
export PATH=$SPARK_HOME/bin:$PATH
保存退出凰浮,,執(zhí)行命令使修改生效:
# source /etc/profile
Spark配置
進入Spark的配置文件目錄苇本,并查看該目錄下的文件:
# cd /usr/spark-2.4.4-bin-hadoop2.7/conf/
# ll
執(zhí)行以下命令袜茧,創(chuàng)建spark-env.sh文件和slaves文件:
# cp spark-env.sh.template spark-env.sh
# cp slaves.template slaves
使用vim編輯配置文件spark-env.sh:
# vim spark-env.sh
新增以下內(nèi)容:
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export HADOOP_HOME=/usr/hadoop-2.7.7
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SCALA_HOME=/usr/scala-2.12.2
export SPARK_HOME=/usr/spark-2.4.4-bin-hadoop2.7
export SPARK_MASTER_IP=hadoop-1
export SPARK_EXECUTOR_MEMORY=1G
保存退出,使用vim編輯配置文件slaves文件:
# vim slaves
新增以下內(nèi)容:
hadoop-2
hadoop-3
保存退出瓣窄。
部署
使用scp命令將Scala和Spark分別遠程拷貝到hadoop-2和hadoop-3節(jié)點主機中:
# scp -r /usr/scala-2.12.2 hadoop-2:/usr/
# scp -r /usr/scala-2.12.2 hadoop-3:/usr/
# scp -r /usr/spark-2.4.4-bin-hadoop2.7 hadoop-2:/usr/
# scp -r /usr/spark-2.4.4-bin-hadoop2.7 hadoop-3:/usr/
在hadoop-2和hadoop-3兩臺主機的/usr目錄下可以看到已經(jīng)拷貝成功:
啟動Spark
啟動Spark首先要保證Hadoop集群在運行中笛厦。
在hadoop-1主節(jié)點中進行啟動,進入Spark的sbin目錄下康栈,執(zhí)行啟動命令:
# cd /usr/spark-2.4.4-bin-hadoop2.7/sbin/
# ./start-all.sh
啟動完成后递递,使用jps命令可以查看啟動的進程。
hadoop-1主節(jié)點為Master進程:
hadoop-2和hadoop-3節(jié)點為Work進程:
瀏覽器訪問:http://192.168.44.128:8080/:
此處若在啟動Spark前啥么,已經(jīng)事先將Hadoop登舞、ZooKeeper、Hbase等啟動完成悬荣,則8080端口會被ZooKeeper占用菠秒,這是由于ZooKeeper 3.5版本新特性決定的,此時Spark啟動端口會被換成8081,查看Spark Master日志文件內(nèi)容践叠,可以看到該端口變換信息言缤。
使用spark-shell命令,可以與Spark進行交互:
瀏覽器訪問:http://192.168.44.128:4040/jobs/禁灼,可以在Web頁面找那個查看Job情況:
至此Spark的安裝配置完成管挟。