【大数据处理技术】第二篇 大数据存储与管理(持续更新)

news2024/11/23 15:15:01

文章目录

  • 第3章 分布式文件系统HDFS
    • 3.1 分布式文件系统
      • 3.1.1 计算机集群结构
      • 3.1.2 分布式文件系统的结构
      • 3.1.3 分布式文件系统的设计需求
    • 3.2 HDFS
      • 3.2.1 HDFS 简介及相关概念
      • 3.2.2 HDFS 体系结构
      • 3.2.3 HDFS 存储原理
      • 3.2.4 HDFS 数据读写过程
      • 3.2.5 HDFS 编程实践
  • 第4章 分布式数据库HBase
    • 4.1 HBase 概述
      • 4.1.1 HBase 简介
    • 4.2 HBase 数据模型
      • 4.2.1 数据模型概述
      • 4.2.2 数据模型的相关概念
      • 4.2.3 数据坐标
      • 4.2.4 概念视图
      • 4.2.5 物理视图
      • 4.2.6 面向列的存储
    • 4.3 HBase 实现原理
    • 4.4 HBase 运行机制
    • 4.5 HBase 编程实践
  • 第5章 NoSQL数据库
  • 第6章 云数据库

第3章 分布式文件系统HDFS

3.1 分布式文件系统

  • 分布式文件系统:通过网络实现文件在多台主机上进行分布式存储的文件系统
  • 分布式文件系统设计一般采用 “客户机/服务器” 模式
  • 广泛应用的分布式文件系统:GFS 和 HDFS

3.1.1 计算机集群结构

  • 计算机节点、机架、交换机
    在这里插入图片描述

3.1.2 分布式文件系统的结构

  • 数据块是数据读写的基本单元

  • 分布式文件系统的物理结构:

    • 主节点/名称节点:负责文件和目录的创建、删除、重命名;管理数据节点和文件块的映射关系
    • 从节点/数据节点:负责数据的存储、读取
      在这里插入图片描述
  • 故障应对:多副本存储

  • 分布式文件系统针对大规模数据设计,用于处理大规模文件

3.1.3 分布式文件系统的设计需求

  • 透明性
  • 并发控制
  • 文件复制
  • 硬件和操作系统的异构性
  • 可伸缩性
  • 容错
  • 安全

3.2 HDFS

3.2.1 HDFS 简介及相关概念

  • HDFS 原是 Apache Nutch 搜索引擎的一部分,现是 Apache 子项目
  • HDFS + MapReduce ≈ Hadoop
  • HDFS 实现目标:
    • 兼容廉价的硬件设备
    • 流数据读写
    • 大数据集
    • 简单的文件模型
  • HDFS 应用局限:
    • 不适合低延迟数据访问
    • 无法高效存储大量小文件
    • 不支持多用户写入及任意修改文件

1. 块

  • 以块为单位读写数据 ,把磁盘寻道时间分摊到大量数据中
    • HDFS 寻址开销包括:磁盘寻道开销、数据块定位开销
    • HDFS 默认数据块大小64MB/128MB
  • HDFS 采用块概念的好处:
    • 支持大规模文件存储
    • 简化系统设计
    • 适合数据备份

2. 名称节点和数据节点

(1)名称节点

  • 名称节点(NameNode)负责管理分布式文件系统的命名空间 (Namespace),保存了两个核心的数据结构:FsImage 和 EditLog
    • FsImage用于维护文件系统树以及文件树中所有的文件和文件夹的元数据
    • 操作日志文件EditLog中记录了所有针对文件的创建、删除、重命名等操作
  • 名称节点记录了每个文件中各个块所在的数据节点的位置信息
    在这里插入图片描述
  • FsImage文件
  • 名称节点的启动
  • 名称节点运行期间EditLog不断变大的问题【第二名称节点】

(2)数据节点

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

3. 第二名称节点

  • 第二名称节点是HDFS架构中的一个组成部分,它是用来保存名称节点中对HDFS 元数据信息的备份,并减少名称节点重启的时间。SecondaryNameNode一般是 单独运行在一台机器上、
  • SecondaryNameNode的工作情况:
    • (1)SecondaryNameNode会定期和 NameNode通信,请求其停止使用EditLog 文件,暂时将新的写操作写到一个新的文件 edit.new上来,这个操作是瞬间完成,上层 写日志的函数完全感觉不到差别
    • (2)SecondaryNameNode通过HTTP GET方式从NameNode上获取到FsImage和 EditLog文件,并下载到本地的相应目录下
    • (3)散SecondaryNameNode将下载下 来的FsImage载入到内存,然后一条一条地 执行EditLog文件中的各项更新操作,使得 内存中的FsImage保持最新;这个过程就是 EditLog和FsImage文件合并
    • (4)SecondaryNameNode执行完③操作之后,会通过post方式将新的 FsImage文件发送到NameNode节点上
    • (5)NameNode将从 SecondaryNameNode接收到的新的 FsImage替换旧的FsImage文件,同时将 edit.new替换EditLog

3.2.2 HDFS 体系结构

  • HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群包括一个名称节点(NameNode)和若干个数据节点(DataNode)
  • 名称节点:作为中心服务器,负责管理文件系统的命名空间及客户端 对文件的访问。
  • 数据节点:
    • 集群中的数据节点,一个节点运行一个数据节点进程
    • 数据节点负责处理文件系统客户端的读/写请求,在名称节点的统一调度下进行数 据块的创建、删除和复制等操作
    • 每个数据节点的数据实际上是保存在本 地Linux文件系统中的
      在这里插入图片描述

1. HDFS 命名空间管理

  • HDFS 命名空间包括:目录、文件、块
  • 命名空间管理:命名空间支持对HDFS中的目录、文件、块,做类似文件系统的创建、修改、删除等基本操作
  • HDFS使用传统的分级文件体系,用户可以像使用普通文件系统一样,创建、删除目录和文件,在目录间转移文件,重命 名文件等

2. 通信协议

  • HDFS是一个部署在集群上的分布式文件系统,很多数据需要通过网络进行传输
  • 所有的HDFS通信协议都是构建在TCP/IP协议基础之上的
  • 客户端通过一个可配置的端口向名称节点主动发起TCP连接,并使用客户端协议与名称节点进行交互
  • 名称节点和数据节点之间使用数据节点协议进行交互
  • 客户端与数据节点的交互是通过RPC(Remote Procedure Call)来实现的
  • 在设计上,名称节点不会主动发起RPC,而是响应来自客户端和数据节点的RPC请求

3. 客户端

  • 客户端:用户操作HDFS常用方式,HDFS在部署时提供客户端
  • HDFS客户端是一个库,暴露了HDFS文件系统接口,这些接口隐藏了HDFS实现中的大部分复杂性
  • 严格来说,客户端并不算是HDFS的一部分
  • 客户端可以支持打开、读取、写入等常见的操作,并且提供了 类似Shell的命令行方式来访问HDFS中的数据
  • 此外,HDFS也提供了Java API,作为应用程序访问文件系统的 客户端编程接口

4. HDFS 体系结构的局限性

  • HDFS 只设置位移名称节点,简化了系统设计,同时有明显局限性:
    • 命名空间的限制
    • 性能的瓶颈
    • 隔离问题
    • 集群的可用性

3.2.3 HDFS 存储原理

1. 数据的冗余存储

  • HDFS 采用多副本方式,对数据进行冗余存储
  • 目的:保证系统的容错性和可用性
  • 多副本方式优点:
    • 加快数据传输速度
    • 容易检查数据错误
    • 保证数据的可靠性
      在这里插入图片描述

2. 数据存取策略

  • 数据存放

    • 第一个副本:放置在上传文件的数据节点;如果是集群外提交,则随机挑选一台磁盘不太满、CPU不太忙的节点
    • 第二个副本:放置在与第一个副本不同的机架的节点上
    • 第三个副本:与第一个副本相同机架的其他节点上
    • 更多副本:随机节点
      在这里插入图片描述
  • 数据读取

    • HDFS提供了一个API可以确定一个数据节点所属的机架ID,客户端也可以调用API获取自己所属的机架ID
    • 当客户端读取数据时,从名称节点获得数据块不同副本的存放位置列表, 列表中包含了副本所在的数据节点,可以调用API来确定客户端和这些 数据节点所属的机架ID,当发现某个数据块副本对应的机架ID和客户端 对应的机架ID相同时,就优先选择该副本读取数据,如果没有发现,就 随机选择一个副本读取数据
  • 数据复制

3. 数据错误与恢复

  • 名称节点出错
    • 名称节点保存了所有的元数据信息,其中,最核心的两大数据 结构是FsImage和Editlog,如果这两个文件发生损坏,那么整个 HDFS实例将失效。
    • 因此,HDFS设置了备份机制,把这些核心文件 同步复制到备份服务器SecondaryNameNode上。
    • 当名称节点出错时, 就可以根据备份服务器SecondaryNameNode中的FsImage和Editlog 数据进行恢复
  • 数据节点出错
    • 每个数据节点会定期向名称节点发送“心跳”信息,向名称节点报告自 己的状态
    • 当数据节点发生故障,或者网络发生断网时,名称节点就无法收到来自一些数据节点的心跳信息,这时,这些数据节点就会被标记为“宕机”, 节点上面的所有数据都会被标记为“不可读”,名称节点不会再给它们 发送任何I/O请求
    • 这时,有可能出现一种情形,即由于一些数据节点的不可用,会导致一 些数据块的副本数量小于冗余因子
    • 名称节点会定期检查这种情况,一旦发现某个数据块的副本数量小于冗 余因子,就会启动数据冗余复制,为它生成新的副本
    • HDFS和其它分布式文件系统的最大区别就是可以调整冗余数据的位置
  • 数据出错
    • 网络传输和磁盘错误等因素,都会造成数据错误
    • 客户端在读取到数据后,会采用md5和sha1对数据块进行校验,以确定读取到正确的数据
    • 在文件被创建时,客户端就会对每一个文件块进行信息摘录,并把这些信息 写入到同一个路径的隐藏文件里面
    • 当客户端读取文件的时候,会先读取该信息文件,然后,利用该信息文件对每个读取的数据块进行校验,如果校验出错,客户端就会请求到另外一个数据节点读取该文件块,并且向名称节点报告这个文件块有错误,名称节点会定期检查并且重新复制这个块

3.2.4 HDFS 数据读写过程

  1. 读数据过程
  2. 写数据过程

3.2.5 HDFS 编程实践

  1. HDFS 常用命令
  2. HDFS 的Web页面
  3. HDFS 常用Java API 及应用实例

第4章 分布式数据库HBase

4.1 HBase 概述

4.1.1 HBase 简介

  • HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,是谷歌BigTable的 开源实现,主要用来存储非结构化和半结构化的松散数据。HBase的目标是处理非常 庞大的表,可以通过水平扩展的方式,利用廉价计算机集群处理由超过10亿行数据和 数百万列元素组成的数据表
    在这里插入图片描述

4.2 HBase 数据模型

4.2.1 数据模型概述

4.2.2 数据模型的相关概念

4.2.3 数据坐标

4.2.4 概念视图

4.2.5 物理视图

4.2.6 面向列的存储

4.3 HBase 实现原理

4.4 HBase 运行机制

4.5 HBase 编程实践


第5章 NoSQL数据库


第6章 云数据库


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

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

相关文章

独立产品灵感周刊 DecoHack #038 - 纽约市 90 年代的街景长什么样

本周刊记录有趣好玩的独立产品设计开发相关内容,每周发布,往期内容同样精彩,感兴趣的伙伴可以点击订阅我的周刊。为保证每期都能收到,建议邮件订阅。欢迎通过 Twitter 私信推荐或投稿。产品推荐 1. 1940s.nyc - 这个网站可以看到…

Python版本机访问GEE,CoLab配置

一、本机Jupyter notebook访问GEE 首先感谢知乎这两篇文章提供的解决思路: Python版GEE学习笔记(一)-环境配置 - 知乎 GEE之Python学习——前期准备工作 - 知乎 前期尝试解决: 1. Anaconda 安装,重新创建虚拟环境…

2021年度聚合支付评级如何?

截至2022年11月15日,完成收单外包服务备案机构为15041家,其中含聚合支付类型的机构为481家。 2022年11月15日,中国支付清算协会正式发布了2021年度收单外包服务机构评级等级消息。显示共有包括银行和非银行支付机构在内的143家收单机构对958…

element-plus table组件单击行切换选中状态、点击高亮行、设置shift或ctrl连续多选和连续取消多选(支持多段选择)

演示效果 需求逻辑: 单击行切换选中状态不按住shift或者ctrl键点击一行,设置该行高亮,该行将作为起始行连续多选:高亮行作为起始位置,按住shift或者ctrl键后选中行作为结束位置,结束位置未勾选则连续多选…

第2-3-8章 分片上传和分片合并的接口开发-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss

文章目录5.10 接口开发-分片上传5.10.1 分片上传介绍5.10.2 前端分片上传插件webuploader5.10.3 后端代码实现5.10.3.1 接口文档5.10.3.2 代码开发5.10.3.3 接口测试5.11 接口开发-分片合并5.11.1 FileChunkStrategy5.11.2 AbstractFileChunkStrategy5.11.3 LocalChunkServiceI…

OpenFeign源码1-环境搭建及核心类说明

0. 环境 nacos版本:1.4.1Spring Cloud : Hoxton.SR9(没用2020.0.2版本后面说明)Spring Boot :2.4.4Spring Cloud alibaba: 2.2.5.RELEASESpring Cloud openFeign 2.2.2.RELEASE 测试代码:github.com/hsfxuebao/s… 20…

WebDAV之葫芦儿·派盘+PassStore

PassStore 支持webdav方式连接葫芦儿派盘。 大家常用的qq,手机微信,新浪微博等。假如各个网址都设成同样的帐号和登陆密码,一旦某一帐户泄漏了,别的平台上的账户密码都有被撞库攻击的风险。在不一样的站点设定不一样的高韧性登陆密码才算是最安全可靠的确保,殊不知这般繁…

c++调用tf.keras的模型

​ 环境: ubuntu 20.04 python 3.8 tensorflow-gpu 2.4.0 显卡 nvidia rtx A6000 驱动 495.29.05 cuda 11.5 cudnn 8.3.0 tensorRT 8.4 1.将keras保存的h5模型转成darknet的weight,然后用opencv加载 cv::dnn::Net net cv::dnn::readNetFromDar…

链表中快慢指针的应用

目录 一、链表的中间结点 二、回文链表 三、链表中倒数第K个结点 四、删除链表的倒数第n个结点 一、链表的中间结点 给定一个头结点为 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 先设置两个low和fast都指…

【MySQL】测试题03

文章目录1、创建数据库2、使用数据库3、创建数据表【3.1】创建学生信息表Student【3.2】创建课程信息表Course【3.3】创建教师信息表Teacher【3.4】创建成绩信息表Score4、添加数据【4.1】向学生student表添加数据【4.2】向课程course表添加数据【4.3】向教师信息teacher表添加…

【动手学深度学习】softmax回归的从零开始实现(PyTorch版本)(含源代码)

目录:softmax回归的从零开始实现一、理论基础1.1 前言1.2 分类问题1.3 网络架构1.4 全连接层的参数开销1.5 softmax运算1.6 小批量样本的矢量化1.7 损失函数1.7.1 对数似然1.7.2 softmax及其导数1.7.3 交叉熵损失1.8 信息论基础1.8.1 熵1.8.2 信息量1.8.3 重新审视交…

19 02-检索满足客户端定义的状态掩码的DTC列表

诊断协议那些事儿 诊断协议那些事儿专栏系列文章,19服务作为UDS中子功能最多的服务,一共有28种子功能,本文将介绍常用的19 02服务:根据状态掩码读取DTC列表。 关联文章: 19服务List 19 01-通过状态掩码读取DTC数目 …

详细教程。2022年滁州市明光市、来安县等各地区高新技术企业申报

安徽省大力鼓励企业申报高新技术企业,于高企申报也有很多奖补。滁州市企业申报奖补政策发布,企业可以根据自身情况申请奖补,奖补金额为10万元至30万元不等,明光市,凤阳县等各地区奖补申请可以通过市级机关办理。 下面小…

跟艾文学编程《Python数据可视化》(01)基于Plotly的动态可视化绘图

作者:艾文,计算机硕士学位,企业内训讲师和金牌面试官,公司资深算法专家,现就职BAT一线大厂。邮箱:1121025745qq.com博客:https://wenjie.blog.csdn.net/内容:跟艾文学编程《Python数…

2022-11-21 mysql列存储引擎-架构实现缺陷梳理-P2

摘要: 收集现有代码的糟糕实现,前事不忘后事之师,把这些烂东西定死在耻辱柱上以免再次发生 糟糕的设计: 一. DGMaterializedIterator::GetNextPackrow 函数实现: int DimensionGroupMaterialized::DGMaterializedIterator::GetNextPackrow(int dim, int…

【Linux系统】第一篇:基础指令篇

文章目录一、Linux中的文件二、Linux用户三、Linux基本指令ls指令pwd命令cd指令touch指令mkdir指令rmdir指令rm 指令man指令cp指令mv指令cat指令tac指令more指令less指令head指令tail指令管道重定向date指令cal指令find指令which指令alias指令whereis指令grep指令wc指令sort指令…

Node的web编程(二)

一、JSON数据 1、定义 JavaScript Object Notation,是一种轻量级的前后端数据交换的格式(数据格式)。 2、特点 (1)容易阅读和编写 (2)语言无关性 (3)便于编译、解析 3、语法要求 &#…

Mac m1配置flutter开发环境

Mac m1配置flutter开发环境 文章目录Mac m1配置flutter开发环境一、下载Android Studio二、下载flutter sdk三、新建flutter project四、使用在线环境进行Flutter开发Dart在线运行环境Flutter在线运行环境一、下载Android Studio 进入官网下载,选择苹果芯片版本。 …

【Spring(三)】熟练掌握Spring的使用

有关Spring的所有文章都收录于我的专栏:👉Spring👈 目录 一、前言 二、通过静态工厂获取对象 三、通过实例工厂获取对象 四、通过FactoryBean获取对象 五、Bean配置信息重用 六、Bean创建顺序 七、Bean对象的单例和多例 八、Bean的生命周期 九…

Weblogic SSRF 漏洞(CVE-2014-4210)分析

Weblogic SSRF 漏洞是一个比较经典的SSRF 漏洞案例,该漏洞存在于 http://127.0.0.1:7001/uddiexplorer/SearchPublicRegistries. jsp 页面中,如图 1-1 所示图 1-1 Weblogic SSRF 漏洞Weblogic SSRF 漏洞可以通过向服务端发送以下请求参数进行触发&#x…