linux搭建spark集群,详解Spark+Zookeeper搭建高可用Spark集群

Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎;现在形成一个高速发展应用广泛的生态系统。

Spark三种分布式部署方式比较

目前Apache Spark支持三种分布式部署方式,分别是standalone、spark on mesos和 spark on YARN,详情参考。

Spark standalone模式分布式部署

faef6ac474297266b66e0dd81b578fdc.png

环境介绍

主机名 应用

tvm11 zookeeper

tvm12 zookeeper

tvm13 zookeeper、spark(master)、spark(slave)、Scala

tvm14 spark(backup)、spark(slave)、Scala

tvm15 spark(slave)、Scala

说明

依赖scala:

Note that support for Java 7, Python 2.6 and old Hadoop versions before 2.6.5 were removed as of Spark 2.2.0. Support for Scala 2.10 was removed as of 2.3.0. Support for Scala 2.11 is deprecated as of Spark 2.4.1 and will be removed in Spark 3.0.

zookeeper: Master结点存在单点故障,所以要借助zookeeper,至少启动两台Master结点来实现高可用,配置方案比较简单。

安装scala

由上面的说明可知,spark对scala版本依赖较为严格,spark-2.4.5依赖scala-2.12.x,所以首先要安装scala-2.12.x,在此选用scala-2.12.10。使用二进制安装:

$ wget https://downloads.lightbend.com/scala/2.12.10/scala-2.12.10.tgz

$ tar zxvf scala-2.12.10.tgz -C /path/to/scala_install_dir

如果系统环境也要使用相同版本的scala,可以将其加入到用户环境变量(.bashrc或.bash_profile)。

安装spark

打通三台spark机器的work用户ssh通道;

现在安装包到master机器:tvm13;

注意提示信息,及Hadoop版本(与已有环境匹配,如果不匹配则选非预编译的版本自己编译)。

50398bc70faa007a7fad6a9dcfa641da.png

解压到安装目录即可。

配置spark

spark服务配置文件主要有两个:spark-env.sh和slaves。

spark-evn.sh:配置spark运行相关环境变量

slaves:指定worker服务器

配置spark-env.sh:cp spark-env.sh.template spark-env.sh

export JAVA_HOME=/data/template/j/java/jdk1.8.0_201

export SCALA_HOME=/data/template/s/scala/scala-2.12.10

export SPARK_WORKER_MEMORY=2048m

export SPARK_WORKER_CORES=2

export SPARK_WORKER_INSTANCES=2

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=tvm11:2181,tvm12:2181,tvm13:2181 -Dspark.deploy.zookeeper.dir=/data/template/s/spark"

# 关于 SPARK_DAEMON_JAVA_OPTS 参数含义:

# -Dspark.deploy.recoverMode=ZOOKEEPER #代表发生故障使用zookeeper服务

# -Dspark.depoly.zookeeper.url=master.hadoop,slave1.hadoop,slave1.hadoop #主机名的名字

# -Dspark.deploy.zookeeper.dir=/spark #spark要在zookeeper上写数据时的保存目录

# 其他参数含义:https://blog.csdn.net/u010199356/article/details/89056304

配置slaves:cp slaves.template slaves

# A Spark Worker will be started on each of the machines listed below.

tvm13

tvm14

tvm15

配置 spark-default.sh ,主要用于spark执行任务(可以命令行动态指定):

# http://spark.apache.org/docs/latest/configuration.html#configuring-logging

# spark-defaults.sh

spark.app.name YunTuSpark

spark.driver.cores 2

spark.driver.memory 2g

spark.master spark://tvm13:7077,tvm14:7077

spark.eventLog.enabled true

spark.eventLog.dir hdfs://cluster01/tmp/event/logs

spark.serializer org.apache.spark.serializer.KryoSerializer

spark.serializer.objectStreamReset 100

spark.executor.logs.rolling.time.interval daily

spark.executor.logs.rolling.maxRetainedFiles 30

spark.ui.enabled true

spark.ui.killEnabled true

spark.ui.liveUpdate.period 100ms

spark.ui.liveUpdate.minFlushPeriod 3s

spark.ui.port 4040

spark.history.ui.port 18080

spark.ui.retainedJobs 100

spark.ui.retainedStages 100

spark.ui.retainedTasks 1000

spark.ui.showConsoleProgress true

spark.worker.ui.retainedExecutors 100

spark.worker.ui.retainedDrivers 100

spark.sql.ui.retainedExecutions 100

spark.streaming.ui.retainedBatches 100

spark.ui.retainedDeadExecutors 100

# spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"

hdfs资源准备

因为 spark.eventLog.dir 指定为hdfs存储,所以需要在hdfs预先创建相应的目录文件:

hdfs dfs -mkdir -p hdfs://cluster01/tmp/event/logs

配置系统环境变量

编辑 ~/.bashrc :

export SPARK_HOME=/data/template/s/spark/spark-2.4.5-bin-hadoop2.7

export PATH=$SPARK_HOME/bin/:$PATH

分发

以上配置完成后,将 /path/to/spark-2.4.5-bin-hadoop2.7 分发至各个slave节点,并配置各个节点的环境变量。

启动

先在master节点启动所有服务:./sbin/start-all.sh

然后在backup节点单独启动master服务:./sbin/start-master.sh

查看状态

启动完成后到web去查看:

master(8081端口):Status: ALIVE

17e569adce48e05813bfe95de72e6b80.png

backup(8080端口):Status: STANDBY

9ddad771431a79573f5f65150bad42dc.png

完成!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409411.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wifiwan口速率什么意思_无线路由器怎么设置wan口速率

wan口速率是设置无线路由器的wan口以什么速率方式工作,此设置不当会导致网速降低,下面是学习啦小编整理的无线路由器设置wan口速率的方法,供您参考。无线路由器设置wan口速率的方法在Wan口的设置中,当我们完成了基本的设置后&…

linux perl telnet安装,51CTO博客-专业IT技术博客创作平台-技术成就梦想

Telnet是一个古老而又不安全的协议,用来实现远程登录。这种服务可以和基于客户机/服务器进行通信,也就是说把你的电脑虚拟成一个键盘(伪终端)来和远程的服务进行通信,而服务器以为输入来自它本地的键盘,我们在本地所执行的命令会发…

hdu4473

这题的结果[f(1)f(2)...f(n)]其实就等价于x*y*z<n的解的个数&#xff0c;然后的方法几乎就是暴力枚举了。现场比赛的时候没想到这一点&#xff0c;太杯具了&#xff0c;浪费了两个小时的思考时间。其实我们的做法应该是可行的&#xff0c;因为f(n)具有积性性质&#xff0c;也…

https无法访问 宝塔_宝塔面板快速开启ssl(https)的方法

宝塔面板可以说在国内服务器配置方面是比较出名的&#xff0c;一些大的网站的服务器都是使用的宝塔面板&#xff0c;另外本博客作品的演示站点也是使用的宝塔面板。宝塔面板的操作与配置服务器环境对一些初入做站的将要跳坑的小白来说&#xff0c;就一件超越仙器的神器&#xf…

linux可以不用grub吗,既然不用Win了,那么GrubDOS也不用了。linux grub求指导

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼5、安装Grub到U盘上&#xff1a;[starlocalhost ~]$ sudo grub-install--root-directory/media/test/ /dev/sdbProbingdevices to guess BIOS drives. This may take a long time.Installationfinished. No error reported.This is…

raid 物理盘缓存状态_查看RAID状态

以下是组建服务器raid时查到的资料&#xff0c;做下笔记&#xff0c;没兴趣的朋友请无视。Linux下查看软、硬raid信息的方法。软件raid&#xff1a;只能通过Linux系统本身来查看cat /proc/mdstat可以看到raid级别&#xff0c;状态等信息。硬件raid&#xff1a; 最佳的办法是通过…

略读《大教堂与市集》

《大教堂与市集》&#xff08;The Cathedral and the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary&#xff09;一书中提到了软工工程的两种开发模式&#xff0c;即大教堂模式和市集模式。作者认为“Given enough eyeballs, all bugs are shallow…

c语言time函数的作用,c语言中time函数的用法

c语言中time函数的用法的用法你知道吗&#xff1f;下面小编就跟你们详细介绍下c语言中time函数的用法的用法&#xff0c;希望对你们有用。c语言中time函数的用法的用法如下&#xff1a;头文件time.h函数名称: localtime函数原型: struct tm *localtime(const time_t *t…

测试nb信号的软件_NB-IOT的OTA测试(功率、灵敏度测试)

2017年7月25日新益技术实现了NB-IoT终端系统测试&#xff0c;在OTA暗室中完成了NB-IoT终端系统总辐射功率TRP(TotalRadiated Power)和总全向灵敏度TIS(Total Isotropic Sensitivity)测试。测试得到的360度全方位辐射和接收性能参数&#xff0c;为NB-IoT产品推向市场提供重要的参…

待研究

D3D中的Alpha颜色混合 &#xff08;http://www.cnblogs.com/flying_bat/archive/2007/09/20/900558.html&#xff09;转载于:https://www.cnblogs.com/chunyou128/archive/2012/11/14/2769334.html

linux内核多队列,Linux Kernel 中 Workqueue 使用系统默认队列和创建队列的方法

关于workqueue&#xff0c;我们还是有很多话要说。想必大家对workqueue相关的函数(schedule_work 、queue_work、INIT_WORK、create_singlethread_workqueue 等)都不陌生。但说起差异&#xff0c;可能还有许多话需要坐下来慢慢讲。对于workqueue&#xff0c;与之最为相关的两个…

linux扩容根目录空间_Linux系统扩容根目录磁盘空间的操作方法

Linux系统扩容根目录磁盘空间的操作方法一、使用背景Linux根目录磁盘空间不够用了&#xff0c;当修改了虚拟机模版增加磁盘大小或者插入了一块新硬盘&#xff0c;但是发现系统里的大小还是没改变。产生的原因是没有给磁盘格式化&#xff0c;没有增加分区。二、操作方法1.查看磁…

【ASP】文件上传

描述&#xff1a;在button事件中注册一个上传事件 代码详解&#xff1a; protected void FileUpload_Click(object sender, EventArgs e) { bool fileIsvaild false; //初始化一个bool型为false的fileIsvaild if (this.FileUpload1.HasFile)…

哈夫曼字符串编码c语言实现,基于哈夫曼(haffuman)算法的文件压缩的实现(C语言)(原创)...

本文首先简要阐述哈夫曼算法的基本思想&#xff0c;然后介绍了使用哈夫曼算法进行文件压缩和解压缩的处理步骤&#xff0c;最后给出了C语言实现的文件压缩和解压缩的源代码。哈夫曼算法的主要思想是&#xff1a;①首先遍历要处理的字符串&#xff0c;得到每个字符的出现的次数&…