《hadoop 权威指南》 学习笔记(2)Hadoop 分布式文件系统

来源:互联网 发布:guy里guy气网络用语 编辑:程序博客网 时间:2024/05/15 02:55

HDFS是Hadoop文件抽象中的一种实现方式,Hadoop中有很多种实现方式,HDFS是其中一种。mapreduce对很多文件系统提供支持,但是处理大数据是你还是需要选一个方便的文件系统,比方说HDFS。

HDFS是Hadoop Distributed FileSystem 的简称,他是一个以流式数据访问模式,来存储超大文件,运行于商用硬件上的集群。实际上hdfs除了一部分接口基本实现方式不同之外,一部分基本操作命令和传统linux操作是一致的。

下面简单说说HDFS的基本概念。


HDFS数据块

HDFS的数据块大小为64MB,HDFS的文件被划分为过个分块存储,但是大小小于一个块的文件不会占据整个块的空间。HDFS之所以设置块很大,是为了减少磁盘的寻址速度,而主要依靠磁盘传输速度。对分布式系统块抽象的好处有两点:1 文件的大小可以大于磁盘的大小,反正也是分着存。2使用块抽象,简化了存储子系统的设计,很多信息,比方说运行的要求权限等等都可以省略了。


HDFS为两种节点,namenode和datanode,那么namenode为管理者,储存文件系统树上的文件和目录,这些文件储存为命名空间镜像和编辑日志文件,datanode为工作者节点,在这两种节点中存在一种叫做client的存在,clinet是用户用来与namenodedatanode交互用的文件系统。


hdfs接口,

Hadoop是由java编写的。java api可以调用所有hadoop的交互操作,Hadoop实际支持很多接口,但是好吧,还是用java吧。

基本的操作如下:open() 函数,返回FSDataInputStream对象,继承自java的datainputstream接口,支持随机访问。

                                create() 函数,原型 public FSDataOutputSream create(path f) throw IOException 请注意,返回的是FSDataOutputSream类型,

                                public boolean mkdirs(path f) throws IOException 创建目录

                                seek()  函数,定位文件位置,可以定位于文件中的任意绝对位置。 

代码之类的东西比较难记,就不多说了,重点在于理解理念。


数据流,

数据流中的操作主要分为两种:文件读取,文件写入。

namenode管辖着文件的目录,错误等信息,client可能也是datanode节点。



读取文件。


写入节点。



0 0
原创粉丝点击