一、适合 HDFS 的场合
1、超大文件:几百MB、几百GB、几百TB、PB
2、流式访问:一次写入,多次访问
3、商用硬件:不昂贵,可以容忍故障
二、不适合HDFS的场合
1、低时间延迟的数据访问 (可以用HBase)
2、大量的小文件:将耗尽NameNode 的内存
3、多用户写入,任意修改文件
三、HDFS 概念
1、块:默认64M 大小,好处:可以最小化寻址时间;文件容量可以大于磁盘容量;简化存储子系统,适用于存储。
2、NameNode:管理文件系统的命名空间,包括命名空间镜像文件fsimage、编辑日志文件 edits。丢失NameNode,整个文件系统将无法使用。
3、DateNode:存储并检索数据块,向Namenode 发送文件裂变
4、NameNode 容错保证:备份NameNode 元数据;在hadoop2 中运行StandBy NameNode,保证HA。
四、HDFS操作
1、通过命令行借口:put get ls rm cat mkdir 等。
2、通过 FileSystem API:
Configuration conf = new Configuration() String uri = "hdfs://10.1.1.1:9000/user/admin/content.txt" FileSystem fs = FileSystem.get(URI.create(uri), conf); InputStream in = fs.open(new Path(uri));
可支持随机访问
五、HDFS 的数据流
1、文件读取
2、文件写入