大数据分布式
1. 数据导论
1.1 数据的概念
进入21世纪,我们的生活就迈入了"数据时代"
作为21世纪的新青年,"数据"一词经常出现在我们的生活当中
数据无时无刻的在影响着我们的现实生活
数据:一种可以被鉴别的对客观事件进行记录的符号
简单来说就是:对人类的行为及产生的事件的一种记录
我们无时无刻都在产生数据:
这些我们的日常活动所产生的信息记录都是数据
1.2 数据的价值
以淘宝举例,经常性的进行购物,淘宝就会掌握更多用户的相关数据
这些数据包括用户的性别、地区、下单时间、下单商品、手机型号、付款方式、数量、评价、是否使用优惠券等等,通过掌握这些数据,淘宝就可以根据用户实际的需求推荐更适合用户的产品
根据上述所获得的信息,淘宝也可以大致推算出用户的一些基本信息,为用户提供更好的服务
对淘宝来说:数据可以更好的了解用户
数据的背后都会隐藏着巨大的价值,丰富的数据支撑可以让我们更好的了解事和物在现实世界的运行规律
大数据时代
当下时代已经是数据的时代,数据非常重要并且蕴含巨大的价值
所谓的大数据技术栈,就是对超大规模的数据进行处理并挖掘出数据背后的价值的技术体系
2. 大数据诞生
2.1 大数据诞生
大数据的诞生和信息化以及互联网的发展是密切相关的
在计算机发明之前,我们的数据记录都是通过纸和笔来对我们的数据进行原始记录,计算机发明之后,我们的数据就逐步迁移到计算机由计算机进行处理了
早期的计算机(上世纪70年代之前),大多数是相互独立的,各自处理各自的数据
上世纪70年代后,逐步出现了基于TCP/IP协议的小规模的计算机互联互通,但多数是军事、科研等用途
上世纪90年代左后,全球互联的互联网出现,个人、企业均可参与其中,真正逐步的实现了全球互联
在2000年后,互联网上的商业行为剧增,现在知名的互联网公司(谷歌、AWS、腾讯、阿里等)也是在这个年代开始起步
但是,在互联网参与者众多的前提下,商业公司、科研单位等,所能获得的数据量也是剧增
我们的数据量也越来越大,加上 2000 年那个时候的计算机配置也比较低,一个独立的计算机实际上是无法承受的,当时也出现了超大规模数据导致计算机无法处理的问题
于是,剧增的数据量,和羸弱的单机性能,让许多科技公司开始尝试以数量
来解决问题
在这个过程中,分布式处理技术随之诞生
因此,我们也得出了分布式处理技术
的概念,那就是,在数据量巨大
的基础下,以服务器的数量
来解决大规模数据处理问题
也就是利用分布式服务器集群,即用大量的服务器,解决大量的数据
当然,分布式处理技术也是逐步演化,从存储到计算到传输一步一步的发展起来的
发展到现在,形成了我们大数据体系的三大主要工作点,也就是数据的存、数据的用和数据的传
关于数据的存、用、传在当下这个年代技术已经普及了,我们可以很轻易的获得这些分布式处理技术
但是,2008年之前,这些在当时较为”高端”的分布式技术基本上还处于大企业内部专用且不够成熟
2.2 Apache Hadoop 的诞生
IT 世界里开源两个字一直都是贯穿古今的,2008年之后,重磅级的技术框架 Apache Hadoop 开源,广大企业拥有了成熟的、开源的、分布式数据处理解决方案
Apache Hadoop 是一款开源的分布式处理技术栈,为业界提供了:
- 基于Hadoop HDFS 的:分布式数据存储技术
- 基于Hadoop MapReduce 的:分布式数据计算技术
- 基于Hadoop YARN 的:分布式资源调度技术
Apache Hadoop的出现具有非常重大的意义:
- 为业界提供了”第一款”企业级开源大数据分布式技术解决方案
- 从Hadoop开始,大数据体系逐步建成,各类大数据技术不断出现
3. 大数据概述
3.1 大数据的概念
通过大数据的诞生我们可以发现:大数据的出现,本质上是为了解决海量数据的处理难题
大数据就是:使用分布式技术完成海量数据的处理,得到数据背后蕴含的价值
但这种定义只是狭义上的一种解释,也就是这是一种技术思维上的定义
而什么才是广义上的大数据呢,范围就比较大了,总结为五个字就是:数字化时代
我们结合上述再次对大数据的定义进行归纳总结,什么是大数据?
- 狭义上:大数据是一类
技术栈
,是一种用来处理海量数据的软件技术体系
- 广义上:大数据是数字化时代、信息化时代的
基础(技术)支撑
,以数据为生活赋能
3.2 大数据的特征
大数据有5个主要特征,称之为:5V特性
用一句话总结大数据的 5 个主要特征,那就是从海量的高增长、多类别、低信息密度的数据中挖掘出高质量的结果,而这句总结的话其实也是大数据的核心工作
3.3 大数据的核心工作
大数据的核心工作:从海量的高增长、多类别、低信息密度的数据中挖掘出高质量的结果
上面的这句话还是比较抽象的,简单而言,其实还是之前的数据的计算、数据的存储、数据的传输,但是不同的是,要在前面加一个“大”,不然,和我们普通的技术没有什么太大区别
后续将学习的技术也是围绕着这三点来进行的,即:
- 分布式存储相关技术栈
- 分布式计算相关技术栈
- 海量数据传输相关技术栈
之后我们主要任务就是,学习狭义上的大数据软件技术体系,在工作中为广义上的数字化、信息化时代,添砖加瓦
4. 大数据软件生态
大数据主体上分成如下三大核心工作体系
大数据软件生态,也基本上围绕着三大工作体系,接下来我们学习这三大工作体系中所用到的一些常见的技术框架
4.1 数据存储
- Apache Hadoop - HDFS
Apache Hadoop 框架内的组件 HDFS 是大数据体系中使用最为广泛的分布式存储技术
-
Apache HBase
Apache HBase 是大数据体系内使用非常广泛的 NoSQL KV 型数据库技术
HBase 是基于 HDFS 之上构建的
-
Apache KUDU
Apache Kudu 同样为大数据体系中使用较多的分布式存储引擎
-
云平台存储组件
除此以外,各大云平台厂商也有相应的大数据存储组件,如
阿里云的 OSS、UCloud 的US3、AWS 的 S3、金山云的 KS3 等等
4.2 数据计算
-
Apache Hadoop - MapReduce
Apache Hadoop 的 MapReduce 组件是最早一代的大数据分布式计算引擎,对大数据的发展做出了卓越的贡献
-
Apache Hive
Apache Hive 是一款以 SQL 为要开发语言的分布式计算框架,其底层使用了 Hadoop 的 MapReduce 技术
Apache Hive 至今仍活跃在大数据一线,被许多公司使用
-
Apache Spark
Apache Spark 是目前全球范围内最火热的分布式内存计算引擎,是大数据体系中的明星计算产品
-
Apache Flink
Apache Flink 同样也是一款明星级的大数据分布式内存计算引擎
特别是在实时计算(流计算)领域,Flink 占据了大多数的国内市场
4.3 数据传输
-
Apache Kafka
Apache Kafka 是一款分布式的消息系统,可以完成海量规模的数据传输工作
Apache Kafka 在大数据领域也是明星产品
-
Apache Pulsar
Apache Pulsar 同样是一款分布式的消息系统,在大数据领域同样有非常多的使用者
-
Apache Flume
Apache Flume 是一款流式数据采集工具,可以从非常多的数据源中完成数据采集传输的任务
-
Apache Sqoop
Apache Sqoop 是一款ETL工具,可以协助大数据体系和关系型数据库之间进行数据传输
大数据体系内的软件种类还是非常多的,在后续的学习中我们都能够逐步的接触到它们
5. Apache Hadoop 概述
5.1 Hadoop 概念
Hadoop 是 Apache 软件基金会下的顶级开源项目,用以提供:
- 分布式数据存储
- 分布式数据计算
- 分布式资源调度
为一体的整体解决方案
Apache Hadoop 是典型的分布式软件框架,可以部署在 1 台乃至成千上万台服务器节点上协同工作
个人或企业可以借助 Hadoop 构建大规模服务器集群,完成海量数据的存储和计算
5.2 学习 Hadoop 原因
近10年来,大数据技术体系一词一直和 Hadoop 是划上等号的,提起大数据技术基本就是在提及 Hadoop
随着近些年的发展,越来越多的新技术框架的出现,给大数据技术体系带来了丰富的生态,但是拥有元老地位的 Hadoop 依旧非常重要。
为什么学习 Hadoop 有如下几个至关重要的原因:
- Hadoop 是最早的一批大数据技术框架,在市面上拥有极高的占有率和庞大的用户群体
- Hadoop 在大数据体系内,技术难度相对较低,非常适合作为大数据学习的入门技术栈
所以,学习Hadoop不仅仅因为其适合入门,同时也可以为大数据学习打下良好的基础
5.3 Hadoop 功能
通常意义上,Hadoop是一个整体
,其内部还会细分为三个功能组件,分别是:
所以,我们会说 Hadoop 是一个集合了:存储、计算、资源调度
为一体的大数据分布式框架
5.4 Hadoop 发展
- Hadoop 创始人:Doug Cutting
-
Hadoop 起源于 Apache Lucene 子项目:Nutch
Nutch 的设计目标是构建一个大型的全网搜索引擎
遇到瓶颈:如何解决数十亿网页的存储和索引问题
-
Google三篇论文
《The Google file system》:谷歌分布式文件系统GFS
《MapReduce: Simplified Data Processing on Large Clusters》:谷歌分布式计算框架MapReduce
《Bigtable: A Distributed Storage System for Structured Data》:谷歌结构化数据存储系统
5.5 Hadoop 发行版本
开源社区版(原生Hadoop体系)
Apache开源社区发行,也是官方发行版本
官网: http://hadoop.apache.org/
- 优点:更新迭代快
- 缺点:兼容稳定性不周
商业发行版(商业公司二次封装):
商业公司发行,基于Apache开源协议,某些服务需要收费
- 优点:稳定兼容好
- 缺点:收费、版本更新慢
如今,市面上常见的有以下几个版本,
- CDH(Cloudera’s Distribution, including Apache Hadoop) Cloudera公司出品,目前使用最多的商业版
- HDP(Hortonworks Data Platform),Hortonworks公司出品,目前被Cloudera收购
Hadoop体系)**
Apache开源社区发行,也是官方发行版本
官网: http://hadoop.apache.org/
- 优点:更新迭代快
- 缺点:兼容稳定性不周
商业发行版(商业公司二次封装):
商业公司发行,基于Apache开源协议,某些服务需要收费
- 优点:稳定兼容好
- 缺点:收费、版本更新慢
如今,市面上常见的有以下几个版本,
- CDH(Cloudera’s Distribution, including Apache Hadoop) Cloudera公司出品,目前使用最多的商业版
- HDP(Hortonworks Data Platform),Hortonworks公司出品,目前被Cloudera收购
- 星环,国产商业版,星环公司出品,在国内政企使用较多