无题
Spark基础-1SparkCoreSpark 概述Spark 是什么
Spark 是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。
Spark and Hadoop在之前的学习中,Hadoop 的 MapReduce 是大家广为熟知的计算框架,那为什么咱们还要学习新的计算框架 Spark 呢,这里就不得不提到Spark 和Hadoop 的关系。
首先从时间节点上来看:
Hadoop
2006 年 1 月,Doug Cutting 加入Yahoo,领导Hadoop 的开发
2008 年 1 月,Hadoop 成为 Apache 顶级项目
2011 年 1.0 正式发布
2012 年 3 月稳定版发布
2013 年 10 月发布 2.X (Yarn)版本
Spark
2009 年,Spark 诞生于伯克利大学的AMPLab 实验室
2010 年,伯克利大学正式开源了 Spark 项目
2013 年 6 月,Spark 成为了 Apache 基金会下的项目
2014 年 2 月,Spark 以飞快的速度成为了 Apache 的顶级项目
2015 年至今,Spar ...
hadoop基础-3Yarn
hadoop基础-3Yarn视频资料和笔记资料来自尚硅谷:https://www.bilibili.com/video/BV1Qp4y1n7EN?p=1
Yarn资源调度器思考:
1)如何管理集群资源?
2)如何给任务合理分配资源?
Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。
Yarn基础架构YARN主要由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成。
ResourceManager (RM)主要作用如下
处理客户端请求
监控NodeManager
启动或监控ApplicationMaster
资源的分配与调度
NodeManager (NM)主要作用如下
管理单个节点上的资源
处理来自ResourceManager的命令
处理来自ApplicationMaster的命令
ApplicationMast er (AM)作用如下
为应用程序申请资源并分配给内部的任务
任务的监控 ...
hadoop高级-1生产调优
hadoop高级-1生产调优视频资料和笔记资料来自尚硅谷:https://www.bilibili.com/video/BV1Qp4y1n7EN?p=1
HDFS—核心参数NameNode内存生产配置
NameNode内存计算
每个文件块大概占用150byte,一台服务器128G内存为例,能存储多少文件块呢?
123128 * 1024 * 1024 * 1024 / 150Byte ≈ 9.1亿G MB KB Byte
Hadoop2.x系列,配置NameNode内存
NameNode内存默认2000m,如果服务器内存4G,NameNode内存可以配置3g。在hadoop-env.sh文件中配置如下。
HADOOP_NAMENODE_OPTS=-Xmx3072m
Hadoop3.x系列,配置NameNode内存
hadoop-env.sh中描述Hadoop的内存是动态分配的
1234567891011121314# The maximum amount of heap to use (Java -Xmx). If no unit# i ...
hadoop高级-2源码分析
hadoop高级-2源码分析视频资料和笔记资料来自尚硅谷:https://www.bilibili.com/video/BV1Qp4y1n7EN?p=1
RPC通信原理解析回顾HDFS、YARN、MapReduce三者关系
需求:模拟RPC的客户端、服务端、通信协议三者如何工作的
代码编写
在HDFSClient项目基础上创建包名top.lvxiaoyi.rpc
创建RPC协议
123456789101112package top.lvxiaoyi.rpc;/** * @author lvxiaoyi * @date 2021/11/13 9:20 */public interface RPCProtocol { long versionID = 666; void mkdirs(String path);}
创建RPC服务端
12345678910111213141516171819202122232425262728293031323334package top.lvxiaoyi.rpc;import org.apache.hadoop.c ...
hadoop基础-2MapReduce
hadoop基础-2MapReduce视频资料和笔记资料来自尚硅谷:https://www.bilibili.com/video/BV1Qp4y1n7EN?p=67
MapReduce概述MapReduce定义MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。
MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。
MapReduce优缺点优点
MapReduce易于编程
它简单的实现一些接口,就可以完成一个分布式程序,这个分布式程序可以分布到大量廉价的PC机器上运行。也就是说你写一个分布式程序,跟写一个简单的串行程序是一模一样的。就是因为这个特点使得MapReduce编程变得非常流行。
良好的扩展性
当你的计算资源不能得到满足的时候,你可以通过简单的增加机器来扩展它的计算能力。
高容错性
MapReduce设计的初衷就是使程序能够部署在廉价的PC机器上,这就要求它具有很高的容错性。比如其中一台机器挂了,它可以把上面的计算任务转移到另外一个节点上运行 ...
hadoop基础-2HDFS
hadoop基础-2HDFS视频资料和笔记资料来自尚硅谷:https://www.bilibili.com/video/BV1Qp4y1n7EN?p=1
HDFS概述HDFS产出背景及意义HDFS产生背景随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS只是分布式文件管理系统中的一种。
HDFS定义HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
HDFS的使用场景:适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭之后就不需要改变。
HDFS优缺点优点
高容错性
数据自动保存多个副本。它通过增加副本的形式,提高容错性。
某一个副本丢失以后,它可以自动恢复。
适合处理大数据
数据规模:能够处理数据规模达到GB、TB、甚至PB级别的数据;
文件规模:能够处理百万规模以上的文件数量。数 ...
hadoop基础-1
hadoop基础-1视频资料和笔记资料来自尚硅谷:https://www.bilibili.com/video/BV1Qp4y1n7EN?p=1
资料:https://pan.baidu.com/s/1P5JAtWlGDKMAPWmHAAcbyA,提取码:5h60
概述发展是什么
Hadoop是一个由Apache基金会所开发的分布式系统基础架构
主要解决,海量数据的存储和海量数据的分析计算问题。
广义上来说,Hadoop通常是指一个更广泛的概念——Hadoop生态圈。
发展历史
Hadoop创始人DougCutting,为了实现与Google类似的全文搜索功能,他在Lucene框架基础上进行优
化升级,查询引擎和索引引擎。
2001年年底Lucene成为Apache基金会的一个子项目。
对于海量数据的场景,Lucene框架面对与Google同样的困难,存储海量数据困难,检索海量速度慢。
学习和模仿Google解决这些问题的办法:微型版Nutch。
可以说Google是Hadoop的思想之源(Google在大数据方面的三篇论文)
2003-2004年,Google公开 ...
Spark基础-3SparkStreaming
Spark基础-3SparkStreamingSparkStreaming 概述Spark Streaming 是什么
Spark 流使得构建可扩展的容错流应用程序变得更加容易。
Spark Streaming 用于流式数据的处理。Spark Streaming 支持的数据输入源很多,例如:Kafka、Flume、Twitter、ZeroMQ 和简单的 TCP 套接字等等。数据输入后可以用 Spark 的高度抽象原语如:map、reduce、join、window 等进行运算。而结果也能保存在很多地方,如 HDFS,数据库等。
和 Spark 基于 RDD 的概念很相似,Spark Streaming 使用离散化流(discretized stream)作为抽象表示,叫作DStream。DStream 是随时间推移而收到的数据的序列。在内部,每个时间区间收到的数据都作为 RDD 存在,而 DStream 是由这些RDD 所组成的序列(因此得名“离散化”)。所以简单来将,DStream 就是对 RDD 在实时数据处理场景的一种封装。
Spark Streaming 的特点
易用
容错
...
无题
Spark基础-2SparkSQLSparkSQL 概述SparkSQL 是什么
Spark SQL 是 Spark 用于结构化数据(structured data)处理的 Spark 模块。
Hive and SparkSQLSparkSQL 的前身是 Shark,给熟悉 RDBMS 但又不理解 MapReduce 的技术人员提供快速上手的工具。
Hive 是早期唯一运行在 Hadoop 上的 SQL-on-Hadoop 工具。但是 MapReduce 计算过程中大量的中间磁盘落地过程消耗了大量的 I/O,降低的运行效率,为了提高 SQL-on-Hadoop的效率,大量的 SQL-on-Hadoop 工具开始产生,其中表现较为突出的是
Drill
Impala
Shark
其中 Shark 是伯克利实验室 Spark 生态环境的组件之一,是基于 Hive 所开发的工具,它修改了下图所示的右下角的内存管理、物理计划、执行三个模块,并使之能运行在 Spark 引擎上。
Shark 的出现,使得 SQL-on-Hadoop 的性能比 Hive 有了 10-100 倍的提 ...
Spark基础-4Spark核心
Spark基础-4Spark核心Spark 内核概述Spark 内核泛指 Spark 的核心运行机制,包括 Spark 核心组件的运行机制、Spark 任务调度机制、Spark 内存管理机制、Spark 核心功能的运行原理等,熟练掌握 Spark 内核原理,能够帮助我们更好地完成 Spark 代码设计,并能够帮助我们准确锁定项目运行过程中出现的问题的症结所在。
Spark 核心组件回顾DriverSpark 驱动器节点,用于执行 Spark 任务中的 main 方法,负责实际代码的执行工作。Driver 在 Spark 作业执行时主要负责:
将用户程序转化为作业(Job);
在 Executor 之间调度任务(Task);
跟踪 Executor 的执行情况;
通过 UI 展示查询运行情况;
ExecutorSpark Executor 对象是负责在 Spark 作业中运行具体任务,任务彼此之间相互独立。Spark 应用启动时,ExecutorBackend 节点被同时启动,并且始终伴随着整个 Spark 应用的生命周期而存在。如果有 ExecutorBackend 节点发 ...
Spark基础-5Spark优化
Spark基础-5Spark优化Spark 性能调优常规性能调优常规性能调优一:最优资源配置Spark 性能调优的第一步,就是为任务分配更多的资源,在一定范围内,增加资源的分配与性能的提升是成正比的,实现了最优的资源配置后,在此基础上再考虑进行后面论述的性能调优策略。
资源的分配在使用脚本提交 Spark 任务时进行指定,标准的 Spark 任务提交脚本如下所示:
123456789bin/spark-submit \--class com.atguigu.spark.Analysis \--master yarn--deploy-mode cluster--num-executors 80 \--driver-memory 6g \--executor-memory 6g \--executor-cores 3 \/usr/opt/modules/spark/jar/spark.jar \
可以进行分配的资源如表所示:
名称
说明
–num-executors
配置 Executor 的数量
–driver-memory
配置 Driver 内存( 影响不大)
...
Scala基础-2
Scala基础-2面向对象Scala 的面向对象思想和 Java 的面向对象思想和概念是一致的。
Scala 中语法和 Java 不同,补充了更多的功能。
Scala 包
基本语法
package 包名
Scala 包的三大作用(和 Java 一样)
区分相同名字的类
当类很多时,可以很好的管理类
控制访问范围
包的命名命名规则
只能包含数字、字母、下划线、小圆点.,但不能用数字开头,也不要使用关键字。
案例实操
12demo.class.exec1 //错误,因为 class 关键字demo.12a //错误,数字开头
命名规范
12一般是小写字母+小圆点com.公司名.项目名.业务模块名
案例实操
123com.atguigu.oa.model com.atguigu.oa.controllercom.sohu.bank.order
包说明(包语句)
说明
Scala 有两种包的管理风格,一种方式和 Java 的包管理风格相同,每个源文件一个包(包名和源文件所在路径不要求必须一致),包名用“.”进行分隔以表示包的层级关系,如com.atguigu.scala。 ...
Kafka基础
Kafka 概述定义Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。
消息队列传统消息队列的应用场景
使用消息队列的好处
解耦
允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。
可恢复性
系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。
缓冲
有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。
灵活性 & 峰值处理能力
在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量并不常见。如果为以能处理这类峰值访问为标准来投入资源随时待命无疑是巨大的浪费。使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。
异步通信
很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。
消息队 ...
Scala基础-1
Scala基础Scala 入门概述为什么学习 Scala
Spark—新一代内存级大数据计算框架,是大数据的重要内容。
Spark就是使用Scala编写的。因此为了更好的学习Spark, 需要掌握Scala这门语言。
Spark的兴起,带动Scala语言的发展!
Scala 发展历史联邦理工学院的马丁·奥德斯基(Martin Odersky)于2001年开始设计Scala。
马丁·奥德斯基是编译器及编程的狂热爱好者,长时间的编程之后,希望发明一种语言,能够让写程序这样的基础工作变得高效,简单。所以当接触到JAVA语言后,对JAVA这门便携式,运行在网络,且存在垃圾回收的语言产生了极大的兴趣,所以决定将函数式编程语言的特点融合到JAVA中,由此发明了两种语言(Pizza & Scala)。
Pizza和Scala极大地推动了Java编程语言的发展。
JDK5.0 的泛型、增 强for循 环、自动类型转换等,都是从Pizza引入的新特性。
JDK8.0 的类型推断、Lambda表达式就是从Scala引入的特性。
JDK5.0和JDK8.0的编辑器就是马丁·奥德斯基写的 ...
HBase基础
HBase简介HBase 定义HBase 是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库。
HBase 数据模型逻辑上,HBase 的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从HBase 的底层物理存储结构(K-V)来看,HBase 更像是一个 multi-dimensional map。
HBase 逻辑结构
HBase 物理存储结构
数据模型
Name Space
命名空间,类似于关系型数据库的 DatabBase 概念,每个命名空间下有多个表。HBase 有两个自带的命名空间,分别是 hbase 和 default,hbase 中存放的是 HBase 内置的表,default 表是用户默认使用的命名空间。
Region
类似于关系型数据库的表概念。不同的是,HBase 定义表时只需要声明列族即可,不需要声明具体的列。这意味着,往 HBase 写入数据时,字段可以动态、按需指定。因此,和关系型数据库相比,HBase 能够轻松应对字段变更的场景。
Row
HBase 表中的每行数据都由一个 RowKey 和多个 Column(列)组 ...