首页 > 学院 > 开发设计 > 正文

分布式文件系统:HDFS基础与应用

2019-11-06 06:18:17
字体:
来源:转载
供稿:网友

第一:HDFS概述

1. hdfs的优点

高容错性适合大数据处理构建在廉价机器上

- hdfs的缺点

不适用低延迟高吞吐

比如毫秒级低延迟和高吞吐率

不适用存储小文件小文件

占用namenode大量内存寻道时间超过存储时间namenode的block块有限制 不能并发写入,随机修改 一次写入,多次读取,一个文件只能有一个写者仅支持append

第二:HDFS基础架构与原理

1. 基础架构

namenode active namenode 主Master,只有一个,保存元数据信息standby namenode 备份namenode。定期合并fsimage和editsHA+Federation HA解决高可用,Federation解决单namenode资源不够datanode 实际存放的数据块。每个block默认为128Mclient 文件切割,namenode交互,datanode交互,管理和访问HDFS

2.原理

文件被分成若干个block。每个block默认128M每个block默认复制三份block存放在datanode第一个block存放在与client同节点上。第二个block存放在不同机架上。第三个block存放在第二个block同机架不同节点上CRC校验文件,Datanode定期向Namenode发送heartbeat,主备namenode。fsimage保存内存,同时备份fsimage+edit

第三:HDFS程序设计方法

基于Shell

文件命令操作bin/hdfs dfs -mkdir /homebin/hdfs dfs -ls /bin/hdfs dfs -put localfile /home管理命令bin/hdfs dfsadmin bin/hdfs fsck examplefile -files -locations -blocks均衡器balancebin/start-balancer.sh -threshold < percentage of disk capacity设置目录配额bin/hadoop dfsadmin -setSpaceQuota 1t /home/hadoop增加或移除节点 增加节点 将已存在的datanode安装包(包括配置文件)拷贝到新datanode上启动新datanode sbin/hadoop-deamon.sh start datanode 删除节点将datanode加入黑名单,并更新黑名单移除datanode bin/hadoop dfsadmin -refreshNodes

基于javaApi

将本地文件拷贝到hdfs上Configuration conf = new Configuration();FileSystem fs = FileSystem.get(conf);Path srcPath = new Path(srcFile);Path dstPath = new Path(dstFile);fs.copyFromLocalFile(srcPath,dstPath);创建hdfs文件Configruation conf = new Configuration();FileSystem fs = FileSystem.get(conf);Path path = new Path(fileName);FSFileDataOutputStream outputstream = hdfs.create(path);outputstream.write(buff,0,buff.length);

第四:HDFS优化小技巧

原始日志存储格式选择 文本文件 不便于压缩,选择合适的压缩算法很重要不建议将日志文件直接存储为文本格式SequenceFile 二进制格式,便于压缩,压缩格式作为元信息存到文件中建议采用该格式存储原始日志小文件优化 合并成大文件 Sequence FileHadoop Archive存在key/value系统中 HBaseTFS压缩与归档

第五:项目实践


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表