Hadoop学习

HDFS(HadoopDistribute File System),也就是Hadoop分布式文件系统。 它在Hadoop中是非常重要的.

 一、HDFS的主要设计理念:

  1、存储超大文件,这里的“超大文件”是指几百MB、GB甚至TB,PB级别的文件。

     2、最高效的访问模式是 一次写入、多次读取(流式数据访问),HDFS存储的数据集作为hadoop的分析对象。在数据集生成后,长时间在此数据集上进行各种分析。每次分析都将设计该数据集的大部分数据甚至全部数据,因此读取整个数据集的时间延迟比读取第一条记录的时间延迟更重要。

     3、运行在普通廉价的服务器上,HDFS设计理念之一就是让它能运行在普通的硬件之上,即便硬件出现故障,也可以通过容错策略来保证数据的高可用。

  二、HDFS的体系结构:


 

 

简述:

    数据块(block):大文件会被分割成多个block进行存储,block大小默认为64MB。每一个block会在多个datanode上存储多份副本,默认是3份。

 

    namenode:1,负责管理文件目录、文件和block的对应关系以及block和datanode的对应关系还有datanode的副本信息,2,协调客户端对文件的访问,3,记录命名空间内的改动或本身属性的改变;4,使用事务日志记录HDFS元数据的变化,使用映像文件存储文件系统的命名空间,包括文件映射文件属性。

 

    datanode:datanode就负责存储了,当然大部分容错机制都是在datanode上实现的,一次写入多次读取不修改。

 

三、HDFS读写操作图:

      1,读取数据流程:

客户端要访问HDFS中的一个文件

首先从namenode获得组成这个文件的数据块位置列表

根据列表知道存储数据块的datanode

访问datanode获取数据

Namenode并不参与数据实际传输

 

 

     2,写入数据流程:

        客户端请求namenode创建新文件

客户端将数据写入DFSOutputStream

建立pipeline依次将目标数据块写入各个datanode,建立多个副本

 

 

 四、HDFS高可靠性原由,很容易理解:

冗余副本策略

机架策略

心跳机制

安全模式

校验和

回收站

元数据保护

快照机制

 

 五、HDFS文件操作方法:

 

      1,linux命令行操作:

         列出HDFS下的文件: ./bin/hadoop fs -ls [文件夹目录名]

         上传文件到HDFS:    ./bin/hadoop fs -put [上传文件路劲+名字]  [指定要上传的hadoop路径]

         复制到本地文件:./bin/hadoop fs -get  [hadoop中文件路劲+名字]    [本地文件夹]

         删除HDFS下的文件:./bin/hadoop fs -rmr [hadoop文件路径+名字]

         查看HDFS的基本统计信息: ./bin/hadoop dfsadmin -report

 

      2,API编程:这个就需要我们看Hadoop的API文档来进行Java开发的调用,然后实现文件的各种操作,给一个hadoop的api链接:http://hadoop.apache.org/docs/r1.2.1/api/index.html 

 

六、HDFS的忌讳:

1、将HDFS用于对数据访问要求低延迟的场景:由于HDFS是为高数据吞吐量应用而设计的,必然以高延迟为代价。

2、存储大量小文件:HDFS中元数据(文件的基本信息)存储在namenode的内存中,而namenode为单点,小文件数量大到一定程度,namenode内存就吃不消了。

 

   小结:HDFS分布式文件系统,是Hadoop能够进行大数据高效处理的基础平台,有了这个平台才能有后边Map-Reduce的计算框架的运用。这里想多说的是,作为开发程序员,我们该多看看Hadoop的API文档,在用中不断熟悉,不断掌握,就想JDK的API文档一样。

posted @ 2015-08-29 09:47  xiaoguozi0218  阅读(93)  评论(0)    收藏  举报