Hadoop概述
Hadoop是什么
- Hadoop是一个由Apache基金会所开发的分布式系统基础架构
- 主要解决,海量数据的存储和海量数据的分析计算问题
- 广义上来说,Hadoop通常是指一个更广泛的概念--Hadoop生态圈
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三大发行版本
-
Apache Hadoop:
- 特点: 这是最原始和基础的Hadoop版本,直接由Apache软件基金会维护。它是完全开源的,提供了基础的Hadoop功能,包括HDFS(Hadoop Distributed File System)和MapReduce。
- 适用人群: 对于初学者来说非常适合,因为它可以让用户了解Hadoop的核心概念和技术。
- 官方网站: hadoop.apache.org/
-
Cloudera Hadoop (CDH) :
- 特点: CDH(Cloudera's Distribution Including Apache Hadoop)是Cloudera公司的Hadoop发行版。它在Apache Hadoop的基础上增加了额外的功能,如更好的兼容性、安全性和稳定性。Cloudera还提供了Cloudera Manager,这是一个强大的集群管理工具,可以帮助用户快速部署和管理Hadoop集群。
- 适用人群: 大型企业,尤其是那些需要高级支持和管理工具的企业。
- 官方网站: www.cloudera.com/downloads/c… (请注意链接可能会随时间而变化)
-
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某个计算元素或存储出现故障,也不会导致数据的丢失。
高扩展性:
在集群间分配任务数据,可方便的扩展数以千计的节点
高效性:
在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度
高容错性:
能够自动将失败的任务重新分配
Hadoop组成
Hadoop 1.x 2.x 3.x区别
在 Hadoop1.x 时 代 , Hadoop中 的MapReduce同 时处理业务逻辑运算和资 源的调度,耦合性较大。
在Hadoop2.x时 代,增 加 了Yarn。Yarn只负责 资 源 的 调 度 , MapReduce 只负责运算。
Hadoop3.x在组成上没有变化。
HDFS架构概述
Hadoop Distributed File System,简称HDFS,是一个分布式文件系统
- NameNode(nn):存储文件的元数据,如文件名 文件目录机构 文件属性(生成时间 副本数 文件权限),以及每个文件的块列表和块所在的DataNode等
- DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和
- Secondary NameNode(2nn):每隔一段时间对NameNode元数据备份
YARN架构概述
Yet Another Resource Negotiator 简称YARN,另一种资源协调者,是Hadoop的资源管理器.
- ResourceManager(RM): 整个集群资源(内存 CPU等)的老大
- NodeManager(NM): 单个节点服务器资源老大
- ApplicationMaster(AM): 单个任务运行的老大
- Container: 容器,相当于一台独立的服务器,里面封装了任务运行所需要的资源,如内存 CPU 磁盘 网络等
说明:
- 客户端可以有多个
- 集群上可以运行多个ApplicationMaster
- 每个NodeManager上可以有多个Container
MapReduce架构概述
MapReduce将计算过程分为两个阶段: Map 和 Reduce
- Map阶段并行处理输入数据
- Reduce阶段对Map结果进行汇总
任务需求: 找出某年某月的一个视频
HDFS YARN MapReduce 三者关系
- HDFS 提供了MapReduce作业所需的数据存储。当一个MapReduce任务启动时,它会从HDFS中读取数据。
- YARN 负责资源的管理和任务的调度。当MapReduce任务提交到Hadoop集群后,YARN会根据集群的资源情况决定在哪里执行Map和Reduce任务。
- MapReduce 利用YARN分配的资源来进行数据处理。MapReduce可以从HDFS中读取数据,并将处理结果写回到HDFS中。
大数据生态体系
图中涉及的技术名词解释如下:
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:它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。