大数据的概念
4V:大量化volume、价值密度低value、快速化velocity、多样化variety。大量化每两年增长一倍,到了2020年,全球就会有35ZB数据量,Byte->KB->MB->GB->TB->PB->EB->ZB。多样化,结构化数据,保存在关系数据库中,具有规范的行和列的结构数据,只占人类数据量10%不到。90%是非结构化数据,存储在非关系数据库中。快速化,数据有价值必须快速处理,一秒定律,数据从生成到决策响应仅需要一秒,时间延长不会有商业价值,例如推荐系统。价值密度低,大量数据中有价值的比较少,但是单点价值比较高
大数据影响
数据库专家jim gray,人类从诞生以来,经历了四种研究范式。2010年后,进入大数据时代以后,是以数据为中心的研究范式。第一种实验,一开始科研就是做实验观察;第二种理论,发明了牛顿定律、几何理论由理论去研究科学问题;第三阶段,一九四几年计算机开始发明以后,进入以计算为中心的时代,靠计算可以帮助我们解决相关的科学问题。以计算为中心,事先已经知道问题是什么,以数据为中心事先问题不知,只有一堆数据,从大量数据中去发现问题,再靠数据去解决问题,全部靠数据去驱动。我们思维方式自从大数据时代到来后,发生了值的变迁。全样而非抽样,以前采用统计学抽样方式(存储设备贵、存储数据少、CPU和技术能力不强、无法短时间迅速计算),大数据时代有足够能力存储足够算例去计算。效率而非精确,不苛求精确度,全样数据不存在误差放大问题,追求速度。相关而非因果,追求相关性,比如相关性是推荐系统的核心,有相关性足够带来商业价值。
大数据的关键技术
数据流程包括数据采集、数据存储与管理、数据处理与分析、数据隐私与安全。大数据的关键技术两大核心,分布式存储和分布式处理,解决数据存储和数据高校计算问题。分布式存储:谷歌GFS和开源实现HDFS->谷歌Big Table和开源版本Hase->NoSQL(键值、列族、图形、文档数据库)->NewSQL。分布式处理:MapReduce->Spark->Flink。
大数据计算模式
不同的计算模式需要使用不同的产品。第一个批处理,MapReduce和Spark面向批处理。第二个流计算,流数据像溪水一样不断到达,每次量可能不大,但是会连续不断的到达。流数据要求实时处理,给出实时响应(秒级或毫秒级),否则分析结果会失去商业价值。流计算代表产品有S4、Storm、Flume、Puma、DStream、银河流数据处理平台。第三种模式是图计算,有些应用场景比较适合图来建模,比如地理信息系统(快递)、微博微信社交群体,网友是点,点赞就建立边,会发现哪些小朋友圈比较紧密。图计算代表软件:Google Pregel、GraphX、Giraph、Hma、PowerGraph、GoldenOrb。第四种场景是查询分析计算,代表产品:Google Dremel、Hive、Cassandra、Impala。
大数据技术之Hadoop
Hadoop生态系统图
HDFS存储非结构化数据,面向批处理,YARN资源调度和管理框架,计算所需要底层内部CPU资源。MapReduce数据的计算。数据仓库Hive本身不保存数据,数据保存在底层HDFS,本身是编程接口,把你写的SQL语句自动转换对HDFS查询分析,得到结果。Pig数据流处理,数据清洗转换。Mahout数据挖掘的算法库,实现常用数据挖掘算法(分类、聚类、回归等),调用接口,传入参数,减少工作量,针对海量数据进行数据挖掘分析。Ambari自动化的安装部署配置管理Hadoop集群的。Zookeeper分布式协作服务,选管家等,专门做分布式协调一致性工作。HBase实时性计算,分布式数据库。Flume日志采集,Sqoop数据库ETL(抽取、转换、加载),完成Hadoop系统组件之间的互通,Hadoop系统组件当中数据和关系数据库当中数据之间相互导入导出(HDFS数据可以导入MySql当中去)。MapReduce,Map函数和Reduce函数,编程容易,屏蔽底层分布式并行编程细节。采用分而治之思想,并非所有任务都可以分而治之。YARN实现一个集群多个框架,例如一千台机器,同时部署了三个框架(MapReduce、Storm、Impala),会产生打架,有三个管家去底层强CPU资源。如果三个产品只接受一个管家,就不会打架。出现了YARN资源调度和管理框架。
大数据技术之Spark
Spark架构图
Spark Core:包含Spark的基本功能;尤其是定义RDD的API、操作以及这两者上的动作。其他Spark的库都是构建在RDD和Spark Core之上的。
Spark SQL:提供通过Apache Hive的SQL变体Hive查询语言(HiveQL)与Spark进行交互的API。每个数据库表被当做一个RDD,Spark SQL查询被转换为Spark操作。
Spark Streaming:对实时数据流进行处理和控制。Spark Streaming允许程序能够像普通RDD一样处理实时数据
MLib:一个常用机器学习的算法库,算法被实现为对RDD的Spark操作。这个库包含可扩展的学习算法,比如分类、回归等需要对大量数据集进行迭代的操作
GraphX:控制图、并行图操作和计算的一组算法和工具的集合。GraphX扩展了RDD API,包含控制图、创建子图、访问路径上所有顶点的操作
Spark作为一个完整生态系统可以完成批处理、查询分析、流计算、机器学习算法库和图计算。Hadoop表达能力有限,只有Map和Reduce,磁盘开销比较大,延迟高(读写磁盘和衔接开销)完成所有Map任务才能开始下一个阶段任务。而Spark提供了Map、Reduce、groupBy、jion、filter,操作类型更加多,表达能力更加强。Spark也提供了内存计算,在内存完成数据处理,高效地提高了迭代运算。Spark是基于DAG有向无环图调度机制,可以进行相关的优化,是数据流水线话的处理。与HDFS一起使用,Spark数据计算。
大数据技术之Flink和Beam
Flink是和Spark同一类型的计算框架,也是一个完整的生态系统,是竞争关系框架。
Flink架构图
Spark和Flink对比
Spark是基于批处理,Flink是基于流处理模型,实时性好。Spark社区好,企业支持早,流行度高。Beam是谷歌统一编程接口,会自动翻译Flink、Spark,但是市场不温不火。很多企业都是Hadoop加Spark去构建。