文章目录
hadoop概述
一. hadoop是什么
-
Hadoop是一个由 Apache基金会所开发的分布式系统基础架构
-
主要解决海量数据的存储和海量数据的分析计算问题
-
广义上来说,Hadoop通常是指一个更广泛的概念——Hadoop生态圈
二. hadoop三大发行版本
Hadoop三大发行版本:Apache、Cloudera、Hortonworks。
- Apache:最原始(最基础)的版本,对于入门学习最好。2006
- Cloudera:内部集成了很多大数据框架,对应产品CDH。2008
- Hortonworks:文档较好,对应产品HDP。2011
Hortonworks现在已经被Cloudera公司收购,推出新的品牌CDP。
三. hadoop的优势
hadoop的优势有四个(四高):高可靠性、高扩展性、高效性、高容错性。
**高可靠性:**hadoop底层维护多个数据副本,所以即使hadoop某个计算单元或存储出现故障,也不会导致数据的丢失。
**高扩展性:**在集群间分配任务数据,可方便的扩展数以千计的节点。
**高效性:**在mapreduce的思想下,hadoop是并行工作的,以加快任务处理速度。
**高容错性:**能够自动将失败的任务重新分配。
四. hadoop组成
hadoop1.x、2.x和3.x之间的区别:
1. HDFS架构概述
HDFS,Hadoop Distributed File System,即Hadoop分布式文件系统。
- NameNode (nn) :存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。
- DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。
- Secondary NameNode(2nn):每隔一段时间对NameNode元数据备份。
总而言之:Datanode是用来存放数据的,而Namenode就是类似于一个目录,记录了数据存放位置的信息。所以说,Namenode可以帮助我们快速查找和访问存储在Datanode上的数据。至于Secondarynamenode嘛,它是Namenode的副本,负责辅助Namenode的工作。这样一来,即使Namenode出现故障,Secondarynamenode也可以帮助恢复并保证数据的稳定性。
2. YARN架构概述
YARN,Yet Another Resource Negotiator,即另一种资源协调者。
-
ResourceManager(资源管理器):它负责整个集群的资源调度和管理。它知道集群中有多少资源可用,并根据应用程序的需求进行资源分配,确保集群资源的高效利用。
-
NodeManager(节点管理器):每台机器上都会有一个NodeManager,它负责管理该机器上的资源。NodeManager会向ResourceManager报告自己上面的资源和运行的应用程序的状态,同时接收来自ResourceManager的指令,如分配资源给应用程序或者杀死应用程序。
-
ApplicationMaster(应用程序管理器):每个运行的应用程序都会有一个对应的ApplicationMaster。它负责与ResourceManager通信,向其请求资源,并监控和管理应用程序的执行。如果需要更多资源或者有任务失败,ApplicationMaster会与ResourceManager进行交互。
-
Container(容器):它是YARN中的基本执行单位。每个应用程序都会被分配一个或多个Container,用来运行应用程序的任务。Container提供了一定的资源,如内存和CPU,供应用程序使用。
这样一来,YARN就可以更好地管理集群中的资源,实现作业的高效调度和执行。
3. MapReduce架构概述
MapReduce,是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)“和"Reduce(归约)”,是它们的主要思想。
MapReduce将计算过程分为两阶段:Map和Reduce。
-
Map阶段:并行处理输入数据
-
Redeuce阶段:对Map结果进行汇总
4. HDFS、YARN和MapReduce三者的关系
HDFS(Hadoop分布式文件系统)是Hadoop提供的分布式文件系统,用于存储和管理大规模数据。HDFS提供了数据的可靠性、高容错性和高可扩展性,它是MapReduce作业的主要数据存储和读取源。
YARN(Yet Another Resource Negotiator,又称为MapReduce 2.0)是Hadoop的资源管理器和作业调度系统。YARN主要负责集群资源的分配和管理,让不同的应用程序可以共享集群的资源。在YARN的架构下,除了MapReduce,还可以运行其他类型的分布式处理框架,如Spark、Storm等。
MapReduce是一种编程模型和计算框架,用于大规模数据的分布式处理和计算。MapReduce将任务分解为若干个Mapper和Reducer任务,通过并行处理和归约,在分布式环境下高效地处理大量数据。MapReduce执行过程中依赖于HDFS存储数据,并借助YARN进行资源调度和管理。
简单来说:HDFS提供了数据存储,YARN负责资源管理和作业调度,而MapReduce则是一种分布式计算框架。