您的位置:首页 > Web前端 > Node.js

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

2017-03-07 09:39 183 查看

第一:HDFS概述

1. hdfs的优点

高容错性

适合大数据处理

构建在廉价机器上

- hdfs的缺点

不适用低延迟高吞吐

比如毫秒级

低延迟和高吞吐率

不适用存储小文件小文件

占用namenode大量内存

寻道时间超过存储时间

namenode的block块有限制

不能并发写入,随机修改

一次写入,多次读取,一个文件只能有一个写者

仅支持append

第二:HDFS基础架构与原理

1. 基础架构

namenode

active namenode

主Master,只有一个,保存元数据信息

standby namenode

备份namenode。定期合并fsimage和edits

HA+Federation

HA解决高可用,Federation解决单namenode资源不够

datanode

实际存放的数据块。每个block默认为128M

client

文件切割,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 /home

bin/hdfs dfs -ls /

bin/hdfs dfs -put localfile /home

管理命令

bin/hdfs dfsadmin

bin/hdfs fsck examplefile -files -locations -blocks

均衡器balance

bin/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 File

Hadoop Archive

存在key/value系统中

HBase

TFS

压缩与归档

第五:项目实践

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息