准备两台以上的Linux服务器,我这里准备了5台服务器,集群思路大致如下:其中Zookeper是可选项,
下载spark安装包 配置spark进入到Spark安装目录
cd /home/ws/bigdata/spark-2.3.3-bin-hadoop2.7/进入conf目录并重命名并修改spark-env.sh.template文件
cd conf/ mv spark-env.sh.template spark-env.sh vi spark-env.sh在该配置文件中添加如下配置
export JAVA_HOME=/usr/java/jdk1.8.0_111 # 注意,这里如果写的是主机名,一定要有主机名的IP地址的映射 export SPARK_MASTER_IP=node1 export SPARK_MASTER_PORT=7077保存退出
重命名并修改slaves.template文件
mv slaves.template slaves vi slaves在该文件中添加子节点所在的位置(Worker节点)
node2 node3 node4 node5
保存退出
将配置好的Spark拷贝到其他节点上(其他节点照做)
scp -r spark-2.1.0-bin-hadoop2.6/ ws2@node2:/home/ws2/data
Spark集群配置完毕,目前是1个Master,3个Work,在node1启动Spark集群
未安装Hadoop建议只启动master进程
/home/ws/bigdata/spark-2.3.3-bin-hadoop2.7/sbin/start-master.sh在work结点启动
/home/ws2/bigdata/spark-2.3.3-bin-hadoop2.7/sbin/start-slave.sh node1:7077启动后执行jps命令,主节点上有Master进程,其他子节点上有Work进行,登录Spark管理界面查看集群状态(主节点):http://node1:8080/
注:此时只打开了一个work结点
到此为止,Spark集群安装完毕,但是有一个很大的问题,那就是Master节点存在单点故障,要解决此问题,就要借助zookeeper,并且启动至少两个Master节点来实现高可靠,配置方式比较简单:
运行第一个程序在spark安装目录下有一个example,内置了一个可以运行的程序,利用蒙特·卡罗算法求PI,执行下列语句,其中100是算法的参数
bin/spark-submit --master spark://node1:7077 --class org.apache.spark.examples.SparkPi examples/jars/spark-examples_2.11-2.3.3.jar 100运行结果
2019-05-26 10:19:36 INFO DAGScheduler:54 - Job 0 finished: reduce at SparkPi.scala:38, took 7.568060 s Pi is roughly 3.1417631141763116