IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Spark简述 -> 正文阅读

[大数据]Spark简述

什么是spark

官网概述:
Spark是一个基于内存的开源计算框架,于2009年诞生于加州大学伯克利分校AMPLab(AMP:Algorithms,Machines,People),它最初属于伯克利大学的研究性项目,后来在2010年正式开源,并于 2013 年成为了 Apache 基金项目,到2014年便成为 Apache 基金的顶级项目,该项目整个发展历程刚过六年时间,但其发展速度非常惊人。
正由于Spark来自于大学,其整个发展过程都充满了学术研究的标记,是学术带动Spark核心架构的发展,如弹性分布式数据集(RDD,resilient distributed datasets)、流处理(Spark streaming)、机器学习(MLlib)、SQL分析(Spark SQL)和图计算(GraphX),本节将主要介绍Spark发展历程和特点。

大致就是这样:(简单来说就是一个大数据的计算框架,相较于Hadoop的计算框架速度会有显著的变化,在这里面可以写python、scala、Java等代码,推荐Scala,因为我们可以看到spark框架基本上都是Scala代码去构建的)
在这里插入图片描述

在这里插入图片描述

spark读取数据与MR读取数据的不同

实际上spark并没有自己读取HDFS文件的方式,底层默认使用的是mapreduce的方式(切片的方式,格式化数据的方式)去将文件读取进来
Hadoop也有自己本身的计算框架mapreduce,那我们为什么还要接触spark呢, 这里就要提到spark的计算速度,由于spark是基于内存做计算,结果不落地;而mapreduce是基于磁盘做计算,中间会涉及到磁盘IO的读写,以及网络IO,会比较耗时,所以spark的计算速度相较于mapreduce做计算会有显著的提升

1、一个是从HDFS上读到数据,再写到HDFS,基于磁盘计算,中间有磁盘IO,网络IO,比较耗时
在这里插入图片描述
2、每一次mapreduce拿数据的时候都是从HDFS上读取数据,比较麻烦,spark直接从内存中读取数据,更加快速
在这里插入图片描述

RDD五大基本特性

RDD五大特性:
1、RDD是由一系列分区组成的,默认一个切片对应一个分区
2、算子是作用在每一个分区上的,每一个分区对应一个切片
3、RDD之间是有一系列的依赖关系的,依赖关系有两种:宽依赖(有shuffle),窄依赖(没有shuffle)
4、分区类算子只能作用在k-v格式的RDD上
5、spark给每个task提供最佳的计算位置,移动计算,不移动数据

什么是RDD

在这里插入图片描述
我们可以看到我们在写spark代码的时候会出现RDD这种东西,那什么是RDD呢

RDD:弹性分布式数据集
RDD不存储数据,数据来源于HDFS,我们这里都只是模拟一个分布式的环境还没有搭建Yarn版本的spark;spark只是一个编程模型,在这之上使用各种算子去完成数据分析需求

如何分别宽窄依赖

如何分别宽窄依赖:
1、看有无shuffle阶段,有,就是宽依赖;无,就是窄依赖
2、从父RDD的角度来观察,父是一对一的关系,就是窄依赖;父是一对多的关系,就是宽依赖

宽依赖会有shuffle阶段,shuffle会落地产生磁盘文件,如果要进行网络传输那么就会有一个序列号的过程,在数据落到磁盘的时候会进行压缩,默认是hash分区

宽依赖会将数据分成不同的stage
Stage实际上是一组可以并行计算的task
Stage可以看成一个Map任务或者Reduce任务

五大特性的一一介绍

这里我们用WordCount单词计数来举例

在这里插入图片描述

spark几种模式

在这里插入图片描述
local模式多用于测试使用
standalone模式是将自己电脑本地模拟成大数据环境进行运行,需要在自己本地搭建一个Hadoop环境
yarn模式就是继承了分布式的环境

搭建spark

local模式

在自己的idea中配置完spark之后,就可以直接使用local模式了
idea里搭建spark可以看我这篇博客,这是我去年同一时间写的博客
在IDEA里运行spark

standalone模式(spark自带的资源管理框架)

1、上传解压,配置环境变量 配置bin目录
2、修改配置文件 conf
cp spark-env.sh.template spark-env.sh
增加配置
export SPARK_MASTER_IP=master
export SPARK_MASTER_PORT=7077

#这是worker的核数
export SPARK_WORKER_CORES=2
#这是指定每台机子上面有几台work
export SPARK_WORKER_INSTANCES=1
export SPARK_WORKER_MEMORY=2g
export JAVA_HOME=/opt/modules/jdk1.8.0_171

master相当于RM worker相当于NM

增加从节点配置
cp slaves.template slaves

node1
node2

增加从节点

3、复制到其它节点
scp -r spark-2.4.5 node1:pwd
scp -r spark-2.4.5 node2:pwd

4、配置spark的环境变量

5、在主节点执行启动命令
启动集群,在master中执行
./sbin/start-all.sh

http://master:8080/ 访问spark ui

spark的standalone模式是主从结构,所以最后master端出现Master,node1和node2出现Worker则成功
在这里插入图片描述
配置完之后,在8088端口都可以看到自己有哪些worker,和哪些运行的节点
在这里插入图片描述

测试standalone模式

standalone模式是需要将写完的代码打成jar包放到集群上面运行

  1. standalone client模式 日志在本地输出,一般用于上线前测试(bin/下执行)

需要进入到spark-examples_2.11-2.4.5.jar 包所在的目录下执行
cd /opt/modules/spark-2.4.5/examples/jars

spark-submit --class org.apache.spark.examples.SparkPi --master spark://master:7077 --executor-memory 512m --total-executor-cores 1 spark-examples_2.11-2.4.5.jar 100
在这里插入图片描述

  1. standalone cluster模式 上线使用,不会再本地打印日志

spark-submit --class org.apache.spark.examples.SparkPi --master spark://master:7077 --driver-memory 512m --deploy-mode cluster --supervise --executor-memory 512M --total-executor-cores 1 spark-examples_2.11-2.4.5.jar 100

这里就已经运行完成了,但是在本地看不到日志文件
在这里插入图片描述
需要在8080端口查看
在这里插入图片描述

这两个一个是结果打印,一个是日志打印
在这里插入图片描述
在这里插入图片描述

yarn模式

在公司一般不适用standalone模式,因为公司一般已经有yarn 不需要搞两个资源管理框架

停止spark集群
在spark sbin目录下执行 ./stop-all.sh

spark整合yarn只需要在一个节点整合, 可以删除node1 和node2中所有的spark 文件

1、增加hadoop 配置文件地址
spark的conf中:
vim spark-env.sh
增加
export HADOOP_CONF_DIR=/opt/modules/hadoop-2.7.6/etc/hadoop

2、往yarn提交任务需要增加两个配置 yarn-site.xml(/opt/modules/hadoop-2.7.6/etc/hadoop/yarn-site.xml)

先关闭yarn
stop-yarn.sh

<property>
    <name>yarn.nodemanager.pmem-check-enabled</name>
    <value>false</value>
</property>

<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>

3、同步到其他节点,重启yarn
scp -r yarn-site.xml node1:pwd
scp -r yarn-site.xml node2:pwd

启动yarn
start-yarn.sh

4、spark on yarn client模式 日志在本地输出,一班用于上线前测试
/opt/modules/spark-2.4.5/examples/jars目录下:
spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --executor-memory 512M --num-executors 2 spark-examples_2.11-2.4.5.jar 100

5、spark on yarn cluster模式 上线使用,不会再本地打印日志 减少io
/opt/modules/spark-2.4.5/examples/jars目录下:
spark-submit --class org.apache.spark.examples.SparkPi --master yarn-cluster --executor-memory 512m --num-executors 2 --executor-cores 1 spark-examples_2.11-2.4.5.jar 100

获取yarn程序执行日志 执行成功之后才能获取到
yarn logs -applicationId application_1560967444524_0003

hdfs webui
http://node1:50070

yarn ui
http://node1:8088

感谢阅读,我是啊帅和和,一位大数据专业大四学生,祝你快乐。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:37:21  更:2021-11-09 19:37:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:39:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码