HDFS教程:HDFS介绍及特点

最近需要部署hdfs文件系统,于是乎也学习了一些hdfs文件系统。看到一篇觉得还不错的博客,就翻译记录一下吧

https://www.edureka.co/blog/hdfs-tutorial

HDFS教程

在继续学习hdfs之前,我们先来看一组关于HDFS的令人激动的统计数据:

  • 2010年的时候,Facebook宣布他们拥有一个最大的HDFS集群,这个集群中存储了21PB的数据
  • 2012年的时候,Facebook宣布他们最大的HDFS集群存储的数据量超过100PB
  • Yahoo! 拥有40000台服务器100000个CPU运行Hadoop。他们拥有最大的Hadoop集群,包括了4500个节点。Yahoo!在他们的HDFS中存储了455PB的数据
  • 事实上,截止到2013年,财富杂志前50的绝大多数公司都已经开始使用Hadoop。

 

太令人震惊了不是吗?在Hadoop教程中,我们提到Hadoop有两个基本单元:存储(Storage)和运算(Processing)。Hadoop的存储部分就是指HDFS,HDFS是Hadoop使用的分布式文件系统。在这篇博客中,我将向你介绍HDFS。

我们将会讨论:

  • 什么是HDFS?
  • HDFS的优势
  • HDFS的特点

在讨论HDFS之前,我先来讲一讲,什么是分布式文件系统?

DFS or Distributed File System分布式文件系统

分布式文件系统主要解决数据管理的问题。比如:多个机器上的文件和文件夹。换句话说,DFS是一个文件系统,这个文件系统允许我们在多台机器上存储存储数据并且允许多个用户访问数据。所以,它和我们机器的本地文件系统有些相似,比如windows的NTFS文件系统,Mac的HFS。DFS和本地文件系统唯一的不同点在于,使用DFS你讲数据存储在多台机器上而不是一台。如何通过网络传输来存储这些数据,这是DFS解决的问题。DFS还解决多台机器存储的数据的战时问题,使得用户在机器前,使用DFS时感觉所有的数据都存储在一台机器上一样。

什么是HDFS?

Hadoop 分布式文件系统HDFS是一个基于Java的文件系统,这个文件系统允许你将大量数据存储在Hadoop集群中的多个节点上。所以当你安装Hadoop之后,在这个分布式环境中,HDFS就是底层存储数据的系统。

举一个例子,设想一下,你拥有十台机器,每台机器有一个1TB的硬盘,如果在这10台机器上部署一个hadoop集群,HDFS就提供存储服务。Hadoop分布式文件系统是分布式的,在这种模式下,每台机器都把他们的硬盘贡献出来来存储数据。

HDFS教程:HDFS的优势

1、分布式存储:

当你在10台机器上的任一台机器访问Hadoop文件系统的时候,等效与你使用了一台拥有10TB存储容量的机器(这10台机器的总的存储容量)。这意味着,你可存储一个10TB的文件。并不受到机器的物理边界的限制。

2、分布式&并行计算:

由于所有的数据分散到10台机器上存储了,我们可以发挥分布式和并行计算的优势。我们通过上面的图来理解一下。假设,在一台机器上处理1TB的数据需要43分钟,那么在一台拥有10个节点的额hadoop集群里面,处理1TB的数据只需要4.3分钟,所有机器在并行处理这1TB数据的一部分,所以处理时间会除以10。

3、水平可扩展性:

最后一点但不是最不重要的,我们来讨论Hadoop的水平扩展性(horizontal scaling or scaling out)。有两种扩容方式:垂直和水平。对于垂直扩容来说(scale up),增加的是系统的硬件容量。你需要增加更多的RAM和CPU来使得你的系统更牛×(原文是powerful,我不知道怎么翻译了。。)更鲁棒。但是这种垂直扩容也存在一些问题和挑战:

  • 对于硬件能力的增加,总是有一个上限的,所以不能不停地增加CPU和RAM的数量。
  • 在垂直扩容中,你需要先停掉你的机器,接着来增加RAM或者CPU的容量。之后在重启机器,所以说会有一段系统宕机的时间。

对于水平扩容来说(scale out),你只是在现有集群中增加节点,并不需要硬件能力的提升。并且你不需要停掉现有的机器。最终你可以拥有更多机器来并行处理你的需求。

HDFS特点:

当你进一步学习HDFS的架构的时候,就可以更好的理解HDFS的这些特性。现在我们只是对HDFS的特点做一个概述:

  • 成本:一般来说,HDFS是部署在一些廉价的机器上的。所以对于大型项目来说经济实惠。搭建Hadoop集群并不需要花太多钱。
  • 数据量大:HDFS一般都用于存储海量数据,达到TB或者PB级别。你可以存储不同类型的数据在HDFS上,包括结构化数据、非结构化数据、半结构化数据。
  • 稳定性和容错性:当你在HDFS上存储数据的时候,HDFS会将数据分成多个块,将这些块存储在Hadoop集群中不同的机器上,存储在数据节点上的这些数据块的信息被称为元数据。NameNode管理着元数据,DataNode负责存储数据块。NameNode同样也会进行复制操作,维护数据的副本。这种数据的复制操作使得HDFS的稳定性更高一些,增加了容错性。所以当某个节点失效了,我们依然可以从其他节点拿到数据的副本。默认的副本数量是3,所以如果在HDFS上存储1GB的数据,实际会占据3GB的空间。name node会周期性地更新元数据,并且保持副本数量是一个常量。
  • 数据的完整性:数据的完整性讨论的是存储在HDFS上的数据是否正确,HDFS会一直通过校验和来检查数据的完整性,如果发现了错误,会报告错误相关的name node。接着,对应的name node会增加一个新的副本,删除错误的副本。
  • 高吞吐量:吞吐量是单位时间内完成的任务数量。吞吐量反映了你通过文件系统访问数据的速度。可以向你展示文件系统的性能,就好比上面的例子中,使用10个节点的集群来提升了计算能力。通过并行的数据处理,我们大大降低了处理时间,实现了高吞吐量。
  • 数据本地化:数据本地化指的是将计算进程移动到和数据一起,而不是将数据移动到和进程一起。在传统的系统中,应用层使用并处理数据。现在由于我们存储的是海量数据,所以将数据移动到应用层会降低整个系统的性能。所以在HDFS中,我们把一部分计算程序移动到存储数据的机器上,所以,移动的不是数据,而是处理数据的程序。

目前你对于HDFS有了一个初步的认识了。但是这只是冰山的一角,接下来我会更深入的讲解HDFS的架构,揭开HDFS成功的秘密。也会回答一些问题:

当你在HDFS中读或写数据的时候,整个集群是如何运作的?

为什么rack awareness算法可以让HDFS有高容错性?

HDFS是如何建立并管理副本的?

块操作是什么?

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值