赞
踩
部署
#(1)通过以下步骤,配置Worker节点 #a)重命名slaves.template文件为slaves,使用以下命令: mv /usr/local/spark/conf/slaves.template /usr/local/spark/conf/slaves #b)编辑slaves文件,使用以下命令: vim /usr/local/spark/conf/slaves #c)替换原有的localhost为以下内容: # 设置 worker 节点 master slave1 slave2 #(2)通过以下步骤,配置Spark集群运行参数: #a)重命名spark-env.sh.template配置文件为spark-env.sh,使用以下命令: mv /usr/local/spark/conf/spark-env.sh.template /usr/local/spark/conf/spark-env.sh #b)编辑spark-env.sh文件,在最后追加以下内容: # 设置 JDK 目录 export JAVA_HOME=/usr/local/lib/jdk1.8.0_212 # 设置 web 监控页面端口号 export SPARK_MASTER_WEB_PORT=7077 # 设置 zookeeper 集群地址,实现高可用 export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=master:2181,slave1:2181,slave2:2181 -Dspark.deploy.zookeeper.dir=/usr/local/spark" # 设置 YARN 的配置文件目录 export YARN_CONF_DIR=/usr/local/hadoop/etc/hadoop # 设置 HDFS 的配置文件目录 export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop #(3)通过以下步骤,部署Spark到slave1和slave2: #a)创建spark目录,在slave1和slave2使用以下命令: sudo mkdir /usr/local/spark #b)修改spark目录的所有者为hadoop用户,在slave1和slave2使用以下命令: sudo chown hadoop /usr/local/spark/ #c)发送spark给slave1和slave2,在master使用以下命令: scp -r /usr/local/spark/* hadoop@slave1:/usr/local/spark/ scp -r /usr/local/spark/* hadoop@slave2:/usr/local/spark/ #d)发送环境变量给slave1和slave2,在master使用以下命令: scp /home/hadoop/.bashrc hadoop@slave1:/home/hadoop/ scp /home/hadoop/.bashrc hadoop@slave2:/home/hadoop/ #e)刷新环境变量,在slave1和slave2使用以下命令: source /home/hadoop/.bashrc
启动
以Standalone模式运行程序需要先启动Spark集群,常用的脚本命令如下表所示:
表2-3 常用的Spark命令脚本
脚本 | 描述 |
---|---|
start-master.sh | 在执行该脚本的机器上启动Master进程 |
start-slaves.sh | 在slaves文件中指定的每个节点上启动Worker进程 |
start-all.sh | 执行start-master.sh和start-slaves.sh两个脚本 |
stop-master.sh | 关闭由start-master.sh脚本启动的Master进程 |
stop-slaves.sh | 关闭由start-slaves.sh脚本启动的Worker进程 |
stop-all.sh | 执行stop -master.sh和stop -slaves.sh两个脚本 |
需要注意的是,这些脚本都需要在你打算作为Master节点的服务器上执行。
Spark的Master节点也面临单点故障问题,需要通过zookeeper集群实现高可用。这个配置我们已经在spark-env.sh文件中配置好了。
综上所述,启动Spark集群需要以下步骤:
(1) 启动所有节点的Zookeeper,在master、slave1和slave2使用以下命令:
zkServer.sh start
(2) 在master启动Spark集群,在master使用以下命令:
start-all.sh
(3) 在slave1启动备用master,在slave1使用以下命令:
start-master.sh
(4) 在master、slave1和slave2使用以下命令查看进程,效果如下图所示:
jps
图2-6 Standalon模式的Spark的进程
(5) 在浏览器输入以下网址访问Spark的web监控页面,效果如下图所示:
http://master:8085/
图2-7 Spark的web监控页面
如果大家按步骤安装完成却不能运行Spark,那么需要学会通过查看日志信息来解决问题。Spark在启动期间记录了详尽的日志信息,保存在安装目录下的logs目录内。
#(1)启动三台虚拟机,并在Xshell中全部以hadoop用户登录 #(2)配置hosts文件,让三台虚拟机能够以主机名进行互相访问,分别使用以下命令: #a.编辑hosts文件: sudo vim /etc/hosts #b.在文件最后增加以下内容: 192.168.114.133(改为自己的ip) master 192.168.114.134(改为自己的ip) slave1 192.168.114.135(改为自己的ip) slave2 c.在3个节点分别使用ping master、ping slave1和ping slave2命令验证互相之间是否可以通过主机名访问。 #(3)配置三个节点之间的免密登录,分别进行以下操作: #a.使用命令删除3个节点上的ssh配置文件 sudo rm -rf /home/hadoop/.ssh #b.在3节点上使用命令生成公钥和私钥 ssh-keygen #c.在3个节点上使用命令发送公钥给master节点 ssh-copy-id master #d.在master节点上分别使用以下命令发送authorized_keys文件给slave1和slave2: scp /home/hadoop/.ssh/authorized_keys hadoop@slave1:/home/hadoop/.ssh/ scp /home/hadoop/.ssh/authorized_keys hadoop@slave2:/home/hadoop/.ssh/
原因:spark默认端口是8080,8080端口会被其他程序占用,所以需要修改
#进入sbin目录
cd /usr/local/spark/sbin
#编辑start-master.sh,修改默认端口,我这里修改8080为8081
vim start-master.sh
#编辑start-master.sh,修改默认端口,我这里修改8080为8081
vim start-master.sh
#重启spark使生效
stop-all.sh
start-all.sh
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。