大数据最全大数据技术原理与应用-林子雨版-课后习题答案,程序员面试防坑宝典

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

3.云数据库有哪些特性?

答:1)动态可扩展 2)高可用性 3)较低的使用代价

4)易用性 5)高性能 6)免维护 7)安全

4.试述云数据库的影响。

答: 在大数据时代,每个企业几乎每天都在不断产生大量的数据。企业类型不同,对于存储的需求也千差万别,而云数据库可以很好地满足不同企业的个性化存储需求。

首先,云数据库可以满足大企业的海量数据存储需求。云数据库在当前数据爆炸的大数据时代具有广阔的应用前景。传统的关系数据库难以水平扩展,相本无法存储如此海量的数据。因此,具有高可扩展性的云数据库就成为企业海量数据存储管理的很好选择。

其次,云数据库可以满足中小企业的低成本数据存储需求。中小企业在IT 基础设施方面的投人比较有限,非常渴望从第三方方便、快捷、廉价地获得数据库服务。云数据库采用多租户方式同时为多个用户提供服务,降低了单个用户的使用成本,而且用户使用云数据库服务通常按需付费,不会浪费资源造成额外支出,因此,云数据库使用成本很低,对于中小企业而言可以大大降低企业的信息化门槛,让企业在付出较低成本的同时,获得优质的专业级数据库服务,从而有效提升企业信息化水平。

另外,云数据库可以满足企业动态变化的数据存储需求。企业在不同时期需要存储的数据量是不断变化的,有时增加,有时减少。在小规模应用的情况下,系统负载的变化可以由系统空闲的多余资源来处理,但是,在大规模应用的情况下,传统的关系数据库由于其伸缩性较差,不仅无法满足应用需求,而且会给企业带来高昂的存储成本和管理开销。而云数据库的良好伸缩性,可以让企业在需求增加时立即获得数据库能力的提升,在需求减少时立即释放多余的数据库能力,较好地满足企业的动态数据存储需求。

5.举例说明云数据库厂商及其代表性产品。

答:云数据库供应商主要分为三类。

  1. 传统的数据库厂商,如Teradata、Oracle、IBM DB2和Microsoft SQL Server等。

  2. 涉足数据库市场的云供应商,如Amazon、Google.Yahoo!、阿里、百度、腾讯等。

  3. 新兴厂商,如IVertica.LongJump 和EnterpriseDB等。

7.试述UMP 系统的功能。

答:

UMP系统是构建在一个大的集群之上的,通过多个组件的协同作业,整个系统实现了对用户透明的 容灾、读写分离、分库分表、资源管理、资源调度、资源隔离和数据安全功能。

1.容灾

云数据库必须向用户提供一直可用的数据库连接,当MySQL实例发生故障时,系统必须自动执行故障恢复,所有故障处理过程对于用户而言是透明的,用户不会感知到后台发生的一切。

为了实现容灾,UMP系统会为每个用户创建两个MySQL实例,一个是主库,一个是从库,而且,这两个MySQL 实例之间互相把对方设置为备份机,任意一个MySQL实例上面发生的更新都会复制到对方。同时,Proxy服务器可以保证只向主库写人数据。

2.读写分离

由于每个用户都有两个MySQL实例,即主库和从库,因此,可以充分利用主从库实现用户读写操作的分离,实现负载均衡。UMP系统实现了对于用户透明的读写分离功能,当整个功能被开启时,负责向用户提供访问MySQL数据库服务的Proxy 服务器,就会对用户发起的SQL 语句进行解析,如果属于写操作,就直接发送到主库,如果是读操作,就会被均衡地发送到主库和从库上执行。

3.分库分表

UMP支持对用户透明的分库分表(Shard/Horizontal Partition)。但是,用户在创建账号的时候需要指定类型为多实例,并且设置实例的个数,系统会根据用户设置来创建多组MySQL实例。除此以外,用户还需要自己设定分库分表规则,如需要确定分区字段,也就是根据哪个字段进行分库分表,还要确定分区字段里的值如何映射到不同的MySQL 实例上。

4.资源管理

UMP系统采用资源池机制来管理数据库服务器上的CPU、内存、磁盘等计算资源,所有的计算资源都放在资源池内进行统一分配,资源池是为MySQL 实例分配资源的基本单位。整个集群中的所有服务器会根据其机型、所在机房等因素被划分为多个资源池,每台服务器会被加人到相应的资源池。在资源池划分的基础上,UMP还在每台服务器内部采用Cgroup将资源进一步地细化,从而可以限制每个进程组使用资源的上限,同时保证进程组之间相互隔离。

5.资源调度

UMP系统中有3种规格的用户,分别是数据量和流量比较小的用户、中等规模用户以及需要分库分表的用户。多个小规模用户可以共享同一个MySQL实例。对于中等规模的用户,每个用户独占个MySQL 实例。用户可以根据自己的需求来调整内存空间和磁盘空间,如果用户需要更多的资源,就可以迁移到资源有空闲或者具有更高配置的服务器上对于分库分表的用户,会占有多个独立的MySQL 实例,这些实例既可以共存在同一台物理机上,也可以每个实例独占一台物理机。

UMP通过MySQL实例的迁移来实现资源调度。借助于阿里集团中间件团队开发的愚公系统,UMP 可以实现在不停机的情况下动态扩容、缩容和迁移。

6.资源隔离

当多个用户共享同一个MySQL 实例或者多个MySQL 实例共存在同一个物理机上时,为了保护用户应用和数据的安全,必须实现资源隔离,否则,某个用户过多消耗系统资源会严重影响到其他用户的操作性能。

7.数据安全

数据安全是让用户放心使用云数据库产品的关键,尤其是企业用户,数据库中存放了很多业务数据,有些属于商业机密,一旦泄露,会给企业造成损失。UMP 系统设计了多种机制来保证数据安全。

  1. SSL 数据库连接。

  2. 数据访问IP 白名单。

  3. 记录用户操作日志。

  4. SQL拦截。

13.  UMP 系统是如何保障数据安全的?

答:

  1. SSL 数据库连接。  SSL (Secure Sockets Layer) 是为网络通信提供安全及数据完整性的一种安全协议,它在传输层对网络连接进行加密。Proxy 服务器实现了完整的MySQL 客户端服务器协议,可以与客户端之间建立SSL 数据库连接。

  2. 数据访问IP 白名单。可以把允许访问云数据库的IP 地址放入“白名单”,只有白名单内的IP地址才能访问,其他IP地址的访问都会被拒绝,从而进一步保证账户安全。

  3. 记录用户操作日志。  用户的所有操作记录都会被记录到日志分析服务器,通过检查用户操作记录,可以发现隐藏的安全漏洞。

  4. SQL拦截。Proxy 服务器可以根据要求拦截多种类型的SQL 语句,比如全表扫描语句"select *”。

15.  简述RDS 中实例与数据库的概念。

答:  RDS实例或简称“实例”,是用户购买RDS服务的基本单位。在实例中可以创建多个数据库,可以使用常见的数据库客户端连接、管理及使用数据库。可以通过RDS管理控制台或OPEN API来创建、修改和删除数据库。各实例之间相互独立、资源隔离,相互之间不存在CPU、内存、IOPS等抢占问题。但是,同一实例中的不同数据库之间是资源共享的。每个实例拥有其自己的特性,如数据库类型、版本等,系统有相应的参数来控制实例行为。用户所购买RDS实例的性能,取决于购买RDS实例时所选择的配置,可供用户选择的硬件配置项为内存和磁盘容量。

RDS数据库或简称“数据库”,是用户在一个实例下创建的逻辑单元,一个实例可以创建多个数据库,在实例内数据库命名唯一,所有数据库都会共享该实例下的资源,如CPU、内存、磁盘容量等。RDS不支持使用标准的SQL 语句或客户端工具创建数据库,必须使用OPEN API或RDS管理控制台进行操作。

16.  列举连接RDS for MySQL 数据库的4 种方法。

答:  方法1: 使用客户端MySQL-Front访问。使用客户端MySQL-Front,在连接Host 框中输人数据实例链接地址、端口(默认3306)、数据库用户名和数据库密码后,单击“确定”按钮即可。

方法2: 使用数据库管理T 具Navicat MySQL。Navicat_MySQL 是一套专为MySQL 设计的强大的数据库管理及开发工具,可以在连接输人框中输人数据实例地址、端口(默认3306 )、数据库用户名和数据库密码后,单击“确定”按钮即可。

方法3: 使用MySQL 命令登录。用户安装MySQL 客户端后,可进人命令行方式连接数据库。命令格式如下。

mysql -u user_name -h yuqianli.mysql.rds.aliyuncs.com -P3306 -pxxxx

其中,-u指定的是用户名,-h指定的是主机名,-P指定的是端口,-p指定的是密码。

方法4: 使用阿里云控制台iDB Cloud访问。阿里云控制台iDB Cloud的页面如图6-7 所示,RDS 连接地址以及端口不需要再输人,只需在“用户名”中输人数据库的账号,在“密码”栏中输人数据库账号的密码,便可以登录RDS进行数据操作了。


1.试述MapReduce和Hadoop的关系。

答:  谷歌公司最先提出了分布式并行编程模型MapReduce, Hadoop MapReduce是它的开源实现。谷歌的MapReduce运行在分布式文件系统GFS上,与谷歌类似,HadoopMapReduce运行在分布式文件系统HDFS上。相对而言,HadoopMapReduce 要比谷歌MapReduce 的使用门槛低很多,程序员即使没有任何分布式程序开发经验,也可以很轻松地开发出分布式程序并部署到计算机集群中。

2.MapReduce 是处理大数据的有力工具,但不是每个任务都可以使用MapReduce 来进行处理。试述适合用MapReduce来处理的任务或者数据集需满足怎样的要求。

答: 适合用MapReduce来处理的数据集,需要满足一个前提条件: 待处理的数据集可以分解成许多小的数据集,而且每一个小数据集都可以完全并行地进行处理。

3. MapReduce模型采用Master(JobTracker)-Slave(TaskTracker)结构,试描述JobTracker和TasKTracker的功能。

答:  MapReduce 框架采用了Master/Slave 架构,包括一个Master 和若干个Slave。Master 上运行JobTracker,Slave 上运行TaskTrackero 用户提交的每个计算作业,会被划分成若千个任务。JobTracker 负责作业和任务的调度,监控它们的执行,并重新调度已经失败的任务。TaskTracker负责执行由JobTracker指派的任务。

6.试述MapReduce的工作流程(需包括提交任务、Map、Shuffle、Reduce的过程)。

9.MapReduce中有这样一个原则:移动计算比移动数据更经济。试述什么是本地计算,并分析为何要采用本地计算。

答:  MapReduce设计的一个理念就是“计算向数据靠拢”,而不是“数据向计算靠拢”,因为移动数据需要大量的网络传输开销,尤其是在大规模数据环境下,这种开销尤为惊人,所以,移动计算要比移动数据更加经济。

本地计算:在一个集群中,只要有可能,MapReduce框架就会将Map程序就近地在HDFS数据所在的节点运行,即将计算节点和存储节点放在一起运行,从而减少了节点间的数据移动开销。

10.试说明一个MapReduce程序在运行期间,所启动的Map任务数量和Reduce 任务数量各是由什么因素决定的。

11.是否所有的MapReduce程序都需要经过Map和Reduce这两个过程?如果不是,请举例说明。

答:不是。对于关系的选择运算,只需要Map过程就能实现,对于关系R 中的每个元组t,检测是否是满足条件的所需元组,如果满足条件,则输出键值对<,>,也就是说,键和值都是t。这时的Reduce函数就只是一个恒等式,对输入不做任何变换就直接输出。

12.试分析为何采用Combiner可以减少数据传输量?是否所有的MapReduce程序都可以采用Combiner?为什么?

答:  对于每个分区内的所有键值对,后台线程会根据key 对它们进行内存排序(Sort ),排序是MapReduce 的默认操作。排序结束后,还包含一个可选的合并(Combine )操作。如果用户事先没有定义Combiner 函数,就不用进行合并操作。如果用户事先定义了Combiner 函数,则这个时候会执行合并操作,从而减少需要溢写到磁盘的数据量。

所谓“合并”,是指将那些具有相同key 的<key,value>的value 加起来,比如,有两个键值对<*xmu",1>和<*xmu",1>,经过合并操作以后就可以得到一个键值对<*xmu",2>,减少了键值对的数量。

不过,并非所有场合都可以使用Combiner,因为,Combiner的输出是Reduce任务的输人,Combiner绝不能改变Reduce任务最终的计算结果,一般而言,累加、最大值等场景可以使用合并操作。

13.MapReduce程序的输入文件、输出文件都存储在HDFS中,而在Map任务完成时的中间结果则存储在本地磁盘中。试分析中间结果存储在本地磁盘而不是HDFS上有何优缺点。

答:

第八章


1.试述在Hadoop推出之后其优化与发展主要体现在哪两个方面。

答:Hadoop对MapReduce和GDFS的许多方面做了有针对性的改进提升。

2.试述HDFS1.0中只包含一个名称节点会带来哪些问题。

答:HDFS1.0采用单点名称节点的设计,不仅会带来单点故障问题,还存在可扩展性、性能和隔离性等问题。

在可扩展性方面,名称节点把整个HDFS文件系统中的元数据信息都保存在自己的内存中,HDFS1.0中只有一个名称节点,不可以水平扩展,而单个名称节点的内存空间是由上限的,这限制了系统中数据块、文件和目录的数目。

在系统整体性能方面,整个HDFS文件系统的性能会受限于单个名称节点的吞吐量。

在隔离性方面,单个名称节点难以提供不同程序之间的隔离性,一个程序可能会影响会影响其他运行的程序。

3.请描述HDFS HA架构组成组建及其具体功能。

答:在一个典型的HA集群中,一般设置两个名称节点,其中一个名称节点处于“活跃”状态,另一个处于“待命”状态。处于活跃状态的名称节点负责对外处理所有客户端的请求,而处于待命状态的名称节点则作为备用节点,保存了足够多的系统元数据,当名称节点出现故障时提供快速回复能力也就是说,在HDFS HA中,处于待命状态的名称节点提供了“热备份”,一旦活跃名称节点出现故障,就可以立即切换到待命名称节点,不会影响到系统的正常对外服务。

4.请分析HDFS HA架构中数据节点如何和名称节点保持通信。

答:在HDFS联邦中,所有名称节点会共享底层的数据节点存储资源。每个数据节点要向集群中所有的名称节点注册,并周期性地向名称节点发送“心跳”和块信息,报告自己的状态,同时也会处理来自名称节点的指令。

6、请描述HDFS联邦中“块池”的概念,并分析为什么HDFS联邦中的一个名称节点失效,也不会影响到与它相关的数据节点继续为其他名称节点提供服务。

答:HDFS联邦拥有多个独立的命名空间,其中,每一个命名空间管理属于自己的一组块,这些属于同一个命名空间的块构成一个“块池”。

每个数据节点会为多个块池提供块的存储。可以看出,数据节点是一个物理逻辑,而块池则属于逻辑概念,一个块池是一组块的逻辑集合,块池中的各个块实际上是存储在各个不同的数据节点中的。因此HDFS联邦中的一个名称节点失效,也不会影响到与它相关的数据节点继续为其他名称节点提供服务。

7.请阐述MapReduce1.0体系结构中存在的问题。

答:(1)存在单点故障;

  1. JobTracker“大包大揽”导致任务过重;

  2. 容易出现内存溢出;

  3. 资源划分不合理。

8.请描述YARN架构中各组件的功能。

答:

组件

功能

ResourceManager

①处理客户端请求

②启动/监控ApplicationMaster

③监控NodeManager

④资源分配与调度

ApplicationMaster

①为应用程序申请资源,并分配给内部任务

②任务调度、监控与容错

NodeManager

①单个节点上的资源管理

②处理来自ResourceManager的命令

③处理来自ApplicationMaster的命令

9.请描述在YARN框架中执行一个MapReduce程序时,从提交到完成需要经历的具体步骤。

答:①用户编写客户端应用程序,向YARN提交应用程序,提交的内容包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。

②YARN中的ResourceManager负责接收和处理来自客户端的请求。接到客户端应用程序请求后,ResourceManager里面的调度器会为应用程序分配一个容器。同时,ResourceManager的应用程序管理器会与该容器所在的NodeManager通信,为该应用程序在该容器中启动一个ApplicationMaster

③ApplicationMaster被创建后会首先向ResourceManager注册,从而使得用户可以通过ResourceManager来直接查看应用程序的运行状态

④ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请资源。

⑤ResourceManager以“容器”的形式向提出申请的ApplicationMaster分配资源,一旦ApplicationMaster申请到资源后,就会与该容器所在的NodeManager进行通信,要求它启动任务。

⑥当ApplicationMaster要求容器启动任务时,它会为任务设置好运行环境(包括环境变量、JAR包、二进制程序等),然后将任务启动命令写到一个脚本中,最后通过在容器中运行该脚本来启动任务。

⑦各个任务通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,让ApplicationMaster可以随时掌握各个任务的运行状态,从而可以在任务失败时重启任务。

⑧应用程序运行完成后,ApplicationMaster向ResourceManager的应用程序管理器注销并关闭自己。若ApplicationMaster因故失败,ResourceManager中的应用程序管理器会监测到失败的情形,然后将其重新启动,直到所有任务执行完毕。

10.请对YARN和MapReduce1.0框架进行优劣势对比分析。

答:(1)大大减少了承担中心服务功能的ResourceManager的资源消耗。MapReduce1.0中的JobTracker需要同时承担资源管理、任务调度和任务监控等三大功能,而YARN中的ResourceManager只需要负责资源管理,需要消耗大量资源的任务调度和监控重启工作则交由ApplicationMaster来完成。由于每个作业都有与之关联的独立的ApplicationMaster,所以,系统中存在多个作业时,就会同时存在多个ApplicationMaster,这就实现了监控任务的分布化,不再像MapReduce1.0那样监控任务只集中在一个JobTracker上。

  1. MapReduce1.0既是一个计算框架,又是一个资源管理调度框架,但是只能支持MapReduce编程模型。而YARN则是一个纯粹的资源调度管理框架,在它上面可以运行包括MapReduce在内的不同类型的计算框架,默认类型是MapReduce。因为,YARN中的ApplicationMaster是可变更的,针对不同的计算框架,用户可以采用任何编程语言自己编写服务于该计算框架的ApplicationMaster。比如,可以编写一个面向MapReduce计算框架的ApplicationMaster,从而使得MapReduce计算框架可以运行在YARN框架之上。同理,还可以编写面向Spark、Storm等计算框架的ApplicationMaster,从而使得Spark、Storm等计算框架也可以运行在YARN框架之上。

  2. YARN中的资源管理比MapReduce1.0更加高效。YARN采用容器为单位进行资源管理和分配,而不是以槽为单位,避免了MapReduce1.0中槽的闲置浪费情况,大大提高了资源的利用率。

11.请分别描述Pig、Tez和Kafka的功能。

答:①Pig是Hadoop生态系统的一个组件,提供了类似SQL的Pig Latin语言(包含Filter、GroupBy、Join、OrderBy等操作,同时也支持用户自定义函数),允许用户通过编写简单的脚本来实现复杂的数据分析,而不需要编写复杂的MapReduce应用程序,Pig会自动把用户编写的脚本转换成MapReduce作业在Hadoop集群上运行,而且具备对生成的MapReduce程序进行自动优化的功能,所以用户在编写Pig程序的时候,不需要关心程序的运行效率,这就大大减少了用户编程时间。

②Tez是Apache开源的支持DAG作业的计算框架,直接源于MapReduce框架,核心思想是将Map和Reduce两个操作进一步进行拆分,即Map被拆分成Input、Processor、Sort、Merge和Output,Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等,经过分解后的这些元操作可以进行自由任意组合产生新的操作,经过一些控制程序组装后就可形成一个大的DAG作业。

通过DAG作业的方式运行MapReduce作业,提供了程序运行的整体处理逻辑,就可以去除工作流当中多余的Map阶段,减少不必要的操作,提升数据处理的性能。Hortonworks把Tez应用到数据仓库Hive的优化中,使得性能提升了约100倍。

③Kafka是由LinkedIn公司开发的一种高吞吐量的分布式发布订阅消息系统,用户通过Kafka系统可以发布大量的消息,同时也能实时订阅消费消息。Kafka设计的初衷是构建一个可以处理海量日志、用户行为和网站运营统计等的数据处理框架。

第九章


1.Spark是基于内存计算的大数据计算平台,试述Spark的主要特点。

答:Spark具有如下4个主要特点:

①运行速度快;②容易使用;③通用性;④运行模式多样。

2.Spark的出现是为了解决Hadoop MapReduce的不足,试列举Hadoop MapReduce的几个缺陷,并说明Spark具备哪些优点。

答:(1)Hadoop存在以下缺点:

①表达能力有限;②磁盘IO开销大;③延迟高

  1. Spark主要有如下优点:

①Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作,还提供了多种数据集操作类型,编程模型比MapReduce更灵活;

②Spark提供了内存计算,中间结果直接存放内存中,带来更高的迭代运算效率;

③Spark基于DAG的任务调度执行机制,要优于MapReduce的迭代执行机制。

3.美国加州大学伯克利分校提出的数据分析的软件栈BDAS认为目前的大数据处理可以分为哪三个类型?

答:①复杂的批量数据处理:时间跨度通常在数十分钟到数小时之间;

②基于历史数据的交互式查询:时间跨度通常在数十秒到数分钟之间;

③基于实时数据流的数据处理:时间跨度通常在数百毫秒到数秒之间。

4.Spark已打造出结构一体化,功能多样化的大数据生态系统,试述Spark的生态系统。

答:Spark的设计遵循“一个软件栈满足不同应用场景”的理念,逐渐形成一套完整生态系统,既能够提供内存计算框架,也可以支持SQL即席查询、实时流式计算、机器学习和图计算等。Spark可以部署在资源管理器YARN之上,提供一站式的大数据解决方案。因此,Spark所提供的生态系统同时支持批处理、交互式查询和流数据处理。

5.从Hadoop+Storm架构转向Spark架构可带来哪些好处?

答:(1)实现一键式安装和配置、线程级别的任务监控和告警;

(2)降低硬件集群、软件维护、任务监控和应用开发的难度;

  1. 便于做成统一的硬件、计算平台资源池。

6.试述“Spark on YARN”的概念。

答:Spark可以运行与YARN之上,与Hadoop进行统一部署,即“Spark on YARN”,其架构如图所示,资源管理和调度以来YARN,分布式存储则以来HDFS。

7.试述如下Spark的几个主要概念:RDD、DAG、阶段、分区、窄依赖、宽依赖。

答:①RDD:是弹性分布式数据集(Resilient Distributed Dataset)的英文缩写,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型。

②DAG:是Directed Acyclic Graph(有向无环图)的英文缩写,反映RDD之间的依赖关系。

③阶段:是作业的基本调度单位,一个作业会分为多组任务,每组任务被称为“阶段”,或者也被称为“任务集”。

④分区:一个RDD就是一个分布式对象集合,本质上是一个只读的分区记录集合,每个RDD可以分成多个分区,每个分区就是一个数据集片段。

⑤窄依赖:父RDD的一个分区只被一个子RDD的一个分区所使用就是窄依赖。

⑥宽依赖:父RDD的一个分区被一个子RDD的多个分区所使用就是宽依赖。

8.Spark对RDD的操作主要分为行动(Action)和转换(Transformation)两种类型,两种类型操作的区别是什么?

答:行动(Action):在数据集上进行运算,返回计算值。

转换(Transformation):基于现有的数据集创建一个新的数据集。

第十章


1试述流数据的概念

流数据,即数据以大量、快速、时变的流形式持续到达

2试述流数据的特点

流数据具有如下特征:

数据快速持续到达,潜在大小也许是无穷无尽的

数据来源众多,格式复杂

数据量大,但是不十分关注存储,一旦经过处理,要么被丢弃,要么被归档存储

注重数据的整体价值,不过分关注个别数据

数据顺序颠倒,或者不完整,系统无法控制将要处理的新到达的数据元素的顺序

4试述流计算的需求

对于一个流计算系统来说,它应达到如下需求:

高性能:处理大数据的基本要求,如每秒处理几十万条数据

海量式:支持TB级甚至是PB级的数据规模

实时性:保证较低的延迟时间,达到秒级别,甚至是毫秒级别

分布式:支持大数据的基本架构,必须能够平滑扩展

易用性:能够快速进行开发和部署

可靠性:能可靠地处理流数据

7列举几个常见的流计算框架

目前有三类常见的流计算框架和平台:商业级的流计算平台、开源流计算框架、公司为支持自身业务开发的流计算框架

1商业级:IBM InfoSphere Streams和IBM StreamBase

2较为常见的是开源流计算框架,代表如下:

Twitter Storm:免费、开源的分布式实时计算系统,可简单、高效、可靠地处理大量的流数据

Yahoo! S4(Simple Scalable Streaming System):开源流计算平台,是通用的、分布式的、可扩展的、分区容错的、可插拔的流式系统

3公司为支持自身业务开发的流计算框架:

Facebook Puma

Dstream(百度)

银河流数据处理平台(淘宝)

8试述流计算的一般处理流程

流计算的处理流程一般包含三个阶段:数据实时采集、数据实时计算、实时查询服务

流计算处理流程示意图

20试列举几个Storm框架的应用领域

Storm框架可以方便地与数据库系统进行整合,从而开发出强大的实时计算系统

Storm可用于许多领域中,如实时分析、在线机器学习、持续计算、远程RPC、数据提取加载转换等

21Storm的主要术语包括Streams,Spouts、Bolts、Topology和Stream Groupings,请分别简要描述这几个术语

  1. Streams:Storm将流数据Stream描述成一个无限的Tuple序列,这些Tuple序列会以分布式的方式并行地创建和处理

  2. Storm框架可以方便地与数据库系统进行整合,从而开发出强大的实时计算系统

  3. Bolt:Storm将Streams的状态转换过程抽象为Bolt。Bolt即可以处理Tuple,也可以将处理后的Tuple作为新的Streams发送给其他Bolt

  4. Topology:Storm将Spouts和Bolts组成的网络抽象成Topology,它可以被提交到Storm集群执行。Topology可视为流转换图,图中节点是一个Spout或Bolt,边则表示Bolt订阅了哪个Stream。当Spout或者Bolt发送元组时,它会把元组发送到每个订阅了该Stream的Bolt上进行处理

  5. Topology:Storm将Spouts和Bolts组成的网络抽象成Topology,它可以被提交到Storm集群执行。Topology可视为流转换图,图中节点是一个Spout或Bolt,边则表示Bolt订阅了哪个Stream。当Spout或者Bolt发送元组时,它会把元组发送到每个订阅了该Stream的Bolt上进行处理

22一个Topolog由哪些组件组成?

  • Topology里面的每个处理组件(Spout或Bolt)都包含处理逻辑, 而组件之间的连接则表示数据流动的方向

27Storm集群中的Master节点和Work节点各自运行什么后台进程?这些进程又分别负责什么工作?

Storm集群采用“Master—Worker”的节点方式:

Master节点运行名为“Nimbus”的后台程序(类似Hadoop中的“JobTracker”),负责在集群范围内分发代码、为Worker分配任务和监测故障

Worker节点运行名为“Supervisor”的后台程序,负责监听分配给它所在机器的工作,即根据Nimbus分配的任务来决定启动或停止Worker进程,一个Worker节点上同时运行若干个Worker进程

28 试述Zookeeper在Storm框架中的作用

Storm使用Zookeeper来作为分布式协调组件,负责Nimbus和多个Supervisor之间的所有协调工作。借助于Zookeeper,若Nimbus进程或Supervisor进程意外终止,重启时也能读取、恢复之前的状态并继续工作,使得Storm极其稳定

31试述Storm框架的工作流程

Storm的工作流程如下图所示:

  • 所有Topology任务的提交必须在Storm客户端节点上进行,提交后,由Nimbus节点分配给其他Supervisor节点进行处理

  • Nimbus节点首先将提交的Topology进行分片,分成一个个Task,分配给相应的Supervisor,并将Task和Supervisor相关的信息提交到Zookeeper集群上

  • Supervisor会去Zookeeper集群上认领自己的Task,通知自己的Worker进程进行Task的处理

  • 说明:在提交了一个Topology之后,Storm就会创建Spout/Bolt实例并进行序列化。之后,将序列化的组件发送给所有的任务所在的机器(即Supervisor节点),在每一个任务上反序列化组件

第11章


1.试述BSP模型中的超步的3个组件及具体含义。

答:①局部通信。每个参与的处理器都有自身的计算任务,它们只读取存储在本地内存中的值,不同处理器的计算任务都是异步并且独立的。

②通信。处理器群相互交换数据,交换的形式是,由一方发起推送(Put)和获取(Get)操作

③栅栏同步。当一个处理器遇到“路障”(或栅栏),会等其他所有的处理器完成它们的计算步骤;每一次同步也是一个超步的完成和下一个超步的开始。

2.Pregel为什么选择一种纯消息传递模型?

答:采用这种做法主要基于以下两个原因。

①消息传递具有足够的表达能力,没有必要使用远程读取或共享内存的方式。

②有助于提升系统整体性能。大型图计算通常是由一个集群完成的,集群环境中执行远程数据读取会有较高的时间延迟;Pregel的消息模式采用异步和批量的方式传递消息,因此可以缓解远程 读取的延迟。

4.请简述Aggregator的作用,并以具体Aggregator的作用,并以具体Aggregator的例子做说明。

答:Aggregator提供了一种全局通信、监控和数据查看的机制。Aggregator的聚合功能,允许在整型和字符串类型上执行最大值、最小值、求和操作,比如可以定义一个“Sum”Aggregator来统计每个顶点的出射边数量,最后相加可以得到整个图的边的数量。Aggregator还可以实现全局协同的功能,比如当可以设计“and”Aggregator来决定在某个超步中Compute()函数是否执行某些逻辑分支,只有当“and”Aggregator显示所有顶点都满足了某条件时,才去执行这些逻辑分支。

6.简述Pregel的执行过程。

答:(1)选择集群中的多台机器执行图计算任务,每台机器上运行用户程序的一个副本,其中,有一台机器会被选为Master,其他机器作为Worker。

(2)Master把一个图分成多个分区,并把分区分配到多个Worker。

(3)Master会把用户输入划分成多个部分,通常是基于文件边界进行划分。

(4)Master向每个Worker发送指令,Worker收到指令后,开始运行一个超步。当完成以后,Worker会通知Master,并把自己在下一个超步还处于“活跃”状态的顶点的数量报告给Master。上述步骤会被不断重复,直到所有顶点都不再活跃并且系统中不会有任何消息在传输,这时,执行过程才会结束。

(5)计算过程结束后,Master会给所有的Worker发送指令,通知每个Worker对自己的计算结果进行持久化存储。

8.试述Worker和Master的作用。

答:Worker的作用:借助于名称服务系统定位到Master的位置,并向Master发送自己的注册信息,Master会为每个Worker分配一个唯一的ID。在一个Worker中,它所管辖的分区状态信息被保存在内存。在每个超步中,Worker会对自己所管辖分区中的每个顶点进行遍历,并调用顶点上的Compute()函数。

Master的作用:Pregel采用检查点(CheckPoint)机制来实现容错。在每个超步的开始,Master会通知所有的Worker把自己管辖的分区的状态写入持久化存储设备。Master周期地ping每个Worker,Worker收到ping消息后向Master反馈消息。如果在指定的时间间隔内没有收到某个Worker的反馈,Master就会将它标为“失效”,并启动恢复模式。

第12章


1.试述数据可视化的概念。

答:数据可视化是指将大型数据集中的数据以图形图像形式表示,并利用数据分析和开发工具发现其中未知信息的处理过程。数据可视化技术的基本思想是将数据库中每一个数据项作为单个图元素表示,大量的数据集构成数据图像,同时将数据的各个属性值以多维数据的形式表示,可以从不同的维度观察数据,从而对数据进行更深入的观察和分析。

2.试述数据可视化的重要作用。

答:①观测、跟踪数据。利用变化的数据生成实时变化的可视化图表,可以让人们一眼看出各种参数的动态变化过程,有效跟踪各种参数值。

②分析数据。利用可视化技术,实时呈现当前分析结果,引导用户参与分析过程,根据用户反馈信息执行后续分析操作,完成用户与分析算法的全程交互,实现数据分析算法与用户领域知识的完美结合。

③辅助理解数据。帮助普通用户更快、更准确地理解数据背后的定义。

④增强数据吸引力。枯燥的数据被制成具有强大视觉冲击力和说服力的图像,可以大大增强读者的阅读兴趣。

3.可视化工具主要包含哪些类型?各自的代表产品有哪些?

答:主要包括入门级工具(Excel)、信息图表工具(Google Chart API、D3、Visual.ly、Raphael、Flot、Tableau、大数据魔镜)、地图工具(Modest Maps、Leaflet、PolyMaps、OpenLayers、Kartography、Google Fushion Tables、Quanum GIS)、时间线工具(Timetoast、Xtimeline、Timeslide、Dipity)和高级分析工具(Processing、NodeBox、R、Weka和Gephi)等。

第十三章


1.试分析推荐系统的动机以及所能解决的问题。

答:为了让用户从海量信息中高效地获得自己所需的信息,推荐系统应运而生。

推荐系统是大数据在互联网领域的典型应用,它可以通过分析用户的历史记录来了解用户的喜好,从而主动为用户推荐其感兴趣的信息,满足用户的个性化推荐需求

推荐系统是自动联系用户和物品的一种工具,和搜索引擎相比,推荐系统通过研究用户的兴趣偏好,进行个性化计算。推荐系统可发现用户的兴趣点,帮助用户从海量信息中去发掘自己潜在的需求

4.试列举几种推荐算法,并进行简要描述

答: 基于用户的协同过滤(UserCF),基于物品的协同过滤(ItemCF)

UserCF算法的实现主要包括找到和目标用户兴趣相似的用户集合和找到该集合中的用户所喜欢的、且目标用户没有听说过的物品推荐给目标用户

ItemCF算法是给目标用户推荐那些和他们之前喜欢的物品相似的物品。ItemCF算法主要通过分析用户的行为记录来计算物品之间的相似度

12.现有用户a、b、c和物品A、B、C、D、E,其关系如图所示,请使用基于用户的协同过滤算法,给出物品到用户倒排表的建立过程及用户相似度矩阵,并给用户c的推荐列表

用户对应物品列表

用户a    物品A、B、C

用户b    物品B、C、D、E

用户c    物品B、C

物品对应用户列表

物品A 用户a

物品B 用户a、b

物品C 用户a、b、c

物品D 用户b

物品E 用户b

相似度矩阵

a    b   c

a   0    2   1

b   2    0   1

c 1    1   0

W(A,B) = 2/√3*4

W(A,C) = 1/√3*2

W(B,C) = 1/√4*2

P(c,B)= CA+CB = 1/√3*2+1/√4*2

P(c,C)= CA+CB = 1/√3*2+1/√4*2

P(c,A) = CA =  1/√3*2

P(c,D) = CB = 1/√4*2

P(c,E) = CB = 1/√4*2

给予用户c的推荐列表为: A、B、C

① 论述“德国工业4.0”、“日本工业白皮书”内涵,说清国际上关于工业4.0的要求、工业物联网的内涵;②分析上述两个佛山市制造业的现状,与国际上工业4.0要求的差距;③如何在佛山市上述两个制造业的生产、仓储等环节布局传感器,进行生产、仓储等环节的数据采集;④将人力资源数据、行政管理数据、销售数据、市场数据以及生产、仓储数据进行整合构成企业大数据资源;⑤进行大数据分析框架设计,给出工业产品智能制造的路径以及个性化工业产品设计的思路;⑥进行工业大数据运营,从而使运营大数据的企业自身能够盈利的措施。

论述题:


结合大数据、人工智能技术,论述佛山市陶瓷制造业如何进行产业升级?

德国工业4.0可以概括为:一个核心,两个重点,三大集成,四个特征和六项措施。一个核心:互联网+制造业,将信息物理融合系统(CPS)广泛深入地应用于制造业,构建智能工厂、实现智能制造。两个重点:领先的供应商策略,成为“智能生产”设备的主要供应者;主导的市场策略,设计并实施一套全面的知识和技术转化方案,引领市场发展。三大集成:企业内部灵活且可重新组合的纵向集成,企业之间价值链的横向集成,全社会价值链的端到端工程数字化集成。四个特征:生产可调节,可自我调节以应对不同形势;产品可识别,可以在任何时候把产品分辨出来;需求可变通,可以根据临时的需求变化而改变设计、构造、计划、生产和运作,并且仍有获利空间;四是过程可监测,可以实时针对商业模式全过程进行监测。六项措施:实现技术标准化和开放标准的参考体系;建立复杂模型管理系统;建立一套综合的工业宽带基础设施;建立安全保障机制和规章制度;创新工作组织和设计方式;加强培训和持续职业教育。

比较德国工业4.0与佛山市制造业的现状,一个重要的区别在于,德国工业4.0战略是一个革命性的基础性的科技战略。其立足点并不是单纯提升某几个工业制造技术,而是从制造方式最基础层面上进行变革,从而实现整个工业发展的质的飞跃。因此,德国工业4.0战略的核心内容并不拘泥于工业产值数据这个层面上“量的变化”,而更加关注工业生产方式的“质的变化”。相对于德国工业4.0,佛山制造业强调的是在现有的工业制造水平和技术上,通过“互联网+”这种工具的应用,实现结构的变化和产量的增加。这种区别就好比佛山制造业是在工业现阶段水平和思维模式上寻求阶段内的改进和发展,德国则是寻求从工业3.0阶段跨越到工业4.0阶段,实现“质的变化”。这种战略思想上的差别应该说是客观条件的反映,符合现实基础,但也说明佛山制造业缺少战略上的理论深度和技术高度,也缺少市场上的感召力和影响力。
回顾佛山市这两年陶瓷行业的生产发展状况,我们可以清晰地看到持续稳健和相对高速发展的企业是坚守制造业本质的企业且生产效率和生产环境保持领先行业的进步速度,例如喷墨技术比较成熟地运用于陶瓷行业,是陶瓷行业迈向工业4.0的发端。很多人更多地担心喷墨技术会加剧陶瓷行业的同质化,却忽略了喷墨技术的运用恰恰会加剧陶瓷制造业的分化,因为更优秀的企业更有机会靠近工业4.0。
而对于陶瓷产业的仓储,加上各种RFID标签以及各种传感器等,集成了信息技术、条码技术、电子标签技术、web技术及计算机应用技术等,将仓库管理、无线扫描、电子显示、web应用有机的结合,实现信息资源充分利用,加快网络化进程。加上物联网技术的仓储技术能实时掌控库存情况,对库位状态进行监控,通过数字分析等方法整合资源,更为充分利用有限仓库空间。而这意味着公司管理模式的全新转变,从传统的“结果导向”转变成“过程导向”;从数据录入转变为数据采集及录入;从人工找货转变成为导向定位取货,避免了可能发生的人为错误,极大程度提升了管理效率,节约了成本。在企业运营过程中,随着依靠经验管理的工作方式向依靠数字分析转变,公司将能加速资金周转,提升供应链响应速度。
利用大数据技术以及物联网技术,可以减少人力资源的浪费以及管理精力的消耗,从而使陶瓷业通过运营大数据从而自身能够盈利。将人力资源数据、行政管理数据、销售数据、市场数据以及生产、仓储数据进行整合构成企业大数据资源,然后,使得企业了解用户,锁定资源,规划生产,开展服务等,进而使得企业能够盈利。

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

0阶段跨越到工业4.0阶段,实现“质的变化”。这种战略思想上的差别应该说是客观条件的反映,符合现实基础,但也说明佛山制造业缺少战略上的理论深度和技术高度,也缺少市场上的感召力和影响力。
回顾佛山市这两年陶瓷行业的生产发展状况,我们可以清晰地看到持续稳健和相对高速发展的企业是坚守制造业本质的企业且生产效率和生产环境保持领先行业的进步速度,例如喷墨技术比较成熟地运用于陶瓷行业,是陶瓷行业迈向工业4.0的发端。很多人更多地担心喷墨技术会加剧陶瓷行业的同质化,却忽略了喷墨技术的运用恰恰会加剧陶瓷制造业的分化,因为更优秀的企业更有机会靠近工业4.0。
而对于陶瓷产业的仓储,加上各种RFID标签以及各种传感器等,集成了信息技术、条码技术、电子标签技术、web技术及计算机应用技术等,将仓库管理、无线扫描、电子显示、web应用有机的结合,实现信息资源充分利用,加快网络化进程。加上物联网技术的仓储技术能实时掌控库存情况,对库位状态进行监控,通过数字分析等方法整合资源,更为充分利用有限仓库空间。而这意味着公司管理模式的全新转变,从传统的“结果导向”转变成“过程导向”;从数据录入转变为数据采集及录入;从人工找货转变成为导向定位取货,避免了可能发生的人为错误,极大程度提升了管理效率,节约了成本。在企业运营过程中,随着依靠经验管理的工作方式向依靠数字分析转变,公司将能加速资金周转,提升供应链响应速度。
利用大数据技术以及物联网技术,可以减少人力资源的浪费以及管理精力的消耗,从而使陶瓷业通过运营大数据从而自身能够盈利。将人力资源数据、行政管理数据、销售数据、市场数据以及生产、仓储数据进行整合构成企业大数据资源,然后,使得企业了解用户,锁定资源,规划生产,开展服务等,进而使得企业能够盈利。

[外链图片转存中…(img-Ra3I4xgT-1715759454132)]
[外链图片转存中…(img-GBmFDKkx-1715759454132)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值