Hadoop第一讲--HDFS(分布式文件存储系统)
- HDFS 是什么?
HDFS 名称是(Hadoop Distributed File System )首字母缩写,即分布式文件存储系统,是Hadoop 大数据项目的一个子项目。是基于流数据模型访问和处理超大文件数据的需求而开发。具有高容错性,高可扩展性,高吞吐率等特性,为大数据集的应用提供了良好的应用。
另外 HDFS 来源于google 2003年发表的一篇论文,严格来说就是GFS(Google File System) 的克隆版。
- HDFS 的优点
1,高容错性
数据块Block 默认有3个副本 ,会自动保存数据,即使有丢失也会自动恢复。
2,大数据处理
能够处理超大数据 GB ,TB ,PB 量的数据。百万规模以上的文件数量。10k+节点
3,对机器要求低可以构建在廉价的机器上
通过多副本提高了可靠性,提供了容错和恢复机制。
4,流式访问
一次写入多次读取,文件一旦写入就不能修改只能追加。
5,适合批处理
通过移动计算而不是移动数据
把数据位置暴露给计算框架。
- HDFS 缺点
1,低延时数据场景访问不能用
只适合高吞吐的场景,也就是在某一段时间内读取大量的数据,但是在毫秒级内无法完成这么大的读取量。
2,小文件存储的场景不能用
小文件存储的寻道时间会比读取的时间长,这样就违背 了hdfs 的设计目标了。
过多的小文件会占用大量的nameNode 内存,这样得不偿失。
3,并发写入,随机修改场景不能用
一个文件只能有一个文件写入者,不能多线程写入,并且追加只能用 append.
- HDFS 系统架构
按我的理解可以分为4个角色:1,Client 客户端 2,NameNode 主管 3,SecondaryNameNode 辅助员 4,DataNode 执行员
1,客户端 Client
主要负责对上次道系统的文件进行切分成block 然后存储。
并且与NameNode 和 DataNode 交互文件的位置信息并写入数据。
提供一下命令管理hdfs 系统并关闭系统。
2, 主管 NameNode
处理客户端的请求
管理数据块block 的 映射信息 。
配置block 副本的策略
3, 辅助员 secondary NameNode
辅助主管完成其他的工作量
定期合并 fsimage 和 fsedits 并推送给 主管
4,执行员 DataNode
存储实际的数据块,完成读写文件操作
他们的关系如图:
- HDFS 如何读取文件
简单来说 就是, 打开 DistributedFileSystem 实例 向 NameNode获得文件的第一批block的locations
通过FSDataInputStream对象 Client 的read 方法 读取dataNode 数据。
- 放副本的策略
- DataNode(DN)
– 存储数据(Block) – 启动DN线程的时候会向NN汇报block信息 – 通过向NN发送心跳保持与其联系(3秒一次),如果NN 10分钟没有收 到DN的心跳,则认为其已经lost,并copy其上的block到其它DN
- NameNode(NN)
– NameNode主要功能:接受客户端的读写服务 – NameNode保存metadate信息包括 • 文件owership和permissions • 文件包含哪些块 • Block保存在哪个DataNode(由DataNode启动时上报) – NameNode的metadate信息在启动后会加载到内存 • metadata存储到磁盘文件名为”fsimage” • Block的位置信息不会保存到fsimage
• edits记录对metadata的操作日志
- HDFS 数据存储单元(block)
– 文件被切分成固定大小的数据块 • 默认数据块大小为64MB ,可配置 • 若文件大小不到64MB ,则单独存成一个block – 一个文件存储方式 • 按大小被切分成若干个block ,存储到不同节点上 • 默认情况下每个block都有三个副本 – Block大小和副本数通过Client端上传文件时设置,文件上传成功后副本 数可以变更,Block Size不可变更
- Hadoop分布式文件存储系统HDFS高可用HA搭建(何志雄)
- lucene索引文件存储在hadoop hdfs文件系统的疑问
- Hadoop (HDFS)分布式文件系统基本操作 推荐
- [置顶] Hadoop文件存储系统-HDFS详解以及java编程实现
- 完全分布式搭建HDFS分布式文件存储系统
- Hadoop (HDFS)分布式文件系统基本操作
- Hadoop分布式文件存储系统
- Hadoop HDFS概念学习系列之分布式文件管理系统(二十五)
- HDFS分布式文件存储系统
- 分布式文件存储系统HDFS 05
- 分布式内存文件系统alluxio的安装,底层存储使用hdfs
- 用FUSE挂载hadoop的hdfs文件系统
- Hadoop教程(三)HDFS文件系统Shell命令
- Hadoop2.x:HDFS存储小文件问题及其解决方法
- 06 _使用命令在hadoop的HDFS中存储文件
- 一共81个,开源大数据处理工具汇总:查询引擎、流式计算、迭代计算、离线计算、键值存储、表格存储、文件存储、资源管理、日志收集系统、消息系统、分布式服务、集群管理、基础设施、搜索引擎、数据挖掘=监控
- 使用HDFS API实现hadoop HDFS文件系统的基本操作
- eclipse使用JavaAPI操纵Hadoop的HDFS文件系统时提示权限不足的解决方案
- hadoop中HDFS文件系统常用命令:
- Hadoop的HDFS文件存储实现机制