Hadoop001存储模型

2023-11-05

HDFS
存储模型:
思想:1、化整为0 2、 并行计算

  • 第一步:如果一个文件非常非常大,单台服务器的内存无法处理这样一个大文件,无法一次性加载到内存中,可以对文件切割成若干个小文件。
  • 第二步:为了达到提升计算效果的目的,可以把切割的小文件分散发送到多台服务器之上,让服务器并行计算小文件,由于每台服务器它所计算得数据量比较小同时他们又是并行的,就可以达到分而治之的目的。
    以上即分布式存储和分布式计算。

文件线性切割成块,切割的单位叫做块;块分散存储在集群节点中

  • 按照字节来切割,对于计算机来说无论什么数据最终都会转换成01的模式来存储,所以底层的单位为字节。

hdfs以字节数组的方式切割。

  • 假设一整个文件大小为100byte,按照每个块存储大小为10个字节,此时可以切割10个块。
    (一个汉字对于utf-8编码来说中占三个字节,对GBK编码来说占两个字节,假定切割的块正好跨了字节就是某个字的第一个字节在第一块的末尾中,后两个字节在第二块的起始,此时分别读取的结果肯定会乱码,hdfs对这种情况做了纠正。)

偏移量:

  • 每一个切割后的块都有一个偏移量,块会分散散列在集群的节点之中。可能是第一台服务器处理第一个块,第二台服务器处理第二个块等等。
  • 假定有50台服务器,该文件切割成10块,只会把这10个块分散到10个服务器之上,一个节点一个。假定只有5个节点(即五台服务器)那么就是一个节点放置两个块,而且这种放置是无序的,并不是第一块第二块对应第一个节点,三四块对应第二个节点,而是任意放置的,只确保每个节点放置两块,达到负载均衡的效果。
  • 第一块的偏移量是0,第二块的偏移量取决于块的大小,假定每个块大小为10byte,那么第二个块的偏移量为10,第三个即20.。。。。。
  • 由于每个块散列在不同的节点上,根据每个块的偏移量设置就可以完成查询和归并的工作。
    单一文件Block大小一致,文件与文件可以不一致。
  • 在切割时每一个块的大小一致,最后一个块不确定(在不是整除的情况下有可能会比前几个块小一点)。但是如果是不同的文件,块的大小可以不一致,如果第一个文件按10个字节切割,第二个文件可能按50个字节切割

文件线性切割成块
块分散存储在集群节点中
Block可以设置副本数,副本无序分散在不同节点中。

  • 假定一个文件切成两块,为了避免某一节点挂掉(该节点的块也丢失),所以要对块做副本即备份。某一节点挂掉还可以从另一节点读取该块。
    hdfs默认副本数为3

副本数不要超过节点数量

  • 假定节点个数为3,副本数为4,则至少有一个节点的副本数量要为2,这种情况 是没有意义的,因为副本之间完全相同,一个节点挂掉,该节点的副本也跟着消失。

副本的目的是为了数据可靠,数据越大,完整性保障越小
副本数越多,对于计算性数据移动的成功率越大

  • 比如三个副本散列在三台服务器之上,如果你同时跑三个计算程序,这三个计算程序都成功移动到数据旁边,数据副本就在每台服务器之上,然后你每台服务器都跑一个程序,这三个程序肯定会开辟进程,占用本台服务器机器的资源,这时又要跑其他服务器的程序,如果这个块只有三个分身,那么程序肯定会向三个分身所在的节点疯狂的移动,程序过来计算肯定会开辟进程,结果资源占满了不够用了,那么程序就需要分布到其他节点,但其他节点没有该数据副本,所以需要移动数据块即数据性计算移动。
  • 所以如果节点当中有一笔作业,每天都有很多程序要用它,即这个块被很多程序所用,那么最好将该块的副本数量调高,散落在更多的节点之上,避免计算时只集中在某几个节点,造成资源的拥堵。

文件上传可以设置Block大小和副本数

  • hdfs默认块大小是128mb,副本数为3。如果设置的话范围需在1mb~128mb,已上传的文件block副本数可以调整(因为有可能有多个程序要计算这些副本数据,为了提高效率,可以通过提升副本数量,让他散落在更多的节点之上。副本数量越多并行计算的可能性越大),但是文件的大小不能改变。

只支持一次写入多次读取,同一时刻只有一个写入者。

  • 不允许修改文件块数据的内容。但是可以追加数据。因为追加不会影响到其他块的迁移问题。
  • 设想:每个节点散列着不同的块,假定其中一个块改变了,那么其他的块也会受到影响,偏移量也会跟着改变,所有块都要移动,那么整个集群就会被牵扯进来。如果很多人都并发修改这个文件,此时集群的所有的能力只能全部用来保证文件的一致性,维持文件的完整性,其他的计算无法进行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hadoop001存储模型 的相关文章

随机推荐

  • Git教程 - 如何新建干净的分支?(不基于其他分支)

    背景 分支整理 想要在原有GIT项目上创建一个新分支 但从浏览器端操作 发现都必须要基于其他分支创建 这样的话 新分支会包含旧分支的代码和历史提交信息 这里想创建一个空白的分支 尝试了以下方法解决 步骤 clone远程项目 git clon
  • Mybatis

    本文章根据尚硅谷在哔哩哔哩发布的视频的评论区中的网友 拂星星 提供的markdown文档整理而来 1 Mybatis简介 1 1 MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis 2010年6月这个项目由Apa
  • Vuforia——VuMark 的使用

    一 创建KEY就不详说了 二 创建VuMark图片 Download DataBase 将资源导入 unity 其中Gnerate VuMark用于下载供手机扫描的不同ID图片 三 将图中两个预制物拖入Hierarchy中 填入key 勾选
  • [激光原理与应用-51]:《激光焊接质量实时监测系统研究》-2-激光焊接及其物理现象

    目录 2 1 激光焊接过程概述 2 1 1 激光焊接的特点 2 1 2 焊接质量的影响因素 2 1 3 激光焊接热源模型 2 1 4 激光焊接技术的发展前景与面临的挑战 2 2 激光焊接中的小孔效应及光致等离子体 2 2 1 激光焊接中的小
  • 什么是「推荐系统」,有哪些主要的推荐方法?

    1 什么是推荐系统 什么是推荐系统 根据维基百科的定义 它是一种信息过滤系统 主要功能是预测用户对物品 的评分和偏好 这一定义回答了推荐系统的功能是过滤信息 连接用户和推送信息 将这一定义扩 展一下 推荐系统就是自动联系用户和物品的一种工具
  • Win7系统提示Windows Defender无法扫描选定的文件解决方法

    Win7 64位系统提示 Windows Defender无法扫描选定的文件 怎么办呢 使用Windows Defender扫描文件 结果弹出如下图窗口 该怎么解决呢 参考下文 一起来解决Win7系统提示 Windows Defender无
  • 好玩的人脸识别小软件

    好玩的人脸识别小软件 前言 使用教程 1 软件代码 2 使用步骤 致谢 前言 在毕业的小空闲里面 利用pyqt写了一个简单实现人脸检测的小软件 非常好玩 推荐给大家玩一下 主要是利用Retinaface和Facenet实现人脸识别的 这两个
  • 将jpg格式的图片转换成eps

    bmeps c fig1 jpg fig1 eps
  • Python爬虫数据提取方式——-selenium爬虫框架中的数据提取方式

    介绍 selenium测试框架在爬虫中的应用 网页中通过js渲染的数据 爬虫的解决办法 1 去静态源码中查找 2 抓包或者网络请求中 查看是否有类似与json的get请求 直接请求这个json的API拿到数据 3 使用phantomjs s
  • element-ui 改变一行的样式row-style

    element ui 改变一行的样式row style 在工作过程中需要改变elementui的row style 在百度上查了很久结果都是一样的 rowStyle row rowIndex if rowIndex 0 return col
  • 华为OD机试 - 事件推送(Python)

    题目描述 同一个数轴X上有两个点的集合A A1 A2 Am 和B B1 B2 Bn Ai和Bj均为正整数 A B已经按照从小到大排好序 A B均不为空 给定一个距离R 正整数 列出同时满足如下条件的所有 Ai Bj 数对 Ai lt Bj
  • LaTeX 排版常用技巧 - 逐渐积累

    1 箭头上的文字 你的文字 underrightarrow text 你的文字 你的文字 underrightarrow text 你的文字 更喜欢另一种方式 CPU stackr
  • 散列表查找成功和不成功时的平均查找长度

    已知散列表长度为13 散列函数为H key key 11 处理冲突的方法为线性探测法 请画出依次插入关键字 10 8 40 27 21 57 46 23 19 56 以后的散列表 并计算查找成功和不成功时的平均查找长度 解 散列表是哈希表的
  • 用Ajax实现不刷新页面修改内容

    趁今天有空 就学习了Ajax 在Ajax in action那本书里提到了SAjax 就去下来看看 果然功能强大 让编写Ajax代码变的很简单 于是就写了个 修改内容不刷新页面 的代码 这个功能在网上以前是到处看到 今天终于自己实现了个 代
  • Spring boot本地运行正常,请求正常,打包后运行正常,但是请求报错:invalid bound statement (not found) 的问题

    Spring boot本地运行请求正常 打包后运行正常 但是请求报错 invalid bound statement not found 的问题 问题场景 项目结构 初步分析 接着踩坑 原因 个人问题 总结 问题场景 这个问题发生在我准备将
  • 数据仓库、数据开发面经

    目录 一 前言 二 关于内推or猎头or招聘软件的选择 三 面试形式 四 面试流程选择
  • 【经典蓝牙】 蓝牙HFP层协议分析

    HFP 概述 HFP概念介绍 HFP Hands Free Profile 是蓝牙免提协议 可以让蓝牙设备对对端蓝牙设备的通话进行控制 例如蓝牙耳机控制手机通话的接听 挂断 拒接 语音拨号等 HFP中蓝牙两端的数据交互是通过定义好的AT指令
  • Symbol SysTick_Handler multiply defined (by port.o and bsp_timer.o).

    Symbol SysTick Handler multiply defined by port o and bsp timer o Symbol PendSV Handler multiply defined by port o and s
  • PADS9.5光绘文件输出教程

    目录 光绘文件输出前准备 先执行灌铜 特别注意混合分割层 开短路检查 注意安全间距的验证选项 光绘文件生成 线层 丝印层 阻焊层 钢网层 钻孔图 数控钻孔 线层 阻焊层 丝印层 钢网层GERBER系统生成 钻孔图和数控钻孔生成 对软件生成光
  • Hadoop001存储模型

    HDFS 存储模型 思想 1 化整为0 2 并行计算 第一步 如果一个文件非常非常大 单台服务器的内存无法处理这样一个大文件 无法一次性加载到内存中 可以对文件切割成若干个小文件 第二步 为了达到提升计算效果的目的 可以把切割的小文件分散发