谷歌清单文件缺失或不可读取_HDFS分布式文件系统详解

1、Hadoop是什么?

Hadoop由三个模块组成:分布式存储HDFS、分布式计算MapReduce、资源调度引擎YARN

413f1288170b4f4086e09e1f071eb426.png

2、Hadoop历史

3445d6227bce0672602965835e3efe59.png
  • Hadoop作者Doug Cutting
  • Apache Lucene是一个文本搜索系统库
  • Apache Nutch作为前者的一部分,主要包括web爬虫、全文检索;2003年“谷歌分布式文件系统GFS”论文,2004年开源版本NDFS
  • 2004年“谷歌MapReduce”论文,2005年Nutch开源版MapReduce

735d7e700f6fe01d101ab462d0d166e6.png

3、HDFS

HDFS是什么?

  • HDFS是Hadoop中的一个存储子模块
  • HDFS (全称Hadoop Distributed File System),即hadoop的分布式文件系统
  • File System文件系统
    • 操作系统中负责管理文件、存储文件信息的软件;
    • 具体地说,它负责为用户创建文件,存入、读取、修改、转储、删除文件等等操作
    • 比如windows下的文件系统

cf8a0320a6c9a87c36ebb79248a4f46c.png

分布式文件系统(distributed filesystem)

  • 当数据集大小超出一台计算机的存储能力时,就有必要将它拆分成若干部分,然后分散到不同的计算机中存储。
  • 管理网络中跨多台计算机存储的文件系统称之为分布式文件系统

f47c42a1ee7738d77b83e3daeaeba017.png

4、HDFS特点

优点:

  • 适合存储大文件,能用来存储管理PB级的数据;不适合存储小文件
  • 存储非结构化数据
  • 流式的访问数据,一次写入、多次读写
  • 运行于廉价的商用机器集群上,成本低
  • 高容错:故障时能继续运行且不让用户察觉到明显的中断
  • 容量可扩展

局限性

  • 不适合处理低延迟数据访问
    • DFS是为了处理大型数据集分析任务的,主要是为达到高的数据吞吐量而设计的
    • 对于低延时的访问需求,HBase是更好的选择
  • 无法高效存储大量的小文件
    • 小文件会给Hadoop的扩展性和性能带来严重问题(How?)
    • 利用SequenceFile、MapFile等方式归档小文件(How?)

不支持多用户写入及任意修改文件

    • 文件有一个写入者,只能执行追加操作
    • 不支持多个用户对同一文件的写操作,以及在文件任意位置进行修改,但支持追加

小结:

  • HDFS是Hadoop中的分布式文件系统
  • HDFS高容错
  • 可扩展
  • HDFS适合存储大文件,不适合存储小文件
  • 不适合处理低延时的数据方问

5、HDFS体验

WEB UI界面

注意:
若在windows下,能够访问node01:50070,需要配置C:WindowsSystem32driversetchosts文件,
末尾添加如下三行内容
192.168.51.100 node01
192.168.51.110 node02 1
92.168.51.120 node03
  • 访问HDFS的web界面,浏览器访问
 node01:50070

c8829e64652f86d66a7c8ba2490f8274.png

6、核心概念

数据块block

HDFS block块

  • 向HDFS上传文件,是按照128M为单位,切分成一个个block,分散的存储在集群的不同数据节点datanode上
  • 问:HDFS中一个44M大小的block块会不会占据128M的空间?
    • 不会
    • 小于128M大小的块不会占据128M空间,此例占据44M
  • 问:这样存储有没有问题?
    • hadoop集群搭建在廉价的商用服务器上,所以服务器有出问题的几率

93682b86282241de62358409fc033664.png
  • 因为HDFS是用普通的商用服务器搭建起来的;所以有节点出问题的可能性;
  • 那么如果每个block只有一份的话,当block所在的节点宕机后,此block将无法访问,进而导致文件无法完整读取
  • 为保正数据的可用及容错,HDFS设计成每个block共有三份,即三个副本
  • 如何设置副本数?
    • replication = 3
    • hdfs-site.xml

<property>
<name>dfs.replication</name>
<value>3</value>
</property>

e2c75c857164003cdecb727e9f60bb2a.png
  • 设置文件副本数,有什么用?
    • 数据分块存储和副本的存放,是保证可靠性和高性能的关键
    • 方式一:使用命令设置文件副本数;动态生效,不需要重启hadoop集群
      hadoop fs -setrep -R 4 /path
    • 方式二:修改配置文件hdfs-site.xml,需要重启hadoop集群才能生效
      <property>
      <name>dfs.replication</name>
      <value>4</value>
      </property>
  • HDFS提供了fsck命令,用于检查HDFS上文件和目录的健康状态、获取文件的block信息和位置信息
 [hadoop@node01 ~]$ hdfs fsck

0c80830c38e5b753bb33cd7b2a26166b.png
  • 查看文件中损坏的块
 [hadoop@node01 ~]$ hdfs fsck /tmall-201412-1w.csv -list-corruptfileblocks
  • 删除损坏的文件
 [hadoop@node01 ~]$ hdfs fsck  /tmall-201412-1w.csv -delete
  • 查看文件的块基本信息
 hdfs fsck /02-041-0029.mp4 -files -blocks -locations
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值