Spark集群搭建
1、Spark安装包下载
http://spark.apache.org/downloads.html
2、Spark安装部署
#上传安装包到指定路径
[root@master Spark]# pwd
/opt/app/Spark
[root@master Spark]# rz
#安装包解压,删除,重命名操作
[root@master Spark]# tar -zxvf spark-2.2.2-bin-hadoop2.7.tgz
[root@master Spark]# mv spark-2.2.2-bin-hadoop2.7 spark-2.2.2
[root@master Spark]# rm -rf spark-2.2.2-bin-hadoop2.7.tgz
#查看配置信息
[root@master Spark]# cd spark-2.2.2/conf/
[root@master conf]# ls
docker.properties.template metrics.properties.template spark-env.sh.template
fairscheduler.xml.template slaves.template
log4j.properties.template spark-defaults.conf.template
#修改文件名
[root@master conf]# cp spark-env.sh.template spark-env.sh
[root@master conf]# cp slaves.template slaves
#编辑配置文件
[root@master conf]# vim spark-env.sh
#添加内容
SPARK_MASTER_HOST=master
SPARK_MASTER_PORT=7077
[root@master conf]# vim slaves
#添加内容
slave1
slave2
3、高可用HA配置
[root@master conf]# vim spark-env.sh
#注释或删掉以下内容
SPARK_MASTER_HOST=master
SPARK_MASTER_PORT=7077
#添加内容
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=master:2181,slave1:2181,slave2,slave3 -Dspark.deploy.zookeeper.dir=/spark"
4、启动Spark集群
#在master节点上启动start-all.sh
[root@master ~]# /opt/app/Spark/spark-2.2.2/sbin/start-all.sh
#HA集群:在slave1节点上使用start-master.sh
[root@slave1 ~]# /opt/app/Spark/spark-2.2.2/sbin/start-master.sh
5、执行Spark程序格式
#执行spark的案例程序格式
[root@master bin]# ./spark-submit \
--master spark://master:7077,slave1:7077 \
--class org.apache.spark.examples.SparkPi \
/opt/app/Spark/spark-2.2.2/examples/jars/spark-examples_2.11-2.2.2.jar 10000
#执行自定义的spark程序格式
[root@slave1 ~]# /opt/Apps/Spark/spark-2.2.2/bin/spark-submit \
--master spark://master:7077 \
--total-executor-cores 4 \
--executor-memory 512m \
--class com.zhiyou100.spark.ScalaWordCount \
ScalaWordCount.jar hdfs://master:9000/wc.txt hdfs://master:9000/spark/wc/scala/out4
6、Spark Shell
#在不指定集群的时候(master),可以正常启动shell,但是这种模式只是启动了本地模式。没有与集群建立连接
[root@master ~]# /opt/app/Spark/spark-2.2.2/bin/spark-shell
#在spark集群上运行
[root@slave1 ~]# /opt/app/Spark/spark-2.2.2/bin/spark-shell --master spark://master:7077 --total-executor-cores 2 --executor-memory 512m
#在Shell中可以直接编写Spark代码。SparkContext类会默认初始化为sc对象。
scala> sc.textFile("hdfs://master:9000/wc.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).saveAsTextFile("hdfs://master:9000/out")