Hadoop分布式文件系统

Hadoop,技术帖,HDFS,BigData 2017-11-14

(此学习笔记整理于《Hadoop权威指南》第三章)

背景:Hadoop分布式文件系统:HDFS(Hadoop Distributed Filesystem)

1.HDFS的设计

  • HDFS以流式数据访问模式来储存超大文件,运行于商用硬件集群上。
  • 超大文件(几百MB、GB、TB)
  • 流式数据访问(一次写入、多次读取是最高效的访问模式。读取整个数据集的时间延迟比读取第一条记录的时间延迟更重要。)
  • 商用硬件(普通硬件、故障几率较大,但是坏掉可以继续运行且不让用户感到明显的中断。)
  • 低时间延迟的数据访问(如几十毫秒范围内的不适合HDFS,高数据吞吐量必定会以时间为代价。低延迟需求Hbase或许更好。)
  • 大量的小文件(该系统能存储的文件总数受限于namenode的内存容量,每个文件目录和数据块的存储信息大概占用150字节)
  • 多用户写入,任意修改文件(该系统只有1个writer,且写操作总是添加在文件的末尾。不支持多个writer或在文件的任意位置进行修改。)

2.HDFS的概念

  • 数据块(是磁盘进行数据读写的最小单位。HDFS默认64MB)
    • HDFS中的fsck指令可以显示块信息,例:% hadoop fsck / -files -blocks
  • namenode(主)和 datanode(从)
  • 联邦HDFS
    • 在2.x发行版本系列中引入的联邦HDFS允许 系统通过添加namenode实现扩展,其中每个namenode管理文件系统命名 空间中的一部分。例如,一个namenode可能管理/user目录下的所有文件, 而另一个namenode可能管理/share目录下的所有文件。
  • HDFS的高可用性(Hadoop 2.x版本利用了[HA]解决了单点失效[SPOF]的问题)

3.命令行接口

  • 伪分布时fs.default.name设置为hdfs://localhost/
  • dfs.replication设置为1(默认为3)
  • 文件系统的基本操作:hadoop fs -help

4.Hadoop文件系统

  • Hadoop有一个抽象的文件系统概念,HDFS只是其中的一个实现。
  • Java抽象类org.apache.hadoop.fs.FileSystem 定义了 Hadoop 中的一个文件系统接口,并且该抽象类有几个具体实现,如下表所示。
    hdfs4.png

    hdfs5.png

  • 接口

    • HTTP
    • C
    • FUSE(用户空间文件系统)

5.Java接口

  • 从Hadoop URL读取数据
    • 使用java.net.URL 对象打开数据流(只能被调用一次)
    • 调用Hadoop中简洁的IOUtils类并在finally字句中关闭数据流
  • 通过FileSystem API读取数据
  • 写入数据
    • create()方法
    • 重载方法Progressable
    • append()方法
  • 目录
    • public boolean mkdirs(Path f) throws IOException
  • 查询文件系统
    • 文件元数据FileStatus:getFileStatus()方法,exist()方法检测是否存在
    • 列出文件 listStatus()方法
    • 文件模式:globStatus()方法进行通配
    • PathFilter对象
  • 删除数据
    • public boolean delete(Path f,boolean recursive) throws IOException

6.数据流

  • 剖析文件读取

    • 读取流程

      hdfs1.png

    • Hadoop网络距离

      hdfs3.png

  • 剖析文件写入

    hdfs2.png

  • 一致模型:sync()方法

7.通过Flume和Sqoop导入数据(另行总结)

8.通过distcp并行复制(另行总结)

9.Hadoop存档

  • Hadoop存档工具:HAR文件
  • HAR文件的不足

本文由 BF 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

楼主残忍的关闭了评论

bst g22 jinniu lilai opebet orange88 vinbet xbet yuebo zunlong shijiebei bet007 hg0088 ju111 letiantang m88 mayaba qg777 qianyiguoji sbf777 tengbohui tlc ule weilianxier waiweitouzhu xingfayule xinhaotiandi yinheyule youfayule zhongying 2018shijiebei w88 18luck 188bet beplay manbet 12bet 95zz shenbo weide1946 ca88 88bifa aomenxinpujing betway bodog bt365 bwin tongbao vwin weinisiren 88jt fenghuangyule hongyunguoji 918botiantang huanyayule jianada28 jixiangfang libo long8 hongzuyishi zuqiutouzhu