仿做网站可以整站下载器吧,找事做搜索网站,哪里有网站制作价格,东莞广告公司东莞网站建设价格大数据技术原理与应用期末复习#xff08;林子雨#xff09; Hadoop的特性HBase编程实践NoSQL的四大类型键值数据库优点#xff1a;缺点#xff1a; 列族数据库优点#xff1a;缺点#xff1a; 文档数据库优点#xff1a;缺点#xff1a; 图数据库优点#xff1a;缺点… 大数据技术原理与应用期末复习林子雨 Hadoop的特性HBase编程实践NoSQL的四大类型键值数据库优点缺点 列族数据库优点缺点 文档数据库优点缺点 图数据库优点缺点 NoSQL的三大基石CAPBASEBASE的基本含义 最终一致性 MapReduce的各个执行阶段关系的自然连接运算Hadoop的局限性与不足Hadoop的改进与提升Hadoop1.0和Hadoop2.0比较不断完善的Hadoop生态系统 Spark生态系统Spark的应用场景流计算对于一个流计算来说需要达到哪些需求 Flink的优势 Hadoop的特性
1.高可靠性 采用冗余数据存储方式即一个副本发生故障其他副本可保证正常对外提供服务 2.高效性 hadoop采用分布式存储和分布式处理能够高效的处理PB级数据 3.高可扩展性 可以高效稳定地运行在廉价的计算机集群上可扩展到数以千计的计算机节点上 4.高容错性 自动保存数据的多个副本能将失败的任务重新分配 5.低成本 采用廉价的计算机集群成本低 6.运行在linux平台上
HBase编程实践
1.create创建表 1create ‘t1’, {name ‘f1’, versions 5} 创建一个t1的表列族为f1列族版本号为5 2create ‘t1’, {name ‘f1’},{name‘f2’},{name‘f3’} 创建t1列族为f1f2f3 或者可以这样写 create ‘t1’,‘f1’,‘f2’,‘f3’ (3)创建表t1将表依据分割算法HexStringSplit分布在15个Region里 create ‘t1’,‘f1’,{unmregions 15,splitalgo ‘HexStringSplit’} (4)创建表指定切分点 create ‘t1’,‘f1’,{splits [‘10’,‘20’,‘30’,‘40’]} 2.向表t1中行row1和列f1c1所对应的单元格添加数据value1时间戳为123455 put ‘t1’, ‘row1’,‘f1:c1’,‘value1’,123455 3.获得表r1行c1列时间范围为[ts1,ts2],版本号为4 get ‘t1’,‘r1’,{columns ‘c1’,timerange [ts1,ts2],versions 4} 4.流览表信息 1流览表“.META.”、列inforegioninfo的数据 scan ‘.META.’ ,{columns ‘info:regioninfo’} (2)流览表 c1列时间范围是[1234,4321]的数据 scan ‘t1’ ,{columns ‘c1’,timerange[1234,4321]} 5.修改表的列族模式 1向表t1添加列族f1 alter ‘t1’,name ‘f1’ (2)删除t1中的f1列 alter ‘t1’ , name‘f1’,method‘delete’ (3)设定表t1中列族f1最大为128MB alter ‘t1’ ,method‘table_att’,max_filessize ‘134217728’ 6.统计表行数 count ‘t1’ 7.显示表的相关信息 describe ‘t1’ 8.使表有效、无效 enable ‘t1’ disable ‘t1’ 9.删除指定表格的数据 删除表t1、行r1、列c1、时间戳ts1的数据 delete ‘t1’,‘r1’,‘c1’,ts1 10.删除表 drop ‘t1’
NoSQL的四大类型
键值数据库
使用一个哈希表
优点
扩展性好、灵活性好、大量写操作时性能高
缺点
条件查询效率低无法存储结构化信息
列族数据库
数据库由多行构成每行数据库包含多个列族
优点
查询速度快、可扩展性好、易进行分布式扩展、复杂性低
缺点
功能较少、不支持强事务一致性
文档数据库
文档是文档数据库的最小单位
优点
性能好、灵活性高、复杂性低、数据结构灵活
缺点
缺乏统一的查询语法
图数据库
优点
灵活性高、支持复杂的图算法、可用于构建复杂的关系图谱
缺点
复杂性高只能支持一定的数据规模
NoSQL的三大基石
CAP
C一致性Consistency任何一个读操作总是能读到之前完成的写操作的结果多点数据是一致的 A可用性Availability指快速获取数据在确定时间内返回操作结果 P分区容忍性指一部分节点不能与其他节点通信时分离的系统也能正常运行 注意三者只能满足其二
BASE
一个数据库事务具有ACID四个性质 AAtomicity原子性事务必须是原子工作单元对于数据修改要么全执行要么全不执行 CConsistency一致性事务在完成时必须所有的数据状态保持一致 IIsolation隔离性并发事务所做的修改必须与任何其他并发事务所做的修改隔离 DDurability持久性事务完成之后对系统的影响是永久的
BASE的基本含义
1.基本可用性 一部分发生问题不可用时其他部分还可继续正常使用 2.软状态 指状态可以有一段时间不同步具有一定滞后性 3.最终一致性 数据保持一致最新
最终一致性
从服务端来看 更新如何复制分布到整个系统以保持数据最终一致性 从客户端来看 在高并发的数据访问下后续操作能否获取最新数据
MapReduce的各个执行阶段
1.MapReduce框架使用InputFormat模块做Map前的处理验证是否符合输入定义将文件分为多个InputSplitInputSplit是MapReduce对文件中信息进行处理和运算的输入单位并没有对文件进行实际切分只是记录了数据的位置和长度是逻辑切分 2.因为是逻辑切分不是物理切分所以还需要通过RecordReader根据InputSplit中的信息来处理具体记录加载数据并将其转换为适合Map任务读取的键值对输入给Map 3.Map任务根据用户自定义的映射规则输出一系列key,value作为中间结果 4.对map输出进行一定的分区、排序、合并、归并、等得到key,value-list形式的中间结果交给reduce处理这个过程称为shuffle 5.reduce以key,value-list作为输入执行用户定义的逻辑输出结果交给OutputFormat模块 6.OutputFormat模块验证输出目录是否存在以及文件类型都满足就输出到分布式文件系统
关系的自然连接运算
可以使用Map过程把来自R的每个元组a,b装换成b,R,a其中键就是b值就是R,a 例如
Hadoop的局限性与不足
1.抽象层次低。功能实现需要手工编写代码来完成一个简单的功能需要写大量的代码 2.表达能力有限。MapReduce把复杂分布式编程工作高度抽象为Map和Reduce两个函数降低了开发人员开发复杂度也带来了表达能力有限的问题实际生产环境中一些是无法用简单的Map和Reduce来完成的 3.开发者需要自己管理作业之间的依赖关系。一个作业只包含Map和Reduce两个阶段通常的实际应用问题需要大量的作业进行协作才能完成存在复杂的依赖关系MapReduce并没有提供依赖关系的管理机制 4.难以看到程序的整体逻辑。没有更高层次的抽象机制对程序整体逻辑进行设计 5.执行迭代操作效率低。每次迭代都要执行Map、Reduce任务这个过程的数据来自HDFS每次数据又存到HDFS反复的读写降低了迭代操作的效率 6.资源浪费。Reduce任务需要等到Map执行完才能开始这样让费资源 7.实时性差。只适用于离线批处理数据无法支持交互式数据、实时数据处理
Hadoop的改进与提升
Hadoop1.0和Hadoop2.0比较
组件Hdoop1.0的问题Hadoop2.0的改进HDFS单一名称节点存在单点失效问题设计了HDFS HA有名称节点热备份机制HDFS单一命名空间无法实现资源隔离设计了HDFS联邦管理多个命名空间Mapreduce资源管理效率低新的资源管理框架YARN
不断完善的Hadoop生态系统
组件功能解决Hadoop中存在的问题Pig处理大规模数据的脚本语言用户只需写几条简单的语句系统会自动转换为MapReduce作业解决了抽象层次低需手工写大量代码问题Oozie工作流和协作服务引擎协调Hadoop上运行的不同任务解决了无依赖管理机制Tez支持DAG作业对作业操作进行重新分解和组合形成一个大的DAG作业减少不必要的操作提高了效率Kafka分布式发布订阅消息系统不同类型的分布式系统可以接入Kafka实现hadoop各个组件之间的不同类型数据的实时高效交换解决了hadoop各组件间没有数据交换中介这个问题
Spark生态系统
spark专注于数据的处理分析数据存储还是要借助于Hadoop分布式文件系统HDFS 1.Spark Core 包含了spark的基本功能如内存计算、任务调度、部署模式、故障恢复、存储管理等主要面向批量数据处理spark建立在RDD统一的抽象弹性分布式数据集之上使其可以以一致的方式应对不同的大数据处理场景 2.Spark SQL 允许开发人员直接处理RDD同时可查询Hive、HBase等外部资源能统一处理关系表和RDD使得开发人员不需要自己编写Spark应用程序可使用SQL语句查询 3.Spark Streaming 支持高吞吐量、可容错处理的实时数据流处理其核心思路是将流数据分解成一系列短小的批处理作业每个短作业都可以使用Spark Core进行快速处理支持多种数据流如Kafka、Flume、TCP套接字等 4.Structured Streaming 基于Spark SQL引擎构建的、可扩展且容错的流处理引擎可编写流处理程序简化了使用者的难度 5.MLlib机器学习 提供了常用的机器学习算法的实现包括聚类、分类、回归、协同过滤等降低了机器学习的门槛 6.GraphX图计算 是Spark常用于图计算的API可认为是Pregel在Spark上的重写及优化了有丰富的功能和运算符可用在海量数据上
Spark的应用场景
应用场景时间跨度其他框架Spark生态中的组件复杂的批量数据处理小时级MapReduce、HiveSpark Core基于历史数据的交互式查询分钟级、秒级Impala、Dremel、DrillSpark SQL基于实时数据流的数据处理毫秒级、秒级Storm 、S4Spark Streaming、Structured Streaming基于历史数据的数据挖掘–MahoutMLlib图结构数据的处理–Pregel、HamaGraphX
流计算
对于一个流计算来说需要达到哪些需求
1.高性能 每秒处理几十万条 2.海量式 支持TB级别甚至是PB级别的数据规模 3.实时性 必须保证一个较低的时延达到秒级别甚至是毫秒级别 4.分布式 支持大数据的基本架构必须能够平滑扩展 5.易用性 能够快速进行开发和部署 6.可靠性 能可靠地处理流数据
Flink的优势
1.同时支持高吞吐、高延迟、高性能 2.同时支持流处理和批处理 对于Flink而言批量数据是流数据的一个子集批处理被视作一种特殊的流处理因此可用同一套引擎来处理流数据和批量数据 3.高度灵活的流式窗口 窗口是若干元素的集合窗口可以是时间驱动的也可以是数据驱动的窗口可以分为翻滚窗口、滚动窗口、会话窗口 4.支持有状态计算 5.具有良好的容错性 6.具有独立的内存管理 7.支持迭代和增量迭代 对于某些迭代而言并不是单次迭代产生的下一次工作集中的每个元素都需要重新参与下一轮迭代有时只需要重新计算部分数据同时选择性地更新解集这种称为增量迭代