我与HDFS那些事儿(一)HDFS的数据存储

闲话不多说,就来聊聊这些年与HDFS的那些事儿,我们首先来聊聊HDFS的数据存储。HDFS正是先有了数据的存储,才有后续的写入和管理等操作。数据存储包括两块:
1.内存存储;内存存储是一种十分特殊的存储方式,将会对集群数据的读写性能带来不小的提升。
2.异构存储;异构存贮能够帮助我们更加合理的把数据存到该存的地方。

HDFS内存存储

HDFS的内存存储与HDFS的缓存是有些异同的,大家注意区分。相同之处:都是使用机器的内存作为存储数据的载体。不同之处在于:缓存需要使用HDFS缓存管理命令,更像是改进用户使用的一种功能;而内存存储则使用内存存储策略,直接将内存作为数据存放的载体,可以理解为此时此节点的内存充当了一块“磁盘”,从底层扩展了数据存储方式。

  1. HDFS内存存储原理
    在了解内存存储原理之前大家可能会有这样两个疑问:1.数据临时维护在内存中,服务一旦停止,数据会不会全部丢失;2.如果服务停止时做持久化操作,如果数据量很大,一来内存空间可能不够用,二来大量数据写入磁盘的速度也会很慢;
    所以通用的、比较好的做法时异步持久化。
    在内存存储新数据的同时,持久化距离当前时刻最远(存储时间最早)的数据。好比有个内存数据块队列,在队列头不断有新增的数据块插入,在队列尾部的块,需要持久化到磁盘,形成一个循环。
    HDFS的LAZY_PERSIST内存存储策略用的就是这套方法。

  2. linux虚拟内存盘
    想要将内存当作一块盘来用,需要了解linux中的另一项技术,虚拟内存盘;虚拟内存盘可以在某些特定的内存式存储文件系统下结合使用,比如tmpfs,ramfs。

  3. HDFS的内存存储流程分析
    HDFS文件内存存储策略设置
    第一种方式,通过命令行的方式:

hdfs storagepolicies -setStoragePolicy -path <path> -policy LAZY_PERSIST

第二种方法,调用对应的程序方法,比如暴露在外的create文件方法,但是得带上参数CreateFlag.LAZY_PERSIST。
5. LAZY_PERSIST内存存储的使用
第一步,准备内存存储的介质,需要完成虚拟内存盘的配置工作。以tmpfs为例,tmpfs默认式被挂载到/dev/shm,并且大小是32G。也就是说此目录中的数据实际上是存在内存中的。如果想挂载到自己的目录,可以使用以下命令:

sudo mount -t tmpfs -o size=16g tmpfs /mnt/dn-tmpfs/

首先需要将机器中完成好的虚拟内存盘配置到dfs.datanode.data.dir中,其次还要带上RAM_DISK标签。

<property><name>dfs.datanode.data.dir</name><value>/grid/0,/grid/1,/grid/2,[RAM_DISK]/mnt/dn-tmpfs/</value>
</property>

第二步,是设置具体的文件策略类型。方法参见上文。

HDFS异构存储

HDFS在2.6.0版本引入异构存储。可以各个存储介质读写特性的不同发挥各自的优势。比较适用的场景就是冷热数据的存储。对冷数据采用容量大,读写性能不高的存储介质,对于热数据,采用SSD的方式进行存储。

  1. 异构存储类型
    RAM_DISK
    SSD
    DISK
    ARCHIVE
    四种存储方式速度依次递减。RAM_DISK就是内存存储,SSD不必再解释,对热数据存储在这两种介质中,可以提高效率。ARCHIVE没有特质哪种存储介质,主要指高密度存储介质,用于解决数据扩容的问题,比较适用于存储冷数据。默认的存储类型是DISK。要让HDFS知道存储目录是哪种存储介质,需要配置dfs.datanode.data.dir属性,参考上文。
  2. 异构存储原理
    DataNode通过心跳汇报自身数据存储目录的StorageType给NameNode;
    随后NameNode进行汇总并更新集群内各个节点的存储类型情况;
    待复制文件根据自身设定的存储策略信息向NameNode请求拥有此类型存储介质的DataNode作为候选节点;
  3. 块存储策略集合
    HOT
    COLD
    WARM
    ALL_SSD
    ONE_SSD
    LAZY_PERSIST
    前三种是根据冷热的角度来划分的,后三种是根据存放盘的性质来划分的。ONE_SSD只有第一个块的副本块是此类型的 ,其余全部是DISK。ALL_SSD则是全部是SSD的存储。
  4. 异构存储的不足之处
    用户A在HDFS目录上创建了自己的存储目录/user/A,不设置任何策略,默认是DISK,有一天发现数据不怎么使用了,设置为CLOD,设置setStoragePolicy命令,是否目的就到达了呢?
    这里需要额外的执行hdsf -mover命令做文件目录的扫描。在mover命令扫描的过程中如果发现文件目录的实际存储类型与其设置的storagePolicy策略不同,将会进行数据块的迁移。

思考

HDFS的存储,首先要做的是需要区分哪些是经常使用的热数据,哪些是不常使用的冷数据。而这凭感觉多少会很有偏差,以此,对数据资产的管理,清楚的知道哪些数据有用,经常被使用,还是蛮重要的一件事情。

我与HDFS那些事儿(一)HDFS的数据存储相关推荐

  1. 华为云大数据存储的冗余方式是三副本_大数据入门:HDFS数据副本存放策略

    大数据处理当中,数据储存始终是一个重要的环节,从现阶段的市场现状来说,以Hadoop为首的大数据技术框架,仍然占据主流地位,而Hadoop的HDFS,在数据存储方面,仍然得到重用.今天的大数据入门分享 ...

  2. 使用HDFS API实现hadoop HDFS文件系统的基本操作

    下面介绍使用hadoop的HDFS分布式文件系统的java API实现基本的文件操作,比如:创建文件.修给文件.创建目录或者文件夹.从本地系统上传文件到HDFS系统中.从HDFS文件系统中下载文件到本 ...

  3. HDFS组件性能调优:数据平衡

    生产系统中什么情况下会添加一个节点呢? 1 增加存储能力 disk 2 增加计算能力 cpu mem 如果增加是的是存储能力,说明存储已接近饱和或者说过段时间就会没有剩余的空间给作业来用.新加的节点存 ...

  4. shell 删除了hdfs 文件_知识干货 | 大数据全解 HDFS分布式文件系统

                                                                                      HDFS概述 Hadoop分布式文件 ...

  5. Hadoop之HDFS(一)HDFS入门及基本Shell命令操作

    1 . HDFS 基本概念 1.1  HDFS 介绍 HDFS 是 Hadoop Distribute File System 的简称,意为:Hadoop 分布式文件系统.是 Hadoop 核心组件之 ...

  6. 用sqoop把hdfs数据存储到mysql报错,Job job_1566707990804_0002 failed with state FAILED due to: Tas k failed

    用sqoop把hdfs数据存储到mysql数据库,报错 Job job_1566707990804_0002 failed with state FAILED due to: Tas k failed ...

  7. hdfs 备份数配置_大数据||HDFS HA配置详解

    根据HA架构图,规划HA的分布式集群服务器 HA集群规划 配置参考图 根据官方文档配置HA 部分说明 Architecture 在典型的ha集群中,两台独立的机器被配置为namenode.在任何时间点 ...

  8. 【大数据作业02】HDFS中的名称节点和数据结点的具体功能

    试述HDFS中的名称节点和数据结点的具体功能 名称节点负责管理分布式文件系统的命名空间,记录每个文件中各个块所在的数据节点的位置信息: 数据节点是分布式文件系统HDFS的工作节点,负责数据的存储和读取 ...

  9. HDFS文件系统的基础理论,HDFS工作者和管理者的分配,HDFS文件存储容量的理解

    1.HDFS的文件系统介绍 HDFS是Hadoop Distribute File System 的简称,意为:Hadoop 分布式文件系统.是 Hadoop 核心组件之一,作为最底层的分布式存储服务 ...

最新文章

  1. 【IOS】ios之httpServer
  2. linux cmake 多线程 错误 undefined reference to 'pthread_create'
  3. hadoop自定义类型注意问题
  4. python常用时间处理方法
  5. Python Django 打印执行过的查询语句
  6. 2017网易内推编程题(判断单词):解答代码
  7. 提权命令_利用Linux文本操作命令ed进行提权
  8. ArrayList 去重
  9. pythonindex函数输出字符首次出现位置_返回指定的字符串首次出现的位置
  10. Cognos报表的开发
  11. 计算机房设计规范2008,电子计算机房设计规范.doc
  12. Docker系列 利用RSShub搭建个人RSS源 从此万物皆RSS
  13. Linux CPU超频设置
  14. A Game of Thrones(97)
  15. openssl 1.0.2k-fips 升级到 openssl-3.0.3
  16. DevpTips【powerpoint】发现打不开,显示发现文件中的内容有问题。可尝试修复此演示文稿。
  17. javascript event click/dblclick left/right区分左键、右键、双击事件,排除点击事件与拖拽事件冲突,做防抖优化
  18. 《烟花》个人深度解读
  19. ubuntu anaconda 3.6.4 zipimport.ZipImportError: can't decompress data; zlib not available Makefile:1
  20. LS1046nfs挂载文件系统

热门文章

  1. 鹤山市五泉酒厂 (“侨乡情”酒 )
  2. MySQL知识梳理总结
  3. PPT插入可编辑的表格技巧
  4. 监听Android系统Log
  5. CloseableReference: Finalized without closing
  6. 手写MyBatis分页插件
  7. [学习记录]回溯算法及其应用
  8. 五步移相法matlab程序_ZVZCS移相全桥变换器的设计与MATLAB仿真
  9. 关于提升个人电脑硬盘读写取速度的解决方案。
  10. Django模型层之单表操作