Hadoop教程:Hadoop详情

作者 : 开心源码 本文共2074个字,预计阅读时间需要6分钟 发布时间: 2022-05-12 共59人阅读

Hadoop是一个用java编写的Apache开源框架,它允许使用简单的编程模型跨计算机集群分布式解决大型数据集。Hadoop框架工作的应用程序工作在一个跨计算机集群提供分布式存储和计算的环境中。Hadoop被设计成从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储。

Hadoop架构

Hadoop框架包括以下四个板块:

  • Hadoop Common: 这是其余Hadoop板块依赖的Java库和工具。这些库提供文件系统和操作系统级别的笼统,并包含启动Hadoop所需的Java文件和脚本。
  • **Hadoop YARN: **这是一个用于作业调度和集群资源管理的框架。
  • Hadoop分布式文件系统(HDFS?): 一种分布式文件系统,提供对应用程序数据的高吞吐量访问。
  • MapReduce: 这是一个基于YARN的大型数据集并行解决系统。

我们可以使用下面的图来形容Hadoop框架中可用的这四个组件。

hadoop_architecture.jpg

自2012年以来,“Hadoop”一词通常不仅指上述基本板块,还指可以安装在Hadoop之上或者与Hadoop并行的附加软件包集合,如Apache Pig、Apache Hive、Apache HBase、Apache Spark等。

MapReduce

Hadoop MapReduce是一个易于编写应用程序的软件框架,这些应用程序以可靠、容错的方式并行解决大集群(数千个节点)上的海量数据。

MapReduce这个词实际上是指Hadoop程序执行的两个不同的任务:

  • Map任务: 这是第一个任务,它接受输入数据并将其转换为一组数据集合,其中单个元素被分解为元组(键/值对)。
  • Reduce任务: 该任务将map任务的输出作为输入,并将这些数据元组组合成较小的元组集合。reduce任务总是在map任务之后执行。

通常输入和输出都存储在文件系统中。该框架负责调度任务、监视任务并重新执行失败的任务。

MapReduce框架由一个master JobTracker和每个集群节点的一个slave TaskTracker组成。master 负责资源管理,跟踪资源消耗/可用性,调度从服务器上的作业组件任务,监视它们并重新执行失败的任务。slave 按照主任务的指示执行任务,并定期向主任务提供任务状态信息。

JobTracker是Hadoop MapReduce服务的一个单点故障,这意味着假如JobTracker宕机,所有正在运行的作业都会中止。

Hadoop Distributed File System

Hadoop可以直接与任何可挂载的分布式文件系统(如本地FS、HFTP FS、S3 FS等)一起工作,但是Hadoop最常用的文件系统是Hadoop分布式文件系统(HDFS)。

Hadoop分布式文件系统(HDFS)是基于谷歌文件系统(GFS)的,它提供了一个分布式文件系统,可以在小型计算机的大型集群(数千台计算机)上以可靠、容错的方式运行。

HDFS使用主/从(master/slave)架构,其中主架构由管理文件系统元数据的单个名称节点NameNode和存储实际数据的一个或者多个从数据节点DataNodes组成。

HDFS名称空间中的文件被分成几个块,这些块存储在一组数据节点DataNodes中。NameNode确定块到DataNodes的映射。DataNodes 负责文件系统的读写操作。它们还根据NameNode给出的指令负责块的创立、删除和复制。

HDFS提供了与任何其余文件系统一样的shell,可以使用命令列表与文件系统交互。这些shell命令将在单独的一章中详情,并提供适当的示例。

Hadoop是如何工作的

Stage 1

客户/应用程序可以通过以下项目将作业提交给Hadoop (Hadoop作业用户端)进行所需的解决:

  1. 在分布式文件系统中输入和输出文件的位置。
  2. java类以jar文件的形式包含map和reduce函数的实现。
  3. 通过设置特定于作业的不同参数进行作业配置。

Stage 2

而后Hadoop用户端将作业(jar/可执行文件等)和配置提交给JobTracker, JobTracker负责将软件/配置分发给slaves服务器,调度和监视任务,向用户端提供状态和诊断信息。

Stage 3

不同节点上的TaskTrackers 按照MapReduce实现执行任务,reduce函数的输出存储在文件系统上的输出文件中。

Hadoop的优点

  • Hadoop框架允许客户快速编写和测试分布式系统。它是高效的,它自动分配数据并跨机器工作,反过来利用CPU核心的底层并行性。
  • Hadoop不依赖硬件来提供容错和高可用性(FTHA),Hadoop库本身被设计来检测和解决应用层的故障。
  • 可以动态地从集群中增加或者删除服务器,Hadoop可以不间断地继续运行。
  • Hadoop的另一个巨大优势是,它不仅是开源的,而且可以在所有平台上兼容,由于它是基于Java的。

原文链接:https://www.tutorialspoint.com/hadoop/hadoop_introduction.htm

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Hadoop教程:Hadoop详情

发表回复