命令:hdfs storagepolicies -listPolicies
PROVIDED
DISK
PROVIDED
DISK
PROVIDED
DISK
DISK
ARCHIVE
DISK
ARCHIVE
DISK
ARCHIVE
SSD
DISK
SSD
DISK
SSD
DISK
RAM
DISK
DISKDISK(ARCHIVE代表的是计算能力比较弱而存储密度比较高的存储介质)
CLOD:数据全部位于ARCHIVE中;
WRAM:介于hot和cold之间,有一份数据放在DISK上;
Hot:数据放在DISK上;
ONT_SSD:将数据的一个副本存储在SSD中,其余的副本存储在磁盘中;
ALL_SSD:文件及其副本均放置在SSD中;
Lazy_Provided:如果文件被设置为Lazy_Persist策略,当客户端向该文件发起读写请求,客户端写入的数据会首先被相应Block块的DataNode写入到自己的RAM内存中,同时DN会启动异步线程服务将内存中的数据持久化到磁盘上。
hdfs支持在文件使用过程中灵活改变文件的storage policy,hdfs列出了几个storage policy相关的命令
配置:(1)开启hdfs异构存储策略:dfs.storage.policy.enabled,该配置默认是开启的(true)
(2)将机器物理硬件上已经部署好的磁盘配置添加到hdfs配置项dfs.datanode.data.dir中,
需要注意的是对于SSD或者RAM需要加上特殊的标签,如[SSD]、[RAM_DISK]
Hbase异构存储dfs.datanode.data.dir file:///home/data/data/hadoop/dfs/data/data1, file:///home/data/data/hadoop/dfs/data/data2, file:///home/data/data/hadoop/dfs/data/data3, file:///home/data/data/hadoop/dfs/data/data4, file:///home/data/data/hadoop/dfs/data/data5, file:///home/data/data/hadoop/dfs/data/data6, file:///home/data/data/hadoop/dfs/data/data7, file:///home/data/data/hadoop/dfs/data/data8, file:///home/data/data/hadoop/dfs/data/data9, file:///home/data/data/hadoop/dfs/data/data10, file:///home/data/data/hadoop/dfs/data/data11, file:///home/data/data/hadoop/dfs/data/data12, [SSD]file:///home/data/data/hadoop/dfs/data/data13 true
public static void setStoragePolicy(final FileSystem fs, final Configuration conf, final Path path, final String policyKey, final String defaultPolicy) { String storagePolicy = conf.get(policyKey, defaultPolicy).toUpperCase(); if (!storagePolicy.equals(defaultPolicy) && fs instanceof DistributedFileSystem) { DistributedFileSystem dfs = (DistributedFileSystem)fs; Class extends DistributedFileSystem> dfsClass = dfs.getClass(); Method m = null; try { m = dfsClass.getDeclaredMethod("setStoragePolicy", new Class>[] { Path.class, String.class }); m.setAccessible(true); } catch (NoSuchMethodException e) { LOG.info("FileSystem doesn't support" + " setStoragePolicy; --HDFS-7228 not available"); } catch (SecurityException e) { LOG.info("Doesn't have access to setStoragePolicy on " + "FileSystems --HDFS-7228 not available", e); m = null; // could happen on setAccessible() } if (m != null) { try { m.invoke(dfs, path, storagePolicy); LOG.info("set " + storagePolicy + " for " + path); } catch (Exception e) { LOG.warn("Unable to set " + storagePolicy + " for " + path, e); } } } }
理想的混合机型集群异构部署,
对于 Hbase 层面来看,文件存储可选三种策略:HOT, ONE_SSD, ALL_SSD,
其中 :
ONE_SSD 存储策略既可以把三个副本中的两个存储到便宜的 SATA 磁盘介质之上来减少 SSD 磁盘存储成本的开销,同时在数据读取访问本地 SSD 磁盘上的数据可以获得理想的 RT ,是一个十分理想的存储策略。
HOT 存储策略与不引入异构存储时的存储情况没有区别,而 ALL_SSD 将所有副本都存储到 SSD 磁盘上。
链接:
[Hadoop] 使用DFSIO测试集群I/O性能_mryqu_新浪博客
YCSB数据库性能测试工具 - 简书
Hbase测试|Hbase 2.2.1随机读写性能测试【图文】_mb5fdb0a6739180_51CTO博客
HDFS原理|HDFS-Tiering 数据分层存储
Hbase性能监控及最佳实践 - 豆丁网
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)