大数据技术之Hadoop(入门)

232 阅读6分钟

Hadoop概述

Hadoop是什么

  1. Hadoop是一个由Apache基金会所开发的分布式系统基础架构
  2. 主要解决,海量数据的存储和海量数据的分析计算问题
  3. 广义上来说,Hadoop通常是指一个更广泛的概念--Hadoop生态圈

图片.png

Hadoop发展历史

  • 起源:Hadoop的概念源自Google在2003年发布的两篇论文:“The Google File System”(GFS)和“MapReduce: Simplified Data Processing on Large Clusters”。这两篇文章描述了如何存储和处理海量数据。
  • Nutch项目:Doug Cutting和Mike Cafarella在创建网络爬虫项目Nutch时开始实现类似GFS的文件系统,即后来的HDFS(Hadoop Distributed File System),以及MapReduce执行框架。
  • Yahoo!支持:2005年,Doug Cutting加入Yahoo!,Yahoo!成为了Hadoop早期发展的主要赞助者之一。Yahoo!为Hadoop项目贡献了大量的资源,包括硬件和开发人员。
  • Hadoop 1.0:大约在2008年,Hadoop正式成为Apache顶级项目。Hadoop 1.0版本主要是基于HDFS和MapReduce模型。
  • Hadoop 2.0:2017年之前发布,引入了YARN(Yet Another Resource Negotiator),它将资源管理和作业调度/监控功能从MapReduce中分离出来,使得Hadoop能够支持多种数据处理应用程序,而不仅仅是MapReduce。
  • 生态系统扩展:随着时间的发展,围绕Hadoop形成了一个庞大的生态系统,包括Hive(用于SQL查询)、Pig(高级脚本语言)、HBase(NoSQL数据库)、Spark(内存计算框架)等众多组件,这些工具极大地丰富了Hadoop的功能。

Hadoop三大发行版本

  1. Apache Hadoop:

    • 特点: 这是最原始和基础的Hadoop版本,直接由Apache软件基金会维护。它是完全开源的,提供了基础的Hadoop功能,包括HDFS(Hadoop Distributed File System)和MapReduce。
    • 适用人群: 对于初学者来说非常适合,因为它可以让用户了解Hadoop的核心概念和技术。
    • 官方网站: hadoop.apache.org/
  2. Cloudera Hadoop (CDH) :

    • 特点: CDH(Cloudera's Distribution Including Apache Hadoop)是Cloudera公司的Hadoop发行版。它在Apache Hadoop的基础上增加了额外的功能,如更好的兼容性、安全性和稳定性。Cloudera还提供了Cloudera Manager,这是一个强大的集群管理工具,可以帮助用户快速部署和管理Hadoop集群。
    • 适用人群: 大型企业,尤其是那些需要高级支持和管理工具的企业。
    • 官方网站: www.cloudera.com/downloads/c… (请注意链接可能会随时间而变化)
  3. Hortonworks Hadoop (HDP) :

    • 特点: HDP(Hortonworks Data Platform)是Hortonworks公司提供的100%开源的Hadoop发行版。HDP除了包含标准的Hadoop组件外,还包括了Ambari,一个用于安装和管理Hadoop集群的开源工具。Hortonworks在Hadoop社区中非常活跃,经常贡献代码回主干。
    • 适用人群: 寻求良好文档支持和易用性的用户,以及希望使用开源解决方案的企业。
    • 官方网站: hortonworks.com/products/da… (请注意链接可能会随时间而变化)

参考链接:Hadoop中文网: hadoop.org.cn/docs/

Hadoop优势(4高)

高可靠性:

Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失。

图片.png

高扩展性:

在集群间分配任务数据,可方便的扩展数以千计的节点

图片.png

高效性:

在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度

图片.png

高容错性:

能够自动将失败的任务重新分配

图片.png

Hadoop组成

Hadoop 1.x 2.x 3.x区别

图片.png

在 Hadoop1.x 时 代 , Hadoop中 的MapReduce同 时处理业务逻辑运算和资 源的调度,耦合性较大。

在Hadoop2.x时 代,增 加 了Yarn。Yarn只负责 资 源 的 调 度 , MapReduce 只负责运算。

Hadoop3.x在组成上没有变化。

HDFS架构概述

Hadoop Distributed File System,简称HDFS,是一个分布式文件系统

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

YARN架构概述

Yet Another Resource Negotiator 简称YARN,另一种资源协调者,是Hadoop的资源管理器.

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

图片.png

说明:

  1. 客户端可以有多个
  2. 集群上可以运行多个ApplicationMaster
  3. 每个NodeManager上可以有多个Container

MapReduce架构概述

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

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

任务需求: 找出某年某月的一个视频

图片.png

HDFS YARN MapReduce 三者关系

图片.png

  • HDFS 提供了MapReduce作业所需的数据存储。当一个MapReduce任务启动时,它会从HDFS中读取数据。
  • YARN 负责资源的管理和任务的调度。当MapReduce任务提交到Hadoop集群后,YARN会根据集群的资源情况决定在哪里执行Map和Reduce任务。
  • MapReduce 利用YARN分配的资源来进行数据处理。MapReduce可以从HDFS中读取数据,并将处理结果写回到HDFS中。

大数据生态体系

图片.png

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

1)Sqoop:Sqoop 是一款开源的工具,主要用于在 Hadoop、Hive 与传统的数据库(MySQL)间进行数据的传递,可以将一个关系型数据库(例如 :MySQL,Oracle 等)中的数据导进到 Hadoop 的 HDFS 中,也可以将 HDFS 的数据导进到关系型数据库中。

2)Flume:Flume 是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume 支持在日志系统中定制各类数据发送方,用于收集数据;

3)Kafka:Kafka 是一种高吞吐量的分布式发布订阅消息系统;

4)Spark:Spark 是当前最流行的开源大数据内存计算框架。可以基于 Hadoop 上存储的大数据进行计算。

5)Flink:Flink 是当前最流行的开源大数据内存计算框架。用于实时计算的场景较多。

6)Oozie:Oozie 是一个管理 Hadoop 作业(job)的工作流程调度管理系统。

7)Hbase:HBase 是一个分布式的、面向列的开源数据库。HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。

8)Hive:Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的 SQL 查询功能,可以将 SQL 语句转换为 MapReduce 任务进行运 行。其优点是学习成本低,可以通过类 SQL 语句快速实现简单的 MapReduce 统计,不必开发专门的 MapReduce 应用,十分适合数据仓库的统计分析。

9)ZooKeeper:它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。

推荐系统框架图

图片.png