搭建配置修改:
./conf下spark-env.sh? 和? slaves
搭建測(cè)試:
1)本地? ? ./bin/run-example SparkPi 10 --master local[2]
2)集群(spark standalone) ./bin/spark-submit --class org.apache.spark.examples.SparkPi --masterspark://master:7077./lib/spark-examples-1.6.3-hadoop2.6.0.jar? 10
3)? 集群(spark on yarn)? ./bin/spark-submit --class org.apache.spark.examples.SparkPi --masteryarn-cluster./lib/spark-examples-1.6.3-hadoop2.6.0.jar? 10
什么是spark?
? ? Apache Spark是一個(gè)基于內(nèi)存計(jì)算的開(kāi)源的集群計(jì)算系統(tǒng),目的是讓數(shù)據(jù)分析更加快速。Spark非常小巧玲瓏良哲,由加州伯克利大學(xué)AMP實(shí)驗(yàn)室的Matei為主的小團(tuán)隊(duì)所開(kāi)發(fā)。使用的語(yǔ)言是Scala乳附,項(xiàng)目的core部分的代碼只有63個(gè)Scala文件,非常短小精悍伴澄。
executor都是裝載在container里運(yùn)行,container默認(rèn)內(nèi)存是1G(參數(shù)yarn.scheduler.minimum-allocation-mab)
executor分配的內(nèi)存是executor-memory阱缓,向yarn申請(qǐng)的內(nèi)存是(executor-memory + 1)*num-executors
AM(application master)在spark中叫driver,AM向RM(resource manager)申請(qǐng)的executor資源非凌,當(dāng)分配完資源后,executor啟動(dòng)荆针,由spark的AM向executor分配task,分配多少task,分配到哪個(gè)executor由AM決定敞嗡,可理解為spark也有個(gè)調(diào)度過(guò)程,這些task都運(yùn)行在executor的坑里
executor有線程池航背,多線程管理這些坑內(nèi)的task
Spark特點(diǎn):
Spark實(shí)踐:
Scala
1)sbt開(kāi)發(fā)Spark程序喉悴,編譯并打包
package spark
import org.apache.spark.{SparkConf, SparkContext}
/**
? * Author: ThinkPad
? * Date: 2018/10/13 13:59
? * Description: 單詞統(tǒng)計(jì)
? */
object WordCount {
? def main(args: Array[String]): Unit = {
? ? val dataFile = args(0);
? ? val output = args(1);
//? ? val sparkConf = new SparkConf().setAppName("WordCount").setMaster("local");
? ? val sparkConf = new SparkConf().setAppName("WordCount");
? ? val sparkContext = new SparkContext(sparkConf);
? ? val lines = sparkContext.textFile(dataFile);
? ? val counts = lines.flatMap(_.split(",")).map(s => (s, 1)).reduceByKey((a, b) => a + b);
? ? counts.saveAsTextFile(output);
? ? sparkContext.stop();
? }
}
2)spark-submit 運(yùn)行
【Standalone】
【Yarn】
Python
...
2. spark-submit 詳細(xì)參數(shù)說(shuō)明
參數(shù)名參數(shù)說(shuō)明
--mastermaster 的地址,提交任務(wù)到哪里執(zhí)行玖媚,例如 spark://host:port, yarn, local
--deploy-mode在本地 (client) 啟動(dòng) driver 或在 cluster 上啟動(dòng)箕肃,默認(rèn)是 client
--class應(yīng)用程序的主類,僅針對(duì) java 或 scala 應(yīng)用
--name應(yīng)用程序的名稱
--jars用逗號(hào)分隔的本地 jar 包今魔,設(shè)置后勺像,這些 jar 將包含在 driver 和 executor 的 classpath 下
--packages包含在driver 和executor 的 classpath 中的 jar 的 maven 坐標(biāo)
--exclude-packages為了避免沖突 而指定不包含的 package
--repositories遠(yuǎn)程 repository
--conf PROP=VALUE指定 spark 配置屬性的值障贸,?例如 -conf spark.executor.extraJavaOptions="-XX:MaxPermSize=256m"
--properties-file加載的配置文件,默認(rèn)為 conf/spark-defaults.conf
--driver-memoryDriver內(nèi)存吟宦,默認(rèn) 1G
--driver-java-options傳給 driver 的額外的 Java 選項(xiàng)
--driver-library-path傳給 driver 的額外的庫(kù)路徑
--driver-class-path傳給 driver 的額外的類路徑
--driver-coresDriver 的核數(shù)篮洁,默認(rèn)是1。在 yarn 或者 standalone 下使用
--executor-memory每個(gè) executor 的內(nèi)存殃姓,默認(rèn)是1G
--total-executor-cores所有 executor 總共的核數(shù)袁波。僅僅在 mesos 或者 standalone 下使用
--num-executors啟動(dòng)的 executor 數(shù)量。默認(rèn)為2蜗侈。在 yarn 下使用
--executor-core每個(gè) executor 的核數(shù)锋叨。在yarn或者standalone下使用