一, 部署目录
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
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
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, 里面有各种大数据学习的资料和技术交流.
加油吧, 程序员! 路就在脚下, 成功就在明天!
未来的你肯定会感谢现在拼命的自己!
来源: http://www.jianshu.com/p/37fbaba9e16c