本文共 4668 字,大约阅读时间需要 15 分钟。
异构存储是Hadoop2.6.0版本出现的新特性,可以根据各个存储介质读写特性不同进行选择。
例如冷热数据的存储,对冷数据采取容量大,读写性能不高的存储介质如机械硬盘,对于热数据,可使用SSD硬盘存储。 在读写效率上性能差距大。异构特性允许我们对不同文件选择不同的存储介质进行保存,以实现机器性能的最大化。1.RAM_DISK(内存)
2.SSD(固态硬盘) 3.DISK(机械硬盘) 4.ARCHIVE(高密度存储介质)默认使用机械硬盘DISK
public enum StorageType { DISK(false), SSD(false), ARCHIVE(false), RAM_DISK(true); private final boolean isTransient; public static final StorageType DEFAULT = DISK; ...}
其中true和false指是否使用transient,transient代表非持久化,而只有内存存储是transient。
HDFS中根据需要可设置文件存储目录的介质类型,需手动在dfs.datanode.data.dir中声明,如:[SSD]file:/ / /grid / dn/ssdO
异构存储工作步骤:
块存储指的是对hdfs文件的数据块副本储存,其中有6种策略:
HOT COLD WARM ALL_SSD ONE_SSD LAZY_PERSIST前三种根据冷热数据区分,后三种根据磁盘性质区分。
其中不同的策略,规定了适合的储存介质,在创建BlockStoragePolicySuite方法时可知:public static BlockStoragePolicySuite createDefaultSuite() { BlockStoragePolicy[] policies = new BlockStoragePolicy[16]; byte lazyPersistId = true; policies[15] = new BlockStoragePolicy((byte)15, "LAZY_PERSIST", new StorageType[]{ StorageType.RAM_DISK, StorageType.DISK}, new StorageType[]{ StorageType.DISK}, new StorageType[]{ StorageType.DISK}, true); byte allssdId = true; policies[12] = new BlockStoragePolicy((byte)12, "ALL_SSD", new StorageType[]{ StorageType.SSD}, new StorageType[]{ StorageType.DISK}, new StorageType[]{ StorageType.DISK}); byte onessdId = true; policies[10] = new BlockStoragePolicy((byte)10, "ONE_SSD", new StorageType[]{ StorageType.SSD, StorageType.DISK}, new StorageType[]{ StorageType.SSD, StorageType.DISK}, new StorageType[]{ StorageType.SSD, StorageType.DISK}); byte hotId = true; policies[7] = new BlockStoragePolicy((byte)7, "HOT", new StorageType[]{ StorageType.DISK}, StorageType.EMPTY_ARRAY, new StorageType[]{ StorageType.ARCHIVE}); byte warmId = true; policies[5] = new BlockStoragePolicy((byte)5, "WARM", new StorageType[]{ StorageType.DISK, StorageType.ARCHIVE}, new StorageType[]{ StorageType.DISK, StorageType.ARCHIVE}, new StorageType[]{ StorageType.DISK, StorageType.ARCHIVE}); byte coldId = true; policies[2] = new BlockStoragePolicy((byte)2, "COLD", new StorageType[]{ StorageType.ARCHIVE}, StorageType.EMPTY_ARRAY, StorageType.EMPTY_ARRAY); return new BlockStoragePolicySuite((byte)7, policies); }
存储策略速度如下:
public static BlockStoragePolicySuite createDefaultSuite() { BlockStoragePolicy[] policies = new BlockStoragePolicy[16]; byte lazyPersistId = true; policies[15] = new BlockStoragePolicy((byte)15, "LAZY_PERSIST", new StorageType[]{ StorageType.RAM_DISK, StorageType.DISK}, new StorageType[]{ StorageType.DISK}, new StorageType[]{ StorageType.DISK}, true); byte allssdId = true; policies[12] = new BlockStoragePolicy((byte)12, "ALL_SSD", new StorageType[]{ StorageType.SSD}, new StorageType[]{ StorageType.DISK}, new StorageType[]{ StorageType.DISK}); byte onessdId = true; policies[10] = new BlockStoragePolicy((byte)10, "ONE_SSD", new StorageType[]{ StorageType.SSD, StorageType.DISK}, new StorageType[]{ StorageType.SSD, StorageType.DISK}, new StorageType[]{ StorageType.SSD, StorageType.DISK}); byte hotId = true; policies[7] = new BlockStoragePolicy((byte)7, "HOT", new StorageType[]{ StorageType.DISK}, StorageType.EMPTY_ARRAY, new StorageType[]{ StorageType.ARCHIVE}); byte warmId = true; policies[5] = new BlockStoragePolicy((byte)5, "WARM", new StorageType[]{ StorageType.DISK, StorageType.ARCHIVE}, new StorageType[]{ StorageType.DISK, StorageType.ARCHIVE}, new StorageType[]{ StorageType.DISK, StorageType.ARCHIVE}); byte coldId = true; policies[2] = new BlockStoragePolicy((byte)2, "COLD", new StorageType[]{ StorageType.ARCHIVE}, StorageType.EMPTY_ARRAY, StorageType.EMPTY_ARRAY); return new BlockStoragePolicySuite((byte)7, policies); } public BlockStoragePolicySuite(byte defaultPolicyID, BlockStoragePolicy[] policies) { this.defaultPolicyID = defaultPolicyID; this.policies = policies; }
块存储策略默认使用HOT,将所有数据都当成热数据。
HDFS无法在文件目录存储策略变更时自动进行数据迁移。
存储策略变更有如下两种情况: 原先未设置StoragePolicy ,后来进行了设置 。 原先设置了A策略,后来又设置了B策略。列出现有存储策略
hdfs storagepolicies -listPolicies
设置指定路径的存储策略
hdfs -setStroagePolicy -path-policy
获取指定路径的存储策略
hdfs -getStroagePolicy -path
数据迁移工具能扫描HDFS上的文件,如果不满足内部设置的存储策略,就重新迁移数据到目标存储类型节点上
hdfs mover -p| -f
转载地址:http://gukai.baihongyu.com/