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

一、部署目录

1.bin 运行脚本目录

beeline

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

pyspark 最后exec "@"启动python spark shell

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

sparkR最后写exec "@"表示启动sparkR

spark-sql:最后写exec "@"表示支持的是hive的sql语言

spark-submit 最后写exec "@"表示运行spark-class,在spark-class中提交。

运行example

在run-example中最后写exec "@",表示可以直接运行例子程序

ForScala andJava, use run-example:

./bin/run-example SparkPi

13192523-3f3031b98ee564b3

ForPython examples, use spark-submit directly:

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

13192523-82c2091342fe9f43
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)
13192523-457a8c7ea413ec83.png

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

13192523-9a58357ad271e099
image

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

13192523-26b81a3bdac1fbbb
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进程里的一个组件,为各种应用作汇报。

13192523-be65e61a269beb57
image

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

13192523-a46f2ddf8133cd75
image

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

13192523-97c687becb630435
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.
13192523-32290f5303c1dac9.gif
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协议声明文件
13192523-c2623a9ced67e453.png
image

13192523-cd10d3d36af1ff8c.gif
image.gif

7.python 使用python开发程序

13192523-cbff5e910e80b585.png
image

13192523-63c9f6da6eee85a4.gif
image.gif

8.R开发程序

spark-2.1.1-yarn-shuffle.jar
13192523-34d49aeafbb725a3.gif
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,里面有各种大数据学习的资料和技术交流。

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

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

猜你喜欢

转载自blog.csdn.net/weixin_34199405/article/details/87267384
今日推荐