Spark从入门到精通3:Spark全分布模式的安装和配置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark从入门到精通3:Spark全分布模式的安装和配置相关的知识,希望对你有一定的参考价值。
参考技术A Spark的安装模式一般分为三种:1.伪分布模式:即在一个节点上模拟一个分布式环境,master和worker共用一个节点,这种模式一般用于开发和测试Spark程序;2.全分布模式:即真正的集群模式,master和worker部署在不同的节点之上,一般至少需要3个节点(1个master和2个worker),这种模式一般用于实际的生产环境;3.HA集群模式:即高可用集群模式,一般至少需要4台机器(1个主master,1个备master,2个worker),这种模式的优点是在主master宕机之后,备master会立即启动担任master的职责,可以保证集群高效稳定的运行,这种模式就是实际生产环境中多采用的模式。本小节来介绍Spark的全分布模式的安装和配置。安装介质:
jdk-8u162-linux-x64.tar.gz 提取码:2bh8
hadoop-2.7.3.tar.gz 提取码:d4g2
scala-2.12.6.tgz 提取码:s2ly
spark-2.1.0-bin-hadoop2.7.tgz 提取码:5kcf
准备3台Linux主机,按照下面的步骤在每台主机上执行一遍,设置成如下结果:
安装Linux操作系统比较简单,这里不再详细。参考:《 Linux从入门到精通1:使用 VMware Workstation 14 Pro 安装 CentOS 7 详细图文教程 》
编辑hosts配置文件:# vi /etc/hosts,追加3行:
测试主机名是否可用:
(1)使用ssh-keygen工具生成秘钥对:
(2)将生成的公钥发给三台主机:master、slave1、slave2:
(3)测试秘钥认证是否成功:
由于各个主机上的时间可能不一致,会导致执行Spark程序出现异常,因此需要同步各个主机的时间。在实际生成环境中,一般使用时间服务器来同步时间,但是搭建时间服务器相对较为复杂。这里介绍一种简单的方法来快速同步每台主机主机的时间。我们知道,使用date命令可以设置主机的时间,因此这里使用putty的插件MTPuTTY来同时向每一台主机发送date命令,以到达同步时间的目的。
(1)使用MTPuTTY工具连接三台主机,点击MTPuTTY工具的Tools菜单下的“Send script…”子菜单,打开发送脚本工具窗口。
(2)输入命令:date -s 2018-05-28,然后回车(注意:一定要回车,否则只发送不执行),在下面服务器列表中选择要同步的主机,然后点击“Send script”,即可将时间同步为2018-05-28 00:00:00。
使用winscp工具将JDK安装包 jdk-8u144-linux-x64.tar.gz 上传到/root/tools/目录中,该目录是事先创建的。
进入/root/tools/目录,将jdk安装包解压到/root/training/目录中,该目录也是事先创建的。
使用winscp工具将Hadoop安装包 hadoop-2.7.3.tar.gz 上传到master节点的/root/tools/目录中,该目录是事先创建的。
进入/root/tools/目录,将hadoop安装包解压到/root/training/目录中,该目录也是事先创建的。
进入Hadoop配置文件目录:
(1) 配置hadoop-env.sh文件:
(2) 配置hdfs-site.xml文件:
(3) 配置core-site.xml文件:
(4) 配置mapred-site.xml文件:
将模板文件mapred-site.xml.template拷贝一份重命名为mapred-site.xml然后编辑:
(5) 配置yarn-site.xml文件:
(6) 配置slaves文件:
将master上配置好的Hadoop安装目录分别复制给两个从节点slave1和slave2,并验证是否成功。
第一次启动需要输入yes继续。
启动成功后,使用jps命令查看各个节点上开启的进程:
使用命令行查看HDFS的状态:
使用浏览器查看HDFS的状态:
使用浏览器查看YARN的状态:
(1) 在HDFS上创建输入目录/input:
(2) 将本地数据文件data.txt上传至该目录:
(3) 进入到Hadoop的示例程序目录:
(4) 执行示例程序中的Wordcount程序,以HDFS上的/input/data.txt作为输入数据,输出结果存放到HDFS上的/out/wc目录下:
(5) 查看进度和结果:
可以通过终端打印出来的日志信息知道执行进度:
执行结束后可以在HDFS上的/out/wc目录下查看是否有_SUCCESS标志文件来判断是否执行成功。
如果执行成功,可以在输出目录下看到_SUCCESS标志文件,且可以在part-r-00000文件中查看到wordcount程序的结果:
由于Scala只是一个应用软件,只需要安装在master节点即可。
使用winscp工具将Scala安装包上传到master节点的/root/tools目录下:
进入/root/tools目录,将Scala安装包解压到安装目录/root/training/:
将Scala的家目录加入到环境变量PATH中:
使环境变量生效:
输入scala命令,如下进入scala环境,则证明scala安装成功:
我们先在master节点上配置好参数,再分发给两个从节点slave1和slave2。
使用winscp工具将Spark安装包上传到master节点的/root/tools目录下:
进入/root/tools目录,将Spark安装包解压到安装目录/root/training/下:
注意:由于Spark的命令脚本和Hadoop的命令脚本有冲突(比如都有start-all.sh和stop-all.sh等),
所以这里需要注释掉Hadoop的环境变量,添加Spark的环境变量:
按Esc:wq保存退出,使用source命令使配置文件立即生效:
进入Spark的配置文件目录下:
(1) 配置spark-env.sh文件:
(2) 配置slaves文件:
将master上配置好的Spark安装目录分别复制给两个从节点slave1和slave2,并验证是否成功。
启动后查看每个节点上的进程:
使用浏览器监控Spark的状态:
使用spark-shell命令进入SparkContext(即Scala环境):
启动了spark-shell之后,可以使用4040端口访问其Web控制台页面(注意:如果一台机器上启动了多个spark-shell,即运行了多个SparkContext,那么端口会自动连续递增,如4041,4042,4043等等):
注意:由于我们将Hadoop从环境变量中注释掉了,这时只能手动进入到Hadoop的sbin目录停止Hadoop:
Spark中常用的端口总结:
以上是关于Spark从入门到精通3:Spark全分布模式的安装和配置的主要内容,如果未能解决你的问题,请参考以下文章
spark从入门到精通spark内存管理详解- 堆内&堆外内存管理