HDFS是为高数据吞吐量应用优化的,以高时间延迟为代价,对于低延迟的访问需求Hbase是更好的选择。
HDFS的块比磁盘块大,其目的是最小化寻址开销。如果块设置的足够大,从磁盘传输数据的时间可以明显大于定位这个块开始位置所需的时间。这样传输一个由多个块组成的文件的时间取决于磁盘传输速率。
对HDFS的块进行抽象会带来两个好处:
每个块默认3个副本
设置伪分布式配置时,有两个属性项需要进一步解释。
第一项是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。
原文:https://www.cnblogs.com/chenshaowei/p/12402329.html