搭建配置修改:
./conf下spark-env.sh 和 slaves
搭建测试:
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是一个基于内存计算的开源的集群计算系统,目的是让数据分析更加快速。Spark非常小巧玲珑,由加州伯克利大学AMP实验室的Matei为主的小团队所开发。使用的语言是Scala,项目的core部分的代码只有63个Scala文件,非常短小精悍。
executor都是装载在container里运行,container默认内存是1G(参数yarn.scheduler.minimum-allocation-mab)
executor分配的内存是executor-memory,向yarn申请的内存是(executor-memory + 1)*num-executors
AM(application master)在spark中叫driver,AM向RM(resource manager)申请的executor资源,当分配完资源后,executor启动,由spark的AM向executor分配task,分配多少task,分配到哪个executor由AM决定,可理解为spark也有个调度过程,这些task都运行在executor的坑里
executor有线程池,多线程管理这些坑内的task
Spark特点:
Spark实践:
Scala
1)sbt开发Spark程序,编译并打包
package spark
import org.apache.spark.{SparkConf, SparkContext}
/**
* Author: ThinkPad
* Date: 2018/10/13 13:59
* Description: 單詞統計
*/
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 运行
【Standalone】
【Yarn】
Python
...
2. spark-submit 详细参数说明
参数名参数说明
--mastermaster 的地址,提交任务到哪里执行,例如 spark://host:port, yarn, local
--deploy-mode在本地 (client) 启动 driver 或在 cluster 上启动,默认是 client
--class应用程序的主类,仅针对 java 或 scala 应用
--name应用程序的名称
--jars用逗号分隔的本地 jar 包,设置后,这些 jar 将包含在 driver 和 executor 的 classpath 下
--packages包含在driver 和executor 的 classpath 中的 jar 的 maven 坐标
--exclude-packages为了避免冲突 而指定不包含的 package
--repositories远程 repository
--conf PROP=VALUE指定 spark 配置属性的值, 例如 -conf spark.executor.extraJavaOptions="-XX:MaxPermSize=256m"
--properties-file加载的配置文件,默认为 conf/spark-defaults.conf
--driver-memoryDriver内存,默认 1G
--driver-java-options传给 driver 的额外的 Java 选项
--driver-library-path传给 driver 的额外的库路径
--driver-class-path传给 driver 的额外的类路径
--driver-coresDriver 的核数,默认是1。在 yarn 或者 standalone 下使用
--executor-memory每个 executor 的内存,默认是1G
--total-executor-cores所有 executor 总共的核数。仅仅在 mesos 或者 standalone 下使用
--num-executors启动的 executor 数量。默认为2。在 yarn 下使用
--executor-core每个 executor 的核数。在yarn或者standalone下使用
网友评论