Hadoop的广义和狭义之分
狭义的Hadoop:指的是一个框架,Hadoop是由三部分组成:HDFS:分布式文件系统–》存储;
MapReduce:分布式离线计算框架–》计算;Yarn:资源调度框架
广义的Hadoop:广义Hadoop是不仅仅包含Hadoop框架,除了Hadoop框架之外还有一些辅助框
架。Flume:日志数据采集,Sqoop:关系型数据库数据的采集;
Hive:深度依赖Hadoop框架完成计算(sql),Hbase:大数据领域的数据库(mysql)
Sqoop:数据的导出
广义Hadoop指的是一个生态圈
大数据的特点
大数据的特点可以用 IBM 曾经提出的 “5V” 来描述,如下
- 大量
采集、存储和计算的数据量都非常大。
计算机存储单位一般用B,KB,MB,GB,TB,PB,EB,ZB,YB,BB、NB、DB来表示,
它们之间的关系是
1GB = 1024 MB
1TB = 1024 GB
1PB = 1024 TB
1EB = 1024 PB
1ZB = 1024 EB
1YB = 1024 ZB
1BB = 1024 YB
1NB = 1024 BB
1DB = 1024 NB
以PB为例,PB级数据量有多大?是怎样的一个概念?
假如手机播放MP3的速度为平均每分钟1MB,而1首歌曲的平均时长为4分钟,那么1PB存量的歌曲可以连续播放2000年。
1PB 也相当于50%的全美学术研究图书馆藏书咨询内容
(1)1986年,全球只有0.02EB也就是约21000TB的数据量
(2)2007年,全球就是280EB也就是约300000000TB的数据量,翻了14000倍
(3)近些年,由于移动互联网及物联网的出现,各种终端设备的接入,各种业务形式的普及,平均每40个月,全球的数据量就会翻倍!2012年,每天会产生2.5EB的数据量
(4)基于IDC的报告预测,从2013年到2020年,全球数据量会从4.4ZB猛增到44ZB!而到了2025年,全球会有163ZB的数据量!
全球的数据量已经大到爆了!而传统的关系型数据库根本处理不了如此海量的数据 - 高速
在大数据时代,数据的创建、存储、分析都要求被高速处理,比如电商网站的个性化推荐尽可能要求实时完成推荐,这也是大数据区别于传统数据挖掘的显著特征。 - 多样
数据形式和来源多样化。包括结构化、半结构化和非结构化数据,具体表现为网络日志、音
频、视频、图片、地理位置信息等等,多类型的数据对数据的处理能力提出了更高的要求 - 真实
确保数据的真实性,才能保证数据分析的正确性 - 低价值
数据价值密度相对较低,或者说是浪里淘沙却又弥足珍贵。互联网发展催生了大量数据,信息海量,但价值密度较低,如何结合业务逻辑并通过强大的机器算法来挖掘数据价值,是大数据时代最需要解决的问题,也是一个有难度的课题
Hadoop=HDFS(分布式文件系统)+MapReduce(分布式计算框架)+Yarn(资源协调框架)+Common模块
- Hadoop HDFS:(Hadoop Distribute File System )一个高可靠、高吞吐量的分布式文件系统
比如:100T数据存储,
“分而治之”
分:拆分–》数据切割,100T数据拆分为10G一个数据块由一个电脑节点存储这个数据块。
数据切割、制作副本、分散储存
图中涉及到几个角色
-
NameNode(nn):存储文件的元数据,比如文件名、文件目录结构、文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。
-
SecondaryNameNode(2nn):辅助NameNode更好的工作,用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据快照。
-
DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验
注意:NN,2NN,DN这些既是角色名称,进程名称,代指电脑节点名称!
2. Hadoop MapReduce:一个分布式的离线并行计算框架
拆解任务、分散处理、汇整结果
MapReduce计算 = Map阶段 + Reduce阶段
Map阶段就是“分”的阶段,并行处理输入数据;
Reduce阶段就是“合”的阶段,对Map阶段结果进行汇总
3. Hadoop YARN:作业调度与集群资源管理的框架
Yarn中有如下几个主要角色,同样,既是角色名、也是进程名,也指代所在计算机节点名称
- ResourceManager(rm):处理客户端请求、启动/监控ApplicationMaster、监控NodeManager、资源分配与调度
- NodeManager(nm):单个节点上的资源管理、处理来自ResourceManager的命令、处理来自ApplicationMaster的命令
- ApplicationMaster(am):数据切分、为应用程序申请资源,并分配给内部任务、任务监控与容错。
- Container:对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息
ResourceManager是老大,NodeManager是小弟,ApplicationMaster是计算任务专员
4. Hadoop Common:支持其他模块的工具模块(Configuration、RPC、序列化机制、日志操作)