美文网首页大数据大数据,机器学习,人工智能程序员
Spark各目录作用(部署目录和运行时目录)

Spark各目录作用(部署目录和运行时目录)

作者: 大数据首席数据师 | 来源:发表于2019-01-15 15:35 被阅读9次

    一、部署目录

    1.bin 运行脚本目录

    beeline

    exec "{SPARK_HOME}/bin/spark-class"CLASS "@" 执行spark-class,在spark-class中. "{SPARK_HOME}"/bin/load-spark-env.sh表示执行spark-env.sh的配置信息,确保会加载

    pyspark 最后exec "{SPARK_HOME}"/bin/spark-submit pyspark-shell-main --name "PySparkShell" "@"启动python spark shell

    spark-class 内部最终变成用java运行java类

    sparkR最后写exec "{SPARK_HOME}"/bin/spark-submit sparkr-shell-main "@"表示启动sparkR

    spark-sql:最后写exec "{SPARK_HOME}"/bin/spark-submit --class org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver "@"表示支持的是hive的sql语言

    spark-submit 最后写exec "{SPARK_HOME}"/bin/spark-class org.apache.spark.deploy.SparkSubmit "@"表示运行spark-class,在spark-class中提交。

    运行example

    在run-example中最后写exec "{SPARK_HOME}"/bin/spark-submit run-example "@",表示可以直接运行例子程序

    ForScala andJava, use run-example:

    ./bin/run-example SparkPi

    ForPython examples, use spark-submit directly:

    ./bin/spark-submit examples/src/main/python/pi.py

    image

    2.conf

    docker.properties.template 作用:Spark properties可以控制应用程序的绝大部分属性,并且可以分别在每个应用上进行设置。这些属性可以直接在SparkConf对象上设定,该对象可以传递给SparkContext。SparkConf对象允许你去设定一些通用的属性(比如master URL、应用的名称等),这些属性可以传递给set()方法的任意key-value对。如下:

    val conf = new SparkConf()
                 .setMaster("local")
                 .setAppName("CountingSheep")
                 .set("spark.executor.memory", "1g")
    val sc = new SparkContext(conf)
    

    fairscheduler.xml.template配置spark的调度策略Spark中的调度模式主要有两种:FIFO和FAIR。默认情况下Spark的调度模式是FIFO(先进先出),谁先提交谁先执行,后面的任务需要等待前面的任务执行。而FAIR(公平调度)模式支持在调度池中为任务进行分组,不同的调度池权重不同,任务可以按照权重来决定执行顺序。

    image

    log4j.properties.template 集群日志模版,

    image

    metrics.properties.template 和Hadoop类似,在Spark中也存在很多的Metrics配置相关的参数,它是基于Coda Hale Metrics Library的可配置Metrics系统,我们可以通过配置文件进行配置,通过Spark的Metrics系统,我们可以把Spark Metrics的信息报告到各种各样的Sink,比如HTTP、JMX以及CSV文件。
    Spark的Metrics系统目前支持以下的实例:
      (1)、master:Spark standalone模式的master进程;
      (2)、worker:Spark standalone模式的worker进程;
      (3)、executor:Spark executor;
      (4)、driver:Spark driver进程;
      (5)、applications:master进程里的一个组件,为各种应用作汇报。

    image

    slaves.template worker节点的配置,只要把节点名放在该文件中就表示是集群的worker节点

    image

    spark-defaults.conf.template SparkConf默认配置模版

    image

    spark-env.sh.template 有很大一部分的Spark设定可以通过环境变量来进行设定。这些环境变量设定在conf/spark-env.sh 脚本文件中。在 Standalone 和 Mesos模式下,这个文件可以设定一些和机器相关的信息(比如hostname)。
      需要注意,在刚刚安装的Spark中conf/spark-env.sh文件是不存在的。但是你可以通过复制conf/spark-env.sh.template文件来创建,你的确保这个复制之后的文件是可运行的。
      下面的属性是可以在conf/spark-env.sh文件中配置

    JAVA_HOME   Java的安装目录
    PYSPARK_PYTHON  Python binary executable to use for PySpark.
    SPARK_LOCAL_IP  IP address of the machine to bind to.
    LIC_DNS Hostname your Spark program will advertise to other machines.
    
    image.gif

    Hostname your Spark program will advertise to other machines.

    3.data 例子里用到的一些数据

    graphx

    mllib

    streaming

    4.examples 例子源码

    jars

    src

    1. jars spark依赖的jar包 ,在ecilipse的时候就需要把所有的包导入才能开发。
      6.licenses license协议声明文件
    image image.gif ​
    7.python 使用python开发程序 image image.gif ​
    8.R开发程序
    spark-2.1.1-yarn-shuffle.jar
    
    image.gif

    9.sbin 集群启停脚本

    slaves.sh 在所有定义在${SPARK_CONF_DIR}/slaves的机器上执行一个shell命令

    spark-config.sh 被其他所有的spark脚本所包含,里面有一些spark的目录结构信息

    spark-daemon.sh 将一条spark命令变成一个守护进程

    spark-daemons.sh 在所有定义在${SPARK_CONF_DIR}/slaves的机器上执行一个spark命令

    start-all.sh 启动master进程,以及所有定义在${SPARK_CONF_DIR}/slaves的机器上启动Worker进程

    start-history-server.sh 启动历史记录进程

    start-master.sh 启动spark master进程

    start-mesos-shuffle-service.sh

    start-shuffle-service.sh shuffle启动脚本

    start-slave.sh 启动某机器上worker进程

    start-slaves.sh 在所有定义在${SPARK_CONF_DIR}/slaves的机器上启动Worker进程

    start-thriftserver.sh sparkthriftserver用于提供远程odbc调用,在远端执行hive sql查询。默认监听10000端口,Hiveserver2默认也是监听10000端口,为了避免冲突,需要修改sparkthriftserver的端口。启用sparkthriftserver需要将hive-site.xml文件copy到spakr的conf目录下,元数据存储在mysql中,所以还需要mysql-connector-java-5.1.43-bin.jar,用于连接mysql。

    stop-all.sh 在所有定义在${SPARK_CONF_DIR}/slaves的机器上停止Worker进程

    stop-history-server.sh 停止历史记录进程

    stop-master.sh 停止spark master进程

    stop-mesos-shuffle-service.sh

    stop-shuffle-service.sh

    stop-slave.sh 停止某机器上Worker进程

    stop-slaves.sh 停止所有worker进程

    stop-thriftserver.sh

    10.yarn

    spark-2.1.1-yarn-shuffle.jar

    二、运行时目录

    standalone模式

    1.$$SPARK_HOME/work
    作用:用以存放从HttpFileServer下载下来的第三方库依赖及Executor运行时生成的日志信息。
    分析:为了解决Executor启动时依赖的Jar问题,Driver在启动的时候要启动HttpFileServer存储第三方jar包,然后由worker从HttpFileServer来获取。为此HttpFileServer需要创建相应的目录,HttpFileServer创建目录的过程详见于SparkEnv.scala中create函数,而Worker也需要创建相应的目录。即$SPARK_HOME/work

    2. $SPARK_HOME/logs
    作用:存放master、worker、history server运行日志

    3. spark-defaults.conf中spark.local.dir配置目录
    作用:Spark用于写中间数据,如RDD Cache,Shuffle,Spill等数据的位置

    分析:首先,最基本的当然是我们可以配置多个路径(用逗号分隔)到多个磁盘上增加整体IO带宽,这个大家都知道。

    其次,目前的实现中,Spark是通过对文件名采用hash算法分布到多个路径下的目录中去,如果你的存储设备有快有慢,比如SSD+HDD混合使用,那么你可以通过在SSD上配置更多的目录路径来增大它被Spark使用的比例,从而更好地利用SSD的IO带宽能力。当然这只是一种变通的方法,终极解决方案还是应该像目前HDFS的实现方向一样,让Spark能够感知具体的存储设备类型,针对性的使用。

    结语

    如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加我们的大数据交流群:894951460,里面有各种大数据学习的资料和技术交流。

    加油吧,程序员!路就在脚下,成功就在明天!

    未来的你肯定会感谢现在拼命的自己!

    相关文章

      网友评论

        本文标题:Spark各目录作用(部署目录和运行时目录)

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