Hadoop入门学习

  • 一、Hadoop介绍
  • 1.1、Hadoop概述
  • 1.2、Hadoop优势
  • 1.3、Hadoop组成(面试重点)
  • 二、HDFS概述
  • 2.1、HDFS的设计特点
  • 2.2、HDFS的构架及集群特点
  • 2.3、HDFS的关键元素
  • 三、Yarn架构概述
  • 四、MapReduce概述
  • 五、HDFS、YARN、MapReduce三者之间的关系
  • 六、大数据技术生态体系
  • 七、Hadoop 运行模式


一、Hadoop介绍

1.1、Hadoop概述

Hadoop是Apache开源组织的一个分布式计算开源框架(http://hadoop.apache.org/),用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算。Hadoop框架中最核心设计就是:HDFS和MapReduce,HDFS实现存储,而MapReduce实现原理分析处理,这两部分是hadoop的核心。数据在Hadoop中处理的流程可以简单的按照下图来理解:数据通过Haddop的集群处理后得到结果,它是一个高性能处理海量数据集的工具 。

Hadoop是一个Java语言编写的框架。

1.2、Hadoop优势

  • 高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失。
  • 高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。
  • 高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。
  • 高容错性:能够自动将失败的任务重新分配。

1.3、Hadoop组成(面试重点)

Hadoop1.x、Hadoop2.x、Hadoop3.x区别(面试的重点)

hadoop 和java关系 hadoop是由java语言开发的吗_Hadoop

  • 在Hadoop1.x时代,Hadoop的MapReduce同事处理业务逻辑运算和资源的调度,耦合性较大。
  • 在Hadoop2.x时代,增加了Yarn,Yarn只负责资源调度。MapReduce只负责运算。
  • 在Hadoop3.x时代,在组成上没有什么变化。

二、HDFS概述

HDFS(Hadoop Distributed File System,Hadoop分布式文件系统),它是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,适合那些有着超大数据集(largedata set)的应用程序。

2.1、HDFS的设计特点

1、大数据文件,非常适合上T级别的大文件或者一堆大数据文件的存储。
2、文件分块存储,HDFS会将一个完整的大文件平均分块存储到不同计算器上,它的意义在于读取文件时可以同时从多个主机取不同区块的文件,多主机读取比单主机读取效率要高得多。
3、流式数据访问,一次写入多次读写,这种模式跟传统文件不同,它不支持动态改变文件内容,而是要求让文件一次写入就不做变化,要变化也只能在文件末添加内容。
4、廉价硬件,HDFS可以应用在普通PC机上,这种机制能够让给一些公司用几十台廉价的计算机就可以撑起一个大数据集群。
5、硬件故障,HDFS认为所有计算机都可能会出问题,为了防止某个主机失效读取不到该主机的块文件,它将同一个文件块副本分配到其它某几个主机上,如果其中一台主机失效,可以迅速找另一块副本取文件。

2.2、HDFS的构架及集群特点

一个HDFS集群是有一个Namenode和一定数目的Datanode组成。Namenode是一个中心服务器,负责管理文件系统的namespace和客户端对文件的访问。Datanode在集群中一般是一个节点一个,负责管理节点上它们附带的存储。在内部,一个文件其实分成一个或多个block,这些block存储在Datanode集合里。Namenode执行文件系统的namespace操作,例如打开、关闭、重命名文件和目录,同时决定block到具体Datanode节点的映射。Datanode在Namenode的指挥下进行block的创建、删除和复制。Namenode和Datanode都是设计成可以跑在普通的廉价的运行linux的机器上。

hadoop 和java关系 hadoop是由java语言开发的吗_hadoop 和java关系_02


hadoop 和java关系 hadoop是由java语言开发的吗_数据_03

  • NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表和块所在的DataNode等;
  • DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和;
  • Secondary NameNode(2nn):每隔一段时间对NameNode元数据备份。

2.3、HDFS的关键元素

1、Block:将一个文件进行分块,通常是64M。
2、NameNode:保存整个文件系统的目录信息、文件信息及分块信息,这是由唯一一台主机专门保存,当然这台主机如果出错,NameNode就失效了。在Hadoop2.*开始支持activity-standy模式----如果主NameNode失效,启动备用主机运行NameNode。

3、DataNode:分布在廉价的计算机上,用于存储Block块文件。

三、Yarn架构概述

  • ResourceManager(RM):整个集群资源(内存、CPU等)的老大
  • ApplicationMaster(AM):单个任务运行的老大
  • NodeManager(NM):单个节点服务器资源老大
  • Container:容器,相当一台独立的服务器,里面封装了
    任务运行所需要的资源,如内存、CPU、磁盘、网络等。

hadoop 和java关系 hadoop是由java语言开发的吗_hadoop 和java关系_04

四、MapReduce概述

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

  • Map 阶段并行处理输入数据
  • Reduce 阶段对 Map结果进行汇总

hadoop 和java关系 hadoop是由java语言开发的吗_HDFS_05

MAP 类似分发任务,Reduce 类似汇总结果。

五、HDFS、YARN、MapReduce三者之间的关系

hadoop 和java关系 hadoop是由java语言开发的吗_数据_06

  • DataNode 负责真是数据的存储;
  • namednode 负责存储“目录”;
  • Secondary NameNode 负责备份一部分“目录”,不是全部备份;
  • client 提交查询请求;
  • resourmanager 负责接收client 提交查询请求,并在集群中建立此请求的任务容器,容器Contain中运行着App Mstr,resourmanager还会处理App Mstr的资源申请请求;
  • Contain中的App Mstr 负责计算处理此任务需要的开销资源,并向resourmanager提出申请,resourmanager会根据申请开启相关的Contain以供App
    Mstr处理此任务;
  • Contain中的Map Task,每个Map Task独立工作,负责查询自己的节点;
  • Contain中的Reduce Task,在Map Task中不管有没有查询到数据,都会返回给Reduce Task,Reduce Task负责把查询的结果写到DataNode的磁盘上。写入磁盘之后就会到目录上去记账。

六、大数据技术生态体系

hadoop 和java关系 hadoop是由java语言开发的吗_hadoop_07

图中涉及的技术名词解释如下:

  • Sqoop:Sqoop 是一款开源的工具,主要用于在 Hadoop、Hive 与传统的数据库(MySQL)间进行数据的传递,可以将一个关系型数据库(例如 :MySQL,Oracle 等)中的数据导进 到 Hadoop
    的 HDFS 中,也可以将 HDFS 的数据导进到关系型数据库中。
  • Flume:Flume 是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统, Flume 支持在日志系统中定制各类数据发送方,用于收集数据;
  • Kafka:Kafka 是一种高吞吐量的分布式发布订阅消息系统;
  • Spark:Spark 是当前最流行的开源大数据内存计算框架。可以基于 Hadoop 上存储的大数据进行计算。
  • Flink:Flink 是当前最流行的开源大数据内存计算框架。用于实时计算的场景较多。
  • Oozie:Oozie 是一个管理 Hadoop 作业(job)的工作流程调度管理系统。
  • Hbase:HBase 是一个分布式的、面向列的开源数据库。HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。
  • Hive:Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的 SQL 查询功能,可以将 SQL 语句转换为 MapReduce 任务进行运行。其优点是学习成本低,可以通过类 SQL 语句快速实现简单的
    MapReduce 统计,不必开发专门的 MapReduce 应用,十分适合数据仓库的统计分析。
  • ZooKeeper:它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等

七、Hadoop 运行模式

1)Hadoop 官方网站:http://hadoop.apache.org/
2)Hadoop 运行模式包括:本地模式、伪分布式模式以及完全分布式模式。

  • 本地模式:单机运行,只是用来演示一下官方案例。生产环境不用。
  • 伪分布式模式:也是单机运行,但是具备 Hadoop 集群的所有功能,一台服务器模拟一个分布式的环境。个别缺钱的公司用来测试,生产环境不用。
  • 完全分布式模式:多台服务器组成分布式环境。生产环境使用。