Hadoop简介

1. Hadoop 简介

“在古时候,人们用牛来拉重物。当一头牛拉不动一-根圆木时,人们从
来没有考虑过要想方设法培育出一种更强壮的牛。同理,我们也不该想
方设法打造什么超级计算机,而应该千方百计综合利用更多计算机来解
决问题。” – 葛蕾丝●霍珀(Grace Hopper)"

1.1 数据大爆炸时代

我们生活在这个数据大爆炸的时代,很难估算全球电子设备中存储的数据总共
有多少。国际数据公司(IDC)曾经发布报告称,2013年数字世界(digital
universe)项目统计得出全球数据总量为4.4ZB(2ettabyte)并 预测在2020年将达
到44ZB。
1ZB等于102字节,等于1000 EB(exabytes),
1 000 000 PB(petabytes),等于大家更熟悉的10 亿TB(errabytes)!
这远远超过了全世界每人一块硬盘中所能保存的数据总量!

数据“洪流”有很多来源。

以下面列出的为例:

  1. 纽约证交所每天产生的交易数据大约在4TB至5TB之间;
  2. 脸谱网(Facebook)存储的照片超过2400亿张,并以每月至少7PB的速度增长;
  3. 家谱网站Ancestry.com存储的数据约为10 PB;
  4. 互联网档案馆(The Internet Archive)存储的数据约为18.5PB;
  5. 瑞士日内瓦附近的大型强子对撞机每年产生的数据约为30PB;
  6. 阿里巴巴 每天的数据可达1PB。

物联网行业的发展,也带来了不少的数据量;机器日志、RFID 读卡器、传感器网络、车载GPS和零售交易数据等,所有这些都将产生巨量的数据。

1.2 数据的存储与分析

我们遇到的问题很简单: 读写速度太慢。

在硬盘存储容量多年来不断提升的同时,访问速度(硬盘数据读取速度)却没有与时俱进。1990 年,一个普通硬盘可以存储1370 MB数
据,传输速度为4.4 MB/s", 因此只需要5分钟就可以读完整个硬盘中的数据。

20年过去了,ITB的硬盘成为主流,但其数据传输速度约为100 MB/s,读完整个硬盘中的数据至少得花2.5个小时。

读完整个硬盘中的数据需要更长时间,写入数据就别提了。

并行执行的方法:

一个很简单的减少读取时间的办法是同时从多个硬盘上读数据。试想,如果我们有100个硬盘,每个硬盘存储1%的数据,并行读取,那么不到两分钟就可以读完所有数据。

仅使用硬盘容量的1%似乎很浪费。但是我们可以存储100 个数据集,每个数据集
1 TB,并实现共享硬盘的读取。可以想象,用户肯定很乐于通过硬盘共享来缩短
数据分析时间;并且,从统计角度来看,用户的分析工作都是在不同时间点进行
的,所以彼此之间的干扰并不太大。
虽然如此,但要对多个硬盘中的数据并行进行读/写数据,还有更多问题要解决。
第一个需要解决的是【硬件故障问题】。一旦开始使用多个硬件,其中个别硬件就很
有可能发生故障。为了避免数据丢失,最常见的做法是【复制(replication)】:系统保
存数据的复本(replica),一旦有系统发生故障,就可以使用另外保存的复本。例
如,冗余硬盘阵列(RAID)就是按这个原理实现的,另外,Hadoop 的文件系统
(Hadoop Distributed FileSystem, HDFS)也是这一类的办法,不过它采取的方法稍有不同,详见后面的描述。
第二个问题是大多数分析任务需要以某种方式结合大部分数据来共同【完成数据分析】,
即从一个硬盘读取的数据可能需要与从另外99个硬盘中读取的数据结合使用。各
种分布式系统允许结合不同来源的数据进行分析,但保证其正确性是一个非常大
的挑战。【MapReduce】提出一个编程模型,该模型抽象出这些硬盘读/写问题并将其
转换为对一个数据集(由键-值对组成)的计算。后文将详细讨论这个模型,这样的
计算由map和reduce两部分组成,而且只有这两部分提供对外的接口。

简言之

Hadoop 是一套开源免费的解决方案。为我们提供了一个可靠的且可扩展的存储和分析平台。(在大量廉价pc的集群下高性能完成工作)

1.3 Apache Hadoop发展简史

Hadoop是Apache Lucene 创始人道格.卡丁(Doug Cutting)"创建的,Lucene是一
个应用广泛的文本搜索系统库。Hadoop 起源于开源网络搜索引擎Apache Nutch,
后者本身也是Lucene项目的一部分。

历史:

  1. Lucene–Doug Cutting开创的开源软件,用java书写代码,实现与Google类似的全文搜索功能,它提供了全文检索引擎的架构,包括完整的查询引擎和索引引擎
  2. 2001年年底成为apache基金会的一个子项目
  3. 对于大数量的场景,Lucene面对与Google同样的困难
  4. 学习和模仿Google解决这些问题的办法 :微型版Nutch
  5. 可以说Google是hadoop的思想之源(Google在大数据方面的三篇论文)
    • GFS —>HDFS
    • Map-Reduce —>MR
    • BigTable —>Hbase
  6. 2003-2004年,Google公开了部分GFS和Mapreduce思想的细节,以此为基础Doug Cutting等人用了2年业余时间实现了DFS和Mapreduce机制,使Nutch性能飙升
  7. 2005 年Hadoop 作为 Lucene的子项目 Nutch的一部分正式引入Apache基金会。2006 年 3 月份,Map-Reduce和Nutch Distributed File System (NDFS) 分别被纳入称为 Hadoop 的项目中

在这里插入图片描述

Hadoop 的得名

Hadoop不是缩写,这个词是生造出来的。Hadoop之父Doug Cutting 解释Hadoop来历的:“这个名字是我的孩子给他的毛绒象玩具取的”

1.4 Hadoop三大发行版本

Hadoop 三大发行版本: Apache、Cloudera、Hortonworks

Apache版本最原始(最基础)的版本,对于入门学习最好。
Cloudera在大型互联网企业中用的较多。
Hortonworks文档较好。

  1. Cloudera Hadoop
    1. 2008年成立的Cloudera是最早将Hadoop商用的公司,为合作伙伴提供Hadoop的商用解决方案,主要是包括支持、咨询服务、培训。
    2. 2009年Hadoop的创始人Doug Cutting也加盟Cloudera公司。Cloudera产品主要为CDH,Cloudera Manager,Cloudera Support
    3. CDH是Cloudera的Hadoop发行版,完全开源,比Apache Hadoop在兼容性,安全性,稳定性上有所增强。
    4. Cloudera Manager是集群的软件分发及管理监控平台,可以在几个小时内部署好一个Hadoop集群,并对集群的节点及服务进行实时监控。Cloudera Support即是对Hadoop的技术支持。
    5. Cloudera的标价为每年每个节点4000美元。Cloudera开发并贡献了可实时处理大数据的Impala项目。
  2. Hortonworks Hadoop
    1. 2011年成立的Hortonworks是雅虎与硅谷风投公司Benchmark Capital合资组建。
    2. 公司成立之初就吸纳了大约25名至30名专门研究Hadoop的雅虎工程师,上述工程师均在2005年开始协助雅虎开发Hadoop,贡献了Hadoop80%的代码。
    3. 雅虎工程副总裁、雅虎Hadoop开发团队负责人Eric Baldeschwieler出任Hortonworks的首席执行官。
    4. Hortonworks的主打产品是Hortonworks Data Platform(HDP),也同样是100%开源的产品,HDP除常见的项目外还包括了Ambari,一款开源的安装和管理系统。
    5. HCatalog,一个元数据管理系统,HCatalog现已集成到Facebook开源的Hive中。Hortonworks的Stinger开创性的极大的优化了Hive项目。Hortonworks为入门提供了一个非常好的,易于使用的沙盒。
    6. Hortonworks开发了很多增强特性并提交至核心主干,这使得Apache Hadoop能够在包括Window Server和Windows Azure在内的microsoft Windows平台上本地运行。定价以集群为基础,每10个节点每年为12500美元。

2018 年国庆期间,大数据领域的两大巨头公司Cloudera和Hortonworks宣布平等合并,Cloudera以股票方式收购Hortonworks,Cloudera股东最终获得合并公司60%的股份。

hadoop的运算速度举例

2008年4月,Hadoop打破世界纪录,成为最快的TB级数据排序系统。运行于一
个910节点的群集上,Hadoop 在209秒内(不到3.5分钟)完成了对完整的1TB数
据的排序,击败了前一-年的297秒冠军。。同年11月,谷歌在报告中声称,它的
MapReduce对1 TB数据排序只用了68秒。2009 年4月,有报道称雅虎有一个
团队使用Hadoop 对1 TB数据进行排序只花了62秒。
从那以后,以更快的速度对更大规模的数据进行排序已成为一种趋势。在2014年
GraySort基准排序大赛中,来自Databricks 公司的一个团队获得并列第一。他们
使用一个207个节点的Spark集群对100TB数据进行排序,只用了1406秒,处理
速度为每分钟4.27 TB。

1.5 Hadoop 的优势

  • 高可靠性:因为Hadoop假设计算元素和存储会出现故障,因为它维护多个工作数据副本,在出现故障时可以对失败的节点重新分布处理。
  • 高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。
  • 高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。
  • 高容错性:自动保存多份副本数据,并且能够自动将失败的任务重新分配。

1.6 Hadoop 的组成

Hadoop 组成:

1.x :

  • mapreduce(计算+资源调度)
  • HDFS(大数据存储)
  • common (通用的工具包)

2.x :

  • mapreduce(计算
  • yarn(资源调度) yet another resource negotiator
  • HDFS(大数据存储)
  • common (通用的工具包)

1.x 中计算和资源调度都是通过mapreduce完成,在mapreduce中有一个jobTracker的组件进行负责。jobTracker既负责调度,又负责计算。

2.x 中将资源调度,抽离为yarn,分层解耦,可维护性强。
yarn不仅可以为hadoop服务,也可以为其他计算框架spark,flink服务。增强了可用性。

1.7 Hadoop HDFS 组件

HDFS:hadoop distributed file system
分布式文件系统,用来存储与管理文件

核心进程:

  • NameNode:名称节点,存储文件的元数据(对存储文件的描述信息)例如:文件名,大小,权限,所属群组,存储文件的块列表,以及块所在的DataNode等等。
    NameNode 有一个。
  • DataNode:真正存储文件的节点。以及块数据的校验。以块为单位存储。例如:将一个文件切分为多个块,分别存储在DataNode中。
    DataNode 有很多个,集群方式。
  • SecondaryNameNode(可选): 秘书角色,辅助NameNode工作。每隔一段时间会获取HDFS元数据的快照。

1.8 Hadoop Yarn 组件

Yarn负责集群中所有节点计算资源的调度和统一管理。

核心进程:

  • ResourceManager (RM):负责集群中所有节点的算力的管理,(CPU,内存,IO,硬盘);定时监控NM运行和启动,分配任务给NM。
  • NodeManager(NM): 负责单个节点中算力的管理,(CPU,内存,IO,硬盘);定时向RM汇报,执行RM分配的任务。
  • ApplicationMaster: 一个任务启动时才会出现。一个job在提交时,会启动一个ApplicationMaster进程。
    负责和ResourceManager,以及NodeManager进行通信,申请资源
  • Container: 容器。一个Task在运行时是需要占用一定的算力(CPU,内存,IO,硬盘)
    为了防止当前Task的计算资源在使用时被其他其他的Task抢占,RM会将当前Task使用的计算资源,封装为一个Container(容器)
    作用:隔离计算资源,防止多个Task抢占资源。

在这里插入图片描述

1.9 Hadoop MapReduce组件

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

Map阶段和Reduce阶段

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

MapReduce 是一个编程的模型。规定了程序中,应该编写那些组件,数据类型,执行顺序

Map阶段:将大数据拆分,分别交给多个节点,并行运算,提供计算效率
核心进程MapTask

Reduce阶段:将map阶段运算的结果,进行汇总合并,输出最终的结果。
核心进程ReduceTask

一个MapReduce程序,有多个MapTask和多个ReduceTask组成,这个程序,称为Job

在这里插入图片描述

1.10 Hadoop 大生态体系

狭义的Hadoop,就是只有HDFS,Yarn,MapReduce,Common工具包组成。
而广义的Hadoop,包括了Hadoop以及相关的生态组件或者软件组成。

在这里插入图片描述

相关简介

  • Sqoop:Sqoop是一款开源的工具,主要用于在Hadoop、Hive与传统的数据库(MySql)间进行数据的传递,可以将一个关系型数据库(例如 :MySQL,Oracle 等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
  • Flume:Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
  • Kafka:Kafka是一种高吞吐量的分布式发布订阅消息系统,有如下特性:通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。
    高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒数百万的消息。支持通过Kafka服务器和消费机集群来分区消息。支持Hadoop并行数据加载。
  • Storm:Storm用于“连续计算”,对数据流做连续查询,在计算时就将结果以流的形式输出给用户。
  • Spark:Spark是当前最流行的开源大数据内存计算框架。可以基于Hadoop上存储的大数据进行计算。
  • Oozie:Oozie是一个管理Hdoop作业(job)的工作流程调度管理系统。
  • Hbase:HBase是一个分布式的、面向列的开源数据库。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。
  • Hive:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
  • R语言:R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。
  • Mahout:Apache Mahout是个可扩展的机器学习和数据挖掘库。
  • ZooKeeper:Zookeeper是Google的Chubby一个开源的实现。它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、 分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JTZ001

你的鼓励是我创作的最大动力?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值