精华内容
下载资源
问答
  • 列式数据库存储原理 据库存储原理 存储原理 列式数据库存储原理 列式数据库存储原理
  • 主流存储原理

    2017-10-09 14:49:56
    File, block, 对象存储 原理存储架构, Ceph/ EMC VNX unified
  • 计算机存储原理.pdf

    2021-10-06 17:26:07
    计算机存储原理.pdf
  • U盘存储原理.docx

    2021-09-27 01:54:05
    U盘存储原理.docx
  • hadoop hdfs存储原理

    千次阅读 2017-08-25 10:19:43
    hadoop的hdfs存储原理,hdfs的存储原理,hdfs的底层存储原理

    来源url:http://www.36dsj.com/archives/41391


    根据Maneesh Varshney的漫画改编,以简洁易懂的漫画形式讲解HDFS存储机制与运行原理。

    一、角色出演

    角色
    如上图所示,HDFS存储相关角色与功能如下:

    Client:客户端,系统使用者,调用HDFS API操作文件;与NN交互获取文件元数据;与DN交互进行数据读写。

    Namenode:元数据节点,是系统唯一的管理者。负责元数据的管理;与client交互进行提供元数据查询;分配数据存储节点等。

    Datanode:数据存储节点,负责数据块的存储与冗余备份;执行数据块的读写操作等。

    二、写入数据

    1、发送写数据请求

    发送写数据请求
    HDFS中的存储单元是block。文件通常被分成64或128M一块的数据块进行存储。与普通文件系统不同的是,在HDFS中,如果一个文件大小小于一个数据块的大小,它是不需要占用整个数据块的存储空间的。

    2、文件切分

    文件切割
    3、DN分配

    DN分配1 DN分配2
    4、数据写入

    数据写入1 数据写入2
    5、完成写入

    完成写入1 完成写入2 完成写入3
    6、角色定位

    角色定位

    三、HDFS读文件

    1、用户需求

    用户需求
    HDFS采用的是“一次写入多次读取”的文件访问模型。一个文件经过创建、写入和关闭之后就不需要改变。这一假设简化了数据一致性问题,并且使高吞吐量的数据访问成为可能。

    2、先联系元数据节点

    联系元数据节点1 联系元数据节点2 联系元数据节点2
    3、下载数据

    下载数据
    前文提到在写数据过程中,数据存储已经按照客户端与DataNode节点之间的距离进行了排序,距客户端越近的DataNode节点被放在最前面,客户端会优先从本地读取该数据块。

    4、思考

    思考

    四、HDFS容错机制——第一部分:故障类型及监测方法

    1、三类故障

    (1)第一类:节点失败

    节点失败
    (2)第二类:网络故障

    网络故障
    (3)第三类:数据损坏(脏数据)

    数据损坏
    2、故障监测机制

    (1)节点失败监测机制

    节点失败检测机制1 节点失败检测机制2 节点失败检测机制3
    (2)通信故障监测机制

    通信故障检测机制
    (3)数据错误监测机制


    数据错误检测机制1 数据错误检测机制2 数据错误检测机制3
    3、回顾:心跳信息与数据块报告

    回顾:心跳信息与数据块报告
    HDFS存储理念是以最少的钱买最烂的机器并实现最安全、难度高的分布式文件系统(高容错性低成本),从上可以看出,HDFS认为机器故障是种常态,所以在设计时充分考虑到单个机器故障,单个磁盘故障,单个文件丢失等情况。

    五、容错第二部分:读写容错

    1、写容错

    写容错1 写容错2 写容错3 写容错4
    2、读容错

    读容错 读容错2

    六、容错第三部分:数据节点(DN)失效

    数据节点(DN)失效1 数据节点(DN)失效2 数据节点(DN)失效3 数据节点(DN)失效4 数据节点(DN)失效5 数据节点(DN)失效6

    七、备份规则

    备份规则
    1、机架与数据节点

    1、机架与数据节点
    2、副本放置策略

    2、副本放置策略
    数据块的第一个副本优先放在写入数据块的客户端所在的节点上,但是如果这个客户端上的数据节点空间不足或者是当前负载过重,则应该从该数据节点所在的机架中选择一个合适的数据节点作为本地节点。

    如果客户端上没有一个数据节点的话,则从整个集群中随机选择一个合适的数据节点作为此时这个数据块的本地节点。

    数字节点放置
    HDFS的存放策略是将一个副本存放在本地机架节点上,另外两个副本放在不同机架的不同节点上。

    这样集群可在完全失去某一机架的情况下还能存活。同时,这种策略减少了机架间的数据传输,提高了写操作的效率,因为数据块只存放在两个不同的机架上,减少了读取数据时需要的网络传输总带宽。这样在一定程度上兼顾了数据安全和网络传输的开销。

    DN节点选取 细则via:京东大数据                                                                                                                                        
    End. 

    展开全文
  • 列式数据库存储原理.pdf
  • 计算机组成原理(42半导体存储原理与存储芯片).pdf4.2 半导体存储原理及存储芯片目前,几乎所有的主存储器都采用半导体存储芯片构成。哈尔滨工程大学计算机科学与技术学院 姚爱红半导体存储器的分类TTL型双极型 速度...

    计算机组成原理(42半导体存储原理与存储芯片).pdf

    4.2 半导体存储原理及存储芯片

    目前,几乎所有的主存储器都采用

    半导体存储芯片构成。

    哈尔滨工程大学计算机科学与技术学院 姚爱红

    半导体存储器的分类

    TTL型

    双极型 速度很快、功耗大、

    ECL型 容量小

    工艺

    PMOS

    功耗小、容量大

    电路结构 NMOS

    (静态MOS除外)

    MOS型 CMOS

    静态MOS

    工作方式

    动态MOS

    哈尔滨工程大学计算机科学与技术学院 姚爱红 2

    半导体存储器的分类(续)

    静态存储器SRAM (双极型、静态MOS型):

    依靠双稳态电路内部交叉反馈的机

    存储信 制存储信息。

    息原理 功耗较大,速度快,作Cache。

    动态存储器DRAM (动态MOS型):

    依靠电容存储电荷的原理存储信息。

    功耗较小,容量大,速度较快,作主存。

    哈尔滨工程大学计算机科学与技术学院 姚爱红 3

    4.2.1 双极型存储单元与芯片

    双极型存储器有TTL型与ECL型两种,工作速度快,但功耗

    大、集成度较低,适于做小容量快速存储器,如高速缓冲

    存储器或集成化通用寄存器组。

    存储 存储

    单元 芯片

    哈尔滨工程大学计算机科学与技术学院 姚爱红 4

    4.2.2 静态MOS存储单元与芯片

    1.六管单元 W Vcc W

    (1)组成

    T3 T4

    T1、T3:MOS反相器 T5 T6

    T2、T4:MOS反相器

    T1 T2

    触发器

    T5、T6:控制门管

    Z

    Z:字线,选择存储单元

    W、W :位线,完成读/写操作

    (2)定义

    “0” :T1导通,T2截止;

    “1” :T1截止,T2导通。

    展开全文
  • 主要介绍了python变量的存储原理详解,对于python而言,python的一切变量都是对象,变量的存储,采用了引用语义的方式,存储的只是一个变量的值所在的内存地址,而不是这个变量的只本身,需要的朋友可以参考下
  • 磁盘信息的存储原理

    2016-03-02 09:17:49
    磁盘信息的存储原理 《电脑知识》刊载电子版文件
  • HBase存储原理、读写原理以及flush和合并过程 文章目录`HBase`存储原理、读写原理以及`flush`和合并过程`HBase`存储原理(架构)`HBase`读原理`HBase`写原理`HBase`数据`flush`刷写过程`HBase`数据`compaction`合并...

    HBase存储原理、读写原理以及flush和合并过程


    HBase存储原理(架构)

    1

    HBase依赖于ZookeeperHadoop的,所以在启动HBase前需要启动ZookeeperHadoop

    HMaster用于管理整个HBase集群,即管理每个HRegionServer,它掌握着整个集群的元数据信息,同时会将相应的数据存储到Zookeeper(元数据信息、高可用信息等)。

    • HMaster的职责:
    • 1)管理用户对Table的增、删、改、查操作;
    • 2)记录 region在哪台 Hregion server 上;
    • 3)Region Split 后,负责新 Region 的分配;
    • 4)新机器加入时,管理 HRegion Server 的负载均衡,调整Region分布;
    • 5)HRegion Server 宕机后,负责失效 HRegion Server 上的Regions 迁移。

    HRegionServer是每台机器上的一个Java进程(一台机器只有一个HRegionServer进程),用来处理客户端的读写请求(和HadoopDataNode类似),并维护着元数据信息。

    • HRegionServer的职责:
    • 1) HRegion Server 主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是 HBASE中最核心的模块。
    • 2) HRegion Server 管理了很多 table 的分区,也就是region

    每个HRegionServer有一个HLog(有且仅有一个)。HLog是操作日志,用来做灾难恢复的,当客户端发起一个写请求时,会先往HLog中写再往Memory Store中写。假设没有HLog,我们进行一个写请求,会首先写到Memory Store上,等到Memory Store到达一定容量后,才会flushStoreFile中。但是如果在这之前主机断电了呢?那这部分操作的数据全丢失了。这显然不是我们想到的结果,于是就有了HLog

    每个HRegionServer里面有多个HRegion,一个HRegion对应于HBase的一张表(也可能是表的一部分,因为表太大了会切分,表和HRegion的对应关系是一对多),当这张表到一定大小的时候会进行切分,切分成两个HRegion,切分出来的新的HRegion会保存到另一台机器上。每个HRegionServer里面有多个HRegion,可以理解为有多张表。

    每个HRegion里面有多个Store(一张表中有多个列族),一个Store对应于HBase一张表的一个列族,。按照这个原理,我们在设计列族的时候,可以把经常查询的列放在同一个列族,这样可以提高效率,因为同一个列族在同一个文件里面(不考虑切分)。

    每个Store有一个内存级别的存储Memory Store(有且仅有一个)。当Memory Store达到一定大小或一定时间后会进行数据刷写(flush),写到磁盘中(即HFile)。

    每个Store有多个磁盘级别的存储StoreFileMemory Store每刷写一次就形成一个StoreFileHFileStoreFileHDFS上的存储格式。

    HBase读原理

    2

    在上图中,我们模拟一下客户端读取数据过程,假设Zookeeper存放的meta表在RS1机器上,meta表存放的内容如下,Student表行键范围在1~100的存放在RS4上,在101~200的存放在RS3上,等等。

    meta表:
    _________________________________________________
    |    表名    |   rowkey范围    |     所在位置     |
    |____________|________________|_________________|
    |   Student  |    1 ~ 100     |       RS4       |
    |____________|________________|_________________|
    |   Student  |  101 ~ 200     |       RS3       |
    |____________|________________|_________________|
    |   Teacher  |    1 ~ 500     |       RS1       |
    |____________|________________|_________________|
    |                    ···                        |
    |_______________________________________________|
    

    客户端现在要读取Student表的第100行,具体步骤如下:

    1. 客户端向Zookeeper发起请求,请求元数据所在RegionServerZookeeper集群存放的是HBasemeta表所在位置。

    2. Zookeeper返回给客户端元数据所在RegionServer(即RS1)。

    3. 客户端收到应答后去请求RS1,请求查询Student表的rowkey=100数据所在位置。

    4.RS1上查询meta表可知该数据在RS4机器上,即返回给客户端rowkey所在位置(RS4)。

    5. 客户端收到应答后去请求RS4读数据。

    6. RS4查询数据返回给客户端。查询时先去内存(MemStore)查找,因为内存是最新的数据,如果找到了就返回结果,如果没找到则去缓存(cache)找,如果找到了就返回结果,如果还没找到就去磁盘(StoreFile)找,如果在磁盘找到了,则先将结果写入缓存(cache),再返回给客户端,写入缓存是为了下次查询提高效率。

    可以发现,在整个读过程中HMaster并没有参与,即读流程与HMaster无关,所以如果HMaster挂了,也是可以读数据的。

    HBase写原理

    3

    HBase的写是比读快的,为什么呢,看下面的写过程,同样假设Zookeeper存放的meta表在RS1机器上,meta表存放的内容如下,Student表行键范围在1~100的存放在RS4上,在101~200的存放在RS3上,等等。

    meta表:
    _________________________________________________
    |    表名    |   rowkey范围    |     所在位置     |
    |____________|________________|_________________|
    |   Student  |    1 ~ 100     |       RS2       |
    |____________|________________|_________________|
    |   Student  |  101 ~ 200     |       RS1       |
    |____________|________________|_________________|
    |   Teacher  |    1 ~ 500     |       RS1       |
    |____________|________________|_________________|
    |                    ···                        |
    |_______________________________________________|
    

    客户端现在要插入数据给Student表,其中rowkey=100,具体步骤如下:

    1. 客户端向Zookeeper发起请求,请求元数据所在RegionServerZookeeper集群存放的是HBasemeta表所在位置。

    2. Zookeeper返回给客户端元数据所在RegionServer(即RS1)。

    3. 客户端收到应答后去请求RS1,请求查询Student表的rowkey=100数据所在位置。

    4.RS1上查询meta表可知该数据在RS2机器上,即返回给客户端rowkey所在位置(RS2)。

    5. 客户端收到应答后去请求RS4写入数据。

    6. RS2收到请求,先将数据写入HLog,再将数据写入MemStore,写入MemStore后就返回给客户端写入成功信息,此时,客户端的写流程完成了。

    因为写入内存就结束了写流程,不用访问磁盘,所以总体比读流程是快一点的。

    同样,在整个写流程中HMaster也没有参与,所以如果HMaster挂了,也是可以进行写数据的。但是,如果时间长了,表的大小一直变大,而HMaster却挂了,即不会触发Region切分,这样就会导致数据倾斜,系统就变得不安全了。

    HBase数据flush刷写过程

    hbase-default.xml配置文件中有这么几项配置(见下面),只要regionserver其中某一个MemStore满足第一点或者第二点,都会进行regionserver级别的flush,即所有MemStore都要flush;而满足第三点的,就会进行HRegion级别的flush,即某个HRegion下的所有MemStore都要flush

    • hbase.regionserver.global.memstore.sizeregionServer的全局MemStore的大小,超过该大小会触发flush到磁盘的操作,默认值是堆大小的40%,而且regionserver级别的flush会阻塞客户端读写。说明白点就是当regionserver中所有Memstore的大小加起来达到了当前regionserver堆内存的40%就触发flush操作,不管MemStore有多小,每个MemStore都要进行flush到磁盘。
    • hbase.regionserver.optionalcacheflushinterval:内存中的文件在自动刷新之前能够存活的最长时间,默认是1h,也就是说,当regionserver中某个MemStore存活时间达到了1h,所有MemStore都会进行flush
    • hbase.hregion.memstore.flush.size:单个regionMemStore的缓存大小,超过了这个大小那么整个HRegion就会flush,默认大小为128M

    需要注意的是HBase的最小flush单元是HRegion而不是单个MemStore

    Flush是由HMaster触发的,Flush顺序是按照Memstore由大到小执行,先Flush Memstore最大的Region,再执行次大的,直至总体Memstore内存使用量低于阈值(hbase.regionserver.global.memstore.lowerLimit)。

    HBase数据compaction合并过程

    由于在flush过程中,可能会产生很多小文件(这很好理解,比如有两个MemStore,一个很大,一个很小,然后就触发了flush操作,那么那个小的就形成了小文件),我们都知道,HDFS不适合存储小文件,所以在写入HDFS之前会进行合并操作。

    hbase-default.xml配置文件中有这么几项配置:

    • hbase.hregion.majorcompaction:一个region进行 major compaction合并的周期,在这个点的时候, 这个region下的所有hfile会进行合并,默认是7天,major compaction非常耗资源,建议生产关闭(设置为0),在应用空闲时间手动触发。
    • hbase.hstore.compactionThreshold:一个store里面允许存的hfile的个数,超过这个个数会被写到新的一个hfile里面 也即是每个region的每个列族对应的memstorefulshhfile的时候,默认情况下当超过3hfile的时候就会对这些文件进行合并重写为一个新文件,设置个数越大可以减少触发合并的时间,但是每次合并的时间就会越长。

    在我们利用shell命令或者API删除数据的时候,数据并没有被删除,而是被打上标记,而是在这里的compaction合并过程中才会被完全删除。

    展开全文
  • 分布式存储原理

    千次阅读 2018-10-10 00:26:24
    分布式存储原理 1.当HDFS集群启动之时,DataNode会向NameNode发送信息,包括Block存储位置,DataNode地址。 2.Client向NameNode汇报当前上传文件的信息(Block数量、文件上传时间、文件权限、拥有着)。 2.1 Client将...

    一、HDFS原理

    1. 当HDFS集群启动之时,DataNode会向NameNode发送信息,包括Block存储位置,DataNode地址。
    2. Client向NameNode汇报当前上传文件的信息(Block数量、文件上传时间、文件权限、拥有着)。
      2.1 Client将大文件切割成一个个的block块(以字符为单位进行切割)。
    3. Client向NameNode发送请求,获得BlockId号,存储Block。
      3.1 Client拿到BlockId号和DataNode地址开始上传文件。
      1)NameNode返回给Client一批地址后,这些DataNode之间形成一个PipeLine管道。
      2)Client把Block块切割成一个个Packet(64K)不断地往管道中输送。这样可以实现并发执行存储 ,从而提高上传效率。

    1.数据备份机制

    考虑到数据安全问题,需要给数据进行备份,默认有两个副本文件。

    1. 第一个Block存储在负载不是很高的一台服务器上。
    2. 第一个备份文件Block存储在与第一个Block不同的机架随机一台服务器上。
    3. 第二个备份文件存储在与第一个备份文件相同机架上的随机一台服务器。

    2.持久化机制

    防止系统故障导致数据丢失,故采用持久化机制。

    1. 在NameNode启动的过程中,生成edits和fsimage两个空文件;
    2. SecondaryNameNode拉取edits文件进行重演从而产生元数据,然后元数据与fsimage合并完成后,将新的fsimage(fsimage.CheckPoint)推送给NameNode;
    3. 在SecondaryNameNode读取edits文件的同时,NameNode会创建edits.new这个文件,来存储SecondaryNameNode在合并过程中,其他数据的操作。

    3.安全模式

    安全模式是HDFS所处的一种特殊状态,在这种状态下,文件系统只接受读数据请求(能查看文件目录,但是无法读取文件内容),而不接受删除、修改等变更请求。
    安全模式下NameNode所做的工作:

    • 加载fsimage,加载到内存中。
    • 若edits文件不为空,那么namenode自己来合并。
    • 检查DataNode是否存活。
    • 若DataNode死亡,则指挥DataNode进行备份操作。

    4.NameNode的作用

    • 接收客户端的请求。
    • 管理元数据(文件的上传时间、文件权限、文件属主)。
    • 管理集群。
    • 收集DataNode汇报的Block列表信息。
    • 每一个DataNode的位置信息。

    5.DataNode作用

    • 存储源数据,向NameNode发送心跳。
    • 接收客户端的读请求。

    6.HDFS写流程

    1. client计算大文件的block数量;
    2. client会向NameNode汇报(当前大文件的block数,当前大文件属主、权限,文件上传时间);
    3. client切割block;
    4. client向NameNode请求block块的Id号以及地址;
    5. 由于NameNode掌控全局,管理所有的DataNode,所以它将负载不高的DataNode地址返回给client;
    6. client拿到地址后,找到Data去上传数据;
    7. Data将block存储完毕后,会向NameNode汇报当前的存储情况。

    7.HDFS读流程

    1. client请求NameNode获得block的位置信息,因为NameNode里存放了block位置信息的元数据。
    2. Namenode返回所有block的位置信息,并将这些信息返回给客户端。
    3. 客户端拿到block的位置信息读取block信息,采用就近原则。

    二、HDFS的搭建

    搭建集群的三种模式:
    1.伪分布式:在一台服务器上,启动多个进程,分别表示各个角色。
    2.完全分布式:在多台服务器上,每台服务器启动不同角色的进程,使用多台服务器组成HDFS集群。
    3.高可用的完全分布式:多一个NameNode的备份。

    分布式存储原理思维导图

    展开全文
  • 计算机存储原理及其技术发展.pdf
  • 硬盘存储原理的详细解读.docx
  • SRAM存储原理

    千次阅读 多人点赞 2019-11-19 17:20:13
    概念 静态随机存取存储器(Static Random-Access Memory,SRAM)是随机存取存储器的一种。...然而,当电力供应停止时,SRAM储存的数据还是会消失(被称为volatile memory),这与在断电后还能储存资料的ROM或闪存是...
  • HBase基本存储原理

    千次阅读 2018-09-13 17:51:56
    HBase基本存储原理: HMaster HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行,HMaster在功能上主要负责Table和Region的管理工作: 1.管理用户对...
  • 分布式对象存储原理架构Go实现 影印版,仅供学习使用,如自己有需要,请支持实体书。
  • 磁盘存储原理

    千次阅读 2019-04-19 15:43:14
    磁盘是广泛应用的数据存储设备,存储容量比较大,相比RAM等存储设备价格低,读写速度慢,从磁盘读信息的时间是毫秒级,是DRAM的十万倍,SRAM的一百万倍,后面会对磁盘读取数据耗时计算进行详细的介绍。 1、磁盘构.....
  • Oracle中索引的存储原理浅析.pdf
  • 硬盘的存储原理和内部架构.doc
  • 硬盘工作原理及数据存储原理,有助于对硬盘的常见故障处理,以及使用过程中对硬盘的保护保养,供参考学习
  • 硬盘的分区结构及其数据储存原理介绍.docx
  • SRAM的存储原理

    千次阅读 2020-04-09 12:17:31
    RAM的存储原理 ram的主要作用是存储数据和代码供cpu调用。但这些数据并不像是装大米一样很简单的就装进去,我们在装进去的同时还要保证可以在需要的时候拿出来。可以类比图书馆的书籍管理,假如每本书编号都由两部分...
  • Oracle中表数据的存储原理浅析.pdf
  • 导读:数字系统中可对二进制数据进行存储的是存储器,FIFO、RAM等位于集成电路中可完成存储功能的是存储器,TF条、内存条等存储设备也是存储器。存储器已广泛存在于我们的生活中且为我们的生活提供诸多便利,接下来...
  • 大数据分布式存储原理

    千次阅读 2018-10-09 20:43:39
    大数据基础 1.什么是大数据 短时间内快速的产生海量的多种多样的有价值的数据 2.大数据技术 2.1 分布式存储 2.2 分布式计算 ① 分布式批处理(无法实现预测) ...3.分布式存储原理 3.1主要概念:元数...
  • ES索引存储原理

    万次阅读 多人点赞 2017-08-06 14:36:54
    ES索引存储原理不变性写到磁盘的倒序索引是不变的:自从写到磁盘就再也不变。 这会有很多好处: 不需要添加锁。不存在写操作,因此不存在多线程更改数据。 提高读性能。一旦索引被内核的文件系统做了Cache,绝大...
  • iCloud刚出,国内没有多少汉语资料,本文作者iCloud存储原理与部分操作做了下研究,希望对大家有帮助。
  • kubernetes 共享存储原理

    千次阅读 2018-01-02 09:05:06
    共享存储原理 1、pv详解 pv作为存储资源,主要包括:存储能力、访问模式、存储类型、回收策略、后端存储类型等关键信息的设置。pv的关键配置参数如下: 存储能力 capacity:storage=5Gi 访问模式 access modes...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 981,433
精华内容 392,573
关键字:

储存原理