数据挖掘工程师技术栈

Spark 搭建及入门开发

2019-11-07  本文已影响0人  GCAmEmFG

搭建配置修改:

./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下使用

上一篇 下一篇

猜你喜欢

热点阅读