赞
踩
最近正在学习大数据技术,看到林子雨老师版的大数据技术原理与应用,经过学习后,根据课本及部分参考资料,完成了以下的课后习题练习。涵盖该书的1-13章。
试述信息技术发展史上的3次信息化浪潮及其具体内容
信息化浪潮 发生时间 标志 解决的问题
第一次浪潮 1980年前后 个人计算机 信息处理
第二次浪潮 1995年前后 互联网 信息传输
第三次浪潮 2010年前后 物联网、云计算和大数据 信息爆炸
试述数据产生方式经历的几个阶段
3个阶段,分别是运营式系统阶段、用户原创内容阶段和感知式系统阶段。
运营式系统阶段:以门户网站为代表,数据的产生方式是被动的,只有当实际的企业业务发生时,才会产生新的记录并存入数据库。
用户原创内容阶段:以wiki、博客、微博、微信等自服务模式为主,上网用户本身就是内容的生成者。
感知式系统阶段:物联网中的设备每时每刻都在自动产生大量数据,并且其自动数据产生方式将在短时间内产生更密集、更大量的数据。
试述大数据的四个基本特征
数据量大:信息社会中,数据以自然方式增长,数据每两年增加一倍;
数据类型繁多:数据类型丰富,包括结构化数据和非结构化数据,如邮件、音频、视频等,给数据处理和分析技术提出了新的挑战;
处理速度快:由于很多应用都需要基于快速生成的数据给出实时分析结果,因此新兴的大数据分析技术通常采用集群处理和独特的内部设计;
价值密度低:有价值的数据分散在海量数据中。
试述大数据时代的“数据爆炸”特性
当前数据爆炸的特性包括增长速度快以及种类繁多两大特征;增长速度快主要指的是随着用户将更多设备连入互联网中以及物联网的推广和普及,各种设备将自动每时每刻产生大量数据;另一方面,产生的数据也由于产生的途径、设备、用途不同而变得种类繁多,结构各异。
科学研究经历了哪4个阶段
实验科学:采用科学解决一些科学问题;
理论科学:开始采用各种数学、几何、物理等理论。构建问题模型和解决方案;
计算科学:计算科学主要用于对各个科学问题进行计算机模拟和其他形式的计算,借助于计算机的高速运算能力可以解决各种问题;
数据密集型科学:先有大量已知数据,从数据中挖掘未知模式和有价值的信息,通过计算和分析得到未知的结论。
试述大数据对思维方式的重要影响
全样而非抽样:大数据技术的核心就是海量数据的存储和处理,因此科学分析可以完全直接针对全集数据而不是抽样数据,并且可以在短时间内迅速得到分析结果。
效率而非精确:由于大数据采用的是全样分析,故不存在误差放大的问题,故追求高精确性不是首要目标。另一方面,由于大数据时代要求在几秒内迅速给出海量数据的分析结果,否则会丧失数据的价值,因此数据分析效率成为关键。
相关而非因果:由于因果关系不再那么重要,人们更追求相关性。
大数据决策与传统的基于数据仓库的决策有什么区别
数据仓库以关系型数据库为基础,受到数据类型和和数据量方面的限制。大数据决策可以面向类型繁多、非结构化的海量数据进行决策分析。
举例说明大数据的具体应用
制造业:提升制造业水平,包括产品故障诊断与分析、工业供应链分析与优化;
金融行业:在高频交易、社交情绪分析和信贷风险分析等领域发挥重大作用;
汽车行业:依托于大数据和物联网技术的无人驾驶汽车。
举例说明大数据的关键技术
数据采集与预处理:使用ETL工具将数据抽到临时中间层后进行清洗、转换和集成后加载到数据仓库中,作为数据挖掘的基础;或者利用日志采集工具如Flume将实时采集的数据作为流计算系统的输入,进行实时处理分析;
数据存储和管理:利用分布式文件系统、NoSQL数据库等实现对数据的存储和管理;
数据处理与分析:利用分布式并行编程和计算框架,结合机器学习和数据挖掘算法,实现对海量数据的处理和分析,并进行可视化呈现;
数据安全和隐私保护:构建隐私数据保护体系和数据安全体系。
大数据产业包含哪些层面
IT基础设施层、数据源层、数据管理层、数据分析层、数据平台层、数据应用层。
定义并解释以下术语:物联网、云计算
云计算:实现了通过网络提供可伸缩的、链家的分布式计算能力,用户只需在具备网络接入条件的地方就可以随时随地获得所需的各种IT资源;包含了三种经典的服务模式:基础设施即服务、平台即服务和软件即服务。
物联网:是物物相连的互联网,是互联网的延伸,利用局部网络或互联网等通信技术将传感器、控制器、机器和人等通过新的方式连在一起,形成人与物、物与物相连,实现信息化和远程管理控制。
详细阐述大数据、云计算和物联网三者之间的区别与联系
区别:大数据侧重于对海量数据的存储、处理与分析;云计算本质旨在整合和优化各种IT资源,并通过网络以服务的方式廉价提供给用户;物联网的发展目标是实现物物相连。
联系:物联网是大数据的重要来源,大数据植根于云计算,大数据分析的很多技术来源于云计算;大数据为云计算提供用武之地,供云计算发挥价值;物联网借助于云计算和大数据技术,实现物联网大数据的存储、分析和处理。
试述分布式文件系统设计的需求
设计需求主要有以下几点:透明性、并发控制、文件复制、硬件和操作系统的异构性、可收缩性、容错、安全。
分布式文件系统是如何实现高水平扩展的
分布式文件系统在物理结构上是由计算机集群中的多个节点构成的,这些节点分为两类,一类叫“主节点”或“名称节点”,一类叫“从节点”或“数据节点”。通过名称节点管理文件和目录并管理数据结点和文件块的映射关系,数据结点负责数据的存储和读取。
试述HDFS的块和普通文件系统中的块的区别
HDFS的块大小更大,一般默认一个块大小为64MB,这是由于HDFS中的文件会被拆为多个块作为独立单元进行存储。
试述HDFS中的名称节点和数据结点的具体功能
名称节点负责管理分布式文件系统的命名空间,记录每个文件中各个块所在的数据节点的位置信息;
数据节点是分布式文件系统HDFS的工作节点,负责数据的存储和读取,会根据客户端或者名称节点的调度来进行数据的存储和检索,并向名称节点定期发送自己所存储的块的列表。
在分布式文件系统中,中心节点的设计至关重要,请阐述HDFS是如何减轻中心节点的负担的
在客户端需要访问一个文件时,名称节点并不参与数据的传输,而是只将数据节点位置发给客户端,因此实现了一个文件的数据能够在不同的数据节点上实现并发访问,大大提高了数据访问速度并减轻了中心服务器的负担,方便了数据管理。
HDFS只设置唯一一个名称节点,在简化系统设计的同时也带来了一些明显的局限性,请阐述局限性具体表现在哪些方面
1) 命名空间的限制;2)性能的瓶颈;3)隔离问题;4)集群的可用性。
试述HDFS的冗余数据保存策略
采用了多副本方式多数据进行存储。即先在集群内挑选一台磁盘不太满、CPU不太忙的数据节点作为第一个副本存放点;选取不同的机架的数据节点作为第二副本存放点;选择与第一副本存放点同机架的不同节点作为第三副本存放点;第四副本存放点从集群中随机挑选节点。
数据复制主要是在数据写入和数据恢复的时候发生,HDFS数据复制是使用流水线复制的策略,请阐述该策略的细节
每个块都会向HDFS集群中的名称节点发出写请求,名称节点会返回一个数据节点列表给客户端,客户端将数据写入列表中第一个数据节点时,同时把列表传给第一个节点;第一个节点在接收到数据写入本地的同时,会把自己已经接收到的数据传给第二个数据节点,同时第二个数据节点接收到数据时,会在写入的同时将数据发送给第三个节点,以此类推。
试述HDFS是如何探测错误发生以及如何进行恢复的
1) 名称节点出错:将名称节点上的元数据信息同步存储到其他文件系统中;并运行一个第二名称节点,当名称节点宕机之后,利用第二名称节点进行系统恢复。
2) 数据节点出错:将无法接收到“心跳”信号的数据节点标记为不可读,如果数据块的副本数量小于冗余因子,就会启动数据冗余复制,为它生成新副本。
3) 数据出错:客户端收到数据后会使用md5和sha1对数据块进行校验;如果校验出错,客户端就会请求到另外一个数据节点读取该文件块,并向名称节点报告这个文件块有错误,名称节点会定期检查并且重新复制这个块。
请阐述HDFS在不发生故障的情况下读文件的过程
1) 客户端打开文件,创建输入流;
2) 输入流通过远程调用名称节点,获得文件开始部分数据块的保存位置;
3) 客户端得到位置后开始读取数据,输入流选择距离客户端最近的数据节点建立连接并读取数据;
4) 数据从该数据节点读取至客户端结束时,关闭连接;
5) 输入流查找下一个数据块;
6) 找到该数据块的最佳数据节点,读取数据;
7) 客户端读取完毕数据时,关闭输入流。
请阐述HDFS在不发生故障的情况下写文件的过程
1) 客户端创建文件和输出流;
2) HDFS调用名称节点,在文件系统的命名空间中建一个新的文件,并执行检查;检查通过后,名称节点会构造一个新文件夹,并添加文件信息;
3) 客户端通过输出流向HDFS的文件写入数据;
4) 客户端写入的数据首先会被分成一个个的分包,将分包放入输出流对象的内部队列,并向名称节点申请若干个数据节点,然后通过流水线复制策略打包成数据包发送出去;
5) 为保证所有数据节点的数据都是准确的,需要数据节点向发送者发送“确认包”,当客户端收到应答时,将对应的分包从内部队列移除。不断执行3~5直至数据写完;
6) 客户端关闭输出流,通知名称节点关闭文件。
试述在Hadoop体系结构中HBase与其他组成部分的相互关系
HBase利用Hadoop MapReduce来处理HBase中的海量数据,实现高性能计算;利用Zookeeper作为协同服务,实现稳定服务和失败恢复;利用HDFS作为高可靠的底层存储,利用廉价集群提供海量数据存储能力;此外,Sqoop为HBase提供了高效、便捷的RDBMS数据导入功能,Pig和Hive为HBase提供了高层语言支持。
请阐述HBase和BigTable底层技术的对应关系
请阐述HBase和传统关系数据库的区别
HBase有哪些类型的访问接口
HBase提供了Native Java API、HBase Shell、Thrift Gateway、REST GateWay、Pig、Hive等访问接口。
请以实例说明HBase数据模型
分别解释HBase中行键、列族和时间戳的概念
行键是唯一的,在一个表中只出现一次,可以是任意字符串。
列族是基本的数据访问控制单元,需要在创建表的时候就定义好,数量不能太多,而且不能频繁修改。
时间戳用于区分一份数据的不同版本,由系统指定或者用户自己赋值。
请举个实例来阐述HBase的概念视图和物理视图的不同
Hbase的概念视图中,一个表可视为一个稀疏、多维的映射关系。如图所示:
Hbase的物理视图在物理存储方面会采用基于列的存储方式,因此上图会被拆违两个小片段,即按列族分别存放:
试述HBase各功能组件及其作用
库函数:链接到每个客户端。
一个Master主服务器:负责管理和维护HBase表的分区信息,负责维护和管理Region服务器列表及Region服务器,处理模式变化。
许多个Region服务器:是Hbase中最核心的模块,负责维护分配给自己的Region,并相应用户的读写请求。
请阐述HBase的数据分区机制
Hbase采用分区存储,一个大的表会根据行键的值对行进行分区,每个行区间构成一个分区Region,这些Region会被分发到不同的Region服务器上。
HBase中的分区是如何定位的
通过构建的映射表,即Region标识符查表后可以找到对应的Region服务器标识符,从而可以知道某个Region数据被保存到哪个Region服务器中。
试述HBase的三层结构中各层次的名称和作用
请阐述在HBase的三层结构下,客户端是如何访问到数据的
首先访问Zookeeper,获取-ROOT-表的位置信息,然后访问-ROOT-表,得到.META.表的信息,接着访问.META.表,找到所需的Region具体位于哪个Region服务器,最后才会到该Region服务器读取数据。
试述HBase系统基本架构以及每个组成部分的作用
客户端:包含访问Hbase的接口,同时在缓存中维护已经访问过的Region位置信息,用来加快后续数据访问过程。
Zookeeper服务器:帮助维护当前的集群中机器的服务状态,帮助选出一个“总管”,即保证在任何时刻总有唯一一个Master在运行。
Master:主服务器Master主要负责表和Region的管理工作。管理用户对表的增删改查操作;实现Region服务器之间的负载平衡;负责重新调整Region的分布;对发生故障失效的Region服务器上的Region数据进行迁移。
Region服务器:负责维护分配给自己的Region,响应用户的读写请求。
请阐述Region服务器向HDFS文件系统中读写数据的基本原理
用户写入数据时,会被分配到相应的Region服务器去执行操作。用户数据首先被写入到MemStore和HLog中,当写操作写入HLog之后,commit()调用才会将其返回给客户端。
当用户读取数据时,Region服务器会首先访问MemStore缓存,如果数据不在缓存中,才会到磁盘上面的StoreFile中去寻找。
试述Store的工作原理
Store是Region服务器的核心,每个Store对应表中一个列族的存储,每个Store包含一个MemStore缓存和若干个StoreFile文件。MemStore是排序的内缓冲区,当用户写入数据时,系统会先将数据放入到MemStore缓存,当Memstore缓存满时,会被刷新到磁盘中的一个MemFile文件中;MemFile文件数量过多时会触发合并文件操作,当MemFile单个文件大小过大时,会触发文件分裂操作。
试述HLog的工作原理
HBase系统为每个Region服务器配置了一个HLog文件,用户更新数据必须首先被计入日志后才能写入MemStore缓存,并且直到MemStore缓存内容对应的日志已经被写入磁盘之后,该缓存内容才会被刷新写入磁盘。
在HBase中,每个服务器维护一个HLog,而不是为每个region单独维护一个HLog。请说明这种做法的优缺点
优点:当有多个Region对象的更新操作发生的日志修改时,只需要不断把日志记录追加到单个日志文件中,而不需要同时打开、写入到多个日志文件中,可以减少磁盘寻址次数,提高对表的写操作性能。
缺点:如果一个Region服务器发生故障,为了恢复其上的Region对象,需要将Region服务器上的HLog文件按照所属的Region对象进行拆分,然后分发到其他的Region服务器上执行恢复操作。
当一台Region服务器意外终止时,Master如何发现这种意外终止情况的?为了回顾这台发生意外的Region服务器上的Region,Master应该做出哪些处理(包括如何使用HLog进行恢复)
Zookeeper会通知Master。Master首先会处理该服务器上遗留的HLog文件,系统会根据每条日志记录所属的Region对象对HLog数据进行拆分,放到对应的Region对象的目录下,再将失效的Region重新分配到可用的Region服务器中,并将与该Region对象相关的日志记录也发送给相应的Region服务器。Region服务器领取到分配给自己的Region对象以及对应的HLog日志记录后,会重新做一次日志中的操作,把日志中记录的数据写入MemStore缓存,然后刷新到磁盘的MemFile文件中,完成数据恢复。
如何准确理解NoSQL的含义
NoSQL数据库是一种不同于关系数据库的数据库管理系统设计方式,是对菲关系数据库的统称,它所采用的数据模型并非传统的关系数据库的关系模型,而是类似键/值、列族、文档等非关系模型。
试述关系数据库在哪些方面无法满足Web2.0应用的需求
无法满足海量数据的管理需求、无法满足数据高并发的需求、无法满足高可扩展性和高可用性的需求。
为什么说关系数据库的一些关键特性在Web2.0时代成为“鸡肋”
Web2.0网站通常不要求严格的数据库事务、严格的读写实时性、不包含大量复杂的SQL查询。
请比较关系数据库和NoSQL数据库的优缺点
项目 关系型数据库 NoSQL数据库
优点 以完善的关系代数理论作为基础,有严格的标准,支持事务ACID四性,借助索引机制可以实现高效的查询,技术成熟,有专业公司的技术支持 可以支持超大规模数据存储,灵活的数据模型可以很好支持Web2.0应用,具有强大的横向扩展能力
缺点 可扩展性较差,无法较好地支持海量数据存储;数据模型过于死板,无法较好支持Web2.0应用;事务机制影响了系统的整体性能 缺乏数学理论基础,复杂查询性能不高,一般不能实现事务强一致性、汉南实现数据完整性,技术尚不成熟,缺乏专业团队的技术支持,维护较困难
试述NoSQL数据库的四大类型
键值数据库:使用一个哈希表,表中有一个特定的Key和一个指针指向特定的Value,Key可以用来定位Value,即存储和检索具体的Value。
列族数据库:采用列族数据模型,数据库由多行构成,每行数据包括多个列族,不同行可以拥有不同数量的列族,属于同一列族的数据会被存放在一起。
文档数据库:文档作为最小单位,文档以某种标准化格式封装并对数据进行加密。
图数据库:使用图作为数据模型来存储数据。
试述键值数据库、列族数据库、文档数据库和图数据库的适用场合和优缺点
试述CAP理论的具体含义
C(Consistency):一致性,多点分布环境中,多点的数据是一致的。
A(Availability):可用性,指能够快速获取数据,可以在确定的时间内返回操作结果。
P(Tolerance of Network Partition):分区容忍性,指出现网络分区的情况时,分离的系统也能正常运行。
请举例说明不同产品在设计时是如何运用CAP理论的
CA:放弃分区容忍性,即影响系统的可扩展性,传统的关系数据库都采用了这种设计原则;
CP:放弃可用性,当出现网络分区的时候,受影响的服务需要等待数据一致,即在等待期间无法对外提供服务, Neo4J、BigTable等NoSQL数据库采用;
AP:放弃一致性,允许系统返回会不一致的数据,在Web2.0应用中是可行的。
试述数据库的ACID四性的含义
原子性、一致性、隔离性、持久性。
试述BASE的具体含义
基本可用(Basically available):一个分布式系统的一部分发生问题变得不可用时,其他部分仍然可以正常使用,也就是允许分区失败的情形出现。
软状态(Soft-state):状态可以有一段时间不同步,具有一定的滞后性。
最终一致性(Eventual consistency):允许后续的访问操作可以暂时读不到更新后的数据,但是经过一段时间后,必须读到更新后的数据。
请解释软状态、无状态、硬状态的具体含义
软状态:与硬状态相对,状态可以有一段时间不同步,具有一定的滞后性;
无状态:没有记忆,即进行了任何操作都不会保存修改;
硬状态:保持数据一致性,即保证数据一直是正确的。
什么是最终一致性
经过一段时间后能够访问到最新的数据。
试述不一致性窗口的含义
从OP操作完成到后续访问可以读取到OP写入的最新值,这之间的时间间隔称为不一致性窗口,这个窗口的大小依赖于交互延迟、系统负载和副本个数等因素。
最终一致性根据更新后各进程访问到数据的时间和方式的不同,又可以分为哪些不同类型的一致性
因果一致性、读己之所写一致性、会话一致性、单调读一致性、单调写一致性。
什么是NewSQL数据库
NewSQL是对各种新的可扩展、高性能数据库的简称,这类数据库不仅具有NoSQL对海量数据的存储能力,还保持了传统数据库支持ACID和SQL等特性;即都支持关系数据模型,都使用SQL作为其主要的接口。
试述NewSQL数据库与传统的关系数据库以及NoSQL数据库的区别
对比NoSQL数据库,NewSQL数据库支持支持关系数据模型;相比传统关系数据库,NewSQL数据库具有明显的性能优势,并且具有对海量数据的存储能力。
试述云数据库的概念
云数据库是部署和虚拟化在云计算环境中的数据库。云数据库是在云计算的大背景下发展起来的一种新兴的共享基础架构的方法,具有高可扩展性、高可用性、采用多租形式和支持资源有效分发等特点。
与传统的软件使使用方式相比,云计算这种模式具有哪些明显的优势
开发商可以直接购买和使用云计算厂商的软件服务,无需自己维护、购买硬件设备和场地,同时云计算厂商提供的IT资源近乎无限且具有高扩展性。
云数据库有哪些特性
动态可扩展、高可用性、较低的使用代价、易用性、高性能、免维护、安全。
试述云数据库的影响
云数据库可以很好满足不同企业的个性化存储需求;1)满足大企业的海量数据存储需求;2)满足中小企业的低成本数据存储需求;3)满足企业动态变化的数据存储需求。
举例说明云数据库厂商及其代表性的产品
1) 传统的数据库厂商
2) 涉足数据库市场的云供应商
3) 新兴厂商。
试述Microsoft SQL Azure的体系结构
其体系结构中包含了一个虚拟机簇,根据工作负载的变化,动态增加或减少虚拟机的数量;每台虚拟机安装了AQL Server管理系统;并同时安装了SQL Azure Fabric和SQL Azure管理服务,负责数据库的数据复写工作;不同虚拟机之间的SQL Azure Fabric和管理服务之间会彼此交换监控信息,以保证整体服务的可监控性。
试述UMP系统的功能
对用户透明的容灾、读写分离、分库分表、资源管理、资源调度、资源隔离和数据安全。
试述UMP系统的组件及其具体作用
Controller服务器:向UMP集群提供各种管理服务,实现集群成员管理、元数据存储、MySQL实例管理、故障恢复、备份、迁移、扩容等功能。
Web控制台:向用户提供系统管理界面。
Proxy服务器:向用户提供访问MySQL数据库的服务;除了数据路由的基本功能外,Proxy服务器中还实现了屏蔽MySQL实例故障、读写分离、分库分表、资源隔离、记录用户访问日志等。
Agent服务器:管理每台物理机上的MySQL实例,执行主从切换、创建、删除、备份、迁移等操作,同时还负责收集和分析MySQL进程的统计信息、慢查询日志和bin-log。
日志分析服务器:存储和分析Proxy服务器传入的用户访问日志,并支持实时查询一段时间内的慢日志和统计报表。
信息统计服务器:定期将采集到的用户的连接数、QPS数值以及MySQL实例的进程状态用RRDtool进行统计。
愚公系统:是一个全量复制结合bin-log分析进行增量复制的工具,可以实现在不停机的情况下动态扩容、缩容和迁移。
试述UMP系统实现主从备份的方法
UMP系统会为用户创建两个MySQL实例,一个是主库,一个是从库,且这两个MySQL实例之间相互把对方设置为备份机,任何一个MySQL实例上面发生的更新都会复制到对方。一旦主机宕机,Controller服务器会启动主从切换,修改映射关系;宕机后的主库在恢复处理后会再次上线,并从从库中复制更新,直到更新到完全一致状态的时候,Controller服务器会再次发起主从切换操作。
试述UMP系统读写分离的实现方法
写操作会被直接发送到主库;读操作会被均衡发送到主库和从库上执行。为了避免从库未读到最新的数据,会在用户每次写操作后开启一个计时器,在一定时间内读操作会全部被强行分发到主库中。
UMP系统采用哪两种方法实现资源隔离
试述UMP系统中的3种规格用户
小规模用户:多个用户共享一个MySQL实例;
中等规模用户:每个用户独占一个MySQL实例,用户可以根据自己的需求来调整内存空间和磁盘空间;
需要分库分表的用户:占有多个MySQL实例,这些实例既可以共存在一台物理机上,也可以每个实例独占一台物理机。
UMP系统是如何保障数据安全的
设计了多种机制来保证数据安全性。
1) SSL数据库连接:在传输层对网络连接进行加密;
2) 数据访问IP白名单:把允许访问云数据库的IP地址放入“白名单”,其他IP地址的访问都会被拒绝;
3) 记录用户操作日志:通过检查用户操作记录,可以发现隐藏的安全漏洞;
4) SQL拦截:Proxy服务器可以根据要求拦截多种类型的SQL语句。
简述阿里云RDS的主要优势
用户可以通过Web或API的方式,在几分钟内开通完全兼备MySQL或SQLServer的数据库实例,并有专业数据库管理团队维护和提供管理功能。即具有专业、高可靠、高性能、灵活应用等优点,能够帮助用户解决费时费力的数据库管理任务。
简述RDS中实例与数据库的概念
RDS实例是用户购买RDS服务的基本单位,在实例中可以创建多个数据库,可以使用常见的数据库客户端连接、管理和使用数据库;可以通过RDS管理控制台或OPEN API来创建、修改和删除数据库。各实例之间相互独立、资源隔离;但是,同一实例中的不同数据库之间是资源共享的。
数据库是用户在一个实例下创建的逻辑单元,一个实例可以创建多个数据库,在实例内数据库命名唯一,所有数据库都会共享该实例下的资源。
试述MapReduce和Hadoop的关系
谷歌公司首先提出了MapReduce,Hadoop MapReduce是它的开源实现。
试述适合用MapReduce来处理的任务或者数据集需要满足怎样的需求
待处理的数据集可以分解成许多小的数据集,而且每个小数据集可以完全并行地进行处理。
试述JobTracker和TaskTracker的功能
JobTracker在主机上运行,监测每个Map任务结束后,通知相关的Reduce任务来领取数据;即负责作业和任务的调度,监控他们的执行,并重新调度已经失败的任务。
TaskTracker运行在从机上,执行由JobTracker指派的任务。
TaskTracker出现故障会有什么影响,该故障是如何处理的
TaskTracker出现故障会停止或者很少向JobTracker发送心跳;此时JobTracker会注意到该情况,从而将该TaskTracker从等待任务调度的TaskTracker池中移除,JobTracker会安排此TaskTracker上一个成功运行的Map任务返回。并将该任务重新指派出去。(该处存疑,https://www.cnblogs.com/xinyuyuanm/archive/2013/03/25/2980682.html中似乎说法有点奇怪)
试述Map函数和Reduce函数的输入、输出以及处理过程
Map函数的输入为分布式文件系统的文件块,这些文件快的格式是任意的。Map函数将输入的元素转换成<key, value>形式的键值对,键和值的类型也是任意的。
Reduce函数的输入是Map函数输出的结果即中间结果,其任务是将输入的一系列具有相同键的键值对以某种方式组合起来,输出处理后的键值对,输出结果会合并成一个文件。
试述MapReduce的工作流程(需包括提交任务、Map、Shuffle、Reduce的过程)
1) MapReduce框架使用InputFormat模块做Map前的预处理,然后将输入文件切分为逻辑上的多个InputSplit。
2) 通过RecordReader根据InputSplit中的信息来处理InputSplit中的具体记录,加载数据并转换为适合Map任务读取的键值对,输入给Map任务。
3) Map任务会根据用户自定义的映射规则,输出一系列的<key, value>作为中间结果。
4) Shuffle:对Map的输出进行一定的分区、排序、合并、归并等操作,得到<key,value-list>形式的中间结果,再交给对应的Reduce进行处理。
5) Reduce以一系列<key, value-list>中间结果作为输入,执行用户定义的逻辑,输出结果给OutputFormat模块。
6) OutputFormat模块会验证输出目录是否存在以及输出结果类型是否符合配置文件中的配置类型,如果都满足,就输出Reduce的结果到分布式文件系统。
Shuffle过程是MapReduce过程的核心,也被称为奇迹发生的地方,试分析Shuffle过程的作用
将Map输出结果进行分区、排序、合并等处理并交给Reduce的过程,减少磁盘I/O的读写次数,并减小从Map到Reduce之间的数据传递量。
分别描述Map端和Reduce端的Shuffle过程(包括Spill、Sort、Merge、Fetch的过程)
Map端:输入数据和执行map任务、写入缓存、溢写(分区、排序和合并)、文件归并
Map的输出结果首先被写入缓存,当缓存满时就启动溢写操作,把缓存中的数据写入磁盘文件,并清空缓存。当启动溢写操作时,首先需要把缓存中的数据进行分区,然后对每个分区的数据进行排序和合并,之后再写入磁盘文件。每次溢写操作会生成一个新的磁盘文件,随着Map任务的执行,磁盘中就会生成多个溢写文件。在Map任务全部结束之前,这些溢写文件会被归并成一个大的磁盘文件,然后通知相应的Reduce任务来领取自己处理的数据。
Reduce端:领取数据、归并数据、把数据输入给Reduce任务
Reduce任务从Map端的不同Map机器领会属于自己处理的那部分数据,然后对数据进行归并后交给Reduce处理。
MapReduce中有这样一个原则:移动计算比移动数据更经济。试述什么是本机计算,并分析为何要采用本地计算
由于移动数据需要大量的网络传输开销,因此移动计算比移动数据更加实惠,即将计算节点和存储节点放在一起运行。
本地计算:在一个集群中,只要有可能,MapReduce框架就会将Map程序就近地在HDFS数据所在的节点运行,从而减少节点间的数据移动开销。
试说明一个MapReduce程序在运行期间所启动的Map任务数量和Reduce任务数量各是由什么因素决定的
Map任务数量:输入文件数目、输入文件的大小、配置参数。
Reduce任务数量:配置参数。
是否所有的MapReduce程序都需要经过Map和Reduce两个过程?如果不是,请举例说明。
不是。例如对于关系的选择运算,只需要Map过程就能实现。对于关系R中的每个元祖t,检测是否是满足条件的所需元祖,如果满足条件,则输出键值对<t, t>,也就是说,键和值都是t。这时的Reduce函数就只是一个恒等式,对输入不作任何变换就直接输出。
试分析为何采用Combiner可以减少数据传输量。是否所有的MapReduce程序都可以采用Combiner,为什么
使用Combiner后,可以将具有相同key的<key, value>的value加起来,这样可以减少键值对的数量从而减少数据传输量。但是不是所有的都可以使用Combiner,因为Combiner的输出是Reduce程序的输入,Combiner决不能改变Reduce任务的最终计算结果。一般而言,累加、最大值等场景可以使用合并操作。
MapReduce程序的输入文件、输出文件都存储在HDFS中,而在Map任务完成时的结果则存储在本地磁盘中,试分析中间结果存储在本地磁盘而不是HDFS上有何优缺点
更符合移动计算比移动数据经济原则,且Map输出结果仅仅是中间结果,在Reduce任务完成后,中间结果会被删除, HDFS还会对该部分数据做复制备份,造成资源浪费。
早期版本的HDFS,其默认块大小为64MB,而较新的版本默认为128MB,采用较大的块有什么影响和优缺点
采用较大的块说明分片的数量较小,那么map任务也较少,导致任务的并行化程度不高,不能充分利用集群资源,拖慢作业运行速度。
采用较小的块,说明map任务较多,而创建多个map任务进程需要耗费大量时间。
块的大小设置主要从以下考虑:减少磁盘寻道时间、减少Namenode内存消耗、Nap崩溃问题、监管时间问题、问题分解问题、约束Map输出。
试画出使用MapReduce来对英语句子“Whatever is worth doing is worth doing well”进行单词统计的过程
详情参考以下图中示例:
在基于MapReduce的单词统计中,MapReduce是如何保证相同的单词数据会划分同一个Reducer上进行处理以保证结果的正确性
通过将相同的单词数据作为key值,相同单词出现的次数作为value值,由于Reduce任务是按key值 进行划分的,因此保证了相同的单词数据会划分到同一个Reducer上进行处理。
利用MapReduce的分布式优点,试设计一个基于MapReduce的排序算法,假设数据均位于[1,100],Reducer的数量为4,正序输出或逆序输出结果均可。试简要描述该过程(可使用Partition、Combine过程)
在Map过程中,将数据等量分给n个Map过程进行快速排序,使用Combiner进行一定归并后输出;然后使用4个Reducer分别处理区间为[1,25][25,50],[50,75],[75,100]的数据,最后归并成一个大文本数据。
试设计一个基于MapReduce的算法,求出数据集中的最大值。假设Reducer大于1,试简要描述该算法(可使用Partition、Combine过程)
在Map过程中每一个任务通过Partition和Combine过程后只向Reducer传递自己这一部分的最大值,最后Reducer归并得到最大值即可。
试述实现矩阵向量乘法与矩阵乘法采用不同的MapReduce策略的原因
由于矩阵向量乘法最终得到的只是一个n维向量,不需要加入Mij和Njk对应元素的乘积之和,所以采用了不同的MapReduce策略。
为非方阵矩阵(即行数与列数不等的矩阵)的乘法运算设计一般化的MapReduce算法,并写出Map函数和Reduce函数
类比于两方阵矩阵的算法。
试述在Hadoop推出之后其优化与发展主要体现在哪两个方面
第一个方面是针对MapReduce和HDFS的许多方面做了有针对性的改进提升;另一方面是在Hadoop生态系统中融入了更多的新成员,使得Hadoop功能更加完善。
试述HDFS 1.0中只包含一个名称节点会带来哪些问题
单点故障问题,即一旦集群中唯一一个名称节点发生故障,会导致整个集群变得不可用;另外,第二名称节点无法提供热备份功能,即名称节点发生故障的时候,系统无法实时切换到第二名称节点立即对外提供服务,仍然需要进行停机恢复。
请描述HDFS HA架构构成组件及其具体功能
HA架构中,一般设置了两个名称节点。一个为活跃的名称节点,负责对外处理所有客户端的请求;一个为待命的名称节点,作为备用节点,保存了足够多的系统元数据,当名称节点出现故障时提供快速恢复能力。
请分析HDFS HA架构中数据节点如何和名称节点保持通信
当一个数据节点加入HDFS集群时,会把自己所包含的数据块列表报告给两个名称节点(数据节点配置时会给出两个名称节点的地址),此后通过“心跳”的方式定期执行这种告知操作,以确保名称节点的块映射是最新的。
请阐述为什么需要HDFS联邦,即它能够解决什么问题
HDFS 1.0中存在可扩展性(名称节点进行纵向扩展时会带来过长系统时间等问题)、系统性能(单个名称节点内存等资源有限)、隔离性三个方面问题。
HDFS联邦通过设计多个相互独立的名称节点以联邦关系连接在一起,实现HDFS命名系统的水平扩展;同时,通过多个节点还能同时对外提供服务,为用户提高更高的吞吐量;另外,用户可以根据需求将不同业务数据交给不同的名称节点管理,实现了不同业务之间良好的隔离性。
请描述HDFS中“块池”的概念,并分析为什么HDFS联邦中的一个名称节点失效,也不会影响到与它相关的数据节点继续为其他名称节点提供服务
块池:每个命名空间管理属于自己的一组块,这些属于同一个命名空间的块构成一个块池。每个数据节点为多个块池提供块的存储,即块池中的各个块实际上是存储在各个不同的数据节点中的。
请阐述MapReduce 1.0体系结构中存在的问题
1)存在单点故障问题;2)JobTracker大包大揽导致任务过重;3)容易出现内存溢出;4)资源划分不合理。
请描述YARN架构中各组件的功能
ResourceManager:处理客户端请求;启动/监控ApplicationMaster;监控NodeManager;资源分配与调度。
ApplicationMaster:为应用程序申请资源,并分配给内部任务;任务调度、监控与容错。
NodeManager:单个节点上的资源管理,处理来自ResourceManager的命令;处理来自ApplicationMaster的命令。
请描述在YARN框架中执行一个MapReduce程序时,从提交到完成需要经历的具体步骤
1) 用户编写客户端应用程序,向YARN提交应用程序;
2) ResourceManager接到客户端应用程序请求后,其调度器为应用程序分配一个容器;同时,其应用程序管理器会与该容器的NodeManager通信,为该应用程序在容器中启动一个ApplicationMaster;
3) ApplicationMaster向ResourceManager注册,以便用户直接查看应用程序的运行状态;
4) ApplicaitonMaster采用轮询的方式通过RPC协议向ResourceMaster申请资源;
5) ResourceManager以容器的形式分配资源,一旦ApplicationMaster申请到资源之后,就会与该容器坐在的NodeManager进行通信,要求它启动任务;
6) 当容器启动任务时,Application会设置好运行环境(包括环境变量、JAR包、二进制程序等等),然后将任务启动命令写到一个脚本中,最后通过在容器中运行该脚本来启动任务;
7) 各个任务通过PRC协议向AppicationMaster汇报自己的状态和进度,让ApplicationMaster可以随时掌握各个人物的运行状态,从而可以在任务失败时重新启动任务;
8) 应用程序完成后,ApplicationMaster向ResourceManager的应用程序管理器注销并关闭自己;如果因故失败,应用程序管理器会检测到失败的情形,将其重新启动直到所有的任务执行完毕。
请对YARN和MapReduce 1.0框架进行优劣势对比分析
1) YARN大大减少了承担中心服务功能的ResourceManager的资源消耗;
2) YARN只是一个纯粹的资源调度管理框架,可以在上面运行不同类型的计算框架;
3) YARN中的资源管理比MapReduce 1.0更加高效。
请分别描述Pig、Tez和Kafka的功能
Pig提供了类似SQL语言的Pig Latin语言,允许用户通过编写简单的脚本来实现复杂的数据分析,将脚本自动转换成MpReduce作业在Hadoop集群上运行,并且对生成的MapReduce程序进行自动优化。即Pig可以加载数据、表达转换数据以及存储最终结果,但Pig只面向批处理,不适用于所有的数据分析任务。
Tez是Apache开源的支持DAG作业的计算框架,其核心思想是将Map和Reduce两个操作进行进一步拆分,这些元操作可以进行任意自由组合产生新的操作;提供了程序运行的整体处理逻辑,去除工作流中多余的Map阶段,减少不必要的操作,提升数据处理的性能。
Kafka是LinkeIn公司开发的一种高吞吐量的分布式发布订阅消息系统,用户通过Kafka系统可以发布大量的消息,同时也能实时订阅消费消息。使用Kafka作为数据交换枢纽,可以实现和Hadoop各个组件之间的不同类型数据的实时高效交换,较好满足各种企业的应用需求。同时可以很好地解决不同系统之间的数据生产/消费速率不同的问题。
Spark是基于内存计算的大数据计算平台,试述Spark的主要特点
1) 运行速度快; 2)容易使用; 3)通用性; 4)运行模式多样。
Spark的出现使为了解决Hadoop MapReduce的不足,试列举Hadoop MapReduce的几个缺陷,并说明Spark具有哪些优点
Hadoop的缺点:1)表达能力有限;2)磁盘I/O开销大;3)延迟高。
Spark的优点:
1) 除了Map和Reduce操作,提供了多种数据集操作类型,编程模型比Reduce更加灵活。
2) 提供了内存计算,中间结果直接存放在内存中,带来了跟高的迭代运算效率。
3) 基于DAG的任务调度执行机制,优于MapReduce的迭代执行机制。
美国加州大学伯克利分校提出的数据分析的软件站BDAS认为目前的大数据处理可以分为哪三个类型
1)复杂的批量数据处理;2)基于历史数据的交互式查询;3)基于实时数据流的数据处理。
Spark打造出结构一体化、功能多样化的大数据生态系统,试述Spark的生态系统
Spark的设计遵循“一个软件栈满足不同应用场景”的理念,既能够提供内存计算框架,也可以支持SQL即席查询、实时流式计算、机器学习和图计算等。Spark可以部署在资源管理器YARN之上,提供一站式的大数据解决方案。
从Hadoop + Storm架构转向Spark架构可带来哪些好处
1) 实现一键式安装和配置、线程级别的任务监控和告警;
2) 降低硬件集群、软件维护、任务监控和应用开发的难度;
3) 便于作成统一的硬件、计算平台资源池。
试述Spark on YARN的概念
即Spark可以运行在YARN之上,与Hadoop进行统一部署,即Spark on YARN,其架构如图所示,其中资源管理和调度依赖YARN,分布式存储则依赖HDFS。
试述如下Spark的几个主要概念:RDD、DAG、阶段、分区、窄依赖、宽依赖
RDD:弹性分布式数据集(Resilient Distributed Dataset),是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型。
DAG:有向无环图(Directed Acyclic Graph),反映RDD之间的依赖关系。
阶段:是作业的基本调度单位,一个作业会分为多个阶段,一个阶段会分为多个任务。
分区:一个RDD就是一个分布式对象集合,本质上只是一个只读的分区记录集合,每个RDD可以分成多个分区,每个分区就是一个数据集片段,并且一个RDD的不同分区可以保存到集群中的不同节点,从而可以在集群中的不同节点上进行并行计算。
窄依赖:一个父RDD对应一个子RDD的分区,或者是多对一;
宽依赖:一个父RDD对应多个子RDD的分区。
Spark对RDD的操作主要分为行动和转换两种类型,两种操作的区别是什么
行动用于执行计算并指定输出的形式,接受RDD但是返回非RDD;
转换用于指定RDD之间的相互依赖关系,接受RDD并返回RDD。
试述流数据的概念
流数据是指在时间分布和数量上无限的一系列动态数据集合体;数据记录是流数据的最小组成单元。
试述流数据的特点
1) 数据快速持续到达,潜在大小也许是无穷无尽的。
2) 数据来源众多,格式复杂。
3) 数据量大,但是不是十分关注存储。
4) 注重数据的整体价值,不过分关注个体数据。
5) 数据顺序颠倒,或者不完整,系统无法控制将要处理的新到达的数据元素的顺序。
在流计算的概念中,数据的价值与时间具备怎样的关系
数据的价值随时间的流逝而降低。
试述流计算的需求
高性能、海量性、实时性;
分布式、易用性、可靠性。
试述MapReduce的框架为何不适用于处理流数据
MapReduce框架由于需要进行分解、迭代等流程,在时间延迟方面是无法满足流计算的实时响应要求的。
将基于MapReduce的批量处理转为小批量处理,每隔一个周期就启动一次MapReduce作业,通过这样的方式来处理流数据是否可行,为什么
不可行。
1) 切分成小片段同时增加了任务处理的附加开销,并且需要处理片段之间的依赖关系;
2) 需要对MapReduce进行改造以支持流式处理,会大大增加MapReduce框架的复杂度,导致系统难以维护和扩展;
3) 降低了用户程序的可伸缩性,因为用户必须使用MapReduce接口定义流式作业。
列举几个常见的流计算框架
1) 商业级的流计算平台,如IBM InfoSphere Streams;
2) 开源级计算框架,如Twitter Storm;
3) 公司为支持自身业务开发的流计算框架,如DStream。
试述流计算的一般处理流程
数据实时采集、数据实时计算、实时查询服务。
试述流计算流程与传统的数据处理流程之间的主要区别
传统的数据处理需要先采集数据并存储在关系数据库等数据管理系统中,并且需要用户主动发起查询;流计算是使用实时数据流,经过计算和分析后,实时查询服务可以不断更新结果,并将用户所需要的结果实时推送给用户。
试述数据实时采集系统的一般组成部分
Agent:主动采集数据,并把数据推送到Collector部分。
Collector:接收多个Agent的数据,并且实现有序、可靠、高性能的转发。
Store:存储Collector转发过来的数据。
试述流计算系统与传统的数据处理系统对所采集数据的处理方式有什么不同
流计算不像传统的数据处理系统,一般在Store部分不进行数据的存储,而是将采集的数据直接发送给流计算平台进行实时计算。
试列举几个流计算的应用领域
实时分析、实时交通。
流计算适用于具备怎样特点的场景
适用于需要处理持续到达的流数据,对数据处理有较高实时性要求的场景。
试述流计算为业务分析带来了怎样的改变
实现了秒级别的实时分析响应,使得实时快速决策的理念得以实现。
除了实时分析和实时交通,试再列举一个适合采用流计算的应用场景,并描述流计算可能带来怎样的改变
在金融市场上对资金流变动的监测,即使用实时的金融资金流动数据作为数据源输入,通过流计算实时分析、计算出资金流变动,使得决策人员能够获取实时数据做出决策。
试述Storm框架如何改变开发人员开发实时应用的方式
开发人员可以基于开源流处理框架Storm,快速地搭建一套健壮、易用的实时流处理系统,并配合Hadoop等平台,就可以低成本地做出很多以前很难想象的实时产品。
为什么说Storm流处理框架开发实时应用,其开发成本较低
以往开发人员在开发一个实时应用的时候,除了要关注处理逻辑,还要为实时数据的获取、传输、存储大伤脑筋;在Storm流处理框架下,Storm可以简单、高效、可靠处理流数据,并支持多种编程语言,且能方便地与数据库系统进行整合,从而开发强大的实时应用。
试述Twitter采用的分层数据处理框架
Twitter采用了由实时系统和批处理系统组成的分层数据处理架构;一方面,由Hadoop和ElephantDB组成了批处理系统;另一方面,由Storm和Cassandra组成实时系统。在计算查询时,该数据库会同时查询批处理视图和实时视图,并把它们合并起来得到最终结果。实时系统处理结果最终会由批处理系统来修正。
试列举几个Storm框架的主要特点
1) 整合性,可方便地与队列系统和数据库系统进行整合;
2) 简易的API;
3) 可扩展性,其并行特性使其可以运行在分布式集群中;
4) 容错性,可以自动进行故障节点的重启,以及节点故障时任务的重新分配;
5) 可靠的消息处理,保证每个消息都能完整处理;
6) 支持多种编程语言;
7) 快速部署,只需要少量的安装和配置就可以快读进行部署和使用;
8) 免费、开源。
试列举几个Storm框架的应用领域
实时分析、在线及其学习、持续学习、远程RPC、数据提取加载转换等。
Storm的主要术语包括Streams、Spouts、Bolts、Topology和Stream Groupings,请分别简要描述这几个术语
Streams:是对数据流的抽象描述,即一个无限的Tuple序列。这些Tuple序列会以分布式的方式并行的创建和处理。
Spouts:Streams的抽象源头,Spouts会从外部读取流数据并持续发出Tuple。
Bolts:抽象的状态转换过程,既可以处理Tuple,也可以将处理后的Tuple作为新的Streams发送给其他的Bolts。对Tuple的处理逻辑都封装在Bolts中,可执行过滤、聚合、查询等操作。
Topology:Storm将Spouts和Bolts组成的网络抽象成Topology,是Storm中最高层次的抽象概念,可以被提交到Storm集群执行。一个Topology就是一个流转换图,其中的节点是一个Spout或Bolt,边表示Bolt订阅了哪个Stream。
Stream Groupings:用于告知Topology如何在两个组件间(如Spout和Bolt之间或者不同的Bolt之间)进行Tuple的传送。
试述Tuple的概念
Tuple即元组,是元素的有序列表,每一个Tuple就是一个值列表,列表中的每个值都有一个名称,且该值可以是基本类型、字符类型、字节数组等。
一个Topology由哪些组件组成
处理组件(Spout或Bolt)、组件之间的连接。
不同的Bolt之间如何传输Tuple
通过序列化、套接字传输、反序列化完成。
//通过订阅Tuple的名称来接收相应的数据。
试列举几种Stream Groupings的方式
随机分组、按照字段分组、广播发送、全局分组、不分组、直接分组。
试述MapReduce Job和Storm Topology的区别与联系
其运行任务的方式类似:Hadoop上运行的是MapReduce作业,而在Storm上运行的是Topology。
区别是两者的任务大不相同,MapReduce作业最终会完成计算并结束运行,而Topology将持续处理消息(直到人为终止)。
Storm集群中的Master和Worker节点各自运行什么后台进程,这些进程又分别负责什么工作
Master负责运行“Nimbus”的后台程序,负责在集群范围中分发代码、为Worker分配任务和检测故障。
Worker负责运行“Supervisor”的后台程序,负责监听分配给它所在机器的工作,即根据Nimbus分配的任务来决定启动或停止Worker进程。
试述Zookeeper在Storm框架中的作用
Zookeeper作为分布式协调组件,负责一个Nimbus和多个Supervisor之间的所有协调工作。
Nimbus进程和Supervisor进程都是快速失败和无状态的,这样的设计有什么优点
节点故障时可以进行快速恢复。
Nimbus进程和Supervisor进程意外终止后,重启时是否能恢复到终止之前的状态,为什么
可以。这两个进程借助Zookeeper将状态信息存放在了Zookeeper中或本地磁盘中,当Nimbus进程或Supervisor进程终止后,一旦进程重启,他们将恢复之前的状态并继续工作。这种设计使Storm极其稳定。
试述Storm框架的工作流程
1) 客户端提交Topology到Storm集群中;
2) Nimbus将分配给Supervisor的任务写入Zookeeper;
3) Supervisor从Zookeeper中获取所分配的任务,并启动Worker进程;
4) Worker进程执行具体的任务。
试述Storm框架实现单词统计的一般流程
1) 从Spout中发送Stream(每个英文句子为一个Tuple);
2) 用于分割单词的Bolt将接收的句子分解为独立的单词,将单词作为Tuple的字段名发送出去;
3) 用于计数的Bolt接收表示单词的Tuple,并对其进行统计;
4) 输出每个单词以及单词出现的次数。
试述采用MapReduce框架进行单词统计与采用Storm框架进行单词统计有什么区别
MapReduce框架使用了Map和Reduce的过程,将文本进行分割后,由Map进行各文本段的单词计数再传输到Reduce中计数;而Storm框架使用了Spout和Bolt的抽象,由一个Bolt进行单词分割,另一个Bolt进行计数。
Storm框架中单词统计Topology中定义了两个Bolt,试述两个Bolt各自完成的功能,以及中间结果如何在两个Bolt之间传输
第一个Bolt用于单词的分割,该Bolt中的任务随机接收Spout发送的句子,并从接受的句子中提取出单词;
第二个Bolt接收第一个Bolt发送的Tuple进行处理,统计分割后的单词出现的次数。
Bolt通过订阅Tuple的名称来接收相应的数据,第一个Bolt声明其输出的Stream的名称为‘split’,第二个Bolt声明其订阅的Stream为‘split’。
在Storm的单词统计实例中,为何需要使用FieldGrouping()方法保证相同单词发送到同一个任务上进行处理
将具有相同字段值的所有Tuple(即单词相同的Tuple)发送到同一个任务中进行统计,从而保证了统计的准确性。
试述BSP模型中超步的3个组件及具体含义
局部计算:每个参与的处理器都有自身的计算任务,它们只读取存储在本地内存中的值,不同处理器的计算任务都是异步并且独立的。
通信:处理器群相互交换数据,交换的形式是,由一方发起推送(Put)和获取(Get)操作
栅栏同步:当一个处理器遇到“路障”,会等其他所有处理器完成它们的计算步骤,每一次同步也是一个超步的完成和下一个超步的开始。
Pregel为什么选择一种纯消息传递模型
1) 消息传递具有足够的表达能力;
2) 有助于提高系统整体性能;其消息模式采用同步和批量的方式传递消息,因此可以缓解远程读取的延迟。
给定一个连通图,请给出采用Pregel模型计算图中顶点最大值的计算过程。其中寻找最大值的函数可以通过继承Pregel中已定义好的一个基类——Vertex类实现,请实现该函数
在Vertex的原有类中改写Compute()函数,在这里比较节点V及其连接的节点Vi的值,如果V的值小于周围连接节点Vi的值,其值修改为连接节点的最大值;如果大于等于,节点V将值传递出去后进入“非活跃”状态。经过层层迭代直至图中没有活跃节点为止。
请简述Aggregator的作用,并以具体Aggregator的例子做说明
Aggregator提供了一种全局通信、监控和数据查看的机制。Aggregator的聚合功能,允许在整型和字符串类型上执行最大值、最小值、求和操作;还可以实现全局协同的功能,例如通过多个and条件来决定Combine()函数是否执行某些逻辑分支。
假设在同一个超步中,两个请求同时要求增加同一个顶点,但初始值不一样,Pregel中可能采用什么机制来解决该冲突
1) 局部有序。执行一个超步时,先执行删除操作,先删除边,再删除顶点;再执行增加操作,先增加顶点,再增加边;
2) Handler。用户可以通过在Vertex自定义的Hander来实现一个更好的冲突处理方式,或者系统随机挑选一个请求进行处理。
简述Pregel的执行过程
1) 选择集群中的多台机器执行图计算任务,一台机器作为Master,其他机器作为Worker。
2) Master把一个图分为多个分区,并把分区分配给多个Worker,一个Worker会收到一个或多个分区,每个Worker知道其他所有Worker所分配到的分区情况。
3) Master会把用户输入划分成多个部分,通常是基于文件边界进行划分。然后Master会为每个Worker分配用户输入的一部分。当所有的输入被加载后,图中的所有定点都会被标记为“活跃”状态。
4) Master向每个Worker发送指令,Worker收到指令后,开始运行一个超步。Worker会为自己管辖的每个分区分配一个线程,对于分区中的每个顶点,Worker会把来自上一个超步的、发送给这个顶点的消息传递给它,调用“活跃”状态顶点上的Compute()函数,在执行过程中,顶点可以对外发送消息。当所有工作完成后,Worker会通知Master,将“活跃”的顶点状态报告给Master。上述步骤不断重复直到所有顶点不再活跃且系统中不会有任何消息在传输,此时执行过程才会结束。
5) 计算过程结束后,Master会给所有的Worker发送指令,通知每个Worker对自己的计算结果进行持久化存储。
Master如何检测Worker是否失效?什么情况下确认Worker已失效?当Worker失效后,那些被分配到这些Worker的分区的当前状态信息就丢失了,这些分区丢失的信息可以恢复吗?如果可以的话,如何对这些信息进行恢复
Master会周期性的向每个Worker发送ping消息,Worker收到ping消息后会向Master反馈消息。如果Master在指定时间间隔内没有收到某个Worker的反馈消息,就会把该Worker标记为失效。这些丢失的状态信息会直接丢失。Master会把失效Worker所分配到的分区重新分配到其他处于正常工作状态的Worker集合上,然后所有这些分区会从最近的某超步S开始时写出的检查点中,重新加载状态信息,再执行从超步S到超步S1的所有操作。
试述Master和Worker的作用
Master:1)主要负责协调各个Worker执行任务,为每个Worker分配一个唯一的ID。2)Master维护着关于当前处于“有效”状态的所有Worker的各种信息。3)对Worker进行故障检测,并进行故障恢复。4)在内部运行了一个HTTP服务器来显示图计算过程的各种信息供用户在网页随时监控图计算执行的各个细节。
Worker:
对管辖分区的每个顶点进行遍历,并调用顶点上的Compute()函数。对于一个顶点需要发送消息的时候,Worker会判断目标顶点是否在自己机器上,如果在,直接将该消息放入与目标顶点相关的消息队列中,如果不在则将消息缓存到本地消息队列中,等到达到阈值的时候将这些消息批量异步发送到目标顶点所在在Worker上。
与其他串行算法(如Dijkstra或者Bellman-Ford算法)相比,本章中给出的Pregel系统的计算最短路径的算法有什么优势?
其优势是迭代次数少,即Pregel的迭代次数即开始顶点到最远的顶点(此时指经过的边最多)的边数。
最短路径问题问题是图论中最有名的问题之一,其中s-t最短路径在现实生活中应用最广泛,比如寻找最短驾驶路线等。请在Pregel模型下变成实现s-t最短路径问题
该问题其实是单源到每个顶点的最短路径的一个变形,即仍然按照寻找全部最短路径的方法,结束迭代的条件改为,和顶点t相邻的所有节点都不活跃即可。
试述采用MapReduce和Pregel执行图计算的差异
1) Pregel将PageRank处理对象看成连通图,而MapReduce看做键值树;
2) Pregel在顶点控制迭代次数和计算,MapReduce将计算批量化处理,并且按任务进行循环迭代控制。
3) 图算法如果用MapReduce实现,需要一系列的MapReduce调用。从一个阶段到下一个阶段时需要传递整个图的状态,会产生大量不必要的序列化和反序列化的开销。而Pregel使用超步简化了这个过程。
试述数据可视化的概念
数据可视化是指将大型数据集中的数据以图形图像的形式表示,并利用数据分析和开发工具发现其中未知信息的处理过程。
试述数据可视化的重要作用
让数据以可视化形式呈现,让枯燥复杂的数据以简单友好的图表形式展现出来,可以让数据变得更加通俗易懂,有助于用户更加方便快捷地理解数据的深层次含义,有效参与复杂的数据分析过程,提高数据分析效率,改善数据分析效果。
可视化工具主要包含哪些类型?各自的代表产品有哪些
入门级工具、信息图表工具、地图工具、时间线工具、高级分析工具。
请举出几个数据可视化的有趣案例
全球黑客活动、互联网地图、编程语言之间的影响力关系图。
试分析推荐系统的动机以及所能解决的问题
推荐系统可以通过分析用户的历史记录来了解用户的喜好,从而主动为用户推荐其感兴趣的信息,满足用户的个性化需求。
试述搜索引擎与推荐系统在为用户筛选信息时的区别
推荐系统通过研究用户的兴趣偏好,进行个性化计算;搜索引擎在用户没有明确需求的情况下,难以帮助用户对海量信息进行有效筛选。
试述长尾理论的概念
虽然绝大多数商品都不热门,但是这些不热门的商品总数量极其庞大,所累积的销售额将会是一个巨大的数字,也许会超过热门商品所带来的销售额。
请列举几种推荐算法,并进行简要描述
专家推荐:由资深的专业人士来进行商品的筛选和推荐。
基于统计的推荐:基于统计信息,即热门推荐等。
基于内容的推荐:是信息过滤技术的延伸与发展,通过机器学习方法去描述内容的特征,并基于内容特征来发现与之相似的内容。
协同过滤推荐:采用最近邻技术,利用用户的历史信息计算用户之间的距离,然后利用目标用户的最近邻居用户对商品的评价信息来预测目标用户对特定商品的喜好程度,
一个完整的推荐系统一般由3个部分组成,请说明这3个部分及其功能
用户建模模块:根据用户行为和属性数据来分析用户的兴趣和需求。
推荐对象建模模块:对推荐对象的特征进行建模。
推荐算法模块:采用推荐算法得到用户感兴趣的对象,并根据场景对推荐结果进行一定的过滤和调整。
一般推荐系统的结果包括在线计算结果和离线计算结果,试分析采用这种混合方式能带来什么好处,为什么能够提升推荐效果
离线计算部分对于数据量、算法复杂度、时间限制均较少,可得出较高准确度的推荐结果;在线计算部分能够快速响应推荐请求,容忍相随较低的推荐准确度;将两者结合能为用户提供准确度较高、响应速度较快的高质量推荐结果。
协同过滤算法是常用的推荐算法,包括基于用户的协同过滤和基于物品的协同过滤,试简要描述这两种协同过滤算法
基于用户的协同过滤:先找到和目标用户有相似兴趣的用户群体,然后将这个用户群体喜欢的,且目标用户没有听说过的物品推荐给目标用户。
基于物品的协同过滤:给目标用户推荐那些和他们之前喜欢的物品相似的物品。主要通过对用户的行为记录分析来记录物品之间的相似度。
试描述UserCF算法和ItemCF算法的一般实现步骤
UserCF算法:1)找到和目标用户兴趣相似的用户集合。2)找到该集合中的用户所喜欢的,且目标用户没有听说过的物品推荐给目标用户。
ItemCF算法:1)计算物品之间的相似度;2)根据物品的相似度和用户的历史行为,给用户生成推荐列表。
试列出UserCF和ItemCF算法各自适合的应用场景,并简要描述这两种算法的优缺点
UserCF算法更偏向于社会化,适用于新闻推荐、微博话题推荐等场景,推荐结果在新颖性有一定优势;但推荐结果相关性较弱,容易受大众影响而推荐热门物品,同时很难对推荐结果做出解释。此外,新用户或低活跃用户会遇到冷启动问题,即无法找到足够有效的相似用户来计算出合适的推荐结果。
ItemCF算法更偏向于个性化,适用于电子商务、电影、图书等应用场景,并且可以利用用户的历史行为为推荐结果做出解释,使用户更加信服推荐的效果。但是ItemCF算法更倾向于推荐与用户已购买商品类似的商品,往往会出现多样性不足、推荐新颖度较低的问题。
采用UserCF算法实现的推荐系统中,新用户或低活跃用户会遇到冷启动的问题,即无法找到足够有效的相似用户来计算出合适的推荐结果,请思考如何解决冷启动的问题
1) 提供非个性化推荐,如使用热门排行榜,等到用户数据收集到一定时候再切换为个性化推荐;
2) 利用用户注册信息,如人口统计学信息、用户兴趣的描述、从其他网站导入的用户站外行为来进行分析;
3) 选择合适的物品启动用户的兴趣,用户在登录时对一些物品进行反馈,手机用户对这些物品的兴趣信息,然后推荐和这些物品相似的物品。
4) 采用专家标注:让专业资深人士进行推荐和筛选。
采用ItemCF算法实现的推荐系统可能会遇到多样化不足、推荐新颖度较低的问题,请思考如何解决该问题
将基于物品的推荐转为一部分的基于用户推荐,使之更加社会化,能够挖掘出潜在的感兴趣的物品;并辅以热门排行榜等推荐,能够引发更多可能感兴趣的物品。
1推荐系统冷启动问题的常见解决方案_网络_javaisnotgood的博客-CSDN博客 https://blog.csdn.net/javaisnotgood/article/details/79487372
2.大数据技术原理与应用-林子雨版-课后习题答案_大数据_一个没有梦想的死程序员-CSDN博客 https://blog.csdn.net/weixin_42776111/article/details/93732839
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。