Hadoop概述

Hadoop作为Apache开源项目,提供了一种可靠且可扩展的分布式存储和计算平台,有效解决大数据读写效率问题。它运行在商用硬件上,简化了分布式程序开发,并拥有丰富的生态系统和模块。Hadoop在各个公司有不同版本,如Cloudera、Hortonworks等,形成了各自特色的商业支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么要⽤hadoop

数据⼤⼩单位:Byte,KB,MB,GB,TB,PB,EB,ZB,YB,DB,NB

⼀些数据集的⼤⼩更远远超过了1TB,也就是说,数据的存储是⼀个要解决的问题。同时,硬盘技术也⾯临⼀个技术瓶颈,就是硬盘的传输速度(读数据的速度)的提升远远低于硬盘容量的提升。我们看下⾯这个表格:

在这里插入图片描述

可以看到,容量提升了将近1000倍,⽽传输速度才提升了20倍,读完⼀个硬盘的所需要的时间相对来说,更⻓更久了(已经违反了数据价值的即时性)。读数据都花了这么⻓时间,更不⽤说写数据了。

对于如何提⾼读取数据的效率,我们已经想到解决的⽅法了,那就是将⼀个数据集存储到多个硬盘⾥,然后并⾏读取。⽐如1T的数据,我们平均100份存储到100个1TB硬盘上,同时读取,那么读取完整个数据集的时间⽤不上两分钟。⾄于硬盘剩下的99%的容量,我们可以⽤来存储其他的数据集,这样就不会产⽣浪费。解决读取效率问题的同时,我们也解决了⼤数据的存储问题。

但是,我们同时对多个硬盘进⾏读/写操作时,⼜有了新的问题需要解决:

1、硬件故障问题。⼀旦使⽤多个硬件,相对来说,个别硬件产⽣故障的⼏率就⾼,为了避免数据丢失,最常⻅的做法就是复制(replication):⽂件系统保存数据的多个复本,⼀旦发⽣故障,就可以使⽤另外的复本。
2、读取数据的正确性问题。⼤数据时代的⼀个分析任务,就需要结合⼤部分数据来共同完成分析,因此从⼀个硬盘上读取的数据要与从其他99个硬盘上读取的数据结合起来使⽤。那么,在读取过程中,如何保证数据的正确性,就是⼀个很⼤的挑战。

针对于上述⼏个问题,Hadoop为我们提供了⼀个可靠的且可扩展的存储和分析平台,此外,由于Hadoop运⾏在商⽤硬件上且是开源的,因此Hadoop的使⽤成本是⽐较低了,在⽤户的承受范围内。

Hadoop的简要介绍

Hadoop是Apache基⾦会旗下⼀个开源的分布式存储和分析计算平台,使⽤java语⾔开发,具有很好的跨平台性,可以运⾏在商⽤(廉价)硬件上,⽤户⽆需了解分布式底层细节,就可以开发分布式程序,充分使⽤集群的⾼速计算和存储

Apache lucene是⼀个应⽤⼴泛的⽂本搜索系统库。该项⽬的创始⼈道格·卡丁在2002年带领团队开发该项⽬中的⼦项⽬Apache Nutch,想要从头打造⼀个⽹络搜索引擎系统,在开发的过程中,发现了两个问题,⼀个是硬件的⾼额资⾦投⼊,另⼀个是存储问题。

2003年和2004年Google先后发表的《GFS》和《MapReduce》论⽂,给这个团队提供了灵感,并进⾏了实现,于是NDFS(Nutch分布式⽂件系统)和MapReduce相继问世。2006年2⽉份,开发⼈员将NDFS和MapReduce移出Nutch形成⼀个独⽴的⼦项⽬,命名为Hadoop(该名字据Doug Cutting所说,是借⽤了他的孩⼦给⽑绒玩具取得名字)。

⾕歌的三篇论⽂

- 2003年发表的《GFS》
	基于硬盘不够⼤、数据存储单份的安全隐患问题,提出的分布式⽂件系统⽤于存储的理论思想。
	· 解决了如何存储⼤数据集的问题
- 2004年发表的《MapReduce》
	基于分布式⽂件系统的计算分析的编程框架模型。移动计算⽽⾮移动数据,分⽽治之。
	· 解决了如何快速分析⼤数据集的问题
- 2006年发表的《BigTable》
	针对于传统型关系数据库不适合存储⾮结构化数据的缺点,提出了另⼀种适合存储⼤数据集的解决⽅案

Hadoop的发展历史

- 起源于Apache Nutch项⽬(⼀个⽹⻚爬取⼯具和搜索引擎系统,后来遇到⼤数据量的⽹⻚存储问题)
- 2003年,⾕歌发表的⼀篇论⽂(描述的是“⾕歌分布式⽂件系统”,简称GFS),给
了Apache Nutch项⽬的开发者灵感
- 2004年,Nutch的开发者开始着⼿NDFS(Nutch的分布式⽂件系统)
- 2004年,⾕歌⼜发表了⼀篇介绍MapReduce系统的论⽂
- 2005年,Nutch项⽬实现了⼀个MapReduce系统
- 2006年,开发⼈员将NDFS和MapReduce移出Nutch项⽬,形成⼀个⼦项⽬,命名Hadoop
- 2008年,Hadoop已成为Apache的顶级项⽬
- 2008年4⽉,Hadoop打破世界纪录,成为最快排序1TB数据的系统,排序时间为209秒
- 2009年,Hadoop把1TB数据的排序时间缩短到62秒,从此名声⼤噪
- 现在很多公司都在使⽤,如雅⻁、last.fm、Facebook、纽约时报等

Hadoop的版本介绍

Hadoop是Apache的⼀个开源项⽬,所以很多公司在这个基础上都进⾏了商业化加⼊了⾃⼰的特⾊。Hadoop的发⾏版中除了有Apache社区提供的hadoop之外,⽐较出名的公司如cloudera,hortonworks,mapR,华为,DKhadoop等都提供了⾃⼰的商业版本,主要是⼤型公司提供更为专业的技术⽀持,多数都收费。

- Apache Hadoop(社区版): 原⽣的Hadoop、开源、免费、社区活跃,更新速度快,适合学习阶段
- Cloudera Hadoop(CDH版):最成型的商业发⾏版本。有免费版和收费版本。版本划分清晰,版本更新速度快,对⽣态圈的其他软件做了很好的兼容性,安全性、稳定性都有增强。⽀持多种安装⽅式(Cloudera Manager、YUM、RPM、Tarball)
- Hortonworks Hadoop(HDP):完全开源,安装⽅便,提供了直观的⽤户安装界⾯和配置⼯具

Hadoop的官⽹介绍

apache官⽹地址和如何进⼊项⽬列表

在这里插入图片描述

找到Hadoop项⽬

在这里插入图片描述

Hadoop的模块和⽣态圈

在这里插入图片描述

Hadoop的历史版本⼊⼝

在这里插入图片描述

找到Hadoop2.7.6,以及⽂档⼊⼝

在这里插入图片描述

⽼版本官⽹⼊⼝

在这里插入图片描述

Hadoop的组成部分

hadoop2.0以后的四个模块:
    - Hadoop Common:Hadoop模块的通⽤组件
    - Hadoop Distributed File System:分布式⽂件系统
    - Hadoop YARN:作业调度和资源管理框架
    - Hadoop MapReduce:基于YARN的⼤型数据集并⾏计算处理框架
hadoop3.0新扩展的两个模块:
    - Hadoop Ozone:Hadoop的对象存储机制
    - Hadoop Submarine:Hadoop的机器学习引擎

Hadoop的⽣态系统

参考apache官⽹:http://hadoop.apache.org/

在这里插入图片描述

* Hbase
	是⼀个可扩展的分布式数据库,⽀持⼤型表格的结构化数据存储。 HBase是Apache的Hadoop项⽬的⼦项⽬。HBase不同于⼀般的关系数据库,它是⼀个适合于⾮结构化数据存储的数据库。另⼀个不同的是HBase基于列的,⽽不是基于⾏的模式。

* Hive
	数据仓库基础架构,提供数据汇总和临时查询,可以将结构化的数据⽂件映射为⼀张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进⾏运⾏。Hive提供的是⼀种结构化数据的机制,定义了类似于传统关系数据库中的类SQL语⾔:Hive QL,通过该查询语⾔,数据分析⼈员可以很⽅便地运⾏数据分析业务。

* Spark
	Hadoop数据的快速和通⽤计算引擎。 Spark提供了⼀个简单⽽富有表现⼒的编程模
型,⽀持⼴泛的应⽤程序,包括ETL,机器学习,流处理和图计算。

* ZooKeeper
	⼀个⾯向分布式应⽤程序的⾼性能协调服务,是Hadoop和Hbase的重要组件。它是⼀个为分布式应⽤提供⼀致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
	
* Sqoop(数据ETL/同步⼯具)
	Sqoop是SQL-to-Hadoop的缩写,主要⽤于传统数据库和Hadoop之前传输数据。数据的导⼊和导出本质上是Mapreduce程序,充分利⽤了MR的并⾏化和容错性。
	
* Flume(⽇志收集⼯具)
	Cloudera开源的⽇志收集系统,具有分布式、⾼可靠、⾼容错、易于定制和扩展的特点。它将数据从产⽣、传输、处理并最终写⼊⽬标的路径的过程抽象为数据流,在具体的数据流中,数据源⽀持在Flume中定制数据发送⽅,从⽽⽀持收集各种不同协议数据。同时,Flume数据流提供对⽇志数据进⾏简单处理的能⼒,如过滤、格式转换等。
	
* Kafka(分布式消息队列)
	Kafka是Linkedin于2010年12⽉份开源的消息系统,它主要⽤于处理活跃的流式数据。这些数据包括⽹站的pv、⽤户访问了什么内容,搜索了什么内容等。这些数据通常以⽇志的形式记录下来,然后每隔⼀段时间进⾏⼀次统计处理。
	
* Ambari
	⽤于供应,管理和监控Apache Hadoop集群的基于Web的⼯具。Ambari⽬前已⽀持⼤多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeper、Sqoop和Hcatalog等。Ambari还提供了⼀个⽤于查看集群健康状况的仪表板,例如热图以及可视化查看MapReduce,Pig和Hive应⽤程序的功能以及⽤于诊断其性能特征的功能,以⽅便⽤户使⽤。
	
* Avro
	数据序列化系统。可以将数据结构或者对象转换成便于存储和传输的格式,其设计⽬标是⽤于⽀持数据密集型应⽤,适合⼤规模数据的存储与交换。Avro提供了丰富的数据结构类型、快速可压缩的⼆进制数据格式、存储持久性数据的⽂件集、远程调⽤RPC和简单动态语⾔集成等功能。
	
* Cassandra
	可扩展的多主数据库,没有单点故障。是⼀套开源分布式NoSQL数据库系统。
	
* Chukwa
	于管理⼤型分布式系统的数据收集系统(2000+以上的节点, 系统每天产⽣的监控数据量在T级别)。它构建在Hadoop的HDFS和MapReduce基础之上,继承了Hadoop的可伸缩性和鲁棒性。Chukwa包含⼀个强⼤和灵活的⼯具集,提供了数据的⽣成、收集、排序、去重、分析和展示等⼀系列功能,是Hadoop使⽤者、集群运营⼈员和管理⼈员的必备⼯具。
	
* Mahout
	Apache旗下的⼀个开源项⽬,可扩展的机器学习和数据挖掘库
	
* Pig
	⽤于并⾏计算的⾼级数据流语⾔和执⾏框架。它简化了使⽤Hadoop进⾏数据分析的要求,提供了⼀个⾼层次的、⾯向领域的抽象语⾔:Pig Latin。
	
* Tez
	⼀个基于Hadoop YARN的通⽤数据流编程框架,它提供了⼀个强⼤⽽灵活的引擎,可执⾏任意DAG任务来处理批处理和交互式⽤例的数据Hado™⽣态系统中的Hive™,Pig™和其他框架以及其他商业软件(例如ETL⼯具)正在采⽤Tez,以替代Hadoop™MapReduce作为底层执⾏引擎。
	
* Oozie(⼯作流调度器)
	⼀个可扩展的⼯作体系,集成于Hadoop的堆栈,⽤于协调多个MapReduce作业的执⾏。它能够管理⼀个复杂的系统,基于外部事件来执⾏,外部事件包括数据的定时和数据的出现。
	
* Pig(ad-hoc脚本)
	由yahoo!开源,设计动机是提供⼀种基于MapReduce的ad-hoc(计算在query时发⽣)数据分析⼯具,通常⽤于进⾏离线分析。它定义了⼀种数据流语⾔—Pig Latin,它是MapReduce编程的复杂性的抽象,Pig平台包括运⾏环境和⽤于分析Hadoop数据集的脚本语⾔(Pig Latin)。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值