Spark组件部署-集群
2022-08-09 本文已影响0人
CoderInsight
0,前提条件
- 配置好jdk
- 启动好Hadoop集群
- 防火墙、SeLinux正常关闭
- 免密登录、hosts文件配置正常
1,解压、配置环境变量
[root@master opt]# tar -zxvf /soft/scala-2.11.12.tgz
[root@master opt]# mv scala-2.11.12/ scala
[root@master opt]# tar -zxvf /soft/spark-2.0.0-bin-hadoop2.6.tgz
[root@master opt]# mv spark-2.0.0-bin-hadoop2.6/ spark
[root@master opt]# tar -zxvf /soft/zookeeper-3.4.5.tar.gz
[root@master opt]# mv zookeeper-3.4.5/ zookeeper
vi /etc/profile
export SCALA_HOME=/opt/scala
export SPARK_HOME=/opt/spark
export ZOOKEEPER_HOME=/opt/zookeeper
export PATH=$PATH:$SCALA_HOME/bin:$SPARK_HOME/bin:$SPARK_HOME/sbin:$ZOOKEEPER_HOME/bin
2,填写配置文件
(1),SparkStandAlone全分布式部署
1).配置文件(spark): spark-env.sh
- HADOOP_CONF_DIR:指定hadoop的配置文件的目录
- SPARK_MASTER_IP:指定主机的ip(我们用主机名代替了ip,因为已经在hosts中配置ip和主机名的映射)
- SPARK_LOCAL_IP:指定当前在master的ip(在其他节点上要改为指定的主机名(如果也做了映射,显然已经做了ip和主机名之间的映射))
[root@master opt]# cp spark/conf/spark-env.sh.template spark/conf/spark-env.sh
[root@master opt]# vi spark/conf/spark-env.sh
# 直接在配置文件最后追加以下内容(下面两个对ip的设置是说明主机的ip的,所以需要之前将主机名与ip做好映射;即时在伪分布式的时候也要做,不能直接使用localhost,因为在host中做的映射是127.0.0.1,而不是当前主机的ip)
export JAVA_HOME=/opt/jdk
HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
SPARK_MASTER_IP=master
SPARK_LOCAL_IP=master
# 但是在修改完master节点之后,要对剩下的两个节点进行相应文件的SPARK_LOCAL_IP属性进行修改
# salve1和slave2都是操作以下目录(这里就两台主机,没有采用之前的分发shell的方式,而是直接改的)
修改slave1的 SPARK_LOCAL_IP 为:slave1
修改slave2的 SPARK_LOCAL_IP 为:slave2
2).配置文件(spark): slaves
[root@master opt]# cp spark/conf/slaves.template spark/conf/slaves
[root@master opt]# vi spark/conf/slaves
# 删除原本的localhost,添加以下内容
slave1
slave2
3),启动Spark集群
# 直接在master主节点中执行
cd /opt/spark
sbin/start-all.sh
(2),SparkStandAlone HA模式
1),部署Zookeeper
如果已经部署成功则不用重复部署,直接启动即可。
A.配置文件(zookeeper): zoo.cfg
[root@master opt]# cp zookeeper/conf/zoo_sample.cfg zookeeper/conf/zoo.cfg
[root@master opt]# vi zookeeper/conf/zoo.cfg
# 更改temp临时目录:
原:dataDir=/tmp/zookeeper
改:dataDir=/opt/zookeeper/tmp
# 在配置文件最后追加服务器的配置
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
B.配置文件(zookeeper): myid
# 三台机器分别进入到zookeeper的tmp目录下
mkdir -p /opt/zookeeper/tmp
cd /opt/zookeeper/tmp
# 分别在三台机中创建myid文件,并依次填写内容1,2,3
# master节点
vi myid
1
####### 此时剩下对于其他节点的修改,等将配置好的文件同步过去之后再进行修改
# slave1节点
vi myid
2
# slave2节点
vi myid
3
2),配置文件(spark): saprk-env.sh
# master 节点:
vi spark-env.sh
export JAVA_HOME=/opt/jdk
SPARK_LOCAL_IP=master
SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=master,slave1,slave2"
HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
##### 对于其他节点的操作,也是等同步到其他节点之后再进行操作
# slave1节点
vi spark-env.sh
export JAVA_HOME=/opt/jdk
HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
SPARK_LOCAL_IP=slave1
SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=master,slave1,slave2"
# slave2节点
vi spark-env.sh
export JAVA_HOME=/opt/jdk
HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
SPARK_LOCAL_IP=slave2
SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=master,slave1,slave2"
3),配置文件(spark): slaves
其中写几个节点的主机名,那么久会对应几个节点启动Worker进程
slave1
slave2
4),启动Spark集群
cd /opt/spark
# 在主节点(master)启动Master主进程:
sbin/start-all.sh
# 在主节点二(salve1)中单独启动Master主进程:
sbin/start-master.sh