1.数据产生方式经历了()、()和()三个阶段。
1)运营式系统阶段。
数据库的出现使得数据管理的复杂度大大降低,在实际使用中,数据库大多为运营系统所采用,作为运营系统的数据管理子系统,如超市的销售记录系统、银行的交易记录系统、医院病人的医疗记录等。
人类社会数据量的第一次大的飞跃正是在运营式系统开始广泛使用数据库时开始的。这个阶段的最主要特点是,数据的产生往往伴随着一定的运营活动;而且数据是记录在数据库中的,例如,商店每售出一件产品就会在数据库中产生一条相应的销售记录。这种数据的产生方式是被动的。
2)用户原创内容阶段。
互联网的诞生促使人类社会数据量出现第二次大的飞跃,但是真正的数据爆发产生于 Web 2.0 时代,而 Web 2.0 的最重要标志就是用户原创内容。这类数据近几年一直呈现爆炸性的增长。
主要有以下两个方面的原因:
是以博客、微博和微信为代表的新型社交网络的岀现和快速发展,使得用户产生数据的意愿更加强烈。
是以智能手机、平板电脑为代表的新型移动设备的出现,这些易携带、全天候接入网络的移动设备使得人们在网上发表自己意见的途径更为便捷。这个阶段的数据产生方式是主动的。
3)感知式系统阶段。
人类社会数据量第三次大的飞跃最终导致了大数据的产生,今天我们正处于这个阶段。这次飞跃的根本原因在于感知式系统的广泛使用。
随着技术的发展,人们已经有能力制造极其微小的带有处理功能的传感器,并开始将这些设备广泛地布置于社会的各个角落,通过这些设备来对整个社会的运转进行监控。这些设备会源源不断地产生新数据,这种数据的产生方式是自动的。
简单来说,数据产生经历了被动、主动和自动三个阶段。这些被动、主动和自动的数据共同构成了大数据的数据来源,但其中自动式的数据才是大数据产生的最根本原因。
2.信息科技需要解决(信息存储)、(信息传输)和(信息处理)3个核心问题。
3.大数据的4个“V”是指数据量大、(数据类型繁多)、(处理速度快)和(价值密度低)。
4.维克托.迈尔.舍恩伯格在《大数据时代:生活、工作与思维的大变革》一书中明确指出,大数据时代最大的转变就是思维方式的3种转变,即(全样而非抽样)、(效率而非精确)和(相关而非因果)。
5.大数据的基本处理流程主要包括(数据采集)、(数据存储)、(数据分析)和结果呈现等环节。
6.云计算的关键技术包括(虚拟化)、(分布式存储)、(分布式计算)和多租户等。
7.物联网可分为四层,即(感知层)、(网络层)、(处理层)和应用层。
8.大数据的计算模式主要包括(批处理计算)、(流计算)、(图计算)和查询分析计算。
9.图灵奖获得者、著名数据库专家Jim Gray认为,人类自古以来在科学研究上先后经历了实验、(理论)、(计算)和(数据)四种范式。
10.大数据产业包括IT基础设施层、(数据源层)、(数据管理层)、(数据分析层)、数据平台层和数据应用层。
11.试述信息技术发展史上的3次信息化浪潮及其具体内容。
第一次浪潮:1980年前后,以PC为标志,解决信息处理问题;第二次浪潮:1995年前后,以Internet为标志,解决信息传输问题;第三次浪潮:2010年前后,以物联网、云计算和大数据为标志,解决信息爆炸问题。
浪潮 | 时间 | 标志 | 解决问题 |
---|---|---|---|
第一次浪潮 | 1980年前后 | 个人计算机 | 解决信息处理问题 |
第二次浪潮 | 1995年前后 | Internet | 解决信息传输问题 |
第三次浪潮 | 2010年前后 | 物联网、云计算和大数据 | 解决信息爆炸问题 |
12.大数据决策与传统的基于数据仓库的决策有什么区别?
数据仓库具备批量和周期性的数据加载以及数据变化的实时探测、传播和加载能力,能结合历史数据和实时数据实现查询分析和自动规则触发,从而提供对战略决策和战术决策。大数据决策可以面向类型繁多的、非结构化的海量数据进行决策分析。
13.详细阐述大数据、云计算和物联网三者之间的区别与联系。
(1)大数据、云计算和物联网的区别
大数据侧重于海量数据的存储、处理与分析,从海量数据中发现价值,服务于生产和生活;云计算本质上旨在整合和优化各种IT资源,并通过网络以服务的方式廉价提供给用户;物联网的发展目标是实现物物相连,应用创新是物联网发展的核心。
(2)大数据、云计算和物联网的联系
从整体上看,大数据、云计算和物联网这三者是相辅相成的。大数据根植于云计算,大数据分析的很多技术都来自于云计算,云计算的分布式和数据存储和管理系统(包括分布式文件系统和分布式数据库系统)提供了海量数据的存储和管理能力,分布式并行处理框架MapReduce提供了海量数据分析能力,没有这些云计算技术作为支撑,大数据分析就无从谈起。反之,大数据为云计算提供了“用武之地”,没有大数据这个“练兵场”,云计算技术再先进,也不能发挥它的应用价值。
物联网的传感器源源不断产生的大量数据,构成了大数据的重要来源,没有物联网的飞速发展,就不会带来数据产生方式的变革,即由人工产生阶段向自动产生阶段,大数据时代也不会这么快就到来。同时,物联网需要借助于云计算和大数据技术、实现物联网大数据的存储、分析和处理。
云计算、大数据和物联网,三者会继续相互促进、相互影响,更好地服务于社会生产和生活的各个领域。
1.Hadoop的核心是()和()。
HDFS(分布式文件系统)
MapReduce(并行处理框架)
2.Hadoop的主要特性有()、()、()、()、()和运行在Linux平台上,且支持多种编程语言。
高可靠性
高效性
高可扩展性
高容错性
成本低
3.Hadoop的三种运行模式分别是独立(本地)模式、()和()。
伪分布式模式
完全分布式模式
4.配置Hadoop时,Java的路径JAVA_HOME在配置文件()中进行设置;所有节点的HDFS路径通过fs.defualt.name来设置,这个选项在配置文件()中设置。
hadoop-env.sh
core-site.xml
5.Hadoop伪分布模式,通过start-dfs.sh运行启动后所具有的进程包括()、()和()。
NameNode
DataNode
SecondaryNameNode
6.试述Hadoop和Google的MapReduce、GFS等技术之间的区别。
Hadoop MapReduce是针对Google MapReduce的开源实现;Hadoop HDFS是针对Google GFS的开源实现。
7.试述Hadoop生态系统以及每个部分的具体功能。
(1)HDFS:底层数据存储,具有处理超大数据、流式处理,可运行在廉价商用服务器上等优点。
(2)HBase:一个提供高可靠性、高性能、可伸缩、实时读写、分布式的列式数据库,一般采用HDFS作为其底层数据存储。
(3)MapReduce:一种编程模型,用于大规模数据集的并行运算。它允许用户在不了解分布式底层细节的情况下开发并行应用程序,并将其运行于廉价计算机集群上,完成海量数据处理。
(4)Hive:一个基于Hadoop的数据仓库工具。可用于对Hadoop文件中的数据集进行数据整理、特殊查询和分析存储。
(5)Pig:一种数据流语言和运行环境。适合用于使用Hadoop和MapReduce平台来查询大型半结构化数据集。
(6)Mahout:提供一些可扩展的机器学习领域经典算法的实现。
(7)Zookeeper:一个高效和可靠的协同工作系统,提供分布式锁之类的基本服务。
(8)Flume :一个高可用的、高可靠的、分布式海量日志采集、聚合和传输的系统。
(9)Sqoop(SQL-to-Hadoop):用于在Hadoop和关系数据库之间交换数据。
(10)Ambari:一种基于Web的工具,Apache Hadoop集群的安装、部署、配置和管理。
8.试列举单机模式和伪分布模式的异同点。
(1)相同点:都只在一台单机上运行。
(2)不同点:
1)运行模式不同:单机模式是Hadoop的默认模式。这种模式在一台单机上运行,没有分布式文件系统,而是直接读写本地操作系统的文件系统。伪分布模式这种模式也是在一台单机上运行,但用不同的Java进程模仿分布式运行中的各类结点。
2)配置不同:单机模式首次解压Hadoop的源码包时,Hadoop无法了解硬件安装环境,便保守地选择了最小配置。在这种默认模式下所有3个XML文件均为空。当配置文件为空时,Hadoop会完全运行在本地。伪分布模式在“单节点集群”上运行Hadoop,其中所有的守护进程都运行在同一台机器上。
3)节点交互不同:单机模式因为不需要与其他节点交互,单机模式就不使用HDFS,也不加载任何Hadoop的守护进程。该模式主要用于开发调试MapReduce程序的应用逻辑。伪分布模式在单机模式之上增加了代码调试功能,允许你检查内存使用情况,HDFS输入输出,以及其他的守护进程交互。
1.与普通文件系统类似,分布式文件系统数据读写的基本单元是(快),只是分布式文件系统中这一基本读写单元比操作系统中的大很多。
2.分布式文件系统在物理结构上是由计算机集群中的多个节点构成的,这些节点分为两类,一类叫(主节点),或者被称为(名称节点),另一类叫(从节点),或者被称为(数据节点)。
3.HDFS主要面向大规模数据批量处理而设计,采用(流式)数据读取,具有很高数据吞吐率,但这也意味着具有较高的(延迟)。
4.HDFS只允许一个文件有一个写入者,不允许多个用户对同一文件执行写操作,而且只允许对文件执行(追加)操作,不能执行随机写操作。
5.HDFS是一个部署在集群上的分布式文件系统,因此很多数据需要通过网络进行传输。HDFS通信协议是构建上(TCP/IP)协议基础之上的。
6.HDFS文件系 统在物理结构上是由计算机集群中的多个节点构成的。这些节点分为两类,一类叫(),另一类叫()。
主节点;Master Node;NameNode;名称节点
从节点;Slave Node;DataNode;数据节点
7.HDFS采用“(一次写入,多次读取)”的简单文件模型。
8.HDFS名称节点主要管理文件系统的(元数据)。
9.HDFS不支持多用户写入及任意修改文件,只允许对文件执行(追加)操作,不能执行(随机写)操作。
10.HDFS采用大文件块设计是为了最小化(寻址开销)。
11.在HDFS的设计中,第二名称节点只是起到了名称节点的(检查点checkpoint)作用,并不能起到(热备份)的作用。
12.HDFS只设置唯一一个名称节点的局限性体现在(命名空间的限制)、(性能的瓶颈)、(隔离问题)和(集群的可用性)四个方面。
13.HDFS的数据存取策略主要包括(数据存放)、(数据读取)和(数据复制)等方面。
14.HDFS的数据复制策略采用(流水线复制)。
15.HDFS名称节点保存的数据信息中最核心的两大数据结构是(Fslmage)和(EditLog)。
16.简述分布式文件系统设计的需求。
分布式文件系统的设计目标主要包括以下几个方面:
1)透明性:具备访问透明性、位置透明性、性能伸缩透明性;
2)并发控制:客户端对于文件的读写不应该影响其他客户端对同一个文件的读写;
3)文件复制:一个文件可以拥有在不同位置上的多个副本;
4)硬件和操作系统的异构性:可以在不同的操作系统和计算机上实现同样客户端和服务器编程;
5)可伸缩性:支持节点的动态加入和退出;
6)容错:保证文件服务在客户端或服务器端出现问题时能正常使用;
7)安全:保障系统的安全性。
17.试述HDFS中的块和普通文件系统中的块的区别。
在传统的文件系统中,为了提高磁盘读写效率,一般以数据块为单位,而不是以字节为单位。
HDFS中的块,默认一个块大小为64MB,而HDFS中的文件会被拆分成多个块,每个块作为独立的单元进行存储。HDFS在块的大小的设计上明显要大于普通文件系统。
18.在分布式文件系统中,中心节点的设计至关重要,请阐述HDFS是如何减轻中心节点的负担的。
一方面,HDFS的文件块为64M,该设计导致中心节点(即名称节点:NameNode)的元数据较少,减少了元数据占用NameNode内存容量;另一方面,HDFS集群只有一个名称节点,该节点负责所有数据的管理,这种设计大大简化了分布式文件系统的结构。可以保证数据不会脱离名称节点的控制;同时数据块数据不会经过名称节点,大大减轻中心服务器的负担,方便数据管理。
19.数据复制主要是在数据写入和恢复的时候发生,HDFS数据复制是使用流水线复制的策略,请阐述该策略的细节。
HDFS数据复制使用流水线复制策略,大大提高了数据复制过程的效率。具体策略如下:当客户端要往HDFS中写入一个文件时,此文件首先被写入本地,并被切分为若干个块,每个块有大小由HDFS的设定值来决定。每个块都向HDFS集群中的名称节点发起写请求,名称节点会根据系统中各个数据节点的使用情况,选择一个数据节点列表返回给客户端,然后客户端就将数据首先写入列表中的第一数据节点,同时将列表传给第一个数据节点,当第一个数据节点接收到4KB数据时,写入本地,并且向列表中的第二个数据节点发起连接请求,将自己已经接收到的4KB数据和列表传给第二个数据节点,当第二个数据节点接收到4KB数据时,写入本地,并且向列表中的第三个数据节点发起连接请求,依次类推,列表中的多个数据节点形成一条数据复制贩流水线。最后,当文件写完时,数据复制也同时完成。
20.试述HDFS是如何探测错误发生以及如何进行恢复的。
1)名称节点出错
名称节点保存了所有的元数据信息,其中最核心的两大数据结构是Fslmage和EilLog,如果这两个文作发生根坏 那么管↑HOPS实例将失效Hap采用两种机制来确保名整节点的安全单门,把不称节点上的元数据信息同步存储到其他文件系统( 比如远程挂载的网络文件系统NFS)中:第二,运行 个第二名称节点,当名称节点宕机以后,可以把第名称节点作为一 种弥补措场利用站名称节点中的元数据信息进行系统恢复, 但是从前面对第二名称节点的介绍中可以看出,这样做仍然会丢失部分数据。因此,一般会把 上述两种方式结合使用,当名称节点发生宕机时首先到远程挂载的网络文件系统中获取备份的元数据信息,放到第二名称节点上进行恢复,并把第二名称节点作为名称节点来使用。
2)数据节点出错
每个数据节点会定期向名称节点发送“心跳”信息,向名称节点报告自己的状态。当数据节点发生故障,或者网络发生断网时,名称节点就无法收到来自一些数据节点的“心跳”信息,这时这些数据节点就会被标记为“宕机”,节点上面的所有数据都会被标记为“不可读”,名称节点不会再给它们发送任何IO请求。这时,有可能出现一种情形,即由于一些数据节点的不可用,会导致一此数据块的副本数量小于冗余因子。名称节点会定期检查这种情况,一旦发现某个数据块的副本数量小于冗余因子,就会启动数据冗余复制,为它生成新的副本。HDFS与其他分布式文件系统的最大区别就是可以调整冗余数据的位置。
3)数据出错
网络传输和磁盘错误尊因素都会造成数据错误。客户端在读取到数据后,会采用mds和shal对数据块进行校验,以确定读取到正确的数据。在文件被创建时,客户端就会对每- 个文件块进行信息摘录,并把这些信息写人同一个路径的隐藏文件里面。当客户端读取文件的时候,会先读取该信息文件,然后利用该信息文件对每个读取的数据块进行校验,如果校验出错,客户端就会请求到另外一个数据节点读取该文件块,并且向名称节点报告这个文件块有错误,名称节点会定期检查并且重新复制这个块。
21.请阐述HDFS在不发生故障的情况下读文件的过程。
(1)客户端通过FlSysmeono打开文件相应地,在HIDFS文件系统中DitbuedFieSstess具体实现了FileSystem。 因此,调用open()方法后,DisribedFilSyste 会创建输人流FSDataInputStream.对于HDFS而言,具体的输人流就是DFSInputSteam
(2)在DFSInputStream的构造函数中,输人流通过ClientProtocal getBlockLocations0远程调用名称节点,获得文件开始部分数据块的保存位置。对于该数据块,名称节点返回保存该数据块的所有数据节点的地址,同时根据距离客户端的远近对数据节点进行排序:然后,DistributedFileSystem会利用DFSInputStream来实例化FSDataInputSteam.返回给客户端,同时返回了数据块的数据节点地址。
(3)获得输人流FDalnpulsreon后,客户端调用cao雨数开始读取数据。输人流根据响
面的排序结果,选择距离客户端最近的数据节点建立连接井读取数据。(4)数据从该数据节点读到客户端:当该数据块读取完毕时,FDsapulsrcor关闭和该数星节点的连接。
(5)输人流通过getBlockLocations()方法查找下一个数据块(如果客户端缓存中已经包含了数据块的位置信息,就不需要调用该方法)。
(6)找到该数据块的最佳数据节点,读取数据。
(7)当客户端读取完毕数据的时候,调用FSDataInputStream的close()函数,关闭输入流,需要注意的是,在读取数据的过程中,如果客户端与数据节点通信时出现错误,就会尝试连接包含此数据块的下一个数据节点。
1.HBase是针对谷歌BigTable的开源实现,是一个高可靠、高性能、(面向列)、可伸缩的分布式数据库,主要用来存储(非结构化和半结构化)的松散数据。
2.HBase使用(HDFS)作为高可靠的底层数据的存储,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协同服务,实现稳定服务和失败恢复。
3.关系数据库通常具备的功能包括面向磁盘的存储和索引结构、(多线程访问)、(基于锁的同步访问机制)、基于日志记录的恢复机制和事务机制等。
4.与关系数据库通常针对不同列构建复杂的多个索引不同,HBase只有一个索引,即(行键)。
5.相对于关系数据库而言,HBase不支持(事务),因此无法实现跨行的原子性。
6.HBase提供两种数据版本回收方式,一是( 保存数据的最后n个版本),二是(保存最近一段时间内的版本)。
7.HBase访问表中的行只有3种方式,分别是( 单个行键访问)、(行键区间访问)和(全表扫描)。
8.HBase最基本的访问控制单元是(列族)。
9.为了加快访问速度,.META.表的全部Region都会被保存在内存中。假设.MATE.表和-ROOT-表的每行(一个映射条目)在内存中占用1KB,并且每个Region限制为128MB,那么在“三级寻址”中,可以寻址的大小为(2^34)个Region。
10.HBase系统为每个Region服务器配置一个HLog文件,它是一个(预写式)日志文件。
11.请阐述HBase和传统关系数据库的区别。
类别 | 关系型数据库 | HBase |
---|---|---|
数据类型 | 关系模型 丰富的数据类型和存储方式 | 简单的数据模型 数据存储为未经解释的字符串 |
数据操作 | 丰富 插入 删除 更行 查询等 多表连接 | 不存在复杂的表与表之间的关系 仅插入 查询 删除 清空等 |
存储模式 | 基于行模式存储 | 基于列存储 |
数据索引 | 针对不同列构建复杂的多个索引,提高数据访问性能 | 索引是行键 |
数据维护 | 更行操作用最新的当前值替换记录中原来的旧值 | 更新操作不删除数据旧的版本 |
可伸缩性 | 难实现横向扩展,纵向扩展的空间有限 | 水平扩展灵活 ,轻易的通过在集群中增加或者减少硬件数量来实现性能的伸缩 |
12.HBase有哪些类型的访问接口?
HBase提供了Native Java API , HBase Shell , Thrift Gateway , REST GateWay , Pig , Hive 等访问接口。
13.分别解释HBase中行键、列键和时间戳的概念。
行键是唯一的,在一个表里只出现一次,否则就是在更新同一行,行键可以是任意的字节数组;列族需要在创建表的时候就定义好,数量也不宜过多,列族名必须由可打印字符组成,创建表的时候不需要定义好列;时间戳,默认由系统指定,用户也可以显示设置。使用不同的时间戳来区分不同的版本。
①行键标识行。行键可以是任意字符串,行键保存为字节数组。
② 列族。HBase的基本的访问控制单元,需在表创建时就定义好。
③ 时间戳。每个单元格都保存着同一份数据的多个版本,这些版本采用时间戳进行索引。
14.请举个实例来阐述HBase的概念视图和物理视图的不同。
HBase数据概念视图
HBase数据物理视图
在HBase的概念视图中,一个表可以视为一个稀疏、多维的映射关系。
在物理视图中,一个表会按照属于同一列族的数据保存在一起。
15.当一台Region服务器意外终止时,Master如何发现这种意外终止情况?为了恢复这台发生意外的Region服务器上的Region,Master应该做出哪些处理(包括如何使用HLog进行恢复)?
Zookeeper会实时监测每个Region服务器的状态,当某个Region服务器发生故障时,Zookeeper会通知Master。
Master首先会处理该故障Region服务器上面遗留的HLog文件,这个遗留的HLog文件中包含了来自多个Region对象的日志记录。
系统会根据每条日志记录所属的Region对象对HLog数据进行拆分,分别放到相应Region对象的目录下,然后,再将失效的Region重新分配到可用的Region服务器中,并把与该Region对象相关的HLog日志记录也发送给相应的Region服务器。
Region服务器领取到分配给自己的Region对象以及与之相关的HLog日志记录以后,会重新做一遍日志记录中的各种操作,把日志记录中的数据写入到MemStore缓存中,然后,刷新到磁盘的StoreFile文件中,完成数据恢复。
1.大数据包括静态数据和动态数据(流数据),静态数据适合采用(批处理 / 批量处理)方式,动态数据进行(实时处理 / 实时计算)。
2.适合用MapReduce处理的数据集通常需要满足一个前提条件,即(待处理的数据集可以分解成许多小的数据集,而且每一个小数据集都可以完全并行地进行处理。)。
3.MapReduce模型的核心是(Map)函数和(Reduce)函数。
4.大规模数据集的处理包括(分布式存储)和( 分布式计算)两个核心环节。
5.为了让Reduce可以并行处理Map的结果,需要对Map的输出进行一系列操作,主要包括(分区 / Partition / partition)、(排序 / Sort / sort)、(合并 / Combine / combine)和(归并 / Merge / merge)等。
6.MapReduce计算模型的核心是Map函数和Reduce函数,试述这两个函数各自的输入、输出以及处理过程。
Map函数的输人是来自于分布式文件系统的文件块,这些文件块的格式是任意的,可以是文档,也可以是二进制格式。文件块是一系列元素的集合,这些元素是任意类型的,同一个元素不能跨文件块存储。Map函数将输人的元素转换成
Reduce函数的任务就是将输人的一-系列具有相同键的键值对以某种方式组合起来,输出处理后的键值对,输出结果会合并成一个文件。用户可以指定Reduce任务的个数(如n个),并通知实现系统,然后主控进程通常会选择一个Hash函数,Map任务输出的每个键都会经过Hash函数计算,并根据哈希结果将该键值对输人相应的Reduce任务来处理。对于处理键为k的Reduce任务的输入形式为
7.TasKTracker出现故障会有什么影响?该故障是如何处理的?
TaskTracker周期性的向JobTracker汇报心跳,如果一定的时间内没有汇报这个心跳(出现故障),JobTracker 就认为该TaskTracker 挂掉了,它就会把上面所有任务调度到其它TaskTracker(节点)上运行。这样即使某个节点挂了,也不会影响整个集群的运行。
8.MapReduce中有这样一个原则:移动计算比移动数据更经济。试述什么是本地计算,并分析为何要采用本地计算。
MapReduce设计的一个理念就是“计算向数据靠拢”,而不是“数据向计算靠拢”,因为移动数据需要大量的网络传输开销,尤其是在大规模数据环境下,这种开销尤为惊人,所以,移动计算要比移动数据更加经济。
本地计算:在一个集群中,只要有可能,MapReduce框架就会将Map程序就近地在HDFS数据所在的节点运行,即将计算节点和存储节点放在一起运行,从而减少了节点间的数据移动开销。
9.试画出使用MapReduce来对英语句子“Whatever is worth doing is worth doing well”进行单词统计的过程。
10.试述MapReduce的工作流程(需包括提交任务、Map、Shuffle、Reduce的过程)。
(1)MapReduce框架使用InputFormat模块做Map前的预处理(如验证输入的格式是否符合输入定义等);然后将输入文件切分为逻辑上的多个InputSplit,InputSplit是MapReduce对文件进行处理和运算的输入单位(每个InputSplit并没有对文件进行实际切割,只是记录了要处理的数据的位置和长度)。
(2) 通过RecordReader(RR)根据InputSplit中的信息处理InputSplit中的具体记录,加载数据并转换为适合Map任务读取的键值对,输入给Map任务。
(3)Map任务根据用户自定义的映射规则,输出一系列的
(4)通过对Map的输出进行一定的分区(Portition)、排序(Sort)、合并(Combine)、归并(Merge)等操作,得到
(5)Reduce以一系列
(6)OutputFormat模块验证输出目录是否已经存在以及输出结果类型是否符合配置文件中的配置类型,如果都满足,就输出Reduce的结果到分布式文件系统。
Shuffle过程:
l Map端的Shuffle过程
(1)输入数据和执行Map任务;
(2)写入缓存;
(3)溢写(分区、排序和合并);
(4)文件归并。
l Reduce端的Shuffle过程
(1)“领取”数据;
(2)归并数据;
(3)把数据输入给Reduce任务。
1.Spark 是基于(内存计算)的大数据并行计算框架。
2.RDD的含义是(弹性分布式数据集)。
3.RDD提供一组丰富的操作以支持常见的数据运算,分为(行动;Action;action)和(转换;Transformation;transformation)两种类型。
4.在RDD的执行过程中,真正的计算发生在RDD的“行动”操作,对于“行动”之前的“转换”操作,Spark只是记录下“转换”操作应用的一些基础数据集以及RDD生成的轨迹(即相互之间的依赖关系,而不会触发真正的计算),这种操作过程称为(惰性调用)。
5.RDD中的依赖关系分为(窄依赖;Narrow Dependency)和(宽依赖;Wide Dependency)两种。
6.Spark支持三种不同的部署方式,包括(standalone)模式、(Spark on Mesos)模式和(Spark on YARN)模式。
7.Spark包含多种运行模式,包括(单机)模式、(伪分布式)模式和(完全分布式)模式。
8.Spark Shell提供了简单的方式学习Spark API,且能以实时、交互的方式来分析数据。Spark Shell支持的语言包括(Scala)和(Python)。
9.Spark程序的入口是(SparkContext)对象,它负责创建RDD、 启动任务等。
10.Spark应用程序支持采用Scala、Python、Java、R等语言进行开发。采用Scala编写的程序需要使用(sbt)进行编译打包;采用Java编写的程序需要使用(Maven)进行编译打包;采用Python编写的程序可以直接通过(spark-submit)提交给Spark运行。
11.Spark的出现是为了解决Hadoop MapReduce的不足,试列举Hadoop MapReduce的几个缺陷,并说明Spark具备哪些优点。
(1)Hadoop存在以下缺点:①表达能力有限;②磁盘IO开销大;③延迟高。
(2)Spark主要有如下优点:
①Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作,还提供了多种数据集操作类型,编程模型比MapReduce更灵活;
②Spark提供了内存计算,中间结果直接存放内存中,带来更高的迭代运算效率;
③Spark基于DAG的任务调度执行机制,要优于MapReduce的迭代执行机制。
12.美国加州大学伯克利分校提出的数据分析的软件栈BDAS认为目前的大数据处理可以分为哪三个类型?
①复杂的批量数据处理:时间跨度通常在数十分钟到数小时之间;
②基于历史数据的交互式查询:时间跨度通常在数十秒到数分钟之间;
③基于实时数据流的数据处理:时间跨度通常在数百毫秒到数秒之间。
13.从Hadoop+Storm架构转向Spark架构可带来哪些好处?
(1)实现一键式安装和配置、线程级别的任务监控和告警;
(2)降低硬件集群、软件维护、任务监控和应用开发的难度;
(3)便于做成统一的硬件、计算平台资源池。
14.Spark对RDD的操作主要分为行动(Action)和转换(Transformation)两种类型,两种类型操作的区别是什么?
行动(Action):在数据集上进行运算,返回计算值。
转换(Transformation):基于现有的数据集创建一个新的数据集。两者的区别主要在于,转换接受RDD并返回RDD,而行动接受RDD但返回非RDD(输出一个值或结果)。
15.试述如下Spark的几个主要概念:RDD、DAG、阶段、分区、窄依赖、宽依赖。
① RDD:是弹性分布式数据集(Resilient Distributed Dataset)的英文缩写,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型。
② DAG:是Directed Acyclic Graph(有向无环图)的英文缩写,反映RDD之间的依赖关系。
③ 阶段:是作业的基本调度单位,一个作业会分为多组任务,每组任务被称为“阶段”,或者也被称为“任务集”。
④ 分区:一个RDD就是一个分布式对象集合,本质上是一个只读的分区记录集合,每个RDD可以分成多个分区,每个分区就是一个数据集片段。
⑤窄依赖:父RDD的一个分区只被一个子RDD的一个分区所使用就是窄依赖。
⑥ 宽依赖:父RDD的一个分区被一个子RDD的多个分区所使用就是宽依赖。