博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《深入HDFS》--HDFS内存存储
阅读量:4171 次
发布时间:2019-05-26

本文共 1466 字,大约阅读时间需要 4 分钟。

内存存储

HDFS的数据存储由多种,内存存储是其中的一种,其以机器作为数据存储的载体。

内存可能存储的缺点:

1.数据临时保存在内存中,服务一旦停止(或宕机),数据就丢失
2.数据存在内存中,服务停止时持久化到磁盘
为避免以上出现的问题,选用异步持久化的方式处理,即在内存存储新数据时,持久化最旧的数据。
HDFS使用LAZY_PERSIST内存存储策略:
在这里插入图片描述

异步存储步骤如下:

l )对目标文件目录设置 StoragePolicy 为 LAZY_PERSIST 的内存存储策略。
2 )客户端进程向 NameNode 发起创建/写文件的请求 。
3 )客户端请求到具体的 DataNode 后 DataNode 会把这些数据块写入 RAM 内存中,同
时启动异步线程服务将内存数据持久化写到磁盘上 。

文件内存存储策略设置

文件存储策略默认使用的是: StoragePolicy.DEFAULT

如果要使用内存存储,可使用如下方法:

1.命令行
hdfs storagepolicies -setStoragePolicy -path 
-policy LAZY_ PERSIST
2.调用程序
FSDataOutputStream fos =fs.create(path ,FsPermission.getFileDefault() ,EnumSet.of(CreateFlag.CREATE , CreateFlag.LAZY_PERSIST),bufferLength,replicationFactor,blockSize,null) ;// DFSClient 创建文件方法public DFSOutputStream create(String src , FsPermission permission,EnumSet 
flag, short replication, long blocksize,Progressable progress, int buffersize, ChecksumOpt checksumOpt)throws IOException {
return create(src, permission, flag , true,replication, blockSize, progress, buffersize , checksumOpt,nu11);}

LAZY_PERSIST的使用

因使用的是内存存储,存储介质是RAM_DISK,因此在使用之前需设置虚拟内存。如tmpfs文件系统,tmpfs被挂在到/dev/shm,实际上存储在该目录下的文件是保存在内存中的。

如果想要更改,则进行设置:

sudo mount t tmpfs -o size=16g tmpfs /mnt/dn-tmpfs/

将虚拟内存盘设置到dfs.datanode.data.dir中,如:

dfs.datanode data . dir
/grid/0 , /grid/l , /grid/2, [RAM_DISK] /mnt/dn-tmpfs

使用时应确认异构存储策略是否被关闭,属性dfs.storage.policy.enabled

确认是否设置最大内存, dfs.datanode.max.locked.memory,看看是否超过DataNode界定啊的最大内存大小。

转载地址:http://rukai.baihongyu.com/

你可能感兴趣的文章
HttpServer一些参数
查看>>
Jsp中Forward使用小实例
查看>>
一段jsp上传图片的代码
查看>>
利用oleDB对象,将数据库中全部表转换成XML文件
查看>>
使用SQL语句查询表中重复记录并删除
查看>>
XML 数据库
查看>>
android解析xml文件的方式
查看>>
应用JDOM处理数据库到XML转换的JSP实现
查看>>
服务器端响应文件postalcode.jsp
查看>>
JSP 学习
查看>>
Java 中的 XML:Java 文档模型的用法-JSP教程,Java与XML
查看>>
Visual Studio 2005调试程序时老是提示"生成“cmd.exe”时出错".
查看>>
vs2005快捷键
查看>>
Server-push技术(comet)----------asp.net中的异步处理+client与服务器端的长连接
查看>>
cannot open include file 'afxres.rc'
查看>>
MFC为简单对话框程序添加菜单并加上响应事件
查看>>
error LNK2001: unresolved external symbol "protected: void __thiscall
查看>>
Eric4安装
查看>>
android解析XML
查看>>
Java加密技术
查看>>