首页 > 其他 > 详细

HDFS

时间:2020-03-03 15:07:03      阅读:70      评论:0      收藏:0      [点我收藏+]

HDFS的构建思路是 一次写入多次读取是最高效的访问模式。

HDFS是为高数据吞吐量应用优化的,以高时间延迟为代价,对于低延迟的访问需求Hbase是更好的选择。

块设计思想

HDFS的块比磁盘块大,其目的是最小化寻址开销。如果块设置的足够大,从磁盘传输数据的时间可以明显大于定位这个块开始位置所需的时间。这样传输一个由多个块组成的文件的时间取决于磁盘传输速率。

对HDFS的块进行抽象会带来两个好处:

  1. 一个文件的大小可以大于网络中任意一个磁盘的容量
  2. 大大简化了存储子系统的设计

每个块默认3个副本

namenode的作用

  • namenode管理文件系统的命名空间 维护文件系统树及整棵树内所有的文件和目录
  • namenode也记录着每个文件中各个块所在的数据节点信息,
  • 客户端通过namenode和datanode来访问整个文件系统

datanode的作用

  • DataNode是文件系统的工作节点
  • 两种机制来保护Namenode出错:
  1. 第一种机制 备份那些组成文件系统元数据持久状态的文件,将持久状态写入本地磁盘的同时,写入一个远程的网络文件系统
  2. 另一种机制是 secorndnamenode 保存合并后的命名空间镜像的副本,并在namenode发生故障时启用,但是会滞后难免丢失一些信息

伪分布式配置

设置伪分布式配置时,有两个属性项需要进一步解释。

第一项是fs.default.name设置为hdfs://localhost/用于设置Hadoop的默认文件系统。配置HDFS为Hadoop的默认文件系统。

第二个属性dfs.replication设置1 副本设为1相对路径将文件复制到HDFS的home目录中,/user/hadoop 为home目录

HDFS中的文件访问权限 只读权限r 写入权限w 可执行权限x
HDFS定义了HTTP和FTP两种接口,可以交互。

通过FileSystem API读取数据 Filesystem是一个通用的文件系统API

通信

Distributedfilesystem通过使用RPC来调用namenode 以确定文件起始块的位置,对于每一个块,namenode返回存有该副本的datanoede地址,如果客户端本身就是一个datanode并保存一个副本,节点将从本地datanode读取数据。

文件写入剖析

调用create函数来创建文件,对NameNode创建一个RPC调用,在文件系统的命名空间中创建一个新文件,此时该文件中还没有相应的数据块。NameNode执行检查以确保这个文件不存在,检查通过,namenode就会创建新文件记录一条近路,否则抛出异常。DIstributedfilesystem向客户端返回一个FSdataoutputstream对象,由此客户端可以开始写入。FSDATAOUTPUTSTREAM封装了一个DFSoutputstream对象,负责datanode和namenode之间的通信。一组datanode构成一个管线,Datastreamer将数据包流式传输到第一个datanode,该Datanode存储后发送到第二个datanode。

HDFS

原文:https://www.cnblogs.com/chenshaowei/p/12402329.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!