大数据技术与实践学习

news2024/11/29 5:03:42

大数据技术与实践期末复习

生态系统

每一张图片都值得思考,理清楚到底是什么!

image-20240617195730069

1.结构化数据(数据库里面的):Sqoop(效率比较慢/隔一段时间抽取一次)

2.半结构化或者非结构化数据:Flume/Logstach(实时/消息队列(Kafaka))

3.Hbase(解决了小文件问题)基于HDFS

4.存储之后进行计算,使用mapReduce(慢一些)/Spark

5.Yarn相当于管理HDFS中节点的资源(CPU等等)

6.Hive/Pig将SQL转换成底层的mapReduce(通用计算)

7.Zookeeper(分布式的协调服务),可以来协调HDFS中的节点

8.Oozie和Azkaban是任务调度组件,调度计算任务(优先级)

大数据技术概述

大数据与其他新技术之间的关系

HDFS

分布式文件系统

分布式文件系统把文件分布存储到多个计算机节点上,成千上万的计算机节点构成计算机集群。

image-20240617203933131

HDFS简介

image-20240617203950858

HDFS采用抽象的块概念带来的好处:

1.支持大规模文件存储(文件块存储)

2.简化系统设计

3.适合数据备份

NameNode和DataNode

image-20240617204303590

HDFS相关概念

image-20240617204601708

EditLog里面存储的相当于内存中的元数据存储到磁盘中,修改的日志

image-20240617204826232

◼ 数据节点是分布式文件系统HDFS的工作节点,负责数据的存储和读取,会根据客户端或者是名称节点的调度来进行数据的存储和检索,并且向名称节点定期发送自己所存储的块的列表。

◼ 每个数据节点中的数据会被保存在各自节点的本地Linux文件系统中。

HDFS体系结构

image-20240617201455592

通信协议

◼ HDFS是一个部署在集群上的分布式文件系统,因此,很多数据需要通过网络进行传输。

◼ 所有的HDFS通信协议都是构建在TCP/IP协议基础之上的。

◼ 客户端通过一个可配置的端口向名称节点主动发起TCP连接,并使用客户端协议与名称节点进行交互。

◼ 名称节点和数据节点之间则使用数据节点协议进行交互。

◼ 客户端与数据节点的交互是通过RPC(Remote Procedure Call)来实现的。在设计上,名称节点不会主动发起RPC,而是响应来自客户端和数据节点的RPC请求。

只设置一个NameNode节点的局限性:
1.命名空间的限制

2.性能的瓶颈

3.隔离问题

4.集群的可用性

HDFS存储原理

冗余数据保存

(1)加快数据传输速度

(2)容易检查数据错误

(3)保证数据可靠性

数据存取策略

调度管理

数据错误与恢复

1.namenode出错(secondaryNameNode备份最重要的两个数据结构–>FsImage和EditLog)

2.datanode出错 – dataNode每隔一个时间段(3s)向nameNode上报信息(存储的内容,健康状态(负载状态))

3.数据出错:md5和sha1校验,客户端进行判断,定期检查和复制

文件上传之前要先切块(128M),然后存到dataNode(还要备份),保持每个3份

image-20240617202008952

dataNode每隔一个时间段(3s)向nameNode上报信息(存储的内容,健康状态(负载状态))

HDFS数据读写过程

HDFS写操作:

image-20240617202349446

`import java.io.BufferedReader;

import java.io.InputStreamReader;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.FileSystem;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.fs.FSDataInputStream;

public class Chapter3 {

public static void main(String[] args) {

try {

Configuration conf = new Configuration();

conf.set(“fs.defaultFS”,“hdfs://localhost:9000”);

conf.set(“fs.hdfs.impl”,“org.apache.hadoop.hdfs.DistributedFileSystem”);

FileSystem fs = FileSystem.get(conf);

Path file = new Path(“test”);

FSDataInputStream getIt = fs.open(file);

BufferedReader d = new BufferedReader(new

InputStreamReader(getIt));

String content = d.readLine(); //读取文件一行

System.out.println(content);

d.close(); //关闭文件

fs.close(); //关闭hdfs

} catch (Exception e) {

e.printStackTrace();

}

}`

读操作:

image-20240617203339604

`import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.FileSystem;

import org.apache.hadoop.fs.FSDataOutputStream;

import org.apache.hadoop.fs.Path;

public class Chapter3 {

public static void main(String[] args) {

try {

Configuration conf = new Configuration();

conf.set(“fs.defaultFS”,“hdfs://localhost:9000”);

conf.set(“fs.hdfs.impl”,“org.apache.hadoop.hdfs.DistributedFileSystem”);

FileSystem fs = FileSystem.get(conf);

byte[] buff = “Hello world”.getBytes(); // 要写入的内容

String filename = “test”; //要写入的文件名

FSDataOutputStream os = fs.create(new Path(filename));

os.write(buff,0,buff.length);

System.out.println(“Create:”+ filename);

os.close();

fs.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}`

进入到安全模式,就只能读取了

HBase

概述

HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库。

HBase和传统的关系数据库的区别:
1.数据类型:将数据存储为未经解释的字符串。

2.数据操作:避免了复杂的表和表之间的关系。

3.存储模式:关系数据库是基于行模式存储的。HBase是基于列存

储的,每个列族都由几个文件保存,不同列族的文件是分离的。

4.数据索引(只有行键索引)

5.数据维护(保留旧版本)

6.可伸缩性(减少硬件数量来实现性能的伸缩)

HBase访问接口

image-20240617210554622

HBase数据模型

image-20240617210647790

image-20240617210715726

HBase的实现原理

HBase的实现包括三个主要的功能组件:

– (1)库函数:链接到每个客户端

– (2)一个Master主服务器

– (3)许多个Region服务器

▪ 主服务器Master负责管理和维护HBase表的分区信息,维护Region服 务器列表,分配Region,负载均衡

▪ Region服务器负责存储和维护分配给自己的Region,处理来自客户端 的读写请求

▪ 客户端并不是直接从Master主服务器上读取数据,而是在获得Region 的存储位置信息后,直接从Region服务器上读取数据

▪ 客户端并不依赖Master,而是通过Zookeeper来获得Region位置信息 ,大多数客户端甚至从来不和Master通信,这种设计方式使得Master 负载很小

HBase运行机制

image-20240617210926382

image-20240617210955129

image-20240617211002047

HBase应用方案

HBase实际应用中的性能优化方法

行键 InMemory Max Version Time To Live

HBase性能监视

•Master-status(自带)

•Ganglia

•OpenTSDB

•Ambar

在HBase之上构建SQL引擎

NoSQL区别于关系型数据库的一点就是NoSQL不使用SQL作为查询语言,

至于为何在NoSQL数据存储HBase上提供SQL接口,有如下原因:

1.易使用。使用诸如SQL这样易于理解的语言,使人们能够更加轻

松地使用HBase。

2.减少编码。使用诸如SQL这样更高层次的语言来编写,减少了编

写的代码量。

方案:

1.Hive整合HBase

2.Phoenix

构建HBase二级索引

HBase只有一个针对行健的索引

访问HBase表中的行,只有三种方式:

•通过单个行健访问

•通过一个行健的区间来访问

•全表扫描

使用其他产品为HBase行健提供索引功能:

•Hindex二级索引

•HBase+Redis

•HBase+solr

MapReduce

概述

image-20240617211823894

MapReduce体系结构

MapReduce体系结构主要由四个部分组成,分别是:Client、JobTracker、TaskTracker以及Task。

image-20240617211909877

MapReduce工作流程

shuffle过程对hash取模

image-20240617212014903

image-20240617212051812

image-20240617212115708

image-20240617212122852

image-20240617212158867

image-20240617222322998

四个阶段:split,map,shuffle,reduce

shuffle阶段会在内存与磁盘之间多次读取数据

实例分析:WordCount ⭐⭐

image-20240617221804134

image-20240617212304667

image-20240617212314190

image-20240617212320033

image-20240617212327488

image-20240617212334680

MapReduce的具体应用

MapReduce可以很好地应用于各种计算问题

关系代数运算(选择、投影、并、交、差、连接)

分组与聚合运算

矩阵向量乘法

矩阵乘法

image-20240617212457240

Hive

Hive是一个构建于Hadoop顶层的数据仓库工具。

概述

image-20240617212723680

image-20240617212709374

image-20240617212816228

Hive系统架构

image-20240617220955131

image-20240617221010813

Hive的应用
Impala

image-20240617233316100

批处理层和实时处理层

image-20240617220810483

image-20240617220821132

Hive编程实践

Hive有三种运行模式,单机模式、伪分布式模式、分布式模式。

image-20240617220908057

image-20240617220917079

Spark

Spark概述

Spark具有如下几个主要特点:
•运行速度快:使用DAG执行引擎以支持循环数据流与内存计算
•容易使用:支持使用Scala、Java、Python和R语言进行编程,可以通过Spark Shell进行交互式编程
•通用性:Spark提供了完整而强大的技术栈,包括SQL查询、流式计算、机器学习和图算法组件
•运行模式多样:可运行于独立的集群模式中,可运行于Hadoop中,也可运行于Amazon EC2等云环境中,并且可以访问HDFS、Cassandra、HBase、Hive等多种数据源

image-20240617221158024

image-20240617221203266

Spark生态系统

image-20240617221302908

Spark运行架构

RDD是只读的

RDD操作 Transformation和Action

RDD之间的依赖关系 宽依赖(走shuffle)窄依赖(一对一)

在yarn ,作业管理节点叫做application master

申请的资源叫做container

在spark,作业管理节点叫做Driver

申请的资源叫做executor(可以运行多个task)

image-20240617225250885

image-20240617225657705

Spark SQL
Spark的部署和应用方式
Spark编程实践

Flink

Flink简介

主要特性:批流一体化、精密的状态管理、事件时间支持、精确一次的状态一致性保障

为什么选择Flink

流处理架构

Flink具有以下优势:

(1)同时支持高吞吐、低延迟、高性能

(2)同时支持流处理和批处理

(3)高度灵活的流式窗口

(4)支持有状态计算

(5)具有良好的容错性

(6)具有独立的内存管理

(7)支持迭代和增量迭代

Flink应用场景

事件驱动型应用

数据分析应用

数据流水线应用

Flink技术栈

image-20240617233455581

Flink体系架构

image-20240617233510244

Flink编程模型

image-20240617233519158

Flink编程实践

理解数据

大数据技术综合应用

数据量大

数据类型多

处理速度快

价值密度低

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

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

相关文章

Coursera耶鲁大学金融课程:Financial Markets 笔记Week 02

Financial Markets 本文是学习 https://www.coursera.org/learn/financial-markets-global这门课的学习笔记 这门课的老师是耶鲁大学的Robert Shiller https://en.wikipedia.org/wiki/Robert_J._Shiller Robert James Shiller (born March 29, 1946)[4] is an American econom…

细说MCU通过定时器输出PWM波形的实现方法

目录 一、硬件及工程 二、建立工程 三、代码修改 1、重定义回调函数 2、启动定时器中断 四、下载运行 一、硬件及工程 文章依赖的硬件及工程配置参考本文作者的其他文章:细说ARM MCU的串口接收数据的实现过程-CSDN博客 细说ARM MCU的串口接收数据的实现过程-C…

Matlab基础语法:变量和数据类型,基本运算,矩阵和向量,常用函数,脚本文件

目录 一、变量和数据类型 二、基本运算 三、矩阵和向量 四、常用函数 五、脚本文件 六、总结 一、变量和数据类型 Matlab 支持多种数据类型,包括数值类型、字符类型和逻辑类型。掌握这些基本的变量和数据类型,是我们进行数学建模和计算的基础。 数…

IT入门知识第三部分《软件开发》(3/10)

目录 IT入门知识大纲第三部分《软件开发》 1. 软件开发生命周期(SDLC) 1.1 需求分析 1.2 软件设计 1.3 程序编码 1.4 软件测试 1.5 项目部署 1.6 运行维护 2. 软件开发方法论 2.1 瀑布模型 2.2 敏捷开发 2.2.1 Scrum 2.2.2 Kanban 2.3 Dev…

ip地址b类和c类的区别是什么?体现在哪里

在数字化时代的浪潮中,IP地址扮演着不可或缺的角色。它们不仅是设备在网络中的唯一标识,更是网络连接和信息传输的基石。然而,对于非专业人士来说,IP地址的复杂分类可能会显得有些晦涩难懂。今天,我们就来深入探索IP地…

C#语言中的Async/await最佳实践

自从 C# 5 中引入 async/await 以来,开发人员之间一直对 async/await 关键字的最佳实践以及幕后实际发生的事情感到困惑。 让我们先从基础开始。 在 Windows 窗体的早期,UI 延迟与 I/O 操作所花费的时间成正比。这意味着,如果您尝试将数据保…

【ONE·基础算法 || 记忆化搜索】

总言 主要内容:编程题举例,熟悉理解记忆化搜索类题型(对比递归、动态规划理解运用)。             文章目录 总言1、记忆化搜索1.1、基本介绍1.2、细节理解(记忆搜索化、递归、动态规划……) 2、斐…

如何通过小猪APP分发轻松实现Web封装APP

你有没有想过将你的网站或者Web应用变成一个真正的APP?这听起来可能有点复杂,但其实在今天的技术环境下,这已经变得非常简单了。特别是有了像小猪APP分发这样的工具,你可以轻松地将你的Web应用封装成一个APP。 为什么要将Web应用封…

Java学习55-super关键字的使用

1.举例1:子类继承父类以后,对父类方法进行了重写,那么在子类中,是否还可以对父类中被重写的方法进行调用? 可以! 举例2:子类继承父类以后,发现子类和父类中定义了同名的属性&#xf…

示例:WPF中在没有MouseDoubleClick的控件中如何识别双击

一、目的&#xff1a;由于MouseDoubleClick控件是在Control中实现&#xff0c;那么在底层控件如Grid中想要类似功能如何实现&#xff0c;这里通过MouseDown的事MouseButtonEventArgs参数去实现 二、实现 定义Grid并注册Grid的MouseDown事件 <Grid Background"Transpa…

Android如何简单快速实现RecycleView的拖动重排序功能

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 要实现这个拖动重排序功能&#xff0c;主要是用到了RecycleView的ItemTouchHelper类 首先是定义一个接口 interface ItemTouchHelperAdapter …

哈尔滨等保测评如何办理

随着人们对网络安全的认识日益加深&#xff0c;越来越多的企业和组织开始重视网络安全等级保护工作。在哈尔滨地区&#xff0c;为了保证网络的安全&#xff0c;等保测评是保障网络安全的重要一环。本文对哈尔滨等保测评的流程、测评具体内容以及注意事项进行了详细地阐述。 一…

0X0-基于Sklearn的机器学习入门:聚类(上)

本节及后续章节将介绍深度学习中的几种聚类算法&#xff0c;所选方法都在Sklearn库中聚类模块有具体实现。本节为上篇&#xff0c;将介绍几种相对基础的聚类算法&#xff0c;包括K-均值算法和均值漂移算法。 目录 X.1 聚类概述 X.1.1 聚类的种类 X.1.2 Sklearn聚类子模块 …

纯css实现炫光流彩Button

正文 先看效果 实现思路 不仔细看的话还以为只需要通过animation与text-shadow、box-shadow、background-image就可以实现 仔细看的话会发现&#xff0c;其实按钮的颜色不是简单的渐变&#xff0c;而是从一侧颜色开始变化&#xff0c;渐渐的颜色蔓延到另一侧&#xff0c;之后…

【机器学习】第10章 聚类算法

一、概念 1.聚类 &#xff08;1&#xff09;是无监督学习&#xff0c;其实无监督学习就是无中生有&#xff0c;不给你标准答案&#xff08;标签啊啥的&#xff09;&#xff0c;然后让你自己来。 &#xff08;2&#xff09;聚类就是这样&#xff0c;让机器自己根据相似特征把相…

WACV2024 分割相关论文摘要小结速览67篇

WACV2024 分割相关论文摘要小结速览 Paper1 Robust Source-Free Domain Adaptation for Fundus Image Segmentation 摘要小结: 无监督域自适应&#xff08;UDA&#xff09;是一种学习技术&#xff0c;它将源域中从标记训练数据学习到的知识转移到只有未标记数据的目标域。这对…

星际航行概论分享

作者最近看到了一篇钱学森的著作《星际航行概论》 PDF格式下载&#xff1a; 星际航行概论.pdf: https://url83.ctfile.com/f/45573183-1272939884-48f07e?p7526 (访问密码: 7526)

【GlobalMapper精品教程】085:coverage格式转shp案例教程

文章目录 一、Coverage格式介绍二、globalmapper转换shp1. 加载coverage2. coverage转shp一、Coverage格式介绍 Coverage 是一种用于存储矢量数据的地理相关数据模型,它包含地理要素的空间(位置)数据和属性(描述性)数据。Coverage 使用一组要素类来表示地理要素。每个要素…

【包管理】Node.JS与Ptyhon安装

文章目录 Node.JSPtyhon Node.JS Node.js的安装通常包括以下几个步骤&#xff1a; 访问Node.js官网&#xff1a; 打开Node.js的官方网站&#xff08;如&#xff1a;https://nodejs.org/zh-cn/download/&#xff09;。 下载安装包&#xff1a; 根据你的操作系统选择对应的Node…

在Windows环境下设置定时任务(任务计划程序)(Python)

文章目录 前言一、准备执行的test.py文件二、准备test.bat批处理文件&#xff08;系统环境变量&#xff09;三、设置定时任务&#xff08;任务计划程序&#xff09; 前言 计划任务是系统的常见功能&#xff0c;利用任务计划功能&#xff0c;可以将任何脚本、程序或文档安排在某…