spark特點
1、快
與Hadoop的MapReduce相比,Spark基於內存的運算要快100倍以上,基於硬盤的運算也要快10倍以上。Apache Spark使用最先進的DAG調度程序,查詢優化器和物理執行引擎,實現批處理和流數據的高性能
2、便於使用
Spark支持Java、Python和Scala的API,還支持超過80種高級算法,使用戶可以快速構建不同的應用。還支持交互式的Scala,Python,R和SQL shell
3、通用
Spark提供了統一的解決方案。Spark可以用於批處理、交互式查詢(Spark SQL)、實時流處理(Spark Streaming)、機器學習(Spark MLlib)和圖計算(GraphX)。這些不同類型的處理都可以在同一個應用中無縫使用。
4、兼容
Spark可以非常方便地與其他的開源產品進行融合。比如,Spark可以使用Hadoop的YARN和Apache Mesos作爲它的資源管理和調度器,器,並且可以處理所有Hadoop支持的數據,包括HDFS、HBase和Cassandra等。
集羣安裝
首先是得明白怎麼選擇版本,包括怎麼選擇Hadoop版本,怎麼選擇Spark版本,Spark版本之間的差異是什麼,怎麼選擇 Scala,怎麼選擇Java
www.baidu.com(手動滑稽)
1、機器部署
準備兩臺安裝JDK的機器並配置環境變量、多臺機器互通互聯,免密登錄,時間同步,
2、下載Spark安裝包
穩定版及最新版http://spark.apache.org/downloads.html
舊版本http://spark.apache.org/news/index.html
3、解壓並安裝
上傳安裝包並解壓到指定目錄
tar -xvf spark-2.2.0-bin-hadoop2.7.tar -C /usr/local
4、配置
進入Spark安裝目錄
cd /usr/local/spark-2.2.0-bin-hadoop2.7
進入conf目錄,重命名並修改spark-env.sh.template文件
cd conf
mv spark-env.sh.template spark-env.sh
vi spark-env.sh
添加一下配置
export JAVA_HOME=/usr/local/jdk1.8.0_181 //jdk路徑
export SPARK_MASTER_IP=centos1 //centos1爲自己的主機名
export SPARK_MASTER_PORT=7077
新建slaves文件
vi slaves
添加子節點所在位置(Workers)
centos2 //子機名
centos3 //子機名
5、文件分發
scp -r spark-2.2.0-bin-hadoop2.7/ centos2:$PWD //修改以上任意一項都需重新分發
scp -r spark-2.2.0-bin-hadoop2.7/ centos3:$PWD
Spark集羣配置完畢
啓動
可以寫絕對路徑也可以配置到環境變量裏面,小編因爲有hadoop所以寫了覺得路徑
start-all.sh //配置了環境變量使用
/usr/local/spark-2.2.0-bin-hadoop2.7/sbin/start-all.sh /沒有配置環境變量
問題:如果環境變量沒問題,而啓動的時候總是需要絕對路徑才能正常啓動則應是主機上裝了hadoop,那麼這樣的話可以寫一個shell腳本來啓動Spark(shell腳本中寫絕對路徑)
執行jps查看,登錄Spark管理界面查看集羣狀態(主節點):http://centos1:8080
jps //主節點上有Master進程,其他子節點上有Work進程
調試
執行一個spark程序
該算法是利用蒙特·卡羅算法求PI
./spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://centos1:7077 \ //填寫自己的主機名
/usr/local/spark-2.2.0-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.2.0.jar 1000 //自己的spark-examplrs jar包,個版本不一樣
啓動spark shell
/usr/local/spark-1.6.1-bin-hadoop2.6/bin/spark-shell \
--master spark://centos1:7077 \ //指定Master的地址
--executor-memory 2g \ //指定每個worker可用內存
--total-executor-cores 2 //整個集羣使用的cpu核數