前期博客
Spark standalone模式的安裝(spark-1.6.1-bin-hadoop2.6.tgz)(master、slave1和slave2)
1. Standalone模式
即獨立模式,自帶完整的服務,可單獨部署到一個集群中,無需依賴任何其他資源管理系統。從一定程度上說,該模式是其他兩種的基礎。借鑒Spark開發模式,我們可以得到一種開發新型計算框架的一般思路:先設計出它的standalone模式,為了快速開發,起初不需要考慮服務(比如master/slave)的容錯性,之后再開發相應的wrapper,將stanlone模式下的服務原封不動的部署到資源管理系統yarn或者mesos上,由資源管理系統負責服務本身的容錯。目前Spark在standalone模式下是沒有任何單點故障問題的,這是借助zookeeper實現的,思想類似於Hbase master單點故障解決方案。將Spark standalone與MapReduce比較,會發現它們兩個在架構上是完全一致的:
1) 都是由master/slaves服務組成的,且起初master均存在單點故障,后來均通過zookeeper解決(Apache MRv1的JobTracker仍存在單點問題,但CDH版本得到了解決);
2) 各個節點上的資源被抽象成粗粒度的slot,有多少slot就能同時運行多少task。不同的是,MapReduce將slot分為map slot和reduce slot,它們分別只能供Map Task和Reduce Task使用,而不能共享,這是MapReduce資源利率低效的原因之一,而Spark則更優化一些,它不區分slot類型,只有一種slot,可以供各種類型的Task使用,這種方式可以提高資源利用率,但是不夠靈活,不能為不同類型的Task定制slot資源。總之,這兩種方式各有優缺點。
Spark Standalone部署配置---Standalone架構

Spark Standalone部署配置---手工啟動一個Spark集群
http://spark.apache.org/docs/latest/spark-standalone.html#starting-a-cluster-manually
這里,我帶大家,看官網
http://spark.apache.org/docs/latest

http://spark.apache.org/docs/latest/spark-standalone.html

這里,我不多說,自行去看吧!
Spark Standalone部署配置---訪問web ui
● 訪問http://master:8080/(默認端口是8080,端口大家可以自己修改)
Job提交與運行
Job提交與運行---運行示例程序
$SPARK_HOME/bin/spark-submit \
--master spark://master:7077 \
--class org.apache.spark.examples.SparkPi \
$SPARK_HOME/lib/spark-examples-1.6.1-hadoop2.6.0.jar



Spark Standalone HA
● Standby masters with Zookeeper
● Single-Node Recover with Local File System
http://spark.apache.org/docs/latest/spark-standalone.html#high-availability
但是,這里需。關於zookeeper的安裝
我這里不多說,請移步
hadoop-2.6.0-cdh5.4.5.tar.gz(CDH)的3節點集群搭建(含zookeeper集群安裝)


export JAVA_HOME=/usr/local/jdk/jdk1.8.0_60 export SCALA_HOME=/usr/local/scala/scala-2.10.5 export SPARK_MASTER_IP=master export SPARK_WORKER_MERMORY=1G spark.deploy.recoverMode=ZOOKEEPER spark.deploy.zookeeper.url=master:2181,slave1:2181,slave2:2181 spark.deploy.zookeeper.dir=/my-spark
或者

export JAVA_HOME=/usr/local/jdk/jdk1.8.0_60 export SCALA_HOME=/usr/local/scala/scala-2.10.5 export SPARK_MASTER_IP=master export SPARK_WORKER_MERMORY=1G SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=master:2181,slave1:2181,slave2:2181 -Dspark.deploy.zookeeper.dir=/my-spark"
Spark Standalone運行架構解析

Spark Standalone運行架構解析---Spark基本工作流程
以SparkContext為程序運行的總入口,在SparkContext的初始化過程中,Spark會分別創建DAGScheduler作業調度和TaskScheduler任務調度兩級調度模塊。
其中作業調度模塊是基於任務階段的高層調度模塊,它為每個Spark作業計算具有依賴關系的多個調度階段(通常根據shuffle來划分),然后為每個階段構建出一組具體的任務(通常會考慮數據的本地性等),然后以TaskSets(任務組)的形式提交給任務調度模塊來具體執行。而任務調度模塊則負責具體啟動任務、監控和匯報任務運行情況。
Spark Standalone運行架構解析---Spark local模式
Local,本地模式,默認情況是本地模式運行,如運行的spark-shell,開發測試環境,運行任務命令:
$SPARK_HOME/bin/run-example org.apache.spark.examples.SparkPi local

LocalBackend響應Scheduler的receiveOffers請求,根據可用的CPU核的設定值[N]直接生成CPU資源返回給Scheduler,並通過Executor類在線程池中依次啟動和運行Scheduler返回的任務列表,其核心事件循環由內部類LocalActor以Akka Actor的消息處理形式來實現。
Spark Standalone運行架構解析---Spark local cluster模式
偽分布式模式啟動兩個Worker,每個Worker管理兩個CPU核和1024MB的內存
$SPARK_HOME/bin/run-example org.apache.spark.examples.SparkPi local[2,2,1024]

LocalBackend響應Scheduler的receiveOffers請求,根據可用的CPU核的設定值[N]直接生成CPU資源返回給Scheduler,並通過Executor類在線程池中依次啟動和運行Scheduler返回的任務列表,其核心事件循環由內部類LocalActor以Akka Actor的消息處理形式來實現
Spark Standalone運行架構解析---Spark standalone模式

Spark Standalone運行架構解析---Spark standalone詳細過程解析

Spark Standalone 下運行wordcount
具體,請移步
Spark編程環境搭建(基於Intellij IDEA的Ultimate版本)(包含Java和Scala版的WordCount)(博主強烈推薦)
● wordcount代碼
● mvn 項目打包上傳至Spark集群。
● Spark 集群提交作業
[spark@master hadoop-2.6.0]$ $HADOOP_HOME/bin/hadoop fs -mkdir -p hdfs://master:9000/testspark/inputData/wordcount
[spark@master ~]$ mkdir -p /home/spark/testspark/inputData/wordcount [spark@master hadoop-2.6.0]$ $HADOOP_HOME/bin/hadoop fs -copyFromLocal /home/spark/testspark/inputData/wordcount/wc.txt hdfs://master:9000/testspark/inputData/wordcount/
$SPARK_HOME/bin/spark-submit \
--master spark://master:7077 \
--class zhouls.bigdata.MyScalaWordCount \
/home/spark/testspark/mySpark-1.0-SNAPSHOT.jar \
hdfs://master:9000/testspark/inputData/wordcount/wc.txt \
hdfs://master:9000/testspark/outData/MyScalaWordCount


或者
$SPARK_HOME/bin/spark-submit \
--master spark://master:7077 \
--class zhouls.bigdata.MyJavaWordCount \
/home/spark/testspark/mySpark-1.0-SNAPSHOT.jar \
hdfs://master:9000/testspark/inputData/wordcount/wc.txt \
hdfs://master:9000/testspark/outData/MyJavaWordCount


具體,請移步
Spark編程環境搭建(基於Intellij IDEA的Ultimate版本)(包含Java和Scala版的WordCount)(博主強烈推薦)
Spark Standalone HA下運行wordcount (這里我不演示了)
具體,請移步
Spark編程環境搭建(基於Intellij IDEA的Ultimate版本)(包含Java和Scala版的WordCount)(博主強烈推薦)
● wordcount代碼
● mvn 項目打包上傳至Spark集群。
● Spark 集群提交作業
$SPARK_HOME/bin/spark-submit \
--master spark://master1:7077,master2:7077 \
--class zhouls.bigdata.MyScalaWordCount \
/home/spark/testspark/mySpark-1.0-SNAPSHOT.jar \
hdfs://master:9000/testspark/inputData/wordcount/wc.txt \
hdfs://master:9000/testspark/outData/MyScalaWordCount
需要你搞兩個master。比如。我這里。

或者
[spark@master spark-1.6.1-bin-hadoop2.6]$ bin/spark-submit \
--master spark://master1:7077,master2:7077 \
--class zhouls.bigdata.MyJavaWordCount \
/home/spark/testspark/mySpark-1.0-SNAPSHOT.jar \
hdfs://master:9000/testspark/inputData/wordcount/wc.txt \
hdfs://master:9000/testspark/outData/MyJavaWordCount
