加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

从HDFS和MapReduce两方面相识Hadoop

发布时间:2019-03-22 17:06:43 所属栏目:教程 来源:佚名
导读:简介 Hadoop 是一个可以或许对大量数据举办漫衍式处理赏罚的软件框架,框架最焦点的计划就是:HDFS 和 MapReduce。HDFS 为海量的数据提供了存储,而 MapReduce 则为海量的数据提供了计较。这篇文章就首要从 HDFS 和 MapReuce 两个大的方面睁开对 Hadoop 讲授,虽然
副问题[/!--empirenews.page--]

简介

Hadoop 是一个可以或许对大量数据举办漫衍式处理赏罚的软件框架,框架最焦点的计划就是:HDFS 和 MapReduce。HDFS 为海量的数据提供了存储,而 MapReduce 则为海量的数据提供了计较。这篇文章就首要从 HDFS 和 MapReuce 两个大的方面睁开对 Hadoop 讲授,虽然为了直观的测试 HDFS 提供的富厚的 API 以及我们编写的 MapReduce 措施,在阅读下面的内容之前,你必要筹备一台安装了 Hadoop 的呆板(也可所以假造机),假如你还没有安装的话,可以参考《在 Ubuntu 上安装 Hadoop》。

初识 Hadoop

HDFS

HDFS 观念

在说 HDFS 之前我们先来表明一下什么是 DFS,DFS 的全称是 Distributed File System,翻译过来就是漫衍式文件体系,而 HDFS 就是 Hadoop 自带的漫衍式文件体系。

相干名词

为了后头各人更轻易领略文章,这里行使必然的篇幅来简朴的先容一下与 HDFS 相干的一些组件可能名词的观念。

  1. NameNode,打点节点,打点体系的定名空间,维护着整个文件体系的布局和目次信息,凡是环境下一个 Hadoop 集群只会有一个事变的 NameNode。
  2. DataNode,事变节点,文件体系的事变节点,首要是按照必要举办存储可能检索数据块,而且按期向 NameNode 陈诉它们所存储的数据块列表。
  3. 数据块,同我们常行使的磁盘上的文件系同一样,HDFS 也稀有据块的观念,默认的巨细为 128M。
  4. 块缓存,一样平常环境下,我们通过 HDFS 从 DataNode 中检索数据时,DataNode 都是从磁盘中读取,可是对付会见很频仍的文件,它所对付的数据块也许会被缓存到 DataNode 的内存中,以加速读取速率,这就是所谓的块缓存。
  5. 联邦 HDFS,其拭魅这个就是为了办理 Hadoop 不得当存储数目复杂的文件的题目,同时由多个 NameNode 来维护整个文件体系的体系树以及文件和目次,每个 NameNode 认真打点文件体系定名空间中的一部门。

特征

下面我们就一路来看下 HDFS 有哪些特征:

  1. 存储超大文件,因为 HDFS 是漫衍式的文件体系,以是不受单台呆板的存储巨细的限定,可以存储超大文件,今朝已经到达了 PB 级了。
  2. 流式会见数据。
  3. HDFS 对硬件的要求并不是很高,可以运行在便宜的商用硬件上。
  4. 不得当低耽误的数据会见,因为 Hadoop 的流式数据会见,会见数据会有写耽误,以是不太得当低时刻耽误的数据会见,一样平常环境下这种需求我们会行使相关型数据库来实现。
  5. 不得当大量的小文件存储,缘故起因是 NameNode 将文件体系的元数据存储在内存中,每存储一个文件都必要在 NameNode 中存储该文件的目次、存储在哪个 DataNode 中等等的数据。以是假如文件的数目到达数十亿的话 NameNode 的内存很也许不足用了。
  6. 不支持多用户写入,以及恣意的修改文件,只可以在文件末端添加内容。

HDFS 的呼吁行操纵

呼吁行接口是 HDFS 全部范例的接口中最简朴的,也是每个开拓者都必必要把握的。下面我们就罗列几个简朴的呼吁行操纵,可是在操纵前你必需凭证第一章的内容安装好了 Hadoop,而且启动了 HDFS。

建设目次。

  • 清单 1. 建设目次呼吁
  1. hadoop fs -mkdir /test 

查察目次。

  • 清单 2. 建设目次呼吁
  1. hadoop fs -ls / 

上传文件,紧跟-put 后头的 test.txt 是要推送到 HDFS 中的文件,/test 是指定要推送到 HDFS 上哪个目次下面。

  • 清单 3. 上传文件
  1. hadoop fs -put test.txt /test 

删除文件。

  • 清单 4. 上传文件
  1. hadoop fs -rm /test/test.txt 

着实通过上面例举的几个呼吁我们可以看出 HDFS 的文件操纵呼吁险些和 Linux 上的呼吁同等,这样我们行使起来会很轻易上手。

HDFS 的 JavaAPI

在 Java 项目中行使 HDFS 提供的 API 我们必要依靠 hadoop-common 和 hadoop-hdfs 两个包,,为了利便测试,我们这里还引入了 junit,篇幅缘故起因这里就差池项目自己做太多的讲授,这里附上项目源码地点供各人参考。

读取 HDFS 中文件的内容。

  • 清单 5. JavaApi 读取文件内容
  1.         @Test 
  2. public void read() throws IOException { 
  3.   // 文件地点。 
  4.   URI uri = URI.create("/test/test.txt"); 
  5.   // 用于吸取读取的数据流。 
  6.   FSDataInputStream in = null; 
  7.   try { 
  8.       in = fs.open(new Path(uri)); 
  9.       // 最后的一个 boolean 范例的参数是指是否在挪用竣事后封锁流,我们这里选择在 finally 内里手动封锁。 
  10.       IOUtils.copyBytes(in, System.out, 4096, false); 
  11.   } finally { 
  12.       IOUtils.closeStream(in); 
  13.   } 

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读