Hadoop概述
Posted bit-apk-code
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop概述相关的知识,希望对你有一定的参考价值。
Hadoop概述
1、Hadoop介绍
Hadoop是一个由Apache基金会所开发的分布式系统基础架构,Hadoop是一个适合大数据的分布式存储和计算平台
主要解决,海量数据的存储和海量数据的分析计算问题
官网对其的介绍如下:
The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than rely on hardware to deliver high-availability, the library itself is designed to detect and handle failures at the application layer, so delivering a highly-available service on top of a cluster of computers, each of which may be prone to failures.
Apache Hadoop软件库是一个框架,该框架允许使用简单的编程模型跨计算机集群对大型数据集进行分布式处理。它旨在从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储。软件库本身不依赖硬件来提供集群的高可用性,它被设计来检测和处理应用程序层的故障,因此可以在每台计算机都容易出现故障的客观现实下,依然可以从计算机集群的顶部提供高可用性的服务。
-
广义上来说,Hadoop通常是指一个更广泛的概念——Hadoop生态圈(围绕Hadoop打造的大数据生态圈)
- Ambari:一种基于Web的工具,用于配置、管理和监视Apache Hadoop集群,其中包括对Hadoop HDFS,Hadoop MapReduce,Hive,HCatalog,HBase,ZooKeeper,Oozie,Pig和Sqoop的支持。
- Avro:数据序列化系统。
- Cassandra:可扩展的多主数据库,没有单点故障。
- Chukwa:一种用于管理大型分布式系统的数据收集系统。
- HBase:可扩展的分布式非关系型数据库,采用列式存储,支持大型表的结构化数据存储。
- Hive:一种数据仓库基础结构,可提供数据汇总和实时查询。
- Mahout:可扩展的机器学习和数据挖掘库。
- Pig:用于并行计算的高级数据流语言和执行框架。
- Spark:一种用于Hadoop数据的快速通用计算引擎。Spark提供了一个简单而富有表现力的编程模型,该模型支持广泛的应用程序,包括ETL、机器学习、流处理和图形计算。
- Submarine:一个统一的AI平台,允许工程师和数据科学家在分布式集群中运行机器学习和深度学习工作负载。
- Tez:基于Hadoop YARN的通用数据流编程框架,它提供了强大而灵活的引擎来执行任意DAG任务,以处理批处理和交互用例的数据。Hadoop生态系统中的Hive,Pig和其他框架以及其他商业软件(例如ETL工具)都采用了Tez,以取代HadoopMapReduce作为基础执行引擎。
- ZooKeeper:面向分布式应用程序的高性能协调服务。
-
狭义上来说,Hadoop指的是Apache的一款开源软件
Hadoop项目包含了5个模块:
- Hadoop Common:支持其他Hadoop模块的通用实用程序
- Hadoop Distributed File System(HDFS):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问
- Hadoop YARN:用于作业调度和集群资源管理的框架
- Hadoop MapReduce:基于YARN的系统,用于并行处理大数据集
- Hadoop Ozone:Hadoop的对象存储,这家伙很年轻,在2020年9月2日才面世
Hadoop核心组件
- Hadoop HDFS(分布式文件存储系统)︰解决海量数据存储
- Hadoop YARN(集群资源管理和任务调度框架)︰解决资源任务调度
- Hadoop MapReduce (分布式计算框架)︰解决海量数据计算
2、Hadoop发展简史
起初,Doug Cutting有个雄心勃勃的计划,在Google横行搜索引擎市场的时代,他想从头开始构建一个超越Google的开源搜索引擎,于是Nutch项目开始了,当时是2002年
后来,Nutch开发者认为这一网页爬取工具和搜索引擎系统可扩展度不够,不能解决数十亿网页的搜索问题,项目陷入瓶颈
直至2004年,Google的两位大佬Jeffrey Dean和Sanjay Ghemawat撰写并发表了一篇论文 MapReduce: Simplified Data Processing on Large Clusters 《MapReduce:简化对庞大数据的处理过程》,这篇论文产生了很大的轰动,给了人们很大的启发。(它与Google于2003年发表的 The Google File System 《谷歌系统》、2006年发表的 Bigtable: A Distributed Storage System for Structured Data 《BigTable:结构化数据的分布式存储系统》 被并称为“大数据的三驾马车”。)
Doug Cutting和另一位工程师Mike Cafarella深信MapReduce的重要性,于是在2005年初,Nutch的开发人员在Nutch上实现了一个MapReduce系统,到年中,Nutch的所有主要算法均完成移植,用NDFS(Nutch分布式文件系统)和MapReduce来运行
Nutch的NDFS和MapReduce实现不仅仅适用于搜索领域
在2006年2月, 开发人员将NDFS和MapReduce移出Nutch形成Lucene的一个子项目,他们最终将这个项目命名为Hadoop,这个名字不是什么缩写(也就是说不像Redis一样是Remote Dictionary Server的缩写),它是一个虚构的名字,Doug Cutting如此解释名称的来历:这个名字是我的孩子给一头吃饱了的棕黄色大象取的,我的命名标准是简短,容易发音和拼写,没有太多的含义,并且不会被用于别处,小孩子是这方面的高手,Googol就是小孩子起的名字
大约在同一时间,Doug Cutting加入了Yahoo,Yahoo为此组织了一个专门的团队和资源,将Hadoop发展成一个能够处理Web数据的系统
到2008年1月,Hadoop已经成为Apache的顶级项目,证明了它的成功、多样化、活跃性,一度成了“大数据”的代名词。Hadoop成功地被雅虎之外的很多公司应用,如Last.fmFacebook和《纽约时报》
在2008年2月,雅虎宣布其搜索引擎产品部署在一个拥有1万个内核的Hadoop集群上
2008年4月,Hadoop打破世界纪录,成为最快排序1TB数据的系统。Hadoop在209秒内排序了1TB的数据(还不到三分半钟),击败了前一年的297秒冠军
同年11月,谷歌在报告中声称,它的 MapReduce 实现执行ITB数据的排序只用了68秒
在2009年5月,有报道宣称Yahoo的团队使用 Hadoop对ITB的数据进行排序只花了62秒时间
-
Hadoop创始人:Doug Cutting
Doug Cutting,是说到Hadoop绕不开的人物,这位大佬是Apache Lucene之父,也是Hadoop的创建者。
Doug Cutting(道格·卡特) -
Hadoop起源于Apache Lucene(Lucene是一个被广泛使用的文本搜索系统库)子项目:Nutch(Nutch的设计目标是构建一个大型的全网搜索引擎。遇到瓶颈︰如何解决数十亿网页的存储和索引问题)
-
Google三篇论文
- 《The Google file system》:谷歌分布式文件系统GFS
- 《MapReduce: Simplified Data Processing on Large Clusters》︰谷歌分布式计算框架MapReduce
- 《Bigtable: A Distributed Storage System for Structured Data》︰谷歌结构化数据存储系统BigTable
3、Hadoop特性优点
- 高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失
- 高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点
- 高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度
- 高容错性:能够自动将失败的任务重新分配
- 低成本:Hadoop通过普通廉价的机器组成服务器集群来分发以及处理数据,以至于成本很低
缺点
- 不适用于低延迟数据访问
- 不能高效存储大量小文件
- 存储大量小文件的话,它会占用NamelNode大量的内存来存储文件目录和块信息。这样是不可取的,因为NameNode的内存总是有限的
- 小文件存储的寻址时间会超过读取时间,它违反了HDFS的设计目标
- 不支持并发写入、文件随机修改
- 一个文件只能有一个写,不允许多个线程同时写
- 仅支持数据append(追加),不支持文件的随机修改
4、Hadoop发行版本
-
Apache hadoop(Apache社区版本):ApacheHadoop是一款支持数据密集型分布式应用并以Apache 2.0许可协议发布的开源软件框架。它支持在商品硬件构建的大型集群上运行的应用程序。Hadoop是根据Google公司发表的MapReduce和Google档案系统的论文自行实作而成。称为社区版Hadoop
-
优点:
-
完全开源免费
-
社区活跃
-
文档、资料详实
-
-
缺点:
-
复杂的版本管理。版本管理比较混乱的,各种版本层出不穷,让很多使用者不知所措
-
复杂的集群部署、安装、配置。通常按照集群需要编写大量的配置文件,分发到每一台节点上,容易出错,效率低下
-
复杂的集群运维。对集群的监控,运维,需要安装第三方的其他软件,如ganglia,nagois等,运维难度较大
-
复杂的生态环境。在Hadoop生态圈中,组件的选择、使用,比如Hive,Mahout,Sqoop,Flume,Spark,Oozie等等,需要大量考虑兼容性的问题,版本是否兼容,组件是否有冲突,编译是否能通过等。经常会浪费大量的时间去编译组件,解决版本冲突问题
-
-
-
第三方发行版Hadoop:Hadoop遵从Apache开源协议,用户可以免费地任意使用和修改Hadoop,也正因此,市面上出现了很多Hadoop版本。其中有很多厂家在Apache Hadoop的基础上开发自己的Hadoop产品,比如Cloudera的CDH,Hortonworks的HDP,MapR的MapR产品等
-
Cloudera: Apache Hadoop open source ecosystem | Cloudera
-
2008年成立的Cloudera是最早将Hadoop商用的公司,为合作伙伴提供Hadoop的商用解决方案,主要是包括支持、咨询服务、培训
-
2009年Hadoop的创始人Doug Cutting也加盟Cloudera公司。Cloudera产品主要为CDH,Cloudera Manager,Cloudera Support
-
CDH是Cloudera的Hadoop发行版,完全开源,比Apache Hadoop在兼容性,安全性,稳定性上有所增强
-
Cloudera Manager是集群的软件分发及管理监控平台,可以在几个小时内部署好一个Hadoop集群,并对集群的节点及服务进行实时监控。Cloudera Support即是对Hadoop的技术支持
-
Cloudera的标价为每年每个节点4000美元。Cloudera开发并贡献了可实时处理大数据的Impala项目
-
-
Hortonworks:Hortonworks Data Platform | Cloudera
-
2011年成立的Hortonworks是雅虎与硅谷风投公司Benchmark Capital合资组建
-
公司成立之初就吸纳了大约25名至30名专门研究Hadoop的雅虎工程师,上述工程师均在2005年开始协助雅虎开发Hadoop,贡献了Hadoop80%的代码
-
雅虎工程副总裁、雅虎Hadoop开发团队负责人Eric Baldeschwieler出任Hortonworks的首席执行官
-
Hortonworks的主打产品是Hortonworks Data Platform(HDP),也同样是100%开源的产品,HDP除常见的项目外还包括了Ambari,一款开源的安装和管理系统
-
HCatalog,一个元数据管理系统,HCatalog现已集成到Facebook开源的Hive中。Hortonworks的Stinger开创性的极大的优化了Hive项目。Hortonworks为入门提供了一个非常好的,易于使用的沙盒
-
Hortonworks开发了很多增强特性并提交至核心主干,这使得Apache Hadoop能够在包括Window Server和Windows Azure在内的Microsoft Windows平台上本地运行。定价以集群为基础,每10个节点每年为12500美元
-
2018年Hortonworks被Cloudera公司收购
-
-
优点:
-
基于Apache协议,100%开源
-
版本管理清晰。比如Cloudera,CDH1,CDH2,CDH3,CDH4,CDH5 等,后面加上补丁版本,如CDH4.1.0 patch level 923.142,表示在原生态Apache Hadoop 0.20.2基础上添加了1065个patch
-
比Apache Hadoop在兼容性、安全性、稳定性上有增强。第三方发行版通常都经过了大量的测试验证,有众多部署实例,大量的运行到各种生产环境
-
版本更新快。通常情况,比如CDH每个季度会有一个update,每一年会有一个release。
-
基于稳定版本Apache Hadoop,并应用了最新Bug修复或Feature的patch
-
提供了部署、安装、配置工具,大大提高了集群部署的效率,可以在几个小时内部署好集群
-
运维简单。提供了管理、监控、诊断、配置修改的工具,管理配置方便,定位问题快速、准确,使运维工作简单,有效
-
-
5、Hadoop架构变迁
-
Hadoop 1.0
- HDFS(分布式文件存储)
- MapReduce(资源管理和分布式数据处理)
-
Hadoop 2.0
- HDFS(分布式文件存储)
- MapReduce (分布式数据处理)
- YARN(集群资源管理、任务调度)
-
Hadoop 3.0
- 通用方面
精简内核、类路径隔离、shell脚本重构 - Hadoop HDFS
EC纠删码、多NameNode支持 - Hadoop MapReduce
任务本地化优化、内存参数自动推断 - Hadoop YARN
Timeline Service V2、队列配置
- 通用方面
首先我们来看一下致命性的变化,就是1.0版本到2.0版本的变迁,因为hadoop发展到现在,大概经历了三个大的版本变化,我们仔细对比一下,发现底层都是hdfs,没有什么变化,也就是说,数据怎么存的,没有什么变化
1.0到2.0最大的变化,就是对MR进行了大的拆分,并且引入了一个新的组件,叫做YARN。大家可以看下图,我们发现,这个mapReduce这个组件太累了,他除了要做集群的资源管理,还要做数据的处理,这一个组件身兼数职,并且这两件事情都非常的重要,那他的性能能好吗
完全不行啊,所以呢,到2.0版本之后,hadoop做了一个非常大的构架变化,就是把MR做了拆分,MR你只负责处理数据就可以了,资源管理的事情,交给专门的组件来做,这个组件就是YARN,并且YARN这个组件做的非常通用,不仅支持MapReduce,还支持其他的计算框架,什么Spark,Flink等。目前市面上1.0基本上没什么人用了,但是2.8、2.9这些还是有在用、
Hadoop 3.0架构组件和Hadoop 2.0类似,3.0着重于性能优化
我们可以看一下,2.0到3.0的版本,构架已经没有大的改变了,一个软件要是天天变构架,那就太搓了,3.0版本侧重的是性能的优化,就比如说支持cup的多重运算、支持多重备份,并且内部的数据支持动态平衡,并且存储效率变高了,采用删码存储等等
以上是关于Hadoop概述的主要内容,如果未能解决你的问题,请参考以下文章