spark集群搭建,standalone

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37590135/article/details/74231600

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



这是博主搭建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的配置。






扫描二维码关注公众号,回复: 2992983 查看本文章

环境说明

        工具:

                虚拟机         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官方下载地址


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




2、安装

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








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一下,改一下名字:

[root@node1 conf]# cp spark-env.sh.template spark-env.sh
[root@node1 conf]# cp spark-defaults.conf.template spark-defaults.conf
[root@node1 conf]# cp slaves.template slaves


slaves文件内写入各个worker节点主机名或者ip





下面开始修改: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、启动



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


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
















5、验证

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


















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






猜你喜欢

转载自blog.csdn.net/m0_37590135/article/details/74231600