了解hadoop

本文详细介绍了Hadoop的起源、发展、特点、核心组件(HDFS、MapReduce、YARN)以及MapReduce架构,涵盖了Hadoop的安装和搭建过程,强调了其在大数据处理中的关键作用和生态系统扩展。
摘要由CSDN通过智能技术生成

目录

Hadoop的介绍

什么是hadoop

hadoop的发展历史

Hadoop的特点

关于Hadoop核心组件

HDFS 框架概述

组件

Yarn架构设计

ResourceManager(RM)

NodeManager(NM)

ApplicationMaster(AM)

Container

MapReduce架构设计

Hadoop的搭建

虚拟机创建及配置 


Hadoop的介绍

什么是hadoop

Hadoop是一个开源的分布式存储和处理大数据的框架。它最初由Apache软件基金会开发,用于处理大规模数据集的存储和分析。Hadoop框架主要包括两个核心组件:Hadoop Distributed File System(HDFS)用于存储数据,以及MapReduce用于并行处理数据。除此之外,Hadoop生态系统还包括其他工具和项目,如HBase(NoSQL数据库)、Hive(数据仓库工具)、Spark(内存计算框架)、YARN(资源管理器)等,使其成为一个强大的大数据处理平台。

hadoop的发展历史

Hadoop的发展历史可以追溯到2005年,当时由Doug Cutting和Mike Cafarella领导的团队在Apache软件基金会开发了这一框架。以下是Hadoop的主要发展历程:

2006年: Hadoop的第一个版本发布。最初,Hadoop是作为Apache Nutch搜索引擎项目的一部分而开发的,用于支持大规模的网页爬取和索引构建。

2008年: Hadoop的第一个商业发行版由Cloudera发布。这标志着Hadoop开始走向商业化,并且在企业中引起了广泛的关注。

2009年: Yahoo!成为Hadoop的早期采用者之一,并且开始在其大规模的数据处理中广泛使用该技术。同时,Hadoop的生态系统也开始迅速扩展,包括各种工具和组件的开发。

2010年: Apache Hadoop 0.20版本发布,带来了一些重要的改进和新功能,包括更好的容错性和性能提升。

2012年: Hadoop 1.0版本发布。这一版本的发布标志着Hadoop已经成熟到足以处理大规模的数据处理工作负载,并且开始在更多的企业中得到广泛应用。

2014年: Hadoop 2.0发布,引入了YARN(Yet Another Resource Negotiator)作为新的资源管理器。这一变化使得Hadoop可以更灵活地支持各种不同类型的数据处理工作负载,而不仅仅局限于MapReduce。

2017年: Hadoop 3.0发布。这个版本带来了一些重要的改进,包括对存储层的改进(如支持Erasure Coding)和性能优化。

未来: Hadoop的发展仍在继续,社区不断致力于改进其性能、可靠性和功能。与此同时,随着大数据技术的发展,Hadoop生态系统也在不断演变和扩展,以满足不断增长的数据处理需求。

Hadoop的特点

  1. 高可扩展性:Hadoop可以轻松地扩展到大规模集群,并处理大量的数据。它采用分布式计算的方式,将工作负载分布在集群中的多个节点上,使得系统能够处理海量的数据和高并发请求。
  2. 高容错性:Hadoop具有高度的容错能力,即使在设备或任务发生故障的情况下,也能保持数据的完整性和系统的可用性。它通过数据的冗余复制和自动故障转移等机制,确保数据的安全和系统的稳定性。
  3. 高效性:通过并行处理和分布式计算,Hadoop能够实现快速的数据处理。它可以将大规模的数据分解为小的任务并在多个节点上并行执行,从而提高处理效率和速度。
  4. 处理多种数据类型:Hadoop可以处理各种类型的数据,包括结构化数据、半结构化数据和非结构化数据。它能够灵活地存储和处理数据,支持分布式存储和处理大规模的文本、图像、音频、视频等数据类型。
  5. 异构性:Hadoop支持不同类型的硬件和操作系统,并且能够与其他开源工具和框架无缝集成。它提供了统一的接口和API,使得用户可以用各种编程语言编写应用程序,并在Hadoop上运行。
  6. 成本效益:相比于传统的数据存储和处理方式,Hadoop具有较低的成本。它使用商业化的廉价硬件,可以通过纵向和横向扩展实现高性能和高可用性,降低了硬件和软件成本。
  7. Hadoop基本框架用Java语言编写

关于Hadoop核心组件

Hadoop有3大核心组件,分别是分布式文件系统HDFS、分布式计算框架MapReduce和集群资源管理器YARN。

HDFS 框架概述

Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)是Hadoop生态系统中的一个重要组成部分,是用于存储和处理大数据的分布式文件系统。

组件

NameNode(nn):
NameNode是HDFS的主节点,负责管理整个文件系统的命名空间和数据块的元数据信息。它维护文件系统的目录结构、文件的安全权限信息和数据块的位置信息等。NameNode还处理客户端的文件系统操作请求,如文件的读写和块的创建、复制和删除等。

DataNode(dn):
DataNode是HDFS的工作节点,负责实际存储文件数据和执行文件系统操作的任务。每个DataNode负责管理一定数量的数据块,并定期向NameNode报告数据块的存储信息。DataNode还处理来自客户端和其他DataNode的读取和写入请求,以及数据块的复制和恢复等。

存储指定副本:
HDFS中的文件被分成一系列的数据块,这些数据块会被复制到不同的Datanode上。根据副本配置参数,每个数据块在HDFS中会有多个副本,这样可以提高数据的可靠性和容错性。HDFS会尽量将这些副本存储在不同的机架、节点和硬盘上,以防止硬件故障或网络故障导致的数据丢失。

客户端(Client):
客户端是使用HDFS的应用程序。它们通过与Namenode和Datanode进行通信来读取和写入文件。客户端向Namenode请求文件的元数据信息,根据元数据信息确定所需数据块的位置,并从Datanode获取数据。客户端还负责处理文件系统的操作,如创建、删除、重命名和移动文件等。

Yarn架构设计

它主要由ResourceManager和NodeManager、ApplicationMaster和Container等组件组成。

ResourceManager(RM)

   YARN分层结构的本质是ResourceManager。这个实体控制整个集群并管理应用程序向基础计算资源的分配。ResourceManager 将各个资源部分(计算、内存、带宽等)精心安排给基础NodeManager(YARN 的每节点代理)。ResourceManager还与 ApplicationMaster 一起分配资源,与NodeManager 一起启动和监视它们的基础应用程序。在此上下文中,ApplicationMaster 承担了以前的 TaskTracker 的一些角色,ResourceManager 承担了 JobTracker 的角色。

  1)处理客户端请求;

  2)启动或监控ApplicationMaster;

  3)监控NodeManager;

  4)资源的分配与调度。

NodeManager(NM

 NodeManager管理一个YARN集群中的每个节点。NodeManager提供针对集群中每个节点的服务,从监督对一个容器的终生管理到监视资源和跟踪节点健康。MRv1通过插槽管理Map和Reduce任务的执行,而NodeManager 管理抽象容器(container),这些容器代表着可供一个特定应用程序使用的针对每个节点的资源。YARN继续使用HDFS层。它的主要 NameNode用于元数据服务,而DataNode用于分散在一个集群中的复制存储服务。

NodeManager是驻留在一个YARN集群中的每个节点上的代理,主要负责:

  • 容器生命周期管理。
  • 监控每个容器的资源(CPU、内存等)使用情况。
  • 跟踪节点健康状况。
  • 以“心跳”的方式与ResourceManager保持通信。
  • 向ResourceManager汇报作业的资源使用情况和每个容器的运行状态。
  • 接收来自ApplicationMaster的启动/停止容器的各种请求 。

需要说明的是,NodeManager主要负责管理抽象的容器(container),只处理与容器相关的事情,而不具体负责每个任务(Map任务或Reduce任务)自身状态的管理,因为这些管理工作是由ApplicationMaster完成的,ApplicationMaster会通过不断与NodeManager通信来掌握各个任务的执行状态。

ApplicationMaster(AM)

 ApplicationMaster管理一个在YARN内运行的应用程序的每个实例。ApplicationMaster 负责协调来自 ResourceManager 的资源,并通过 NodeManager 监视容器的执行和资源使用(CPU、内存等的资源分配)。请注意,尽管目前的资源更加传统(CPU 核心、内存),但未来会带来基于手头任务的新资源类型(比如图形处理单元或专用处理设备)。从 YARN 角度讲,ApplicationMaster 是用户代码,因此存在潜在的安全问题。YARN 假设 ApplicationMaster 存在错误或者甚至是恶意的,因此将它们当作无特权的代码对待。

  1)负责数据的切分;

  2)为应用程序申请资源并分配给内部的任务;

  3)任务的监控与容错。

Container

       对任务运行环境进行抽象,封装CPU、内存等多维度的资源以及环境变量、启动命令等任务运行相关的信息。比如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的。YARN会为每个任务分配一个Container且该任务只能使用该Container中描述的资源。

  要使用一个YARN集群,首先需要来自包含一个应用程序的客户的请求。ResourceManager 协商一个容器的必要资源,启动一个ApplicationMaster 来表示已提交的应用程序。通过使用一个资源请求协议,ApplicationMaster协商每个节点上供应用程序使用的资源容器。执行应用程序时,ApplicationMaster 监视容器直到完成。当应用程序完成时,ApplicationMaster 从 ResourceManager 注销其容器,执行周期就完成了。

MapReduce架构设计

  1. Map阶段

    • 在MapReduce任务开始时,输入的数据集会被切分成多个逻辑上的输入分片。
    • 每个Map任务负责处理一个输入分片,并生成中间结果。
    • 用户可以编写自定义的Map函数来实现具体的数据处理逻辑。Map函数接受键值对作为输入,并输出零个或多个键值对作为输出。
  2. Shuffle和Sort阶段

    • Map阶段输出的中间结果会经过分区(Partition)、排序(Sort)和合并(Combine)等操作,最终按照键进行分组。
    • 这一阶段的目标是将具有相同键的中间结果路由到同一个Reduce任务中,以便后续的处理。
  3. Reduce阶段

    • Reduce任务负责处理来自Map阶段输出的中间结果。
    • 用户可以编写自定义的Reduce函数来实现具体的数据聚合或计算逻辑。Reduce函数接受一个键和与该键相关的值的迭代器,并输出零个或多个键值对作为最终输出。
  4. 整体流程

    • 整个MapReduce任务由一个主节点(通常是JobTracker)负责协调和管理,以及多个工作节点(通常是TaskTracker)负责执行Map和Reduce任务。
    • 任务的执行是在集群中的多个节点上并行进行的,每个节点上可以同时执行多个Map或Reduce任务,以实现高效的数据处理。
  5. 容错性

    • MapReduce框架具有高度的容错性,即使在执行任务的过程中发生节点故障或任务失败,框架也能够自动重新启动失败的任务,以保证任务的成功执行。
    • 中间结果的临时存储和备份也能够保证数据的可靠性和完整性。

总的来说,MapReduce架构提供了一种简单而强大的分布式数据处理模型,适用于大规模数据的处理和分析。通过Map和Reduce两个阶段的组合,用户可以实现各种复杂的数据处理任务,并通过与Hadoop生态系统中其他组件的结合,构建完整的大数据处理和分析解决方案。

Hadoop的搭建

虚拟机创建及配置 

VMware下载

安装完成后开始创建

 

 下面是安装的界面

上面这个步骤是选择图形化界面的,如果没有选择,打开虚拟就是黑窗口。如果真的忘记选了可以通过代码 来下载。

 安装图形化界面

 

到此虚拟机安装完成。

但是Hadoop集群没有还没有搭好,要是想搭建Hadoop可以看下面的博文

搭建hadoop

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值