Standalone模式(独立部署模式):无需第三方群集管理器即可快速启动独立群集
- 安装
Java8
,并且配置环境变量 - 准备三台虚拟机
Spark001(192.168.1.127),Spark002(192.168.1.128),Spark003(192.168.1.129)
。我用的是Centos7
虚拟机 配置主机名,配置本机主机名与IP映射,分别在三台主机上配置其他两台的主机与名IP映射
Spark001(192.168.1.127):
配置主机名:设置虚拟机名,编辑
etc
目录下的hostname
文件,运行命令:vi /etc/hostname
[root@spark001 ~]# vi /etc/hostname spark001
配置主机名与IP的映射以及与其他两台机器的主机名与IP映射:编辑etc下的hosts文件,运行命令:
vi /etc/hosts
,将自己和其他两台机器的主机名与IP映射添加进去。[root@spark001 ~]# vi /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.127 spark001 192.168.1.128 spark002 192.168.1.129 spark003
Spark002(192.168.1.128):
配置主机名:设置虚拟机名,编辑
etc
目录下的hostname
文件,运行命令:vi /etc/hostname
[root@spark001 ~]# vi /etc/hostname spark002
配置主机名与IP的映射以及与其他两台机器的主机名与IP映射:编辑
etc
下的hosts
文件,运行命令:vi /etc/hosts
,将自己和其他两台机器的主机名与IP映射添加进去。[root@spark002 ~]# vi /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.127 spark001 192.168.1.128 spark002 192.168.1.129 spark003
Spark003(192.168.1.129):
配置主机名:设置虚拟机名,编辑
etc
目录下的hostname
文件,运行命令:vi /etc/hostname
[root@spark001 ~]# vi /etc/hostname spark003
配置主机名与
IP
的映射以及与其他两台机器的主机名与IP
映射:编辑etc
下的hosts
文件,运行命令:vi /etc/hosts
,将自己和其他两台机器的主机名与IP映射添加进去。[root@spark003 ~]# vi /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.127 spark001 192.168.1.128 spark002 192.168.1.129 spark003
配置三台机器
SSH
免密码登录:分别在三台机器上执行命令,执行结束以后在
.ssh
目录下会生成公钥和私钥文件,下边以spark001
为例:[root@spark001 ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 2d:c5:7e:81:d9:e4:c7:45:74:5a:0c:fe:30:02:91:2f root@spark001 The key's randomart image is: +--[ RSA 2048]----+ | oo. .=*| | ..B o +o| | =.= B | | +E .+ + | | S o.. .| | . . | | | | | | | +-----------------+ [root@spark001 ~]#
[root@spark001 .ssh]# ll -rw------- 1 root root 1675 6月 29 11:19 id_rsa -rw-r--r-- 1 root root 395 6月 29 11:19 id_rsa.pub -rw-r--r-- 1 root root 1580 6月 29 11:13 known_hosts
- 分别在三台机器分别上运行命令,并提示输入密码,这样就会把自己的公钥追加到对方的
authorized_keys
文件中,就可以免密码登录了:
- Spark001(192.168.1.127):
ssh-copy-id root@spark002
ssh-copy-id root@spark003
- Spark002(192.168.1.128)
ssh-copy-id root@spark001
ssh-copy-id root@spark003
- Spark003(192.168.1.129)
ssh-copy-id root@spark001
ssh-copy-id root@spark002
- Spark001(192.168.1.127):
安装Spark集群:
- 解压我们编译好的
spark
- 配置
spark
环境变量 配置
spark001
上的${SPARK_HOME}/conf/spark-env.sh
,添加如下配置export JAVA_HOME=/usr/java/jdk1.8.0_131#指定JAVA_HOME位置 export SPARK_MASTER_IP=spark001#指定spark老大Master的IP
spark-env.sh里环境变量名称 spark-env.sh里环境变量含义 SPARK_MASTER_HOST 将主服务器绑定到特定的主机名或IP地址,例如公共主机名或IP地址。 SPARK_MASTER_PORT 在不同的端口上启动主设备(默认:7077)。 SPARK_MASTER_WEBUI_PORT 主Web UI的端口(默认值:8080)。 SPARK_MASTER_OPTS 仅以“-Dx = y”形式应用于主服务器的配置属性(默认值:无)。请参阅下面的可能选项列表。 SPARK_LOCAL_DIRS 用于Spark中“临时”空间的目录,包括存储在磁盘上的映射输出文件和RDD。这应该位于系统中的快速本地磁盘上。它也可以是不同磁盘上多个目录的逗号分隔列表。 SPARK_WORKER_CORES 允许Spark应用程序在计算机上使用的核心总数(默认值:所有可用核心)。 SPARK_WORKER_MEMORY 的存储器总量以允许火花应用程序在计算机上,例如使用1000m,2g(默认值:总内存减去1 GB); 请注意,每个应用程序的单独内存均使用其spark.executor.memory属性进行配置。 SPARK_WORKER_PORT 在特定端口上启动Spark worker(默认值:random)。 SPARK_WORKER_WEBUI_PORT 工作者Web UI的端口(默认值:8081)。 SPARK_WORKER_DIR 用于运行应用程序的目录,其中包括日志和暂存空间(默认值:SPARK_HOME / work)。 SPARK_WORKER_OPTS 仅适用于“-Dx = y”形式的工作线程的配置属性(默认值:无)。请参阅下面的可能选项列表。 SPARK_DAEMON_MEMORY 要分配给Spark主服务器和工作服务器守护程序的内存(默认值:1g)。 SPARK_DAEMON_JAVA_OPTS Spark master和worker守护进程的JVM选项以“-Dx = y”的形式(默认值:无)。 SPARK_PUBLIC_DNS Spark主服务器和工作服务器的公有DNS名称(默认值:无)。 在
spark001
上配置${SPARK_HOME}/conf/slaves
,添加如下配置spark001 spark002 spark003
将
spark001
上的spark
远程复制到其他两台机器上scp -r spark-2.1.0-bin-2.6.0-cdh5.7.0 root@spark002:/opt/ scp -r spark-2.1.0-bin-2.6.0-cdh5.7.0 root@spark003:/opt/
在
spark001
上启动spark
集群:在${SPARK_HOME}/sbin/
目录下执行start-all.sh
- 利用命令行查看集群启动是否成功,分别在三台机器上运行
jps
命令,如果在spark001
上出现了一个Master
进程和一个Worker
进程,在其他两台机器上分别出现了Woker
进程,说明你启动成功了。 - 利用浏览器查看集群是否启动成功,在浏览器中直接访问
http://192.168.1.127:8080/
,出现的页面如下说明启动成功了
- 解压我们编译好的
- 安装
Yarn模式:在
Hadoop NextGen(YARN)
之上部署Spark。该部署方式不需要部署任何有关Spark
有关环境,它只依赖于Hadoop Yarn
。原理就是依赖于Yarn来调度Spark
。- 编译好的
Spark
源码,编译的时候一定要指定Yarn依赖 - 已部署好的
Hadoop
环境 - 解压编译好的
Spark
- 将
${HADOOP_HOME}/etc/hadoop
目录拷贝到${SPARK_HOME}/conf/
下 配置
${SPARK_HOME}/conf/spark-env.sh
,添加如下配置HADOOP_CONF_DIR=/opt/spark-2.1.0-bin-2.6.0-cdh5.7.0/conf/hadoop //具体目录可根据自己的实际目录自行修改
补充:配置到这里,
Spark
就可以跑在YARN
上了,也没必要启动spark
的master
和slaves
服务,因为是靠yarn
进行任务调度,所以直接提交任务即可。有些关于Spark on YARN
部署的博客,实际上介绍的是Spark
的standalone
运行模式。如果启动Spark
的master
和worker
服务,这是Spark
的standalone
运行模式,不是Spark on YARN
运行模式,请不要混淆。
- 编译好的
Spark(三)安装部署Spark
最新推荐文章于 2024-08-20 00:30:00 发布