HDFS异构存储实战

最近在做HBase跨机房的数据迁移,正好用到HDFS的异构存储,我们使用的场景是将WAL日志保存到SSD中,其他的数据则存储在普通的SATA盘中。既充分利用了本地SSD盘的空间,又达到了提升系统性能的目的。本文是对HDFS异构存储学习和使用的总结,以及对使用HDFS异构存储过程中遇到问题的总结,希望对广大技术网友有帮助。

一、异构存储是什么

所谓的异构存储就是将不同需求或者冷热的数据存储到不通的介质中去,实现既能兼顾性能又能兼顾成本。对于存储到HDFS的数据大致可以分下图的4个等级。

从上图可以看出,大部分的数据都是冷数据或者极冷数据,对于这部分数据,读请求很少,写请求也非常少,对访问延迟不敏感。如果将这部分数据存储通过高压缩比,并且存储到普通的SATA大容量盘中去,能极大地节约成本。

对于热数据和实时数据,写请求比较高,读请求也很高,但是数据量很小。这个时候为了实现高并发低延迟,我们可以将这部分数据保存到SSD中。

Hadoop从2.6.0版本开始支持异构存储,HBase也从1.1.0开始支持将WAL的异构存储策略。

备注:这里面的难点是要对业务访问模式有足够的了解,提前确认好各个目录下的数据访问热度,以便规划好数据的存储策略。

二、HDFS异构存储类型和策略

存储类型

HDFS异构存储支持如下4种类型,分别是:

1、RAM_DISK

2、SSD

3、DISK

4、ARCHIVE

这里前面3种都很好理解,单独解释一下ARCHIVE,这里ARCHIVE并不是指某种存储介质,而是一种高密度的存储方式,用于存储极冷数据。一般用得比较多的SSD和DISK两类。如果配置的时候没有指定存储类型的话,默认就是DISK存储。比如如下配置:

/data1/hbase/hdfs,/data2/hbase/hdfs,/data3/hbase/hdfs,/data4/hbase/hdfs,/data5/hbase/hdfs,/data6/hbase/hdfs,/data7/hbase/hdfs,/data8/hbase/hdfs,/data9/hbase/hdfs,/data10/hbase/hdfs,/data11/hbase/hdfs,/data12/hbase/hdfs,[SSD]/wal_data

这里前面12个盘都没有指定存储类型,则默认是DISK存储,而第13快盘指定了SSD存储类型。

4中存储类型,按照RAM_DISK->SSD->DISK->ARCHIVE,速度由快到慢,单位存储成本由高到低。

存储策略

HDFS存储策略设置如下表:

由上图,我们可以看出HDFS总共支持Lazy_Persist、All_SSD、One_SSD、Hot、Warm和Cold等6种存储策略,默认策略为Hot。

上图中的第三列是表示存储策略对应的存储类型,具体如下:

Lazy_Persist : 1份数据存储在[RAM_DISK]即内存中,其他副本存储在DISK中

All_SSD:全部数据都存储在SSD中

One_SSD:一份数据存储在SSD中,其他副本存储在DISK中

Hot:全部数据存储在DISK中

Warm:一份数据存储在DISK中,其他数据存储方式为ARCHIVE

Cold:全部数据以ARCHIVE的方式保存

上图中的第4、5列表示创建和写副本的时候,如果该存储策略对应的资源不足,比如磁盘不可用或者空间写满,则创建文件和同步副本的时候选择第4和第5列对应的存储类型,你可以理解为降级机制,这里不再赘述。

三、HDFS异构存储原理

    对于HDFS异构存储的原理大致概括如下图所示:

这里的原理简单概括如下:

1、在hdfs的配置文件hdfs-site.xml中配置对应的异构存储(后面配置部分有详细介绍)

2、DataNode启动的时候从配置文件中读取对应的存储类型,以及容量情况,并通过心跳的形式不断的上报给NameNode。

3、NameNode收到DataNode发送的关于存储类型、容量等内容的心跳包后,会进行处理,更新存储的相关内容。

4、写请求发到NameNode后,NameNode根据写请求具体的目录对应的存储策略选择对应的存储类型的DataNode进行写入操作。

备注:上面是根据自己的理解简单概括的大致调用过程,如果需要了解更详细的调用关系,可以阅读这篇文章,写得很详细:https://blog.csdn.net/androidlushangderen/article/details/51105876

四、HDFS异构存储的配置和策略设置

HDFS异构存的配置

HDFS异构存的配置比较简单,只需要将对应的类型添加到dfs.datanode.data.dir的配置项中即可,

备注:也需要配置dfs.storage.policy.enabled为true,因为默认就是true,所以这里忽略。

配置的时候需要申明存储类型和对应的目录,存储类型需要用中括号括起来,存储类型有[SSD]/[DISK]/[ARCHIVE]/[RAM_DISK],如果不指定存储类型,则默认就是DISK。

比如我的机器中只配置了DISK和SSD的类型,范例如下:

通过上面的例子,前面12个盘,我没有设置存储类型,因为都是DISK,最后一个盘使用了SSD类型。

HDFS异构存储策略设置

HDFS提供了专门的命令来设置对应的策略,命令使用方法如下:

查看策略的帮助信息

hdfs storagepolicies -help

列出当前版本支持的存储策略:

hdfs storagepolicies -listPolicies

设置对应路径的策略

hdfs storagepolicies -setStoragePolicy -path -policy

范例:

设置/hbase/data/default为Hot的策略

hdfs storagepolicies -setStoragePolicy -path /hbase/data/default -policy Hot

取消策略

hdfs storagepolicies -unsetStoragePolicy -path

获取对应路径的策略

hdfs storagepolicies -getStoragePolicy -path

五、HDFS异构存储的管理

对于HDFS异构存储的管理,主要包含如下两个方面:

1、统计线上数据的访问频率,确认冷热数据所在目录,灰度进行调整

2、使用hdfs storagepolicies相关命令进行策略的调整

3、修改存储策略以后,使用mover工具进行数据的迁移,mover的使用方法如下:

hdfs mover [-p files/dirs | -f localfile ]

可以使用-p指定要迁移的目录,也可以将要迁移的文件列表写入文件中,用-f参数指定对应的文件或者目录进行迁移。

六、HDFS异构存储遇到的问题

1、设置dfs.datanode.du.reserved参数的时候要注意盘的大小

    我们在生产环境使用的时候,由于SSD盘专门用来存储HBase的WAL,因此SSD只有100多G,而我们设置dfs.datanode.du.reserved参数的时候设置为了200G,导致,SSD盘没有写入任何数据。原因是因为dfs.datanode.du.reserved参数是全局参数。目前官方的版本貌似没有单独对某一个磁盘做单独的配置,腾讯使用的版本有专门修改过,支持对单个盘的设置。因此,如果SSD盘很小,则需要将dfs.datanode.du.reserved参数相应的调小。

2、使用mover迁移数据的时候,发现mover不生效

    因为我们之前版本有bug,导致部分非WAL日志的数据也写入到了SSD,导致SSD空间不足。因此发起数据迁移,但是迁移的时候发现数据并不会对数据做迁移,原因是没有对要迁移的目录显式地指定存储策略,因此迁移之前必须提前使用hdfs storagepolicies设置好存储策略。

3、使用mover迁移数据的时候,会导致datanode出现dead的情况,从而影响写入

目前mover迁移数据的时候会导致datanode出现dead的问题是必现的问题,临时采用重启datanode的方式规避,目前原因还在进一步分析中。异常报错如下:

七、参考资料

http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/ArchivalStorage.html

https://blog.csdn.net/androidlushangderen/article/details/51105876

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,509评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,806评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,875评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,441评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,488评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,365评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,190评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,062评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,500评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,706评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,834评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,559评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,167评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,779评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,912评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,958评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,779评论 2 354

推荐阅读更多精彩内容