大数据技术 HDFS的存储策略
沉沙 2018-09-25 来源 : 阅读 894 评论 0

摘要:本篇教程探讨了大数据技术 HDFS的存储策略,希望阅读本篇文章以后大家有所收获,帮助大家对大数据技术的理解更加深入。

本篇教程探讨了大数据技术 HDFS的存储策略,希望阅读本篇文章以后大家有所收获,帮助大家对大数据技术的理解更加深入。

<


 
译注:存储策略是在和经济妥协的一个技术产物。由于存储技术发展的日新月异,也许将来再考虑这种策略不是很有必要了。虽然从逻辑上来说,总是有相似的问题出现。但将来对于绝大部分问题而言,这些问题已经不是问题了。
 
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。
 
一个存储策略,包含以下部分
Policy ID --策略ID
Policy name  --策略名称
A list of storage types for block placement  --块存放的有关存储类型(可以多个)
A list of fallback storage types for file creation--如果创建失败的替代存储类型(可以多个)
A list of fallback storage types for replication--如果复制失败的替代存储类型(可以多个)
当有足够空间的时候,块复制使用下表中第三列所列出的存储类型。
如果第三列的空间不够,则考虑用第四列的(创建的时候)或者第五列的(复制的时候)
Policy IDPolicy NameBlock Placement (n  replicas)Fallback storages for creationFallback 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命令来管理。
文件/路径的存储策略按照如下规则解析:
如果有设定特定的策略,那么就是那个策略
如果没有设定,就返回上级目录的存储策略。如果是没有策略的根目录,那么返回默认的存储策略(hot-编号7的)。
配置
dfs.storage.policy.enabled -  启用/关闭存储策略特性。默认是true(开启)
dfs.datanode.data.dir -  数据路径,多个以逗号分隔,但必须在前面带上存储类型。例如:
A datanode storage location /grid/dn/disk0 on DISK should be configured with [DISK]file:///grid/dn/disk0
A datanode storage location /grid/dn/ssd0 on SSD can should configured with [SSD]file:///grid/dn/ssd0
A datanode storage location /grid/dn/archive0 on ARCHIVE should be configured with [ARCHIVE]file:///grid/dn/archive0
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。
   

本文由职坐标整理发布,学习更多的大数据技术相关知识,请关注职坐标大技术云计算大技术技术频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程