Spark参数的设置
spark-env.sh
整个集群的设置与资源配置
spark-submit
例 --executor-cores , 指定这个Application主要的资源配置
例 --conf spark.eventLog.enabled=true --conf spark.eventLog.dir=hdfs://node1:9000/spark/test
指定集群特殊的资源配置与运行参数,同 SparkConf.set(properties, value)
Spark-default.xml(.conf)
每个应用程序默认的运行参数配置
SparkShell的使用
概念:
SparkShell是Spark自带的一个快速原型开发工具,也可以说是Spark的scala REPL(Read-Eval-Print-Loop),即交互式shell。
支持使用scala语言来进行Spark的交互式编程。
就是在命令行里输入一行代码,Spark执行一行。
使用:
启动Standalone集群
./start-all.sh
在客户端上启动spark-shell:
./spark-shell --master spark://node1:7077
启动hdfs,创建目录spark/test,上传文件wc.txt
启动hdfs集群:
start-all.sh
创建目录:
hdfs dfs -mkdir -p /spark/test
上传wc.txt
hdfs dfs -put /root/test/wc.txt /spark/test/
运行wordcount , 不用创建SparkContext,脚本里面已经创建了,指定了MasterIp,AppName
sc.textFile("hdfs://node1:9000/spark/test/wc.txt")
.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).foreach(println)
SparkUI界面介绍
默认WEB UI 端口 8080: 两种修改方式
A: 在 spark-env.sh 添加 SPARK_MASTER_WEBUI_PORT
B: 修改sbin下的 start-master.sh 脚本,将8080修改
每个Application的AppName在WebUI中标记每个Application
./spark-shell --master spark://node1:7077 --name myapp
配置historyServer
临时配置: 对本次提交的应用程序起作用 ,客户端提交时指定
./spark-shell --master spark://node1:7077
--name myapp1
--conf spark.eventLog.enabled=true
--conf spark.eventLog.dir=hdfs://node1:9000/spark/test
停止程序,在Web UI中 Completed Applications 对应的 ApplicationID 中能查看history。
永久配置: spark-default.conf 配置文件中配置 HistoryServer,对所有提交的Application都起作用
在客户端节点,进入 ${SPARK_HOME} /conf/ spark-defaults.conf 最后加入:
# 开启记录事件日志的功能
spark.eventLog.enabled true
# 设置事件日志存储的目录
spark.eventLog.dir hdfs://node1:9000/spark/test
# 设置HistoryServer加载事件日志的位置
spark.history.fs.logDirectory hdfs://node1:9000/spark/test
# 日志优化选项,压缩日志
spark.eventLog.compress true
启动HistoryServer:
./start-history-server.sh
访问HistoryServer:node4:18080,之后所有提交的应用程序运行状况都会被记录。
Master HA
1、Master的高可用原理
Standalone集群只有一个Master,如果Master挂了就无法提交应用程序,需要给Master进行高可用配置:
Master的高可用可以使用 fileSystem(文件系统) 和 zookeeper(分布式协调服务)。
fileSystem
只有存储功能,可以存储Master的元数据信息,用fileSystem搭建的Master高可用,在Master失败时,需要我们手动启动另外的备用Master,这种方式不推荐使用。
zookeeper
有选举和存储功能,可以存储Master的元数据信息,使用zookeeper搭建的Master高可用,当Master挂掉时,备用的Master会自动启动,推荐使用这种方式搭建Master的HA。
export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=node02:2181,node03:2181,node04:2181
-Dspark.deploy.zookeeper.dir=/sparkmasterha"
export SPARK_MASTER_IP=node02
./zkServer.sh start
./spark-submit --master spark://node1:7077,node2:7077 --class org.apache.spark.examples.SparkPi ../lib/spark-examples-1.6.0-hadoop2.6.0.jar 10000