Spark大数据分析与实战笔记(第二章 Spark基础-02)

这篇具有很好参考价值的文章主要介绍了Spark大数据分析与实战笔记(第二章 Spark基础-02)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

每日一句正能量

人生就像赛跑,不在乎你是否第一个到达尽头,而在乎你有没有跑完全程。

章节概要

Spark于2009年诞生于美国加州大学伯克利分校的AMP实验室,它是一个可应用于大规模数据处理的统一分析引擎。Spark不仅计算速度快,而且内置了丰富的API,使得我们能够更加容易编写程序。

2.2 搭建Spark开发环境

请参考《Hadoop大数据技术与应用》完成Hadoop集群构建。或者看我之前的博客也行。

  • Hadoop集群部署和启动与关闭

搭建Spark环境是开展Spark编程的基础,在深入学习Spark编程之 前,我们需要的先搭建Spark开发环境。

2.2.1 环境准备

由于Spark仅仅是一种计算框架,不负责数据的存储和管理,因此,通常都会将Spark和Hadoop进行统一部署,由Hadoop中的HDFS、HBase等组件负责数据的存储管理,Spark负责数据计算。

安装Spark集群前,需要安装Hadoop环境,本教材采用如下配置环境。

Linux系统:CentOS_6.7版本
Hadoop:2.7.4版本
JDK:1.8版本
Spark:2.3.2版本

2.2.2 Spark的部署方式

Spark部署模式分为Local模式(本地单机模式)和集群模式,在Local模式下, 常用于本地开发程序与测试,而集群模式又分为Standalone模式(集群单机模式)、 Yarn模式和Mesos模式,关于这三种集群模式的相关介绍具体如下:

  1. Standalone模式

    • Standalone模式被称为集群单机模式
    • 在该模式下,Spark集群架构为主从模式,即一台Master节点与多台Slave节点,Slave节点启动的进程名称为Worker。(主节点只有一个,所以存在单点故障问题,要搭建高可用的Spark集群)
  2. Mesos模式

    • Mesos模式被称为Spark on Mesos模式。
    • Mesos是一款资源调度管理系统,为Spark提供服务,由于Spark与Mesos存在密切的关系,因此在设计Spark框架时充分考虑到对Mesos的集成。但如果你同时运行Hadoop和Spark,从兼容性的角度来看,Spark on Yarn是更好的选择。
  3. Yarn模式

    • Yarn模式被称为Spark on Yarn模式,即把Spark作为一个客户端,将作业提交给Yarn服务。
    • 由于在生产环境中,很多时候都要与Hadoop使用同一个集群,因此采用Yarn来管理资源调度,可以提高资源利用率。

Yarn模式又分为Yarn Cluster模式和Yarn Client模式,具体介绍如下:

  • Yarn Cluster: 用于生产环境,所有的资源调度和计算都在集群上运行。
  • Yarn Client: 用于交互、调试环境。

2.2.3 Spark集群安装部署

  • 本书将在Standalone模式下,进行Spark集群的安装部署。
  • 规划的Spark集群包含一台Master节点和两台Slave节点。其中,主机名hadoop01是Master节点,hadoop02和hadoop03是Slave节点。如下图所示:
    Spark大数据分析与实战笔记(第二章 Spark基础-02),# Spark大数据分析与实战,spark,数据分析,笔记
一、Spark下载
  1. 下载Spark安装包
  • 下载地址
    下载地址可以在百度中直接搜索或者参看我之前的博客。
    • 大数据相关常用软件下载地址集锦

进入后来到Spark的官网,点击【Download】就可以打开下载界面:https://spark.apache.org/downloads.html。
Spark大数据分析与实战笔记(第二章 Spark基础-02),# Spark大数据分析与实战,spark,数据分析,笔记
Spark安装包的下载页面如下图所示:
Spark大数据分析与实战笔记(第二章 Spark基础-02),# Spark大数据分析与实战,spark,数据分析,笔记
可以将页面向下拉,找到【Spark release archives】点击进去找历史版本下载。
Spark大数据分析与实战笔记(第二章 Spark基础-02),# Spark大数据分析与实战,spark,数据分析,笔记
Spark大数据分析与实战笔记(第二章 Spark基础-02),# Spark大数据分析与实战,spark,数据分析,笔记

二、Spark安装
  1. 解压Spark安装包
    首先将下载的spark-2.3.2-bin-hadoop2.7.tgz安装包上传到主节点hadoop01的/export/software目录下,然后解压到/export/servers/目录,解压命令如下。

$ tar -zxvf spark-2.3.2-bin-hadoop2.7.tgz -C /export/servers/

注:命令前面的 $ 符号表示当前用户的命令行提示符。它通常出现在命令的开头,表示这是一条需要在命令行中运行的命令。执行命令时不需要加上这个符号,否则会报错。

为了便于后面操作,我们使用mv命令将Spark的目录重命名为spark,命令如下。
mv spark-2.3.2-bin-hadoop2.7/ spark

  1. 修改配置文件
    (1)进入spark/conf目录修改Spark的配置文件spark-env.sh,将spark-env.sh.template配置模板文件复制一份并命名为spark-env.sh,具体命令如下。
    cp spark-env.sh.template spark-env.sh

(2)修改spark-env.sh文件,在该文件添加以下内容:

#配置java环境变量
export JAVA_HOME=/export/servers/jdk
#指定Master的IP
export SPARK_MASTER_HOST=hadoop01
#指定Master的端口 
export SPARK_MASTER_PORT=7077

上述添加的配置参数主要包括JDK环境变量、Master节点的IP地址和Master端口号,由于当前节点服务器已经在/etc/hosts文件中配置了IP和主机名的映射关系,因此可以直接填写主机名。

(3)复制slaves.template文件,并重命名为slaves 。具体命令如下。
cp slaves.template slaves

(4)修改spark-env.sh文件,在该文件添加以下内容:通过“vi slaves”命令编辑slaves配置文件,主要是指定Spark集群中的从节点IP,由于在hosts文件中已经配置了IP和主机名的映射关系,因此直接使用主机名代替IP,添加内容如下。

hadoop02
hadoop03
  1. 分发文件
    修改完成配置文件后,将spark目录分发至hadoop02和hadoop03节点 。命令如下。
$ scp -r /export/servers/spark/ hadoop02:/export/servers/
$ scp -r /export/servers/spark/ hadoop03:/export/servers/
三、环境变量配置

为了在任何路径下可以执行Spark脚本程序,可以通过执行“vi /etc/profile’命令编辑 .bashrc或者 profile文件,并在文件中配置Spark环境变量即可。文件中添加以下内容:

export SPARK_HOME=/export/servers/spark
export PATH=$PATH:$SPARK_HOME/bin

至此,Spark集群配置完成了 。

  1. 启动Spark集群
    Spark集群的启动方式和启动Hadoop集群方式类似,直接使用spark/sbin/start- al.sh脚本即可,在spark根目录下执行下列命令:
    $ sbin/start-all.sh
    Spark大数据分析与实战笔记(第二章 Spark基础-02),# Spark大数据分析与实战,spark,数据分析,笔记
    可以看到集群进程被启动了。
    Spark大数据分析与实战笔记(第二章 Spark基础-02),# Spark大数据分析与实战,spark,数据分析,笔记
    访问Spark管理界面http://hadoop01:8080来查看集群状态(主节点), Spark集群管理界面如下图所示。
    Spark大数据分析与实战笔记(第二章 Spark基础-02),# Spark大数据分析与实战,spark,数据分析,笔记

2.2.4 Spark HA集群部署

Spark Standalone集群是主从架构的集群模式,由于存在单点故障问题,解决这个问题需要用到Zookeeper服务,其基本原理是将Standalone集群连接到同一个Zookeeper实例并启动多个Master节点,利用Zookeeper提供的选举和状态保存功能,可以使一台Master节点被选举,另一台Master节点处于Standby状态。当活跃的Master发生故障时,Standby状态的Master就会被激活,恢复集群调度,整个恢复的过程可能需要1-2分钟。

一、集群部署

1.启动Zookeeper集群服务。命令如下:
zkServer.sh start

Zookeeper集群服务之前已经带着同学们搭建过了,还不会或者还没搭建的同学去看看之前的文章。

  • ZooKeeper的集群部署和启动与关闭

下面是Zookeeper的核心配置文件zoo.cfg

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/export/data/zookeeper /zkdata
clientPort=2181

server.1=hadoop01:2888:3888
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888

2.在spark-env.sh配置文件中注释Master节点的配置参数,并指定Spark使用Zookeeper管理。

#指定Master的IP
#export SPARK_MASTER_HOST=hadoop01
#指定Master的端口
export SPARK_MASTER_PORT=7077
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=hadoop01:2181,hadoop02:2181,hadoop03:2181
-Dspark.deploy.zookeeper.dir=/spark"

关于上述参数的具体说明如下所示:

  • “#”,表示注释当前行
  • spark.deploy.recoveryMode:设置Zookeeper去启动备用Master模式。
  • spark.deploy.zookeeper.url:指定ZooKeeper的Server地址。
  • spark.deploy.zookeeper.dir:保存集群元数据信息的文件、目录。

配置完成后,将spark-env.sh分发至hadoop02、hadoop03节点上,保证配置文件统一,命令如下。

scp spark-env.sh hadoop02:/ekport/servers/spark/conf
scp spark-env.sh hadoop03:/export/servers/spark/conf
二、运行测试

3.在hadoop01主节点启动Spark集群,在hadoop02节点再次启动Master服务。

在hadoop01主节点使用—键启动脚本启动,命令如下:
/export/servers/spark/sbin/start-all.sh

在hadoop02节点再次启动Master服务,命令如下:
/export/servers/spark/sbin/start-master.sh

启动成功后,通过浏览器访问http://hadoop02:8080,查看备用Master节点状态,可以发现status状态为STANDBY。主节点status状态为ALIVE。

4.关闭hadoop01节点中的Master进程,测试Spark HA集群。

Spark HA集群启动完毕后,为了演示是否解决了单点故障问题,可以关闭在hadoopo1节点中的Master进程,用来模拟在生产环境中hadoop01突然宕机,命令如下所示。

/export/servers/spark/sbin/stop-master.sh

执行命令后,通过浏览器查看http://hadoop01:8080,发现已经无法通过hadoop001节点访问Spark集群管理界面。大约经过1-2分钟后,刷新 http://hadoop02:8080页面,可以发现hadoop02节点中的Status值更改为ALIVE,Spark集群恢复正常,说明Spark HA配置有效解决了单点故障问题。

三、多学一招
  • 脚本启动Zookeeper集群
    在集群中启动Zookeeper服务时,需要依次在三台服务器上执行启动命令,然而在实际工作应用中,集群数量并非3台,当遇到数十台甚至更多的服务器时,就不得不编写脚本来启动服务了,编写脚本的语言有多种,这里采用Shelli语言开发一键启动Zookeeper服务脚本, 使用命令vi start_zk.sh创建start_zk.sh文件,内容如下:
#!/bin/sh
for host in hadoop01 hadoop02 hadoop03
do
	ssh $host "source /etc/profile;zkServer.sh start"
	echo "$host zk is running"
done

执行该文件只需要输入"start_zk.sh" 即可启动集群中的Zookeeper服务。

转载自:https://blog.csdn.net/u014727709/article/details/132130729
欢迎 👍点赞✍评论⭐收藏,欢迎指正文章来源地址https://www.toymoban.com/news/detail-774162.html

到了这里,关于Spark大数据分析与实战笔记(第二章 Spark基础-02)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • NanoEdge AI Studio 教程 第二章--异常数据分析

    OK,好久不见,各位,最近挺忙,欢迎回来。 让我们开始第二章节,异常判断。 目录 一 Nano Edge AI Studio 简单概述 二 异常判断 1.工程选择 2.进行工程设置 2.1 MCU选择 2.2 数据设定 3.输入数据 4.模型训练 5.验证 6.生成模型 7.布置模型 NanoEdge AI Studio主要可以实现的功能主要分为四

    2024年04月17日
    浏览(41)
  • 从零开始学数据分析之——《线性代数》第二章 矩阵

    元素全为实数的矩阵称为实矩阵  元素全为负数的矩阵称为复矩阵 只有一行(列)的矩阵称为行(列)矩阵 元素全为零的矩阵称为零矩阵 行数和列数都等于n的矩阵称为n阶矩阵或n阶方阵 主对角线元素全为1,其余元素全为0的矩阵称为单位矩阵,记作E或I 两个矩阵行数和列数

    2023年04月23日
    浏览(38)
  • Spark大数据分析与实战笔记(第三章 Spark RDD 弹性分布式数据集-02)

    人生很长,不必慌张。你未长大,我要担当。 传统的MapReduce虽然具有自动容错、平衡负载和可拓展性的优点,但是其最大缺点是采用非循环式的数据流模型,使得在迭代计算式要进行大量的磁盘IO操作。Spark中的RDD可以很好的解决这一缺点。 RDD是Spark提供的最重要的抽象概念

    2024年02月22日
    浏览(48)
  • Spark大数据分析与实战笔记(第一章 Scala语言基础-2)

    Spark是专为大规模数据处理而设计的快速通用的计算引擎,它是由Scala语言开发实现的,关于大数据技术,本身就是计算数据,而Scala既有面向对象组织项目工程的能力,又具备计算数据的功能,同时Spark和Scala的紧密集成,本书将采用Scala语言开发Spark程序,所以学好Scala将有助

    2024年02月11日
    浏览(44)
  • Spark大数据分析与实战笔记(第一章 Scala语言基础-1)

    Spark是专为大规模数据处理而设计的快速通用的计算引擎,它是由Scala语言开发实现的,关于大数据技术,本身就是计算数据,而Scala既有面向对象组织项目工程的能力,又具备计算数据的功能,同时Spark和Scala的紧密集成,本书将采用Scala语言开发Spark程序,所以学好Scala将有助

    2024年02月11日
    浏览(43)
  • Spark大数据分析与实战笔记(第一章 Scala语言基础-3)

    对于每一门编程语言来说,数组(Array)都是重要的数据结构之一,主要用来存储数据类型相同的元素。Scala中的数组分为定长数组和变长数组,定义定长数组,需要使用new,而定义变长数组时,则需要导包 import scala.collection.mutable.ArrayBuffer 。 数组(Array)主要用来存储

    2024年02月10日
    浏览(43)
  • Spark大数据分析与实战课后答案

    一、填空题 1、Scala语言的特性包含 面向对象编程 、函数式编程的、 静态类型的 、可扩展的、 可以交互操作的 。 2、在Scala数据类型层级结构的底部有两个数据类型,分别是 Nothing 和 Null 。 3、在Scala中,声明变量的有 var 声明变量和 val 声明常量。 4、在Scala中,获取

    2024年01月17日
    浏览(57)
  • 企业Spark案例--酒店数据分析实战提交

    第1关:数据清洗--过滤字段长度不足的且将出生日期转: package com.yy   import org.apache.spark.rdd.RDD import org.apache.spark.sql.{DataFrame, Dataset, SparkSession} object edu{     /**********Begin**********/     // 此处可填写相关代码     case class Person(id:String,Name:String,CtfTp:String,CtfId:String,G

    2024年02月09日
    浏览(40)
  • Spark大数据分析与实战课后习题参考答案

    项目一: 一、选择题 DCCDAD 二、简答题 1、Hadoop MapReduce要求每个步骤间的数据序列化到磁盘,所以I/O成本很高,导致交互分析和迭代算法开销很大;Spark 提供了内存计算,把中间结果放到内存中,带来了更高的迭代运算效率。通过支持有向无环图(DAG)的分布式并行计算的编

    2024年02月11日
    浏览(30)
  • 大数据实战(hadoop+spark+python):淘宝电商数据分析

    虚拟机:Ubuntu 20.04.6 LTS docker容器 hadoop-3.3.4 spark-3.3.2-bin-hadoop3 python,pyspark, pandas,matplotlib mysql,mysql-connector-j-8.0.32.jar(下载不需要积分什么的) 淘宝用户数据 以上的技术积累需要自行完成 创建容器(##ubuntu的代码块,在ubuntu中运行,无特殊说明的在docker中运行) 更新软件

    2024年02月11日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包