一:大数据
1:概念
就是巨大的数据,TB,EB,ZB,YB等,就是传统的数据库不能处理,具有海量的数据规模,快速的数据流转(实时性),多样的数据类型(从单一的变成了多种的),价值密度(多数据,并且有效数据多,利润价值大)
2:特征
大量:很多数据,并且一台计算机处理不了的数据
多样:结构化数据,非结构化数据
a:结构化数据,就是完整的数据,严格的数据格式和长度规范,如,银行,就是数据库中有的数据类型
b:非结构化数据,就是不完整的数据,不规则,如,办公文档,文本,图片等
价值密度:就是在大量的数据中,有用的数据占大多数
高速:就是实时更新快速
3:应用场景(意义)
大量的数据进行研究,建立新的数据思维模型,对未来预测,精准推送
二:hadoop组件
1:概念
开源的分布式计算框架,主要存储和处理大规模的数据
特点:
1)成本低:就是可以部署在廉价的机器上面,不需要很高的硬件配置
2)高效率:分布式,在多个主机上面运行
3)可靠性:主备服务器,有备份的,如果文件丢失,可以恢复
4)扩容能力强:因为是分布式的结构,所以的话增加更多的节点,就可以扩展存储容量
缺点:不能处理小的数据,浪费了
2:组件
主要的就是DFS和MapReduce机制解决了存储和计算的问题,要钱,不开源
生态系统:
HDFS:分布式文件系统,存储管理
yarn:是一个资源管理框架,资源管理和调度的
MapReduce:计算模型
spoop(数据迁移工具):数据导入和导出的工具,hadoop和传统的数据库进行数据交换
mahout(数据挖掘算法库):快速的创建管理智能应用程序
hbase:针对结构数据的可伸缩性,高可靠性
zookeeper(分布式协作服务):分布式应用程序协调服务
flume:日志的收集工具,恢复
3:解决的问题
1:大规模数据存储
可以将数据存储在很多的节点上面
2:高数据处理
同时运行在多个节点上面,效率快一点
3:灵活数据处理和分析
支持多种编程语言。提供了多种数据处理和分析的方式
4:hadoop优点
(1)扩容能力强:Hadoop是在可用的计算机集群间分配数据并完成计算任务,这些集群可以方便地扩展到数以千计的节点。
(2)成本低:通过普通廉价的计算机组成服务器集群来分发以及处理数据,相比使用大型机乃至超级计算机成本低很多。
(3)高效率:通过并发数据,Hadoop可以在节点之间动态并行处理数据,使得处理速度非常快。
(4)高可靠性:能自动维护数据的多份复制,并且在任务失败后能自动地重新部署计算任务。
三:spark组件
1:图片
2:详细介绍
spark sql(即席查询):,用户通过sql语句来查询数据
spark streaming(实时流处理):实时数据流计算,就是进行一个数据的实时同步
spark mLlib(机器学习库):机器学习算法,主要分为回归,聚类,协同过滤等,即席查询所有这些方法都被设计为可以在集群上轻松伸缩的架构。
graphx(图计算):面向图计算提供的框架与算法库,提出了弹性分布式属性图的概念,并在此基础上实现了图视图与表视图的有机结合与统一
3:特点
快速:就是基于这个内存的计算,不是基于这个磁盘的读写
易用:就是支持使用多个的编程语言,java,python,scala等
运行范围广:spark 可以运行在 local、yarn(资源管理器)、mesos(资源管理框架)、standalone(独立)、kubernetes(容器) 等多种平台之上。它可以访问诸如 HDFS, Cassandra, HBase, S3 等多种多样的数据源。
四:mapreduce组件
概念:一个分布式运算程序的编程框架,主要是处理计算的
1:工作流程
分为2个阶段,map和reduce阶段,就是先将复杂的任务分解成若干个小任务进行处理,reduce阶段是将mapper阶段得到的结果进行汇总
总结:map现将数据先分reduce后和
1)首先先将计算的数据在client端,生成切片(对数据进行划分),生成的切片个数对应着启动多少个maptask程序进行map阶段的计算
2)多个maptask程序是并行的运行的。互不相干
3)每个maptask中对数据的处理要考虑很多的细节,是否有分区,如何排序,书写磁盘等,
4)多个map task计算完成后,每个map task都会有输出的数据
5)会根据分区的个数决定启动多少个reduce task
2:优点:
(1)易于编程:使用它的一些简单接口,就可以完成一个分布式程序。
(2)良好的拓展性:当计算资源不足时,可以简单地通过增加计算机的数量来扩展它的计算能力。
(3)高容错性:当运算节点出现故障时,MapReduce的计算任务可以自动转移到另一个节点运行,不需要人工干预。
(4)适合处理离线大数据:能够处理PB级的离线数据。
缺点:
(1)不适合实时计算:MapReduce达不到在秒级以内反馈运算结果。
(2)不适合流式计算:流式计算处理的数据是动态的,而MapReduce只能处理静态的数据。
(3)不适合有向图计算:对于有向图计算,MapReduce在处理数据的过程中,每个任务的输出结果都会写入磁盘,会造成大量的磁盘读写,形成瓶颈,降低系统的性能。
3:mpareduce与spark比较
1、相同点
1)都是分布式计算框架,将计算任务分为多个任务进行,并在集群的多个节点上并行执行
2)容错性,主备模式,就是一个机器坏了的话,会有机器代替他处理工作
3)数据分区,将数据分为多个分区,并在不同的节点上并行处理,提高了效率
2、不同点
1)计算模型:
1、mappreduce是一个离线计算框架,分为map和reduce阶段,适合批处理任务,不适合迭代式计算和交互式计算
批处理任务:将一系列待处理的作业按照顺序排队,由作业调度程序,自动依次进行处理方式,用于大量数据进行自动化,批量话处理;文件备份(自动备份服务器上面重要的文件),日志分析(从大量的日志文件中提取关键信息)
迭代式计算:迭代式就是反复执行某个计算过程,逐步接近最终结果的计算方式,通常需要多次的迭代才能找到精确解;机械算法(通过多次迭代优化模型的参数,提高预测的准确率)
交互式计算:就是人与计算机进行实时的信息交互,就是用户输入信息,计算机接收处理相对应的命令(操作);excel中的公式计算(输入公式,立即算出结果)
2、spark则采用内存的计算模块,将数据尽可能存放到内存中以提高迭代和交互的计算效率,spark也支持map和reduce操作,也包含一些其他的,列如,转换操作
2)中间结果存储
mapreduce:在map和reduce阶段,中间结果通常存放在硬盘上面,导致频繁的磁盘i/o(读写)操作,降低了处理效率
spark:将中间结果保存到内存中,减少了i/o操作,从而提高了计算速度
3)实时性
mapredcue:更适合处理离线批处理任务,对于实时性要求较高的场景不适合(金融交易,穿越火线等)
spark:除了批处理任务,还支持交互式计算,在实时分析,机器学习上有广泛的应用
4)易用性和通用性
spark:支持scala编程,java和python等,数据处理和分析更快
mapreduce:编程模型和api繁琐
五:冷备,热备和温备
都是存储数据的
冷备:强调数据的持久性和可恢复性
热备:强调数据的即时可用性和可恢复性
温备:仅支持读的操作,不支持写入的操作
六:linux基础命令