Hadoop(一):最通俗易懂的Hadoop概述

Hadoop(一):Hadoop概述

大数据概念

大数据(big data),IT行业术语,是指无法在一定时间范围内用常规软件工具(如mysql、ssm等)进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化(图像、语音等)的信息资产。主要解决海量数据的存储以及海量数据的分析计算

Hadoop概述

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。主要解决海量数据的存储以及海量数据的分析计算,Hadoop核心概念是HDFS(分布式存储),以及MapReduce。通俗来将就是,当一个海量数据,如果你使用传统方法去处理,比如10TB的数据,那么数据库就不太够用,并且即使数据库够用,那么在有限的资源(也就是CPU、内存)中处理的数据量是极少 的,10TB数据可能需要运作很久,那么有了Hadoop,HDFS是分布式存储文件系统,它将10TB数据分块存储在不同服务器(节点)中,然后在每个服务器中处理相应文件,也就是相当于n个服务器并行处理,并且每个服务器都不需要太高的配置。而这些处理的任务是由MapReduce分配的。

如果你不太清楚什么是并行:

传统处理方法,假如要写10000个字,你一个人写字速度为一分钟100个,那么就需要100分钟才能写完。

而采用并行处理,相当于有100同学一起写,并且分工明确,那么只需要一分钟,你们100个人就能写10000个字。

简单的例子

一个简单的案例就是WordCount,字数统计,假设有100G的文件,要统计里面所有单词出现的次数。

传统方法:

假设我们有个2G的机器。

首先这100G我们不可能都加载到内存中,内存不够,所以要将100G文件依次读入内存中并操作,就产生类似下图的一个队列,每次读取文件的一部分然后再处理,然后处理时间

需要加载至内存的次数 = 100G/2G = 50次

假设每次处理字数统计所用时间为T(process)

假设每次读取至内存所用时间为T(IO)

假设将所有的50次统计结果汇总时间为T(wordcount)

那么一共需要的时间为

50次 x [T(process) + T(IO)] + T(wordcount)

可以看出是非常耗时的

Hadoop(一):最通俗易懂的Hadoop概述

采用分布式并行计算后(Hadoop使用类似的方法,但是其多了reduce去汇总处理)

Hadoop(一):最通俗易懂的Hadoop概述

可以看到,同样将任务分割然后送到集群中不同的服务器(节点),每个服务器并行处理(可以理解为同时处理)。此时,依照上面传统方法的时间计算。共使用了

1次 x [T(process) + T(IO)] + T(wordcount)

这里要注意,hadoop实际应用中,会将汇总处理也分布式并行处理,所以其实更加省时,这里先忽略,依然能看出两者相差的耗时。

看完例子你可能就差不多知道hadoop是干什么的了:

  1. 分布式存储:将文件分布式存储在多个服务器(节点)上。
  2. 分布式并行处理:通过编写处理任务的代码,将文件进行切割,然后将文件以及任务资源(比如jar包,也就是你写的处理逻辑)分发给多个服务器,每个服务器进行并行处理。

下面会更具体讲解。

Hadoop优点

1.高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖 。

2.高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。

3.高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快 。

4.高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配 。

5.低成本。与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低 。

Hadoop架构

Hadoop(一):最通俗易懂的Hadoop概述

  • MapReduce(计算)
    • 并行计算框架,0.20前使用org.apache.hadoop.mapred旧接口,0.20版本开始引入org.apache.hadoop.mapreduce的新API
  • HDFS (数据存储)
    • Hadoop分布式文件系统(Distributed File System)-HDFS(Hadoop Distributed File System)
  • Yarn (资源调度)
    • 负责管理集群中的计算资源并使用它们来调度用户的应用程序
  • Common (辅助工具)
    • 在0.20及以前的版本中,包含HDFS、MapReduce和其他项目公共内容,从0.21开始HDFS和MapReduce被分离为独立的子项目,其余内容为Hadoop Common,包含其他Hadoop模块所需的库和实用程序;不关注

你可以理解为,将文件存储至HDFS,根据自己的需求编写业务代码(包括MapTask,ReduceTask,也就是MapReduce),然后发布,让Yarn负责调度集群中的资源,将任务分发出去,每个领到任务的集群执行任务。

HDFS架构

Hadoop(一):最通俗易懂的Hadoop概述

  1. NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的快列表和块所在的DateNode等。类似一个目录
  2. DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。
  3. Secondary NameNode(2nn):用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。

客户端向NameNode咨询元数据,获取数据位置。然后从对应DateNode读取或写入数据。

Yarn架构

图自官网:

Hadoop(一):最通俗易懂的Hadoop概述

  1. ResourceManager(RM)主要作用如下

    1. 处理客户端请求

    2. 监控NodeManager

    3. 启动或监控ApplicationMaster

    4. 资源的分配与调度

  2. NodeManager(NM)主要作用如下:

    1. 管理单个节点上的资源

    2. 处理来自ResourceManager的命令

    3. 处理来自ApplicationMaster的命令

  3. ApplicationMaster(AM)作用如下

    1. 负责数据的切分

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

    3. 任务的监控与容错

  4. Container

    Container是YARN中的资源抽象,它封装了某个节点上的多韦弗资源,如内存、CPU、磁盘、网络等。

MapReduce架构

MapReduce将计算过程分为两个阶段:Map和Reduce

1)Map阶段并行处理输入数据

2)Reduce阶段对Map结果进行汇总

Hadoop(一):最通俗易懂的Hadoop概述