spark HA集群的分布式安装
一:安装教程
修改配置文件
(1)spark.env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_73 export HADOOP_HOME=/home/hadoop/apps/hadoop-2.7.5 export HADOOP_CONF_DIR=/home/hadoop/apps/hadoop-2.7.5/etc/hadoop export SPARK_WORKER_MEMORY=500m export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=hadoop1:2181,hadoop2:2181,hadoop3:2181,hadoop4:2181
-Dspark.deploy.zookeeper.dir=/spark"
配置参数说明:
-Dspark.deploy.recoveryMode=ZOOKEEPER #说明整个集群状态是通过zookeeper来维护的,整个集群状态的恢复也是通过zookeeper来维护的。就是说用zookeeper做了spark的HA配置,Master(Active)挂掉 的话,Master(standby)要想变成Master(Active)的话,Master(Standby)就要像zookeeper读取整个集群状态信息,然后进行恢复所有Worker和Driver的状态信息,和所有的Application状态信息;
-Dspark.deploy.zookeeper.url=hadoop1:2181,hadoop2:2181,hadoop3:2181,hadoop4:2181#将所有配置了zookeeper,并且在这台机器上有可能做master(Active)的机器都配置进来;(我用了4台,就配置了4 台)
-Dspark.deploy.zookeeper.dir=/spark
这里的dir和zookeeper配置文件zoo.cfg中的dataDir的区别???
-Dspark.deploy.zookeeper.dir是保存spark的元数据,保存了spark的作业运行状态;
zookeeper会保存spark集群的所有的状态信息,包括所有的Workers信息,所有的Applactions信息,所有的Driver信息,如果集群
(2)slaves,添加集群的hostName
hadoop1
hadoop2
hadoop3
(3)环境变量的配置
export SPARK_HOME=/home/hadoop/apps/spark
export PATH=$PATH:$SPARK_HOME/bin
是环境变量的内容生效:source /etc/profile
二:启动顺序
1 启动zookeeper,每个节点都需要启动。
zkServer.sh start
2 启动hdfs,任意一个节点
start-dfs.sh
3 启动spark集群,任意一个节点
start-all.sh
4 启动master进程
start-master.sh
5 检查
jps 和 URL:hadoop1:8080
6 杀死Master进程,或有新的master进程生成
三:在yarn之上执行spark程序
spark shell
./bin/spark-submit \ --class <main-class> \ --master <master-url> \ --deploy-mode <deploy-mode> \ --conf <key>=<value> \ ... # other options <application-jar> \ [application-arguments]
启动在yarn上的前提:成功启动zookeeper集群、HDFS集群、YARN集群
运行在yarn上的spark shell
export HADOOP_CONF_DIR=XXX ./bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master yarn \ --deploy-mode cluster \ # can be client for client mode --executor-memory 20G \ --num-executors 50 \ /path/to/examples.jar \ 1000
参考文献:扎心了,老铁
spark官方文档