Spark代码总结(1)

来源:互联网 发布:怎么求逆矩阵 编辑:程序博客网 时间:2024/06/08 10:02

Sparkconf

Spark配置项类,SparkContext类接收配置项内容,控制驱动程序。

一旦Sparkconf对象被创建提交,它的内容不能被修改。Spark不支持动态配置SparkConf。

SparkConf定义了属性,setMaster是对spark.master的设置;setAppName是对属性spark.app.name的设置。


setMaster(String master)

定义Spark连接的master URL。如果设置"local"则单线程本地运行;设置"local[number]"则number个线程本地运行;设置"spark://master:7077"则运行在Spark standalone cluster。

setJars(String[] jars)



日志配置

conf目录下log4j.properties文件。

如果配置和整个Application相关的项,使用SparkConf类。

如果配置本机相关的项或者环境变量,使用spark-env.sh。


spark-submit总结

1.Spark-defaults.conf
编辑driver所在机器上的spark-defaults.conf,该文件会影响到driver所提交运行的application,及专门为该application提供计算资源的executor的启动参数。只需要在driver所在机器上编辑该文件,不需要在worker或者master上编辑。

2.spark-env.sh
如果运行的是master,需要指定SPARK_MASTER_IP;如果运行driver或worker需要指定SPARK_LOCAL_IP,要和本机的IP地址一致,否则启动不了。

3.启动
第一步启动master
$SPARK_HOME/sbin/start-master.sh
第二步 启动worker
(1)  $SPARK_HOME/bin/spark-class org.apache.spark.deploy.worker.Worker  spark://master:7077
(2) SPARK_HOME/sbin/start-slaves.sh
如果需要在一台机器上运行多个worker,那么在启动第二个和后面的worker时需要指定  --webui-port  number ,否则会报端口已经被占用的错误。这种启动方式只是为了测试。

4.spark-submit
参数:
--driver-class-path   driver所依赖的包,多个包之间用冒号分割
--jars              driver和executor都需要的包,多个包之间用逗号分割。一般只用--jars来指定依赖。这些上传到worker的文件,需要定时手工清理,否则会占用很多磁盘空间。

spark on yarn

Spark支持可插拔的集群管理模式(Standalone、Mesos、Yarn)。
(1)spark on yarn
使用spark客户端来向Yarn提交任务,需要将spark的部署包放置到yarn集群的某个节点上。Spark本身的worker、master不需要启动。
on Yarn的两种运行方式,其运行结束后的日志不能在yarn的application管理界面看到,只能在客户端看到:
 yarn  logs -applicationId <applicationId>

部署这种模式,需要修改conf目录下的spark-env.sh,
export HADOOP_HOME=
export HADOOP_CONF_DIR=

yarn-cluster和yarn-client方式的区别

yarn-cluster:Spark Driver作为一个ApplicationMater在yarn中先启动,然后再由ApplicationMaster向RM申请资源启动executor来运行task。因为driver在yarn中运行,所以程序的运行结果不能在客户端显示。

yarn-client:Spark Driver在客户端运行,然后向yarn申请executor运行task。客户端的Drive将应用提交给yarn后,yarn先后启动ApplicationMaster和executor,两者都是在container中运行,container默认内存为1G。
ApplicationMaster分配的内存为driver-memory,executor分配的内存为executor-memory。因为Driver在客户端,所以程序的运行结果可以在客户端显示。
Driver以SparkSubmit的形式存在。

spark-submit --master yarn 默认是按照yarn-client的方式运行,用户可以指定--master yarn/yarn-client/yarn-cluster。
命令的文件路径是相当于HDFS的/user/hadoop而言。hadoop是当前用户。

--deploy-mode client/cluster   Driver程序运行的地方
--name  appname      application名称

spark-defaults.conf配置文件 
spark.history.retainedApplications   250 保存Application历史记录的个数
spark.history.ui.port                             18080   HistoryServer的端口
spark.eventLog.enabled                 False      是否记录Spark事件
spark.eventLog.dir                           保存日志的路径,可以是hdfs://或者file://
spark.yarn.historyServer.address    

启动historyServer:
./start-history-server.sh        hdfs://xxx


0 0
原创粉丝点击