第一章 Hadoop概述
1.1 什么是大数据
1. 大数据的概念
大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
2. 大数据的特点
可以用IBM曾经提出的"5V"来描述大数据的特点:
-
Volume(大量)
采集、存储和计算的数据量都非常大。基于IDC的报告预测,从2013年到2020年,全球数据量会从4.4ZB猛增到44ZB!而到了2025年,全球会有163ZB的数据量。
-
Velocity(高速)
数据的创建、存储、分析都需要被高速处理。比如电商网站的个性化推荐尽可能要求实时完成推荐,这也是大数据区别于传统数据挖掘的显著特征。
-
Variety(多样)
数据形式和来源多样化。包括结构化数据,半结构化数据,非结构化数据,具体表现为,网络日志、音频、视频、图片、地理位置等等。
-
Veracity(真实)
确保数据真实性,才能获取数据有效的价值。
-
Value(低价值)
数据价值密度低,互联网产生的大量数据都是无效的低价值的,从海量数据里挖掘出价值,是大数据时代最需要解决的难题。
3. 大数据的运用场景
仓储物流、电商零售、汽车、电信、生物医学、人工智能、智慧城市等等领域。
1.2 什么是Hadoop
Hadoop是由apache基金会发布的一个分布式基础架构,主要为了解决海量数据存储和分析计算的问题。
1. 狭义的Hadoop
指Hadoop框架,由三个部分组成:
- HDFS:分布式文件系统,用于存储
- MapReduce:分布式计算框架,用于计算
- Yarn:资源调度框架,用于协调资源
2. 广义的Hadoop
指Hadoop生态圈,除了Hadoop之外还包括了一些辅助框架,如:
- Flume:日志数据采集
- Sqoop:关系型数据库数据采集
- hive:基[Hadoop的一个数据仓库工具
- Hbase:一个分布式的、面向列的开源数据库
1.3 Hadoop的起源和发展
1.起源
-
hadoop起源于Nutch
Nutch是一个开源的搜索引擎,它提供了我们运行自己的搜索引擎所需的全部工具,包括全文搜索和Web爬虫。但随着抓取网页数量的增加,遇到了严重的可扩展性问题——如何解决数十亿网页的存储和索引问题
-
2003年、2004年谷歌发布两篇论文GFS和MapReduce,提供了可行的解决方案。GFS,可用于处理海量网页的存储;MapReduce,可用于处理海量网页的索引计算问题。
-
Google的三篇论文(三驾马车)
GFS:Google的分布式文件系统(Google File System)MapReduce:Google的分布式计算框架
BigTable:大型分布式数据库
发展演变:
GFS —> HDFS
Google MapReduce —> Hadoop MapReduce
BigTable —> HBase
-
Doug Cutting等人用2年的业余时间实现了DFS和MapReduce机制,使Nutch性能飙升。
-
2005年,Hadoop 作为Lucene的子项目Nutch的一部分引入Apache
-
2006年,Hadoop从Nutch剥离出来独立
-
2008年,Hadoop成为Apache的顶级项目
-
Hadoop这个名字来源于Hadoop之父Doug Cutting儿子的毛绒玩具象
2. 发展
-
0.x 系列版本:Hadoop当中最早的一个开源版本,在此基础上演变而来的1.x以及2.x的版本
-
1.x 版本系列:Hadoop版本当中的第二代开源版本,主要修复0.x版本的一些bug等
-
2.x 版本系列:架构产生重大变化,引入了yarn平台等许多新特性
-
3.x 版本系列:EC技术、YARN的时间轴服务等新特性
1.4 hadoop的特点
1.有点
-
扩展能力(Scalable)
Hadoop的数据存储和计算都在集群中进行,集群可以方便的扩展到数以千计节点。
-
低成本(Economical)
Hadoop通过普通廉价的机器组成服务器集群处理数据,对节点机器没有太多性能要求。
-
高效率(Efficient)
分布式并行处理数据,使得处理熟读非常快。
-
可靠性(Reliable)
多副本策略,保证数据安全避免丢失,失败的计算任务重新自动分配部署。
2. 缺点
-
不适用于低延迟数据访问。
-
不能高效存储大量小文件。
-
不支持多用户写入并任意修改文件。
1.5 Apache Hadoop的组成
Hadoop=HDFS(分布式文件系统)+MapReduce(分布式计算框架)+Yarn(资源协调框架)+Common模块
1. Hadoop HDFS
Hadoop Distribute File System ,一个高可靠、高吞吐量的分布式文件系统,采用分而治之的思想,将数据拆分为数据块,分别存储。HDFS主要作用:数据切割、制作副本、分散储存。
Hadoop HDFS的角色:
-
NameNode(nn): 存储文件的元数据,比如文件名、文件目录结构、文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等
-
SecondaryNameNode(2nn): 辅助NameNode更好的工作,用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据快照。
-
DataNode(dn): 在本地文件系统存储文件块数据,以及块数据的校验
既是角色名、也是进程名,也指代所在计算机节点名称。
2. Hadoop MapReduce
一个分布式的离线并行计算框架,主要作用:拆解任务、分散处理、汇整结果。MapReduce计算= Map阶段 + Reduce阶段,Map阶段就是“分”的阶段,并行处理输入数据; Reduce阶段就是“合”的阶段,对Map阶段结果进行汇总。
3. Hadoop Yarn
作业调度与集群资源管理的框架
Hadoop Yarn 的角色:
- ResourceManager(rm): 处理客户端请求、启动/监控ApplicationMaster、监控NodeManager、资源分配与调度;
- NodeManager(nm): 单个节点上的资源管理、处理来自ResourceManager的命令、处理来自ApplicationMaster的命令;
- ApplicationMaster(am): 数据切分、为应用程序申请资源,并分配给内部任务、任务监控与容错。
- Container: 对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息。
- ResourceManager是老大,NodeManager是小弟,ApplicationMaster是计算任务专员。
既是角色名、也是进程名,也指代所在计算机节点名称。
4. Hadoop Common
支持其他模块的工具模块(Configuration、RPC、序列化机制、日志操作)
任务运行相关的信息。
- ResourceManager是老大,NodeManager是小弟,ApplicationMaster是计算任务专员。
既是角色名、也是进程名,也指代所在计算机节点名称。
4. Hadoop Common
支持其他模块的工具模块(Configuration、RPC、序列化机制、日志操作)
喜欢可以订阅专栏: 大数据笔记之Hadoop
下一篇: Hadoop-HDFS介绍