大数据时代的带来意味着咱们生活水平的提升算法
大数据时代的三次浪潮?数据库
在1980年左右,我的计算机开始出现相对来讲信息能够更好的处理了。编程
在1995年左右,互联网开始普及,为用户之间的信息传输带来了很大的便利。安全
到了2010年,信息量开始爆炸,因此出现了物联网,云计算,大数据等热门行业。网络
是什么在背后支撑着大数据统领整个世纪呢?数据结构
一个是存储量增大,另外一个是CPU计算能力的提升,还有一方面是咱们网络宽带速度的增长。架构
说到这里,那什么是大数据呢?框架
这里用四化来归纳。机器学习
大量化:数据量的大大增长数据结构和算法
多样化:数据的类型多样,也能够泛泛统称为结构化数据和非结构化数据。
价值化:价值密度低可是商业价值高好比说在一个监控视频中,可能说有用的数据就那一两秒可是商业价值很大。
快速化:数据的处理速度很是之快。
大数据技术层面分解:
数据采集:利用工具将数据进行抽取,转换最终加载到数据仓库或数据集市中,固然也能够获取实时采集的数据进行实时处理分析。
数据存储管理:利用分布式文件系统,数据仓库,关系型数据库等对数据进行存储管理。
数据处理分析:利用分布式并行计算结合数据结构和算法对海良数据进行处理分析。最终对数据进行可视化方便人们更好的理解分析数据。
数据隐私和安全:创建隐私数据保护体系来保护我的隐私和数据安全。
两大核心技术(重点):
分布式存储 分布式计算
GFS/HDFS
HBase MapReduce
NoSQL(键值,图形,文档数据库)
NewSQL
大数据计算分为几种方式?
现在比较火热的大数据技术有哪些?
Hadoop,Spark,Flink,Beam等等
Hadoop是什么鬼?
Hadoop是一个开源框架,可编写和运行分布式应用处理大规模数据。 Hadoop框架的核心是HDFS和MapReduce。其中 HDFS 是分布式文件系统,MapReduce 是分布式数据处理模型和执行环境。
Hadoop2.0生态系统以下:
Hadoop的核心:
开源于Google的GFS。它是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行。底层自行百度吧
map任务在执行的过程当中,会将结果存放到内存当中,当内存占用达到必定的阈值(这个阈值是能够设置的)时,map会将中间的结果写入到本地磁盘上,造成临时文件这个过程叫作溢写。
map在溢写的过程当中,会根据指定reduce任务个数分别写到对应的分区当中,这就是partition过程。每个分区对应的是一个reduce任务。而且在写的过程当中,进行相应的排序。在溢写的过程当中还能够设置conbiner过程,该过程跟reduce产生的结果应该是一致的,所以该过程应用存在必定的限制,须要慎用。
每个map端最后都只存在一个临时文件做为reduce的输入,所以会对中间溢写到磁盘的多个临时文件进行合并Merge操做。最后造成一个内部分区的一个临时文件。
==============================Reduce======================================
首先要实现数据本地化,须要将远程节点上的map输出复制到本地。
Merge过程,这个合并过程主要是对不一样的节点上的map输出结果进行合并。
不断的复制和合并以后,最终造成一个输入文件。Reduce将最终的计算结果存放在HDFS上。
针对MR2是新一代的MR的API。其主要是运行在Yarn的资源管理框架上。
YARN (Yet Another Resource Negotiator,另外一种资源协调者)。它是一种资源调度和管理框架,通俗的来讲就是分配底层CPU和内存资源。它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
Sqoop是SQL-to-Hadoop的缩写,主要用于传统数据库和Hadoop之间传输数据。
她其实就是一个包含了机器学习算法的学习库。
HBase是Google Bigtable克隆版,HBase是一个针对结构化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库。
主要解决分布式环境下的数据管理问题:统一命名,状态同步,集群管理,配置同步等。
雅虎开源,他主要是对数据流的处理。
facebook开源,Hive定义了一种相似SQL的查询语言(HQL),将SQL转化为MapReduce任务在Hadoop上执行,提供了很大的便利。
Flume是一个可扩展、适合复杂环境的海量日志收集系统。
Storm能够方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm用于实时处理,就比如 Hadoop 用于批处理。Storm保证每一个消息都会获得处理,并且它很快——在一个小集群中,每秒能够处理数以百万计的消息。更棒的是你可使用任意编程语言来作开发。
首先附上一张架构图:
主件介绍:
SparkCore:将分布式数据抽象为弹性分布式数据集(RDD),实现了应用任务调度、RPC、序列化和压缩,并为运行在其上的上层组件提供API。
SparkSQL:Spark Sql 是Spark来操做结构化数据的程序包,可让我使用SQL语句的方式来查询数据,Spark支持 多种数据源,包含Hive表,parquest以及JSON等内容。
SparkStreaming: 是Spark提供的实时数据进行流式计算的组件。
MLlib:提供经常使用机器学习算法的实现库。
GraphX:提供一个分布式图计算框架,能高效进行图计算。
BlinkDB:用于在海量数据上进行交互式SQL的近似查询引擎。
Tachyon:之内存为中心高容错的的分布式文件系统。
为何会出现spark?
你们确定知道在2016年左右不少公司纷纷转向spark,为何呢?这是由于spark在Hadoop的基础上作了不少的改善,能够说是Hadoop升级版。
在Hadoop中会存在一些缺点例如:
表达能力差
磁盘IO开销大
延迟高
spark:
中间结果输出:基于MapReduce的计算引擎一般会将中间结果输出到磁盘上,进行存储和容错。出于任务管道承接的,考虑,当一些查询翻译到MapReduce任务时,每每会产生多个Stage,而这些串联的Stage又依赖于底层文件系统(如HDFS)来存储每个Stage的输出结果。
Spark是MapReduce的替代方案,并且兼容HDFS、Hive,可融入Hadoop的生态系统,以弥补MapReduce的不足。
它的一些应用场景: