欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

spark集群搭建,standalone

程序员文章站 2024-02-23 16:01:04
...

有写的不对的地方,欢迎各位同学评论指正,博主会进行修改。



这是博主搭建spark集群经验,不使用yarn或是Mesos,spark自身的集群环境,考虑到实际应用,过两日博主会把本文改成spark集群高可用搭建。

虽然本文不使用yarn或Mesos,但是先按照本文方式安装配置,在加入所需要的组件,也是可以的。另外,希望各位同学不要曲解,博主也曾在百度知道上面看过一些人的回答,但是结合博主遇到问题中请教的一些大牛说法,再结合博主安装开发实际经验,和对源码的一小部分剖析,给大家重新定位一下spark。hadoop有自己的一套生态环境,以core为中心,开源为原则,新颖的设计思路与构思,吸引无数程序员趋之若鹜,在core的基础上,开发出庞大生态体系组件,构成一个hadoop方向。spark也类似,有自己核心的core,spark团队,以此为中心开发出各个组件,构成了spark自己庞大的生态系统。spark也是一个独立的方向,所以,千万不要曲解spark只是附属于hadoop,这样对你深入学习spark不利。

spark和hadoop的关系,相辅相成,有些人说spark和hadoop不是敌人是朋友,这些人才是真正懂这两者的。spark和hadoop有交集部分,也有各自独特的部分,比如:大疆的spark无人机,spark的机器学习组件。相较于hadoop来说是最独特的。在后续安装中,也会有这方面东西,我们也可以单独拧出来讨论我的观点。比如:有的人会问,你说hadoop和spark是两个不相干的方向,那为什么你后面配置文件中和主流的spark集群搭建方式中,又要把spark的日志放进HDFS中,既然spark独立又为什么要配yarn?这里,博主给你解释。spark把日志放进HDFS不是因为基于hadoop,这是本末倒置的理解,日志文件放进文件系统自然天经地义,而若是各个节点放进自己本地,日志便会脑裂,各节点日志内容不一样,而放入一个共享资源库,多个节点常常要同时读写,天长地久一个共享资源库必然会瓶颈。那我们就用一个分布式文件系统去解决,譬如:我们这里不用HDFS,而是选用DFS、KASS,一样能实现。只不过HDFS更加主流,会的人也多,依赖的hadoop方向主流,为此,我们选择了他。而yarn呢?我就告诉你,这里这篇配置,就会无关于yarn的配置。






环境说明

        工具:

                虚拟机         vmware

                操作系统     红帽7(red hat 7)

                spark          2.1

                JAVA          1.8

                scala          2.11

                HA模式      hadoop2.6版本对应的各组件,若这环境不会搭,博主有文章介绍搭建:http://blog.csdn.net/m0_37590135/article/details/74024929

      环境拟定:三节点,主机分别叫node1,node2,node3,ip分别对应:192.168.163.131、192.168.163.130、192.168.163..132






1、下载

下载地址:spark官方下载地址

spark集群搭建,standalone

注意!这里一定要选择Pre的,博主曾犯傻,下了个Source Code。导致后面都配置完,启动Spark-shell报错,告我没编译,然后博主就哭了。




2、安装

 安装没什么好说的,tar zxvf 文件名,解压归档就完事,然而还是上个图。

spark集群搭建,standalone








3、环境其他准备

这些准备是比较常规的准备。这里就不占用篇幅了
(1)、jdk安装
(2)、scala安装
(3)、ssh免密登录
(4)、HA环境:HA搭建

 

注意!如果你使用HA模式了,并且PATH配置了hadoop_home/sbin路径,那么你就不要把spark的sbin路径加入path了,脚本重名了,会根据path规则,优先读靠前的。

这里博主并未配置spark的环境变量。













4、开始搭建

4.1、新建路径

(1)、${spark_home}/下,新建logs目录
        mkdir ${spark_home}/logs

(2)、给要作为worker的节点,在安装目录下新建worker目录
        mkdir ${spark_home}/worker

(3)、在hdfs内建立共享日志,hdfs根目录创建下文配置的文件目录
       hadoop fs -mkdir /sparkHistoryLogs





4.2、配置文件配置

两个文件均在安装路径的conf下,apache公司均给了样例配置文件,需要copy一下,改一下名字:

[aaa@qq.com conf]# cp spark-env.sh.template spark-env.sh
[aaa@qq.com conf]# cp spark-defaults.conf.template spark-defaults.conf
[aaa@qq.com conf]# cp slaves.template slaves


slaves文件内写入各个worker节点主机名或者ip
spark集群搭建,standalone




下面开始修改:vi spark-env.sh
export JAVA_HOME=/usr/local/JAVA8
export HADOOP_HOME=/usr/local/hadoop-2.6.0-cdh5.11.0
export SPARK_MASTER_HOST=node1
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_MERMORY=2G
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=7777 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://cam:8020/sparkHistoryLogs -Dspark.history.fs.updateInterval=10"
====================================================================================================================================
解析:
        1、Dspark.history.fs.logDirectory配置hdfs中的namenode所在节点的rpc端口,这里博主有个HA环境,所以cam不是主机名,是HA集群的名字

        2、SPARK_MASTER_HOST选项,填入主机名,若是IP,则是用SPARK_MASTER_IP选项
====================================================================================================================================




修改:vi spark-defaults.conf
spark.master                     spark://node1:7077
spark.eventLog.enabled           true
spark.eventLog.dir               hdfs://cam:8020/sparkHistoryLogs
spark.history.fs.update.interval 5
spark.history.ui.port            7777
spark.history.fs.logDirectory    hdfs://cam:8020/sparkHistoryLogs
# spark.serializer                 org.apache.spark.serializer.KryoSerializer
====================================================================================================================================
解析:
        1、spark.history.fs.update.interval是2.X以后的配置项,若读者是1.X,0.X那么请改为spark.history.updateInterval
====================================================================================================================================



注意:根据自身需求进行修改!






大功告成!




4、启动

spark集群搭建,standalone

在你要作为Master的机器上启动。注意看启动信息!


jps各节点,有Master以及Worker即为成功
















5、验证

使用spark-shell登录到集群
[aaa@qq.com bin]# spark-shell --master spark://master主机名:7077
操作简单的几段scala,看控制台信息。没有问题即是ok。为了以防万一,最好每个节点都试一下。


















博文不仅仅是防止知识点忘记,也是回馈众多作者们的教导,以此回馈社会