Spark 3.0.1环境搭建(stand alone模式)

1. 背景

  1. Spark作为大数据分析处理引擎的准事实标准,本身并不能存储数据,只能做数据分析。
  2. Spark的运行需要依赖资源调度和任务管理,Spark自带了一套资源调度和任务管理工具,运行stand slone模式时,就是采取这套工具。
  3. Spark本身还可以运行在其他资源管理和任务调度平台上,如Yarn、Mesos、Kubernates容器等。
    注意,本身Yarn和Spark内部的资源管理和任务调度也使用了容器技术,不过不是docker技术,但目的和本质都是一样的。通过虚拟化容器技术把硬件性能尽可能压榨出来,也能更好做资源的分割和管理。

2. 搭建步骤

2.1 环境准备

  1. centos 7.x集群,可以使用vmware15虚拟出来(参考我的博客),也可自己购买云服务器如阿里云 服务器,也可以自己买主机(二手linux主机一台大概3000到6000,带CPU、内存、硬盘,就是噪音大,耗电量多一些)
  2. jdk 1.8(安装在centos集群服务器上,具体参考我其他博客)
  3. scala 2.12.x,我是使用的2.12.12,最新的scala版本已经是2.13.3版本。(安装在centos集群服务器上,具体参考我其他博客)
  4. hadoop 3.2.1,需要安装部署到centos集群中,这是2020年较新版本。最新是3.3.0版本。(如何安装部署hadoop集群,可以参考我其他博客)
  5. spark 3.0.1版本,2020年最新版本
  6. hbase 2.2.5,这是2020年5月份版本,2.3.1是2020年8月份版本。
  7. kafka,2.4.1版本,这是2020年3月份版本,最新是2.6.0是2020年8月份版本。
    注意,如果需要在windows上编写scala或者java代码运行spark程序,则在windows上也需要安装scala和jdk环境。后续会专文讲解

2.2 搭建步骤

  1. 下载spark安装包
    https://spark.apache.org/downloads.html

    这里是可以选择对应匹配hadoop的spark版本程序包,因为spark一般都结合hadoop使用。这里如果找不到对应版本, 可以自行使用源码进行编译!!!

在大数据的技术体系中,框架选择大致分为2个路线,一个是apache框架组合,不同框架的版本兼容性需要自己去摸索和维护,一种是CDH,本质还是apache版本,但它提供一个面板,点击一下就可以在环境中安装对应框架,并且确保框架之间版本兼容性和稳定性。
CDH目前针对高级功能收费,初级功能不收费,但企业一般使用初级功能即可。
CDH搭建对内存有较高要求,需要64GB内存及以上

注意,hadoop以及其他大的框架,如果区分了类似2.x和3.x版本,并不是说3.x版本之后,2.x版本就不再维护,而是会并行维护,这样来降低企业使用小版本升级的难度。因为大版本升级一般都会有接口不兼容和不稳定问题,企业一般不会轻易做大版本升级!!!!

2. 上传这个压缩包到centos集群服务器上(也可以是其他linux操作系统版本如debian或者ubuntu都可以)

  1. 可以直接在linux操作系统上下载
  2. 可以下载到windows后,再使用软件将文件上传到linux服务器上。如linux下的rz软件,如xshell、secureCRT都提供文件上传到linux服务器功能
  1. 在linux服务器对应文件夹中解压缩这个压缩包
  1. linux操作系统中,一般第三方软件都是在usr、opt目录下,规范一些的会要求再在这2个目录下建立一个文件夹来统一管理安装的软件。
# 如果是解压到指定目录,可以使用-C来指定路径
tar -zxf spark-3.0.1-bin-hadoop3.2.tgz -C /root/opt/spark# 如果不需要指定路径,则cd到对应目录下,直接执行以下shell命令即可
tar -zxf spark-3.0.1-bin-hadoop3.2.tgz
  1. 查看Spark安装目录
  1. bin一般都是存放独立小功能的可执行文件的地方
  2. conf,一般都是存放配置文件的地方,还有一个类似的就是以etc命名也是存放配置文件的地方
  3. jars,一般是存放依赖的jar的地方,还有以lib命名一般也是一样的作用
  4. kubernates,如果spark需要运行在kubernates(k8s)上,则相应设置在这个目录中
  5. python,和kuberntes目录类似,不过是spark结合python使用时,相应设置在这个目录中
  6. R,编程语言R结合spark使用时,相应设置的目录
  7. yarn,spark运行在yarn上时,相应配置文件所在目录
  8. logs,程序运行的日志文件所在,在服务器上运行程序,一般都会以日志文件形式来记录运行和错误信息,方便查看和定位问题。
# 使用tail命令,查看某日志文件最后200行的信息
tail -200 xxx.log

日志文件一般分为三个等级,info、warn、error。需要定位问题一般都是查看error级别的信息
9. sbin,一般是程序的整体命令,如启动,关闭整个程序等等

  1. 进入到conf目录,将spark-env.sh.template重命名为spark-env.sh,再添加如下信息
mv spark-env.sh.template spark-env.sh
vi spark-env.sh

添加以下2行信息,主要就是声明2个公共环境变量,JAVA_HOME,SPARK_MASTER_HOST。后者是spark主节点master对应的域名(在linux中的 /etc/hosts 文件中进行配置)

export JAVA_HOME=/opt/apps/jdk1.8.0_251
export SPARK_MASTER_HOST=linux101
  1. 将conf目录下的slaves.template重命名为slaves并修改,指定worker节点对应的域名

    注意,大数据集群中,因为涉及大量的节点间通信和设置,所以每个节点配置一份hosts文件来代表不同节点的ip地址是非常有必要。只需要一份文件,然后拷贝到其他节点中即可
  2. 将配置好的spark文件拷贝到其他节点
    注意,先配置好节点之间使用ssh,并设置好免密通信
for i in {1..3}; do scp -r spark-3.0.1-bin-hadoop3.2   linux10$i:$PWD; done

也可以手动使用ssh的scp命令拷贝

scp -r spark-3.0.1-bin-hadoop3.2   linux101:$PWDscp -r spark-3.0.1-bin-hadoop3.2   linux102:$PWDscp -r spark-3.0.1-bin-hadoop3.2   linux103:$PWD

2.3 启动集群

  1. 在spark的sbin目录下,有对应脚本命令
  1. 可以看出,这里面都是可执行的(x权限),-(文件)。都是可执行文件
  2. 这里的脚本有一个统一的集群启动和关闭脚本,start-all.sh和stop-all.sh
# 先cd到spark的sbin目录下,执行以下命令启动spark集群
./start-all.sh
  1. 使用jps查看
jps


看到有类似worker、master的进程,说明启动成功了。因为sparkl集群就是master主节点和多个worker从节点

  1. 访问spark的web页面
    http://主节点域名:8080

http://linux101:8080/

  1. 从上图可以看到,如果需要访问spark集群,可以通过7077端口进行访问,
  2. 这个网页还可以看到worker、运行中应用、已经完成的应用的信息,包括各个从节点的硬件信息(cpu–逻辑核心不是物理核心,内存等)
  3. 从这个网页,可以看到历史任务的信息,如每个任务名字,运行时间等等

3. 重要参数设置

在conf的env脚本中,

export SPARK_WORKER_CORES =4   #指定worker可用的逻辑核数
export SPARK_WORKER_MEMORY=2g  #指定worker可用的内存大小

4. 高可用

  1. 目前业界处理HA高可用的方式,很多都离不开zookeeper。因为zookeeper是一个很好的服务发现和动态上下线感知的框架,并且可以存储少量的数据。
  2. spark的standalone模式可用启动两个以上的Master,但是需要依赖zookeeper进行协调,所有的节点启动后,都向zookeeper注册
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=linux104:2181,linux103:2181,linux102:2181 -Dspark.deploy.zookeeper.dir=/spark"

注意,zookeeper的集群需要先搭建起来,这里配置zookeeper的地址写了集群中每个节点的地址,这样就算一个挂了,会自动尝试下一个zookeeper节点。zookeeper搭建可以看我另外博客,一般zookeeper节点都是奇数个,很多场景下,3个节点即可。zookeeper的动态感知是通过临时znode的存在与否,内部znode节点数等信息来感知的

Spark 3.0.1环境搭建(stand alone模式)相关推荐

  1. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(九)安装kafka_2.11-1.1.0

    如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...

  2. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二十一)NIFI1.7.1安装

    一.nifi基本配置 1. 修改各节点主机名,修改/etc/hosts文件内容. 192.168.0.120master192.168.0.121slave1192.168.0.122 slave2 ...

  3. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十二)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网。...

    Centos7出现异常:Failed to start LSB: Bring up/down networking. 按照<Kafka:ZK+Kafka+Spark Streaming集群环境搭 ...

  4. Spark Idea Maven 开发环境搭建(转载)

    mark一下,感谢作者分享! Spark Idea Maven 开发环境搭建 一.安装jdk jdk版本最好是1.7以上,设置好环境变量,安装过程,略. 二.安装Maven 我选择的Maven版本是3 ...

  5. Spark集群环境搭建(standalone模式)

    Spark集群环境搭建(standalone模式) 1. 实验室名称: 2. 实验项目名称: 3. 实验学时: 4. 实验原理: 5. 实验目的: 6. 实验内容: 7. 实验器材(设备.虚拟机名称) ...

  6. Anaconda3+python3.7.10+TensorFlow2.3.0+PyQt5环境搭建

    Anaconda3+python3.7.10+TensorFlow2.3.0+PyQt5环境搭建 一.Anaconda 创建 python3.7环境 1.进入 C:\Users\用户名 目录下,找到 ...

  7. 2021年大数据Spark(六):环境搭建集群模式 Standalone

    目录 环境搭建-Standalone 前言 Standalone 架构 ​​​​​​​集群规划 修改配置并分发 修改slaves ​​​​​​​分发到其他机器 修改spark-env.sh 集群启动和 ...

  8. selenium win7+selenium2.0+python环境搭建

    win7+selenium2.0+python环境搭建 by:授客 QQ:1033553122 步骤1:下载python 担心最新版的支持不太好,这里我下载的是python 2.7(selenium之 ...

  9. NXP JN5189 ZigBee 3.0开发环境搭建(续)

    NXP JN5189 ZigBee 3.0开发环境搭建(续) 一.设置 SDK 安装位置 二.导入 DK6 的 SDK 三.安装 NXP Zigbee Configuration Editor 1.插 ...

最新文章

  1. LeetCode实战:爬楼梯
  2. 动态代理——》AOP —— Spring 中的 AOP||AOP 相关术语||学习 spring 中的 AOP 要明确的事
  3. Android手机内存图片读取,有效解决Android加载大图片内存溢出的问题
  4. BCEWithLogitsLoss的使用案例
  5. python脚本自动消除安卓版_python脚本中appium的自启动自关闭
  6. JavaMail基本使用
  7. 计算机操作系统---高响应比调度算法,操作系统最高响应比优先调度算法实验报告...
  8. Mac屏幕录制GIF动图
  9. 精益生产管理中如何进行库存成本控制?
  10. 「 数学模型 」“使用SPSS软件线性回归分析”实例
  11. 软件测试培训两个月靠谱吗?
  12. websocket+kafka+springcloud+springboot实现报文(json)传输,解析,推送
  13. 努比亚Z5Smini刷机包 正式版时间锁屏 音量唤醒 精简优化 流畅稳定
  14. cropper(裁剪图片)插件使用(案例)
  15. REMOTE HOST IDENTIFICATION HAS CHANGED问题解决
  16. java网络编程案例9-1模拟微信聊天
  17. 年仅28岁的郭宇宣布从字节退休,财务自由东渡日本
  18. 批量替换 Word 文档最后几页
  19. 计算语言学课程笔记(一)
  20. 摸爬滚打大半年,我是如何从零基础进阶到渗透测试工程师

热门文章

  1. centos中毒后,解毒全过程
  2. linux磁盘分区,挂载,及查看
  3. TiDB 6.0 Book Rush | TiDB 和 Python 的 CRUD 应用开发实践
  4. Vitis 统一软件平台文档:应用加速开发 (UG1393)
  5. 智能消毒器KC认证所需资料有哪些?
  6. 天津大学《高电压技术》在线作业2
  7. ylbtech-SubwayNav(地铁线路导航)-数据库设计
  8. 自动整理文件夹(Droplt使用教程)
  9. WIN10+kinect for windows SDK2.0+OpenCV+VS2017环境配置
  10. 新手如何学习c语言? 小马带你入门