本文介绍hdfs的存储策略

内容译自:http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-hdfs/ArchivalStorage.html#Get_Storage_Policy

译注:存储策略是在和经济妥协的一个技术产物。由于存储技术发展的日新月异,也许将来再考虑这种策略不是很有必要了。虽然从逻辑上来说,总是有相似的问题出现。但将来对于绝大部分问题而言,这些问题已经不是问题了。

1.简介

归档存储用于减少对存储的压力。具有高密度存,不那么贵的存储的节点,这些接节点的计算能力也一般般,这种节点可以在集群中承当冷存储(冷宫,冷点)。

可以根据策略要求,数据能从热点移动到冷点。

为更多的节点添加冷存储,可以提升集群存储。

这个框架由多种存储和归档存储构成,其中还包含SSD和内存。

用户可以选择在SSD和内存中存储数据,以便提升性能。

译注:原文说了那么多,有用的就是两点:存储、性能。 这种策略在很多其它系统都是透明的,也不需要它们自己管理。例如rdbms可以不它们的数据存储的任意地方,不需要特别设定策略。

hdfs之所以要这么做,是因为hdfs的应用现在变得更加多样,有的人期望提供类似即席查询的能力,而有的人仅仅要求偶尔计算一下。

2.存储类型和存储策略

译注:原文的一段内容没有特别含义,稍微啰嗦,所以摘其精要。

存储类型

  • DISK-普通磁盘,存储
  • SSD -SSD盘
  • RAM_DISK 内存盘
  • ARCHIVE -归档/压缩,不是实际的磁盘类型,而是数据被压缩存储。

存储策略

存储策略允许不同的文件存储在不同的存储类型上。

目前有以下策略:

  • Hot - 存储和计算都热。    如果是热快,那么复制的目标也是DISK(普通的磁盘)。
  • Cold -用于有限计算的存储。 数据不再使用,或者需要归档的数据被移动到冷存储。如果数据块是冷的,则复制使用ARCHIVE.
  • Warm -半冷半热。warm块的复制内容,部分放置在DISK,其它的在ARCHIVE.
  • All_SSD - 所有数据存储在SSD.
  • One_SSD - 一个复制在SSD,其它的在DISK.
  • Lazy_Persist -只针对只有一个复制的数据块,它们被放在RAM_DISK,之后会被写入DISK。

一个存储策略,包含以下部分

  1. Policy ID --策略ID
  2. Policy name  --策略名称
  3. A list of storage types for block placement  --块存放的有关存储类型(可以多个)
  4. A list of fallback storage types for file creation--如果创建失败的替代存储类型(可以多个)
  5. A list of fallback storage types for replication--如果复制失败的替代存储类型(可以多个)

当有足够空间的时候,块复制使用下表中第三列所列出的存储类型。

如果第三列的空间不够,则考虑用第四列的(创建的时候)或者第五列的(复制的时候)

Policy ID Policy Name Block Placement (n  replicas) Fallback storages for creation Fallback storages for replication
15 Lazy_Persist RAM_DISK: 1, DISK: n-1 DISK DISK
12 All_SSD SSD: n DISK DISK
10 One_SSD SSD: 1, DISK: n-1 SSD, DISK SSD, DISK
7 Hot (default) DISK: n <none> ARCHIVE
5 Warm DISK: 1, ARCHIVE: n-1 ARCHIVE, DISK ARCHIVE, DISK
2 Cold ARCHIVE: n <none> <none>

注意LAZY_PERSIST策略只用于复制一个块(换言之,没有数据冗余)。

译注:原文的意思是如果数据一部分在RAM_DISK,一部分在磁盘上,不会提高性能,所以只能用于一个复制的情况。本人不太理解。不过原文这么说,就先这么记着吧。

存储策略的解析

当创建文件/目录的时候,并未为它们设定了存储策略。 但可以通过hdfs storagepolicies命令来管理。

文件/路径的存储策略按照如下规则解析:

  1. 如果有设定特定的策略,那么就是那个策略

  2. 如果没有设定,就返回上级目录的存储策略。如果是没有策略的根目录,那么返回默认的存储策略(hot-编号7的)。

配置

  • dfs.storage.policy.enabled -  启用/关闭存储策略特性。默认是true(开启)
  • dfs.datanode.data.dir -  数据路径,多个以逗号分隔,但必须在前面带上存储类型。例如:

    1. A datanode storage location /grid/dn/disk0 on DISK should be configured with [DISK]file:///grid/dn/disk0
    2. A datanode storage location /grid/dn/ssd0 on SSD can should configured with [SSD]file:///grid/dn/ssd0
    3. A datanode storage location /grid/dn/archive0 on ARCHIVE should be configured with [ARCHIVE]file:///grid/dn/archive0
    4. A datanode storage location /grid/dn/ram0 on RAM_DISK should be configured with [RAM_DISK]file:///grid/dn/ram0

    如果没有设定存储类型,那么使用默认的([DISK])

译注:例如DN1有两个存储类型  [DISK]file:///grid/dn/disk0,[SSD]file:///grid/dn/ssd0   

每个节点可以具体配置,不需要都一样。当然如果都一样,可以稍微提升系统的性能。

3.MOVER-一个新的数据迁移工具

这个工具用户归档数据,它类似于Balancer(移动数据方面)。MOVER定期扫描HDFS文件,检查文件的存放是否符合它自身的存储策略。如果数据块不符合自己的策略,它会把数据移动到该去的地方。

语法

hdfs mover [-p <files/dirs> | -f <local file name>]

-p  指定要迁移的文件/目录,多个以空格分隔

-f   指定本地一个文件路径,该文件列出了需要迁移的文件或者目录(一个一行)

如果不指定参数,那么就移动根目录。

4.存储策略命令

列出所有存储策略

hdfs storagepolicies -listPolicies

设置存储策略

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

例如  hdfs storagepolicies -setStoragePolicy -path /tmp -policy ALL_SSD

取消存储策略

hdfs storagepolicies -unsetStoragePolicy -path <path>

之后该目录或者文件,以其上级的目录为准,如果是根目录,那么就是HOT

获取存取策略

hdfs storagepolicies -getStoragePolicy -path <path>

---

译注:如果你的项目很有钱,不放可以把一些不是太大的数据放在ALL_SSD中,例如个数据节点上放个10t。甚至如果有更多钱,可以组成ssd raid。

HDFS的存储策略的更多相关文章

  1. Hdfs存储策略

    一.磁盘选择策略 1.1.介绍 在HDFS中,所有的数据都是存在各个DataNode上的.而这些DataNode上的数据都是存放于节点机器上的各个目录中的,而一般每个目录我们会对应到1个独立的盘,以便 ...

  2. 在ASP.NET Core中如何支持每个租户数据存储策略的数据库

    在ASP.NET Core中如何支持每个租户数据存储策略的数据库 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址 本博文翻译自: ht ...

  3. Hadoop(六)之HDFS的存储原理(运行原理)

    前言 其实说到HDFS的存储原理,无非就是读操作和写操作,那接下来我们详细的看一下HDFS是怎么实现读写操作的! 一.HDFS读取过程 1)客户端通过调用FileSystem对象的open()来读取希 ...

  4. iOS 5的文件存储策略应对

    苹果在iOS 5系统时,对app的文件存储提出了新的要求.从它的guildline来看,是推荐开发者尽量把app生成的文件放在Caches目录下的.原文如下: Only user-generated ...

  5. 再理解HDFS的存储机制

    再理解HDFS的存储机制 1. HDFS开创性地设计出一套文件存储方式.即对文件切割后分别存放: 2. HDFS将要存储的大文件进行切割,切割后存放在既定的存储块(Block)中,并通过预先设定的优化 ...

  6. iOS原生数据存储策略

    一 @interface NSCache : NSObject Description A mutable collection you use to temporarily store transi ...

  7. HDFS副本放置策略和机架感知

    副本放置策略 的副本放置策略的基本思想是: 第一block在复制和client哪里node于(假设client它不是群集的范围内,则这第一个node是随机选取的.当然系统会尝试不选择哪些太满或者太忙的 ...

  8. Hadoop hdfs副本存储和纠删码(Erasure Coding)存储优缺点

    body { margin: 0 auto; font: 13px / 1 Helvetica, Arial, sans-serif; color: rgba(68, 68, 68, 1); padd ...

  9. HDFS对象存储--Ozone架构设计

    前言 如今做云存储的公司非常多,举2个比較典型的AWS的S3和阿里云.他们都提供了一个叫做对象存储的服务,就是目标数据是从Object中进行读写的,然后能够通过key来获取相应的Object,就是所谓 ...

随机推荐

  1. WinSock WSAEventSelect 模型

    在前面我们说了WSAAsyncSelect 模型,它相比于select模型来说提供了这样一种机制:当发生对应的IO通知时会立即通知操作系统,并调用对应的处理函数,它解决了调用send和 recv的时机 ...

  2. 一个基于Ionic3.x cordova的移动APP demo

    项目地址如遇网络不佳,请移步国内镜像加速节点 前端技术: Angular4.x + ionic3.x + cordova 项目运行: git clone git@github.com:EasyTuan ...

  3. 【Android】3.0 Android开发环境的搭建(2)——eclipse

    1.0模拟机登录后,可能会一直停留在这个界面很久,那就去洗洗澡.睡睡觉.吃吃饭…… 2.0登录后可以在设置中改成中文,这样界面对国人来说比较友好. 3.0 虚拟机首页可以看到有短信息.拨打电话.浏览器 ...

  4. String变量的两种创建方式

    在java中,有两种创建String类型变量的方式: String str01="abc";//第一种方式 String str02=new String("abc&qu ...

  5. SharePoint Designer - View

    1. 数据视图 可以将图片.新闻等列表(如: Announcement)用以下视图显示,具体做法可以参考这篇文章,但需要强调几个地方: 1.1 选择了视图样式后,需要点击“自定义” --> &q ...

  6. HTML 5入门知识(四)

    表单的作用 表单不是表格,既不用来显示数据,也不用来布局网页.表单提供一个界面,一个入口,便于用户把数据提交给后台程序进行处理. 表单的数据传递方式method属性 表单的method属性用于指定在数 ...

  7. June 13th 2017 Week 24th Tuesday

    There are no regrets in life, just lessons. 人生中没有后悔,只有教训. Some people can learn from their past mist ...

  8. May 13th 2017 Week 19th Saturday

    Mountains look beautiful from a distance. 远处看山山更美. This gnomic seems to circulate very long, its mor ...

  9. March 1 2017 Week 9 Wednesday

    If you are serious giving up something, giving up is not serious at all. 如果你慎重地决定要放弃,那么放弃本身就没什么大不了的. ...

  10. Android进阶笔记12:ListView篇之图片优化

    1.图片异步加载: (1)处理图片的方式: 如果ListView中自定义的Item中有涉及到大量图片的,一定要对图片进行细心的处理,因为图片占的内存是 ListView 项中最头疼的,处理图片的方法大 ...