HDFS
1.什么是HDFS
HDFS: Hadoop分布式文件系统(Distributed File System) - HDFS (Hadoop Distributed File System)
2.HDFS的来源
源于Google 三大论文的GFS论文,HDFS是GFS的克隆版
3.HDFS的设计目标
1.自动快速检测应对硬件错误(硬件错误为常态)
2.流式处理访问数据()
3.移动计算比移动数据本身更划算 (不需要来回拷数据,直接拷jar包)
4.简单一致性模型 (可读,写,复制等不可修改)
5.异构平台可移植 (可使用别的软件替换重写一些模块)扩展性比较好
4.HDFS的特点
优点:
(一)高可靠性:Hadoop按位存储和处理数据的能力值得人们信赖;
(二)高扩展性:Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
(三)高效性:Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
(四)高容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
缺点:
(一)不适合低延迟数据访问。
(二)无法高效存储大量小文件。
1.namenode 名字节点(中心节点)单一节点,存储数据的元数据,类似于经理不干活
2.secondary namenode 辅助节点 同步元数据(镜像文件Fsimage)和日志文件(FsEdits) 类似于秘书
3.datanode 数据节点 存储数据和数据校验和csc32 最小存储单位:块(默认128M)
6.HDFS写的工作原理
1.客户端Client发出请求打开DistributedFilesystem类
2.DistributedFilesystem类中crete 方法请求namenode 创建一个空间(如果已存在覆盖,如果不存在上传)
3.写流程,FSDataOutputStream类创建对象
4.FSDataoutputStream开始写入根据客户端的入库条
5.datanode开始写入数据 写完后标记写入ack队列
6.客户端close FSDataoutputStream
7.HDFS读取的工作原理
1.客户端Client发出请求打开DistributedFilesystem类
2.DistributedFilesystem类中getblockloction方法请求namenode 得到数据存放地址
3.读流程,FSDataInputStream类创建对象
4.客户端根据地址最近的副本FSDataInputStream读取(三个副本一个解决安全问题和优化问题)
6.客户端close FSDataInputStream
1.什么是HDFS
HDFS: Hadoop分布式文件系统(Distributed File System) - HDFS (Hadoop Distributed File System)
2.HDFS的来源
源于Google 三大论文的GFS论文,HDFS是GFS的克隆版
3.HDFS的设计目标
1.自动快速检测应对硬件错误(硬件错误为常态)
2.流式处理访问数据()
3.移动计算比移动数据本身更划算 (不需要来回拷数据,直接拷jar包)
4.简单一致性模型 (可读,写,复制等不可修改)
5.异构平台可移植 (可使用别的软件替换重写一些模块)扩展性比较好
4.HDFS的特点
优点:
(一)高可靠性:Hadoop按位存储和处理数据的能力值得人们信赖;
(二)高扩展性:Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
(三)高效性:Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
(四)高容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
缺点:
(一)不适合低延迟数据访问。
(二)无法高效存储大量小文件。
(三)不支持多用户写入及任意修改文件。
1.namenode 名字节点(中心节点)单一节点,存储数据的元数据,类似于经理不干活
2.secondary namenode 辅助节点 同步元数据(镜像文件Fsimage)和日志文件(FsEdits) 类似于秘书
3.datanode 数据节点 存储数据和数据校验和csc32 最小存储单位:块(默认128M)
6.HDFS写的工作原理
1.客户端Client发出请求打开DistributedFilesystem类
2.DistributedFilesystem类中crete 方法请求namenode 创建一个空间(如果已存在覆盖,如果不存在上传)
3.写流程,FSDataOutputStream类创建对象
4.FSDataoutputStream开始写入根据客户端的入库条
5.datanode开始写入数据 写完后标记写入ack队列
6.客户端close FSDataoutputStream
7.HDFS读取的工作原理
1.客户端Client发出请求打开DistributedFilesystem类
2.DistributedFilesystem类中getblockloction方法请求namenode 得到数据存放地址
3.读流程,FSDataInputStream类创建对象
4.客户端根据地址最近的副本FSDataInputStream读取(三个副本一个解决安全问题和优化问题)
6.客户端close FSDataInputStream