HDFS 分布式文件存储服务(三) 操作维护

操作命令

  • 创建用例
* get
fs = FileSystem.get(conf)
  • 创建目录
* mkdirs
fs.mkdirs(path)
  • 写入文件
* create
out = fs.create(path)
out.write(bytes)
out.hsync()
IOUtils.closeStream(out)
  • 追加文件
* append
out = fs.append(path)
out.write(bytes)
out.hsync()
IOUtils.closeStream(out)
  • 读取文件
* open
in = fs.open(path)
reader = new BufferedReader(new InputStreamReader(in))
readerLine = reader.readLine()
IOUtils.closeStream(reader)
IOUtils.closeStream(in)
  • 删除文件
* delete 
fs.delete(path,false)
  • 删除目录
* delete 
fs.delete(path,true)
  • 存储策略
* 为HDFS上某个文件或文件夹指定存储策略。policyName
* <li>HOT 
* <li>WARM 
* <li>COLD 
* <li>LAZY_PERSIST 
* <li>ALL_SSD 
* <li>ONE_SSD 

DistributedFileSystem dfs = (DistributedFileSystem) fs
BlockStoragePolicySpi[] storage = dfs.getStoragePolicies();
dfs.setStoragePolicy(destPath, policyName);

  1. FileSystem:是客户端应用的核心类
get
create
copyFromLocalFile
mkdirs
rename
delete
exists
getFileStatus
getFileBlockLocations
open
create
append

2.FileStatus:记录文件和目录的状态信息

getModificationTime
getPath

运行维护

  • 内存规划
    NameNode JVM配置可以根据文件对象数量来评估,正常情况下每1千万文件数量,nn的堆内存需要6G,
  • 容量均衡
    1. datanode的balance
    2. disk的balance
    3. 副本放置策略(可用磁盘剩余空间策略(org.apache.hadoop.hdfs.server.datanode.fsdataset.AvailableSpaceVolumeChoosingPolicy )
  • 回收机制
    默认1h检测一次,默认2天清理一次,skiptrash跳过回收站直接删除
  • 文件权限
    默认创建文件或文件夹权限是755
  • 预留磁盘
    预留磁盘百分比 默认10%
  • 常见问题
  1. IOException (Too many open files) 句柄数超过限制
  2. 当执行HDFS客户端命令时,客户端程序异常退出,报“java.lang.OutOfMemoryError”的错误,需要修改CLIENT_GC_OPTS修改HDFS客户端的内存上限
  3. 在JournalNode节点有断电,数据目录磁盘占满,网络异常时,会导致JournalNode上的EditLog不连续。此时如果重启NameNode,很可能会失败。需要从其他jn节点上把EditLog拷贝补齐,然后重启

配置调优

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容