环境配置
JDK1.8+
Scala 2.11.12
Hadoop2.6.4
01Spark安装
下载:https://spark.apache.org/downloads.html
由于Hadoop 我安装的是 2.6.4 版本的,这里就不选择最新版 Spark了。
上传到Linux:
上传 spark-2.3.3-bin-hadoop2.6.tgz 安装包到Linux上
解压安装包到指定位置:
tar -zxvf spark-2.3.3-bin-hadoop2.6.tgz -C ../app/
02配置Spark
进入到Spark安装目录
cd /home/hadoop/app/spark-2.3.3-bin-hadoop2.6
进入conf目录并重命名并修改spark-env.sh.template文件
cd conf/
cp spark-env.sh.template spark-env.sh
vi spark-env.sh
在该配置文件中添加如下配置
export JAVA_HOME=/home/hadoop/app/jdk1.7.0_45
export SPARK_MASTER_IP=mini61 # Master主机名
export SPARK_MASTER_PORT=7077
保存退出
重命名并修改slaves.template文件
cp slaves.template slaves
vi slaves
在该文件中添加子节点所在的位置(Worker节点)
mini61
mini62
mini63
保存退出
将配置好的Spark拷贝到其他节点上
scp -r spark-2.3.3-bin-hadoop2.6/ mini62:/home/hadoop/app/
scp -r spark-2.3.3-bin-hadoop2.6/ mini63:/home/hadoop/app
03
启动Spark
Spark集群配置完毕,目前是1个Master,3个Work,在mini61上启动Spark集群
1
进入 Spark sbin 目录
cd /home/hadoop/app/spark-2.3.3-bin-hadoop2.6/sbin
启动 Spark:
./start-all.sh
2
结果启动失败:
./start-all.sh
starting org.apache.spark.deploy.master.Master, logging to /home/hadoop/app/spark-2.3.3-bin-hadoop2.6/logs/spark-hadoop-org.apache.spark.deploy.master.Master-1-mini61.out
failed to launch: nice -n 0 /home/hadoop/app/spark-2.3.3-bin-hadoop2.6/bin/spark-class org.apache.spark.deploy.master.Master --host mini61 --port 7077 --webui-port 8080
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
3
查看启动 log
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/spark/launcher/Main : Unsupported major.minor version 52.0
问题在于我的 jdk 使用了 jdk1.7 重新配置 jdk1.8
再启动即可
启动成功后可以浏览器访问 http://mini61:8080 界面查看集群状态(主节点)
或者执行jsp 命令查看进程:
4
扩展内容
Spark集群安装完毕,但是有一个很大的问题,那就是Master节点存在单点故障,要解决此问题,就要借助zookeeper,并且启动至少两个Master节点来实现高可靠,配置方式比较简单:
Spark集群规划:node1,node2是Master;node3,node4,node5是Worker
安装配置zk集群,并启动zk集群
停止spark所有服务,修改配置文件spark-env.sh,在该配置文件中删掉SPARK_MASTER_IP并添加如下配置
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=zk1,zk2,zk3 -Dspark.deploy.zookeeper.dir=/spark"
1.在node1节点上修改slaves配置文件内容指定worker节点
2.在node1上执行sbin/start-all.sh脚本,然后在node2上执行sbin/start-master.sh启动第二个Master
欢迎关注微信公众号:大数据专栏