Hadoop概述

举报
Smy1121 发表于 2022/12/30 15:27:46 2022/12/30
【摘要】 大数据技术之Hadoop系统前言传统的系统已无法处理结构多变的大数据,而高性能硬件和专用服务器价格昂贵且不灵活,Hadoop因此应运而生。Hadoop使用互连的廉价商业硬件,通过数百甚至数千个低成本服务器协同工作,可有效存储和处理大量数据。一、大数据概念最早提出“大数据”这一概念的是全球知名咨询公司麦肯锡,它是这样定义大数据的:一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件...

大数据技术之Hadoop系统

前言

传统的系统已无法处理结构多变的大数据,而高性能硬件和专用服务器价格昂贵且不灵活,Hadoop因此应运而生。

Hadoop使用互连的廉价商业硬件,通过数百甚至数千个低成本服务器协同工作,可有效存储和处理大量数据。

一、大数据概念

最早提出“大数据”这一概念的是全球知名咨询公司麦肯锡,它是这样定义大数据的:一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流转、多样的数据类型以及价值密度低四大特征。

二、大数据的特征

一般认为,大数据主要具有以下4个方面的典型特征,即大量(Volume)、多样(Variety)、高速(Velocity)和价值(Value),即所谓的4V,接下来,通过一张图来具休描述。

2.1 海量的数据规模(Volume)

大数据的特征首先就是数据规模大。随着互联网、物联网、移动互联技术的发展,人和事物的所有轨迹都可以被记录下来,数据呈现出爆发性增长。
近年来,随着数据维度变多、数据类型增加、数据的描述能力增强,数据可以传达的信息也越来越多,越来越准确。
数据相关计量单位的换算关系如下表所示:

单位
换算格式
Byte
1Byte=8bit
KB
1KB=1024Byte
MB
1MB=1024KB
GB
1GB=1024MB
TB
1TB=1024GB
PB
1PB=1024TB
EB
1EB=1024PB
ZB
1ZB=1024EB
YB
1YB=1024ZB
BB
1BB=1024YB
NB
1NB=1024BB
DB
1DB=1024NB

2.2 多样的数据类型(Variety)

数据来源的广泛性,决定了数据形式的多样性。

大数据可以分为三类:

一是结构化数据,如财务系统数据、信息管理系统数据、医疗系统数据等,其特点是数据间因果关系强;

二是非结构化的数据,如视频、图片、音频、博客、互联网搜索、物联网等,其特点是数据间没有因果关系;

三是半结构化数据,如HTML文档、邮件、网页等,其特点是数据间的因果关系弱。

有统计显示,目前结构化数据占据整个互联网数据量的75%以上,而产生价值的大数据,往往是这些非结构化数据。

2.3 高速的数据流转(Velocity)

数据的增长速度和处理速度是大数据高速性的重要体现

在信息时代,人成为网络的核心,每个人每天都在制造新的数据,这些数据再被相应的机构如政府、互联网企业、银行、电信运营商等收集,形成了一个个庞大的数据体系。

与以往的报纸、书信等传统数据载体生产传播方式不同,在大数据时代,大数据的交换和传播主要是通过互联网和云计算等方式实现的,其生产和传播数据的速度是非常迅速的。

另外,大数据还要求处理数据的响应速度要快,有很强的时效性。例如,上亿条数据的分析必须在几秒内完成。数据的输人、处理与丢弃必须立刻见效,几乎无延迟。

面对如此庞大的数据体系,处理数据并得到结果的速度越快,数据的时效性就越强,价值就越高——而大数据和传统数据挖掘最大的区别也在于此,大数据更强调数据处理的实时性和时效性。

2.4 较低的价值密度(Value)

大数据的价值密度相对较低
大数据的核心特征是价值,其实价值密度的高低和数据总量的大小是成反比的,即数据价值密度越高数据总量越小,数据价值密度越低数据总量越大。
任何有价值的信息的提取依托的就是海量的基础数据,大数据最大的价值即在于从大量低价值密度数据中挖掘出对分析和预测等有价值的信息。
相较于传统数据挖掘利用结构化的数据类型,大数据把目光也投向了非结构化的、非抽样的、包含全体的数据类型。这为大数据带来了更多的有效信息,但同时也增加了大量无价值的甚至是错误的信息。

三、大数据核心技术

大数据技术的体系庞大且复杂,基础的技术包含数据的采集、数据预处理、分布式存储、数据仓库、并行计算、机器学习、数据挖掘、数据可视化等各种技术范畴和不同的技术层面。
大数据在信息系统的生命周期中,从数据源到最终产生有价值的可视化信息,主要经历5个步骤,分别是
数据采集、数据预处理、数据存储、数据分析、数据可视化,此过程涵盖了海量分布式系统、数据库、并行计算框架、数据挖掘等方面的技术。

四、Hadoop概述

4.1 Hadoop是什么

1) Hadoop是一个开源的分布式计算和存储框架,由Apache基金会开发和维护。
2) 主要解决海量数据的存储和海量数据的分析计算问题。
3) 广义上来说,Hadoop通常是指一个更广泛的概念 —— Hadoop生态圈。

4.2 Hadoop发展历史

1) Hadoop创始人Doug Cutting,为了实现与Google类似的全文搜索功能,他在Lucene框架基础上进行优化升级查询引擎和搜索引擎。

2) 2001年年底Lucene成为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基金会。

8) 2006年3月份,Map-Reduce和Nutch Distributed File System(NDFS)分别被纳入到Hadoop项目中,Hadoop就此正式诞生,标志着大数据时代来临。

9) 名字来源于Doug Cutting儿子的玩具大象。

4.3 Hadoop三大发行版本

Apache、Cloudera、Hortonworks
1) Apache版本最原始(最基础)的版本,对于入门学习最好。 2006 
2) Cloudera内部集成了很多大数据框架,对应产品CDH。 2008 
3) Hortonworks文档较好,对应产品HDP。 2011 
4) Hortonworks现在已经被Cloudera公司收购,推出新的品牌CDP。2018
5)Apache Hadoop
官网地址:http://hadoop.apache.org
下载地址:https://hadoop.apache.org/releases.html
6)Cloudera Hadoop
官网地址:https://www.cloudera.com/downloads/cdh
下载地址:https://docs.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_cdh_6_download.html
1、2008年成立的Cloudera是最早将Hadoop商用的公司,为合作伙伴提供Hadoop的商用解决方案,主要是包括支持、咨询服务、培训。
2、2009年Hadoop的创始人Doug Cutting也加盟Cloudera公司。Cloudera产品主要为CDH,Cloudera Manager,Cloudera Support
3、CDH是Cloudera的Hadoop发行版,完全开源,比Apache Hadoop在兼容性,安全性,稳定性上有所增强。Cloudera的标价为每年每个节点10000美元。
4、Cloudera Manager是集群的软件分发及管理监控平台,可以在几个小时内部署好一个Hadoop集群,并对集群的节点及服务进行实时监控。
7)Hortonworks Hadoop
官网地址:https://hortonworks.com/products/data-center/hdp/
下载地址:https://hortonworks.com/downloads/#data-platform
1、2011年成立的Hortonworks是雅虎与硅谷风投公司Benchmark Capital合资组建。
2、公司成立之初就吸纳了大约25名至30名专门研究Hadoop的雅虎工程师,上述工程师均在2005年开始协助雅虎开发Hadoop,贡献了Hadoop80%的代码。
3、Hortonworks的主打产品是Hortonworks Data Platform(HDP),也同样是100%开源的产品,HDP除常见的项目外还包括了Ambari,一款开源的安装和管理系统。
4、2018年Hortonworks目前已经被Cloudera公司收购。

4.4 Hadoop特点

4.4.1 高可靠性

具有按位存储和处理数据能力,HA机制,数据有多份副本存储在不同的机器上 , 保证数据的安全可靠。

4.4.2 高扩展性

hadoop的设计目标是可以高效稳定的运行在廉价的计算机集群上,通过可用的计算机集群分配数据,可以扩展到数以千计的计算机节点上。

4.4.3 高效性

能够在各节点之间动态移动数据,并保持各个节点的动态平衡,在MapReduce的思想下Hadoop是并行工作的,以加快任务处理速度。

4.4.4 高容错性

采用冗余数据存贮方式,自动保存数据的多个副本(默认三副本),当机器宕机时,会自动复制副本到其它机器上,维持副本个数,并且能够自动将失败的任务重新分配。

4.4.5 低成本、开源、支持多语言

与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低。
hadoop采用廉价的计算机集群,一般用户也可以用pc机搭建环境,运行在linux平台上。
hadoop是基于java语言开发的,可以较好的运行在linux的平台上,支持多种编程语言,如:C++等。

五、Hadoop构成

Hadoop集群三大核心组件:HDFS、MapReduce、Yarn。

5.1 HDFS(分布式文件存储)

HDFS是Hadoop数据存储管理的基础,是一个分布式文件系统,容错性高,高吞吐率,有效的收集海量数据。

将大数据文件切成小数据块,再写入不同节点,这些节点被称为数据节点(DataNode),为了使用户在使用时可以访问到每一个数据块,HDFS使用了一个专门保存文件属性信息的节点——名称节点(NameNode)。

hdfs角色:NameData、DataNode

NameNode(nn) :是一个主管、管理者Master。
1) hdfs文件名称空间
2) 配置副本策略
3) 数据块(Block)存放datanode的映射信息
4) 处理客户端读写请求

DataNode(dn):是Slave,NameNode下达命令,DataNode执行实际的操作。
1)存储实际的文件对应的数据块(Block)
2) 执行数据块的读/写操作
3) 要定期向NN发送心跳信息,汇报本身及其所有的block信息,健康状况。

Client:客户端
1) 文件切分,文件上传HDFS的时候,Client将文件切分成一个一个的Block(默认128mb),然后进行上传。
2) 与NameNode交互,获取文件的位置信息。
3) 与DataNode交互,读取或者写入数据。
4) Client提供一些命令来管理 HDFS,比如 NaneNode 格式化。
5) Client可以通过一些命令来访问 HDFS,比如对 HDFS 增删查改操作。

Secondary NameNode:并非NameNode的热备
当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务。
1) 辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NaneNode。
2) 在紧急情况下,可辅助恢复NameNode。

5.2 MapReduce(分布式计算)

分布式计算框架,用于海量数据运算分析,MapReduce同样采用master/slave结构 。

1) client
   用户,用来提交任务并接收计算结果。

2) JobTracker
   主节点,主要用来接收用户提交的任务、资源监控和作业调度等。JobTracker从client接收到任务后,将作业分配给TaskTracker执行,同时还会监控所有TaskTracker和作业的健康状态。
   发现失败,则会将任务转移到其他节点上。在整个任务执行过程中,JobTracker会跟踪任务的执行进度以及资源使用等情况。

3) TaskTracker
   从节点,主要用来接收并执行由JobTracker分配的作业。TaskTracker会周期性地通过心跳将本节点上的资源使用情况、作业运行进度等汇报给JobTracker,同时接收作业信息、执行命令等。

4) Task
   任务/作业,可以分为Map Task和Reduce Task。

基本处理过程:首先数据被分割为不同的数据块,然后通过Map函数进行映射运算,达到分布式运算的效果。最后由Reduce函数对所有结果进行汇总处理,得出程序开发者想要的结果。其中,Map和Reduce函数都由程序开发者自己定义功能。

5.3 YARN(资源调度)

提供资源调度与任务管理功能
资源调度:根据申请的计算任务,合理分配集群中的计算节点(计算机)。
任务管理:任务在执行过程中,负责过程监控、状态反馈、任务再调度等工作。

Yarn组件构成:ResourceManager,ApplicationMaster,NodeManager 采用master/slave(主/从)结构。

1) ResourceManager(RM)
整个集群同一时间提供服务的RM只有一个,负责集群资源的统一管理和调度。
处理客户端的请求: 提交一个作业、杀死一个作业
监控我们的NM,一旦某个NM挂了,那么该NM上运行的任务需要告诉我们的AM来如何进行处理。

2) NodeManager(NM)
整个集群中有多个,负责自己本身节点资源管理和使用。
定时向RM汇报本节点的资源使用情况
接收并处理来自RM的各种命令:启动Container
处理来自AM的命令
单个节点的资源管理

3) ApplicationMaster(AM)
每个应用程序对应一个:MR、Spark,负责应用程序的管理。
为应用程序向RM申请资源(core、memory),分配给内部task。
需要与NM通信:启动/停止task,task是运行在container里面,AM也是运行在container里面。

4) Container
封装了CPU、Memory等资源的一个容器
是一个任务运行环境的抽象

5) Client
提交作业
查询作业的运行进度
杀死作业

总的来说:HDFS用于海量分布式数据的存储,MapReduce用于海量数据分布处理,YARN用于进行资源调度,为MapReduce提供算力资源,HDFS和YARN加起来就是一个分布式操作系统,而MapReduce是运行在这个操作系统上的大数据处理框架。

5.4 Zookeeper

zookeeper是一个为分布式应用所设计的分布的、开源的协调服务,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。

zookeeper集群主要负责Hadoop集群数据管理事务,命名服务,配置管理,状态同步,集群管理,队列管理,分布式锁等。
zookeeper=文件系统+监测通知
zookeeper集群由俩个角色组成:Leader和Follower组成,多个Follower和一个Leader。
Leader主要功能是恢复数据,维持通信。
Follower主要功能是向Leader发送请求,接收Leader的消息并处理,接收Client的请求,进行Leader的投票,结果返回Client。
zookeeper选举机制,zookeeper集群会通过Paxos算法选举出Leader角色是哪个节点,Paxos算法简单来说就是过半选举,比如三台节点,一次启动zookeeper,那么第二台节点的zookeeper状态就是Leader。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。