大数据技术原理与应用 | 您所在的位置:网站首页 › 大数据应用口号 › 大数据技术原理与应用 |
大数据技术原理与应用
大数据技术原理与应用第一章 大数据概述1、大数据的4v特征2、大数据的影响3、大数据的两大核心技术4、大数据计算模式及代表产品5、大数据与云计算、物联网的关系
第二章 大数据处理架构Hadoop1、Hadoop的发展历史2、Hadoop的特性3、Hadoop1.0与Hadoop2.0的区别4、Hadoop生态系统5、Hadoop生态系统组件及功能6、core-site.xml和hdfs-site.xml配置文件
第三章 分布式文件系统HDFS1、分布式文件系统的结构2、HDFS的局限性3、块的概念4、名称节点和数据节点5、名称节点的数据结构和启动6、数据节点7、第二名称节点8、HDFS体系结构9、HDFS通信协议10、HDFS存储原理冗余数据保存数据存取策略数据错误的种类
11、HDFS常用命令
第四章 分布式数据库HBase1、HBase从BigTable说起2、HBase和BigTable的底层技术对应关系:3、HBase与传统数据库相比:4、HBase数据模型5、HBase的实现包含三个功能组件6、HBase的三层结构7、Region服务器工作原理8、HLog工作原理9、HBase性能优化的方法10、HBase常见的shell命令
第五章 NoSQL1、NoSQL的含义2、NoSQL兴起的原因3、Web2.0的特点4、NoSQL与关系数据库对比关系数据库NoSQL数据库
5、NoSQL数据库的四大类型6、CAP7、BASE8、MongoDB的概念
第六章 云数据库1、概念2、特性
第七章 MapReduce1、传统并行计算框架与MapReduce的区别2、模型介绍3、Map函数和Reduce函数4、MapReduce体系结构5、MapReduce的执行过程6、分片7、任务数量
第八章 Hadoop架构再探讨1、Hadoop1.0的不足2、Hadoop1.0到2.0的改进3、HA工作原理4、新一代资源管理调度框架YARNResourceManagerApplicationMasterNodeManager
第九章Spark1、spark的特点2、spark和Hadoop对比3、spark设计理念4、spark生态系统组件5、spark中的基本概念6、spark运行基本流程7、RDD运行原理8、RDD之间的依赖关系9、Stage的划分Stage的类型
10、RDD执行过程11、spark SQL部署方式
第十章 流计算1、常见的流计算框架2、流处理系统与传统的数据处理系统有如下不同
大数据技术原理与应用
第一章 大数据概述
1、大数据的4v特征
volume大量化、velocity快速化、variety多样化、value价值化 2、大数据的影响 思维方式方面:大数据完全颠覆了传统的思维方式(全样而非抽样、效率而非精确、相关而非因果)。社会发展方面:大数据决策逐渐成为一种新的决策方式,大数据应用有力促进了信息技术与各行业的深度融合,大数据开发大大推动了新技术和新应用的不断涌现。就业市场方面:大数据的兴起使得数据科学家成为热门职业。人才培养方面:大数据的兴起将在很大程度上改变中国高校信息技术相关专业的现有教学。 3、大数据的两大核心技术 分布式存储:GFS/HDFS、BigTable/HBase、NoSQL分布式处理:MapReduce 4、大数据计算模式及代表产品 批处理计算:针对大规模数据的批量处理。MapReduce、Spark。流计算:针对流数据的实时计算。Storm、S4、Flume、Streams、Puma、DStream、SuperMario、银河流数据处理平台。图计算:针对大规模图结构数据的处理。Pregel、GraphX、Giraph、PowerGraph、Hama、GoldenOrb。查询分析计算:大规模数据的存储管理和查询分析。Dremel、Hive、Cassandra、Impala。 5、大数据与云计算、物联网的关系云计算、大数据和物联网代表了IT领域最新的技术发展趋势,三者相辅相成,既有联系又有区别。 云计算为大数据提供了技术基础;大数据为云计算提供用武之地。云计算为物联网提供海量数据存储能力;物联网为云计算技术提供了广阔的应用空间。物联网是大数据的重要来源;大数据技术为物联网数据分析提供支撑。 第二章 大数据处理架构Hadoop 1、Hadoop的发展历史Apache软件基金会旗下的开源分布式平台,基于Java语言开发,具有很好的跨平台性,核心是分布式文件系统HDFS和MapReduce。Hadoop源自始于Apache Nutch项目。 2、Hadoop的特性高可靠性、高效性、高可扩展性、高容错性、成本低、运行在Linux平台、支持多种编程语言。 3、Hadoop1.0与Hadoop2.0的区别Hadoop2.0增加了HDFS HA和YARN两个系统。 4、Hadoop生态系统分布式文件系统把文件分布存储到多个计算机节点上,成千上万的计算机节点构成计算机集群。分布式文件系统在物理结构上是由计算机集群中的多个节点构成的,这些节点分为两类,一类叫“主节点”(Master Node)或者也被称为“名称结点”(NameNode),另一类叫“从节点”(Slave Node)或者也被称为“数据节点”(DataNode)。 2、HDFS的局限性不适合低延迟数据访问、无法高效存储大量小文件、不支持多用户写入及任意修改文件。 3、块的概念HDFS默认一个块64MB,HDFS2.0后默认大小128MB。 块的优点: 支持大规模文件存储:一个文件的大小不会受到单个节点的存储容量的限制,可以远远大于网络中任意节点的存储容量简化系统设计:大大简化了存储管理,方便了元数据的管理,元数据不需要和文件块一起存储,可以由其他系统负责管理元数据适合数据备份:每个文件块都可以冗余存储到多个节点上,大大提高了系统的容错性和可用性 4、名称节点和数据节点 名称节点:存储元数据、元数据保存在内存中、保存文件,block,datanode之间的映射关系。数据节点:存储文件内容、文件内容保存在磁盘、维护了block id到datanode本地文件的映射关系。 5、名称节点的数据结构和启动在HDFS中,名称节点(NameNode)负责管理分布式文件系统的命名空间(Namespace),保存了两个核心的数据结构,即FsImage和EditLog。 FsImage用于维护文件系统树以及文件树中所有的文件和文件夹的元数据。操作日志文件EditLog中记录了所有针对文件的创建、删除、重命名等操作。名称节点记录了每个文件中各个块所在的数据节点的位置信息![]() 数据节点是分布式文件系统HDFS的工作节点,负责数据的存储和读取,会根据客户端或者是名称节点的调度来进行数据的存储和检索,并且向名称节点定期发送自己所存储的块的列表。每个数据节点中的数据会被保存在各自节点的本地Linux文件系统中。 7、第二名称节点在名称节点运行期间,HDFS的所有更新操作都是直接写到EditLog中,久而久之, EditLog文件将会变得很大。虽然这对名称节点运行时候是没有什么明显影响的,但是,当名称节点重启的时候,名称节点需要先将FsImage里面的所有内容映像到内存中,然后再一条一条地执行EditLog中的记录,当EditLog文件非常大的时候,会导致名称节点启动操作非常慢,而在这段时间内HDFS系统处于安全模式,一直无法对外提供写操作,影响用户的使用。 第二名称节点是HDFS架构中的一个组成部分,它是用来保存名称节点中对HDFS 元数据信息的备份,并减少名称节点重启的时间。SecondaryNameNode一般是单独运行在一台机器上。 HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群包括一个名称节点(NameNode)和若干个数据节点(DataNode)。名称节点作为中心服务器,负责管理文件系统的命名空间及客户端对文件的访问。集群中的数据节点一般是一个节点运行一个数据节点进程,负责处理文件系统客户端的读/写请求,在名称节点的统一调度下进行数据块的创建、删除和复制等操作。每个数据节点的数据实际上是保存在本地Linux文件系统中的。 HDFS采用多副本方式对数据进行冗余存储,通常一个数据块的多个副本会被分布到不同的数据节点上。 优点:加快数据传输速度、容易检查数据错误、保证数据可靠性。 数据存取策略 数据存放: 第一个副本:放置在上传文件的数据节点;如果是集群外提交,则随机挑选一台磁盘不太满、CPU不太忙的节点 第二个副本:放置在与第一个副本不同的机架的节点上 第三个副本:与第一个副本相同机架的其他节点上 更多副本:随机节点数据读取: HDFS提供了一个API可以确定一个数据节点所属的机架ID,客户端也可以调用API获取自己所属的机架ID。当客户端读取数据时,从名称节点获得数据块不同副本的存放位置列表,列表中包含了副本所在的数据节点,可以调用API来确定客户端和这些数据节点所属的机架ID,当发现某个数据块副本对应的机架ID和客户端对应的机架ID相同时,就优先选择该副本读取数据,如果没有发现,就随机选择一个副本读取数据。 数据错误的种类数据错误的三种:名称节点出错、数据节点出错、数据出错。 11、HDFS常用命令 hadoop fs -ls :显示 指定的文件的详细信息 hadoop fs -mkdir :创建指定的文件夹hadoop fs -cat :将指定的文件的内容输出到标准输出(stdout)hadoop fs -copyFromLocal :将本地源文件复制到路径指定的文件或文件夹中 第四章 分布式数据库HBase 1、HBase从BigTable说起BigTable是一个分布式存储系统 2、HBase和BigTable的底层技术对应关系: 文件存储系统:HDFS(HBase)和GFS(BigTable)海量数据处理:Hadoop MapReduce(HBase)和MapReduce(BigTable)协同服务管理:Zookeeper(HBase)和Chubby(BigTable) 3、HBase与传统数据库相比: 数据类型:关系数据库采用关系模型,具有丰富的数据类型和存储方式,HBase则采用了更加简单的数据模型,它把数据存储为未经解释的字符串。数据操作:关系数据库中包含了丰富的操作,其中会涉及复杂的多表连接。HBase操作则不存在复杂的表与表之间的关系,只有简单的插入、查询、删除、清空等,因为HBase在设计上就避免了复杂的表和表之间的关系。存储模式:关系数据库是基于行模式存储的。HBase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的。数据索引:关系数据库通常可以针对不同列构建复杂的多个索引,以提高数据访问性能。HBase只有一个索引——行键,通过巧妙的设计,HBase中的所有访问方法,或者通过行键访问,或者通过行键扫描,从而使得整个系统不会慢下来。数据维护:在关系数据库中,更新操作会用最新的当前值去替换记录中原来的旧值,旧值被覆盖后就不会存在。而在HBase中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧有的版本仍然保留。可伸缩性:关系数据库很难实现横向扩展,纵向扩展的空间也比较有限。相反,HBase和BigTable这些分布式数据库就是为了实现灵活的水平扩展而开发的,能够轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩。 4、HBase数据模型 表:HBase采用表来组织数据,表由行和列组成,列划分为若干个列族行:每个HBase表都由若干行组成,每个行由行键(row key)来标识。列族:一个HBase表被分组成许多“列族”(Column Family)的集合,它是基本的访问控制单元列限定符:列族里的数据通过列限定符(或列)来定位单元格:在HBase表中,通过行、列族和列限定符确定一个“单元格”(cell),单元格中存储的数据没有数据类型,总被视为字节数组byte[]时间戳:每个单元格都保存着同一份数据的多个版本,这些版本采用时间戳进行索引HBase中需要根据行键、列族、列限定符和时间戳来确定一个单元格,因此,可以视为一个“四维坐标”,即[行键, 列族, 列限定符, 时间戳] 注意:HBase按列族进行物理存储。 5、HBase的实现包含三个功能组件 库函数:链接到每个客户端Master主服务器:负责管理和维护HBase表的分区信息,维护Region服务器列表,分配Region,负载均衡Region服务器:负责存储和维护分配给自己的Region,处理来自客户端的读写请求客户端并不是直接从Master主服务器上读取数据,而是在获得Region的存储位置信息后,直接从Region服务器上读取数据。 客户端并不依赖Master,而是通过Zookeeper来获得Region位置信息,大多数客户端甚至从来不和Master通信,这种设计方式使得Master负载很小 。 开始只有一个Region,后来不断分裂。 Region拆分操作非常快,接近瞬间,因为拆分之后的Region读取的仍然是原存储文件,直到“合并”过程把存储文件异步地写到独立的文件之后,才会读取新文件。 6、HBase的三层结构![]() 关系数据库无法满足海量数据的管理需求、数据高并发的需求、高可扩展性和高可用性的需求 3、Web2.0的特点 网站系统通常不要求严格的数据库事务不要求严格的读写实时性通常不包含大量复杂的SQL查询(去结构化,存储空间换取更好的查询性能) 4、NoSQL与关系数据库对比
![]() ![]() ![]() ![]() ![]() 说起BASE(Basically Availble, Soft-state, Eventual consistency),不得不谈到ACID。 ACID的四性: A(Atomicity):原子性,是指事务必须是原子工作单元,对于其数据修改,要么全都执行,要么全都不执行C(Consistency):一致性,是指事务在完成时,必须使所有的数据都保持一致状态I(Isolation):隔离性,是指由并发事务所做的修改必须与任何其它并发事务所做的修改隔离D(Durability):持久性,是指事务完成之后,它对于系统的影响是永久性的,该修改即使出现致命的系统故障也将一直保持![]() 云数据库是部署和虚拟化在云计算环境中的数据库。云数据库是在云计算的大背景下发展起来的一种新兴的共享基础架构的方法,它极大地增强了数据库的存储能力,消除了人员、硬件、软件的重复配置,让软、硬件升级变得更加容易。云数据库具有高可扩展性、高可用性、采用多租形式和支持资源有效分发等特点。 2、特性动态可扩展性、高可用性、较低的使用代价、易用性、高性能、免维护、安全。 第七章 MapReduce 1、传统并行计算框架与MapReduce的区别主要由四个部分组成,分别是:Client、JobTracker、TaskTracker以及Task。 ![]() HDFS 以固定大小的block 为基本单位存储数据,而对于MapReduce 而言,其处理单位是split。split 是一个逻辑概念,它只包含一些元数据信息,比如数据起始位置、数据长度、数据所在节点等。它的划分方法完全由用户自己决定。 7、任务数量 Map任务的数量:Hadoop为每个split创建一个Map任务,split的多少决定了Map任务的数目。大多数情况下,理想的分片大小是一个HDFS块Reduce任务的数量:最优的Reduce任务个数取决于集群中可用的reduce任务槽(slot)的数目。通常设置比reduce任务槽数目稍微小一些的Reduce任务个数(这样可以预留一些系统资源处理可能发生的错误) 第八章 Hadoop架构再探讨 1、Hadoop1.0的不足 抽象层次低,需人工编码表达能力有限开发者自己管理作业(Job)之间的依赖关系难以看到程序整体逻辑执行迭代操作效率低资源浪费(Map和Reduce分两阶段执行)实时性差(适合批处理,不支持实时交互式) 2、Hadoop1.0到2.0的改进HDFS HA(High Availability)是为了解决单点故障问题。HA集群设置两个名称节点,“活跃(Active)”和“待命(Standby)”。两种名称节点的状态同步,可以借助于一个共享存储系统来实现。一旦活跃名称节点出现故障,就可以立即切换到待命名称节点。Zookeeper确保一个名称节点在对外服务。名称节点维护映射信息,数据节点同时向两个名称节点汇报信息 运行速度快、容易使用、通用性、运行模式多样 2、spark和Hadoop对比一个软件栈满足不同应用场景 4、spark生态系统组件总体而言,Spark运行架构具有以下特点: (1)每个Application都有自己专属的Executor进程,并且该进程在Application运行期间一直驻留。Executor进程以多线程的方式运行Task (2)Spark运行过程与资源管理器无关,只要能够获取Executor进程并保持通信即可 (3)Task采用了数据本地性和推测执行等优化机制 7、RDD运行原理 1、RDD读入外部数据源进行创建2、RDD经过一系列的转换(Transformation)操作,每一次都会产生不同的RDD,供给下一个转换操作使用3、最后一个RDD经过“动作”操作进行转换,并输出到外部数据源![]() Spark通过分析各个RDD的依赖关系生成了DAG,再通过分析各个RDD中的分区之间的依赖关系来决定如何划分Stage,具体划分方法是: 在DAG中进行反向解析,遇到宽依赖就断开遇到窄依赖就把当前的RDD加入到Stage中将窄依赖尽量划分在同一个Stage中,可以实现流水线计算被分成三个Stage,在Stage2中,从map到union都是窄依赖,这两步操作可以形成一个流水线操作 ShuffleMapStage和ResultStage (1)ShuffleMapStage:在它之后还有其他Stage,它的输出一定需要经过Shuffle过程,并作为后续Stage的输入;这种Stage是以Shuffle为输出边界,其输入边界可以是从外部获取数据,也可以是另一个ShuffleMapStage的输出,其输出可以是另一个Stage的开始;在一个Job里可能有该类型的Stage,也可能没有该类型Stage; (2)ResultStage:最终的Stage,没有输出,而是直接产生结果或存储。这种Stage是直接输出结果,其输入边界可以是从外部获取数据,也可以是另一个ShuffleMapStage的输出。在一个Job里必定有该类型Stage。因此,一个Job含有一个或多个Stage,其中至少含有一个ResultStage。 10、RDD执行过程a、创建RDD对象; b、SparkContext负责计算RDD之间的依赖关系,构建DAG; c、DAGScheduler负责把DAG图分解成多个Stage,每个Stage中包含了多个Task,每个Task会被TaskScheduler分发给各个WorkerNode上的Executor去执行。 商业级的流计算平台(IBM …)、开源流计算框架(Twitter storm,yahoo)、公司为支持自身业务开发的流计算框架(Facebook,dstream) 2、流处理系统与传统的数据处理系统有如下不同 流处理系统处理的是实时的数据,而传统的数据处理系统处理的是预先存储好的静态数据。用户通过流处理系统获取的是实时结果,而通过传统的数据处理系统,获取的是过去某一时刻的结果。流处理系统无需用户主动发出查询,实时查询服务可以主动将实时结果推送给用户。 |
CopyRight 2018-2019 实验室设备网 版权所有 |