Spark 搭建及入门开发

作者: GCAmEmFG | 来源:发表于2019-11-07 17:51 被阅读0次

    搭建配置修改:

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

    相关文章

      网友评论

        本文标题:Spark 搭建及入门开发

        本文链接:https://www.haomeiwen.com/subject/zbwvbctx.html