大数据时代的三次信息化浪潮:[时间;标志;解决的问题;代表企业]
1980年前后;个人计算机;信息处理;Intel,IBM……
1995年前后;互联网;信息传输;谷歌,腾讯……
2010年前后;大数据、云计算、物联网;信息爆炸;亚马逊,阿里云……
信息技术要解决的核心问题,如何解决:
③个问题:1、信息存储;2、信息处理;3、信息传输
③个解决办法:1、存储设备容量的提升;2、CPU处理能力的大幅度提升;3、网络带宽的不断增加
数据?信息?
数据:构成信息的基本单位,离散的数据没有价值。
信息:宏观的,(联系):信息由数据组合而成,传达给读者某个概念和方法。
数据产生的方式:
运用式系统阶段 ---> 用户原创阶段 ---> 感知式系统阶段
大数据发展的③个重要阶段:
1、萌芽期 [被动数据];
2、成熟期 [Web2.0、Hadoop平台的盛行];
3、大规模应用期 [数据驱动决策]。
大数据的特点(4V):
数据量大(volume);
数据类型繁多(variety);
处理速度快(Velocity);
价值密度低(value)。
大数据的影响:
对科学研究:1、实验科学;2、理论科学;3、计算科学;4、数据密集型科学。
对思维方式:1、全样而非抽样;2、效率而非精确;3、相关而非因果。
大数据关键(核心)技术:
分布式存储 [HDFS、HBase]、
分布式处理 [MapReduce]。
大数据计算模式:
批处理计算,运用在大规模数据中。例:MapReduce、Spark
流计算,运用于实时计算。例:Flink、Storm、Flume、Streams
图计算,应用于图结构的大规模数据中。例:Graphx、PowerGraph
查询分析计算,应用于存储管理和查询。例:Hive、Cassandra
云计算概念:代表了虚拟化技术为核心的,以低成本为目的,动态可扩展的网络应用基础设施。
云计算的③种类型:
公有云[阿里];
私有云[银行];
混合云。
云计算的③种服务模式:
基础设施即服务(IaaS)
平台即服务(PaaS)
软件即服务(SaaS)
云计算的④种关键技术:
1、虚拟化;2、分布式存储;3、分布式计算;4、多租户。
⑦个特点:
1、动态可扩展;2、高可用性;3、较低的实验成本;4、易用性;5、高性能;6、免维护;7、安全。
云数据库采用的数据模型:
NoSQL数据的非关系型模型 [Amazon DynamoDB的”键值“存储];
关系型数据库的关系模型 [微软SQLAzure;阿里云ROS]。
UMP(Unified MySQL Platform)采用的②种资源隔离方式:
多个MySQL实例,1台电脑:用Cgroup限制MySQL进程资源;
多台电脑,1个MySQL实例:在Proxy服务器端限制QPS。
大数据、云计算、物联网之间的联系和区别:
大数据:数据的存储、处理与分析;
云计算:整合和优化各种IT资源,并以廉价的方式提供给用户;
物联网:物物相连,应用创新,与”智慧“产品息息相关。
联系:物联网是大数据的重要来源,大数据技术为物联网数据分析提供支撑;
云计算为大数据提供了技术支持,大数据为云计算提供了用武之地;
云计算为物联网提供了海量数据存储能力,物联网为云计算技术提供了广阔的应用空间。
Hadoop概念:一个开源的、可运行于大规模集群上的分布式计算平台。
③个方面的优势:
基于Java语言开发;
具有很好的跨平台特性;
可部署于廉价的计算机集群
②个核心:1、分布式存储:HDFS、HBase、NoSQL;2、分布式处理的MapReduce计算模型。
Hadoop的⑦个特征(即Hadoop实现的目标):
高可靠性;
高效性;
高可扩展性;
高容错性;
成本低;
运行在Linux操作系统上;
支持多语言。
Hadoop的版本:2014年JDK 1.8版本的发布,对应了Hadoop 3.0的诞生。
Hadoop生态系统:Ambari;Hive;Pig;Mahout;MapReduce;YARN;HDFS;HBase;Zookeeper;Sqoop;Flume。
概念:相对于本地文件系统,分布式文件系统是一种通过网络,实现文件在多台主机上进行分布式文件存储的系统。[ HDFS是为大规模数据存储设计的]
结构:物理上是计算机集群中的多个节点构成。
主节点(名称节点):对目录进行创建、删除、重命名,管理从节点和文件块的映射。
从节点(数据节点):负责数据的存储和读取。
注意点:同一时间,只有一个客户端能获取到主节点上的契约。[即 1 Time;1 Client ;1 File ]
⑤大优势:
1、兼容廉价的硬件设备;
2、流数据读写[非随机访问];
3、大数据集[TB];
4、简单文件模型;
5、强大的兼容性[JVM]。
④大劣势:
1、不能实时访问;
2、不能高效存储大量小文件;
3、不能多用户写入(1次写入,多次读取);
4、不能随机修改文件(只能进行文件的追加操作)。
核心概念——块:default :64 MB(在Hadoop 1.0版本中),每一块都作为独立单元存储。
好处:1、支持大规模文件存储;2、简化系统设计;3、适合数据备份。
命名空间——由主节点负责(元数据存储在内存内)
命名空间中——保存着两个数据结构(保存在磁盘中)
FsImage:维护文件树和其中的文件、文件夹中的元数据。
EditLog:记录对文件进行的所有操作。
第二名称节点的③点作用:
”检查点“保存主节点中的元数据;
定期合并FsImage、EditLog,减少EditLog的文件大小,缩短主节点重启时间;
紧急情况下恢复主节点。
第二名称节点的工作过程:
第二名称节点请求使用新的日志
通过http get方式从主节点上获得 FsImage 和 EditLog ;
执行 EditLog ,读 FsImage 读到内存中,合并这它们得到临时文件;
通过http post方式把“检查点”回传给主节点
用临时文件替换FsImage,用新的日志替换EditLog,并更新检查点时间。
概念:HBase针对谷歌Big Table的开源实现,是一个高可靠、高性能、面向列、可伸缩的分布式数据库,存储非结构化和半结构化的松散数据。
HBase作为非关系型模型数据库与关系型数据库(MySQL)的对比:
数据类型:唯一[未经解释的字符串] ; 丰富的数据类型和存储方式[关系模式]
数据操作:简单[插入、查询、删除等] ; 复杂[包括多表连接、主外关联等]
存储模式:面向列 ; 行模式存储
数据索引:唯一[行键] ; 多个[针对不同的列结构有多个索引]
数据维护:保留旧版本[基于HDFS] ; 旧版本被覆盖
可伸缩性:灵活横向发展 ; 扩展有限
数据模型总述:HBase是一个稀疏、多维度、排序的映射表。在更新时不会删除旧版本,且可对允许保留的版本数进行设置。
行键:数据按行键的字典存储,有三种方式:1、通过单个行键;2、一个行键的区间;3、全表扫描。
索引的四维坐标:行键、列族、列限定符、时间戳。
概念视图:将表视为一个稀疏、多维的映射关系。
物理视图:基于列的存储方式。
面向列存储③大优点:
减低输入/输出的开销;
支持大量并发用户查询(处理速度快);
有高的数据压缩比。
功能组件③大核心:1、库函数;2、Master服务器;3、Region服务器。
三层寻址:Zookeeper文件 [记录ROOT表位置] ---> ROOT表 [只能有一个Region] ---> META表 [保存了所有数据表的Region位置]。
如果缓存失败怎么办? 要再次经历上述的“三级寻址”过程,重新获得最新的Region位置信息,去访问数据,并用最新的Region位置信息替换缓存中失败的信息。
NoSQL的③大特点:
灵活的可扩展性;
灵活的数据模型;
与云计算的紧密融合。
优势:可扩展强,支持超大规模数据存储;数据模型灵活,可支持Web2.0应用。
劣势:缺乏数学理论基础;一般不能实现事务强一致性(ACID四性);一般不能保证数据完整性;技术尚不成熟,维护困难。
应用场景:二者都有自己的目标用户群体和市场空间,都不可被替代。
关系型数据库:应用于银行、超市、电信等需要保证事务强一致性场景,且可以进行复杂的查询分析。
NoSQL数据库:应用于互联网企业、传统企业的非关键业务(数据分析),对数据量和并发读写要求较高的场景。
混合架构:典型例子——亚马逊。购物车的临时数据,用键值存储;订单信息存储在关系型数据库中;大量的历史订单则存在MongoDB的文件数据库。
非关系型数据库的④大类型:
键值数据库[Redis]:key用来定位Value,所以不能直接对Value进行索引和查询;
列族数据库[HBase、Big Table];
文档数据库[MongoDB];
图数据库[Neo4J]。
三大基石(CAP):C: consistency 一致性 + A: availability可用性 + P: tolerance of Network Partition分区容忍性。
CA: 传统的关系型数据库,可扩展性差(数据都放在一台机子上)。[MySQL]
CP: Neo4J、HBase等NoSQL数据库,在等待期间无法对外提供服务。[MongoDB、HBase]
AP: 网站设计运用的数据库不需要所有数据被同时读到。[Cassandra]
ACID: atomicity 原子性 + consistency 一致性 + isolation 隔离性 + durability 持久性
BASE:
基本可用性(即分区容忍性) ;
软状态 ;
最终一致性(是弱一致性的特例,也是BASE的最终目的,不需要每时每刻都保持一致,最终数据一致即可)。
不一致性窗口:从OP操作完成到后续访问可以最终读取OP写入的最新值,中间的时间间隔。