




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、云计算与大数据技术理论及应用习题解答参考第 1 章 绪论一、 选择题1, AB 2, D 3, B 4, ACD二、 简答题1, 参考 1.1.1 和 1.1.2 节2, 参考 1. 2 节3, 答: CAP 定理是指对于一个分布式计算系统来说,不可能同时满足一致性( C:Consistency)、可用性( A: Availability )和分区容错性( P: Partition tolerance)这三个基本需求,最多只能同时满足其中的两项,不可能同时满足三项。当 CAP 定理应用在分布式存储系统中,最多只能实现上面的两点。而由于当前的网络硬件肯定 会出现延迟丢包等问题,所以分区容错性是我
2、们必须需要实现的。所以,我们在设 计分布式系统时只能在一致性和可用性之间进行权衡。4, 参考 1. 2 节第 2 章 分布式计算编程基础一、填空题1.数据包 socket,流式 socket2.无连接方式,面向连接方式3.RMI 基本应用, RMI 客户回调应用, RMI 桩下载应用4.服务器,客户端5.数据层,业务层,应用层6.迭代服务器和并发服务器;有状态服务器和无状态服务器二、问答题1. 无连接方式将以任意顺序到达,而有连接方式则以发送顺序按序到达2. setToTimeout 设置为 0 则表示永无超时,3. /*this example illustrates the basic m
3、ethod for receiving a datagram packet*/tryDatagramSocket mySocket = new DatagramSocket(port);System.out.println(Waiting for receiving the data!);/ instantiates a datagram socket for receiving the databyte buffer = new byte100;DatagramPacket datagram = new DatagramPacket(buffer, MAX_LEN);mySocket.set
4、SoTimeout(5000);catch(SocketTimeoutException e)System.out.println( “server response time out”);e.printStackTrace();4.参考解答如下:1) Draw a UML diagram to illustrate the relationship between the classes DatagramSocket ,MyDatagramSocket, Example2SenderReceiver, and Example2ReceiverSende. You need notsupply
5、 the attributes and methods of the DatagramSocket class.MyDatagramSocket DatagramSocketMAXLEN: intsendMessage( )receiveMessage( )Example2ReceiverSender Example2SenderReceiverreceiverHost: InetAddressmyPort: intreceiverPort: intmessage: StringmySocket: MyDatagramSocketmain( )receiverHost: InetAddress
6、myPort: intreceiverPort: intmessage: StringmySocket: MyDatagramSocketmain( )2) Compile the . java classes. Then start Example2ReceiverSender , thenExample2SenderReceiver . An example of the commands for running the programs is:java Example2ReceiverSender java Example2SenderReceiverlocalhost localhos
7、t10000200002000010000msg1msg2Describe the outcome. Why is the order of the execution of the two processes important?The ReceiverSender receives and displays msg2, the SenderReceiver receives anddisplay msg1.The order of executing the two processes is important because the receiver must beinitiated b
8、efore the senderReceiver sends its message. If the order is reversed, thereceiverSender will be blocked indefinitely for data that has already been sent and lost,and the senderReceiver will be blocked on a receive for data that now has no chance ofbeing sent. Thus a deadlock will result.3) Modify th
9、e code so that the senderReceiver sends then receives repeatedly, sleeping for 3 seconds between each iteration. Recompile and repeat the run. Do the same with the receiverSender. Compile and run the programs for a few minutes before terminating the programs (by entering the key stroke sequence cont
10、rol-C). Describe and explain the outcome.The ReceiverSender displays msg2 every 3 seconds, while the SenderReceiver displays msg1 every 3 seconds. The former receives msg2 from the SenderReciever then subsequently sends msg1 to it every 3 seconds, while the latter sends msg1 to the ReceiverSender th
11、en receives from it every 3 seconds.5. 略6. 略7. 支持并发功能8. 分布式应用最广泛最流行的范型是客户9. 分布式应用最基本的范型是消息传递模型10. P2P 应用有很多,例如 Napster,迅雷,11. 消息传递模式是最基本的分布式计算范型,-服务器范型PPS 网络电视等适用于大多数应用; 客户 -服务器范型是最流行的分布式计算范型,应用最为广泛; P2P 范型又称为对等结构范型,使得网络以最有效率的方式运行,适用于各参与者地位平等的网络;分布式对象范型,是抽象化的远程 调用,适用于复杂的分布式计算应用等。第 3 章 云计算原理与技术略,参考各章
12、节内容。第 4 章云计算编程实践1. 试说明基于 cloudsim 如何实现用户自定义的虚拟机调度算法?答:对于用户自定义的任务调度策略,可以通过修改 cloudsim 类或方法来实现用户自定义的虚拟机调度算法(虚拟机到物理主机的映射) ,一般需要用户重新实现 DatacenterBroker类的 bindCloudletsToVms() 方法。算法模拟过程为:初始化 cloudsim 环境,创建数据中心和代理,在创建数据中心函数中,需要用到主机列表, 主机列表又需要 pe 列表和虚拟机调度算法。 最后创建一个虚拟机列表,生成一系列虚拟机,提交到代理。2. 试说明基于 cloudsim 如何实
13、现用户自定义的任务调度算法?答:对于用户自定义的虚拟机调度策略,一般是需要用户重新实现 VmScheduler 类和VmAllocationPolicy 类。另外 VmScheduler 调度类一般不用改,因为他们是用来决定虚拟机 的调度策略是时间还是空间共享的。3.编程题:编写一个程序,创建一个包含两台主机的数据中心,每个台主机拥有四个核,多 个虚拟机。提交 N 个任务,这些任务长度服从均匀分布,并打印任务长度与任务运行情况。思路: 比较简单, 只有任务长度服从均匀分布需要思考一下, 其他都是基本的类的使用。均匀分布只需要用一个随机函数产生某一范围的均匀随机数即可,因此想到用 Java 类库
14、中的 Random 类。public class MySimExample private static final int NUM_CLOUDLET = 100; / 云任务的总数public static void main(String args) Log. printLine (Starting MySimExample. );try int num_user = 1;Calendar calendar = Calendar.getInstance();boolean trace_flag = false;CloudSim. init (num_user, calendar, trac
15、e_flag );/创建数据中心Datacenter datacenter0 = createDatacenter (Datacenter_0 );DatacenterBroker broker = createBroker ();int brokerId = broker .getId();/创建并提交虚拟机List vmlist = new ArrayList();int numVm = 8;vmlist .addAll( createVm(brokerId , numVm );broker .submitVmList( vmlist );/ 创建并提交任务List cloudletLis
16、t = new ArrayList();cloudletList .addAll( createCloudlet ( brokerId , NUM_CLOUDLET );broker .submitCloudletList( cloudletList );/启动仿真CloudSim. startSimulation ();List newList = broker .getCloudletReceivedList();CloudSim. stopSimulation ();printCloudletList (newList );Log. printLine (MySimExample fin
17、ished! ); catch (Exception e) e.printStackTrace();Log. printLine (The simulation has been terminated due to an unexpectederror );private static Datacenter createDatacenter(String name) / 创建数据中心List hostList = new ArrayList();List peList = new ArrayList();/ 添加四个核芯int mips = 1000;int pesNumber = 4;for
18、 (int i = 0; i pesNumber; i+) peList1 .add( new Pe(i , new PeProvisionerSimple( mips);peList2 .add( new Pe(i , new PeProvisionerSimple( mips);int hostId = 0;int ram = 4096;long storage = 1000000;int bw = 10000;/ 添加两台主机hostList.add(new Host( hostId, new RamProvisionerSimple( ram),new BwProvisionerSim
19、ple( bw), storage, peList1 ,new VmSchedulerSpaceShared(peList1 );hostId+;hostList.add(new Host( hostId, new RamProvisionerSimple( ram),new BwProvisionerSimple( bw), storage, peList2 ,new VmSchedulerSpaceShared(peList2 );String arch = x86 ;String os = Linux ;String vmm = Xen ;double time_zone = 10.0;
20、double cost = 3.0;double costPerMem = 0.05;double costPerStorage = 0.001;double costPerBw = 0.0;LinkedList storageList = new LinkedList();DatacenterCharacteristics characteristics = new DatacenterCharacteristics(arch, os, vmm , hostList , time_zone, cost , costPerMem ,costPerStorage, costPerBw );Dat
21、acenter datacenter = null ;try datacenter = new Datacenter(name, characteristics,new VmAllocationPolicySimple( hostList ), storageList , 0); catch (Exception e) e.printStackTrace();return datacenter;private static List createVm( int brokerId , int numVm ) / 创建虚拟机List vmlist = new ArrayList();int vmi
22、d = 0;int mips = 1000;long size = 10000;int ram = 512;long bw = 1000;int pesNumber = 1;String vmm = Xen ;for (int i = 0; i numVm ; i+) Vm vm = new Vm( vmid + i , brokerId , mips , pesNumber, ram , bw , size,vmm , new CloudletSchedulerTimeShared();vmlist .add(vm );return vmlist ;/创建云任务private static
23、List createCloudlet( int brokerId , int numCloudlet ) List cloudletList = new ArrayList();double lambda = 0.1; / 指数分布的参数int id = 0;int pesNumber = 1;long length;long fileSize = 300;long outputSize = 300;UtilizationModel utilizationModel = new UtilizationModelFull();Cloudlet cloudlet = null ;for (int
24、 i = 0; i numCloudlet ; i +) length = ( long ) (2500 * randomInt (1,101); /250000 的 1%-100%cloudlet = new Cloudlet( id + i , length, pesNumber, fileSize ,outputSize , utilizationModel , utilizationModel ,utilizationModel );cloudlet .setUserId( brokerId );cloudletList .add(cloudlet );return cloudletL
25、ist ;private static DatacenterBroker createBroker() DatacenterBroker broker = null ;try broker = new DatacenterBroker( Broker ); catch (Exception e) e.printStackTrace();return null ;return broker;private static int randomInt( int min , int max) / randommin,max) 可取 min,不可取maxRandom random = new Rando
26、m();return random.nextInt( max) % (max - min + 1) + min ;private static void printCloudletList(List list ) int size = list .size();Cloudlet cloudlet ;String indent = ;Log. printLine (= OUTPUT = );Log. printLine (Cloudlet ID + indent + STATUS + indent+ Datacenter ID + indent + VM ID + indent + Length
27、+ indent + Time + indent + Start Time + indent+ Finish Time );DecimalFormat dft = new DecimalFormat( #.# );for ( int i = 0; i 文档 集合 数据库多个 Key-Value 对组织起来形成类似于 JSON 格式的文档, 多个文档组织成为一个集合,多个集合组织起来, 就形成了数据库 (database)。 单个 MongoDB 实例可以使用多个数据库, 每个数据库都是独立运作的, 可以有单独的权限, 每个数据库的数据被分开保存在不同的文 件里。适用范围:适合实时的插入, 更新
28、与查询, 并具备应用程序实时数据存储所需的复制及高度伸缩性。适合作为信息基础设施的持久化缓存层。适合由数十或数百台服务器组成的数据库。 因为 Mongo 已经包含对 MapReduce 引擎的内置支持。10. 名词解释: PRAM、 BSP、 LogP 与 MapReduce.PRAM :即并行随机存取机 ,也称之为 SIMD-SM( 共享存储的单指令流多数据流 )模型 ,是一种应用于并行计算抽象模型 ?PRAM模型中 ,假设有一组有限或无限个独立的至少拥有简单算数计算能力和逻辑判断能力的处理机,每个处理机拥有自己的本地存储(即寄存器) 假定存在一个容量无限大的共享存储器, 这个存储器被切分成
29、特定大小的存储单元。 时间内,每个处理机都能够随机地访问任意存储单元。并在单位BSP:整体同步并行计算模型 (Bulk Synchronous Parallel Computing Model) , 又名大同步模型或 BSP 模型。在一个超级步中,各处理器均执行局部操作,并且可以通过选路器接收 和发送消息。LogP: LogP 模型是一种分布存储器 ?点对点通信的多处理器模型 ?这个模型说明了由互连网络连接起来的计算机集群的性能特点 ,但没有描述网络的结构 ?MapReduce:MapReduce 模型是一种并行编程技术。 它源自函数式编程理念, 并有 Google把它应用到在分布式计算环境上
30、的大规模数据处理中。11. 当今流行的大数据处理模型 MapReduce 的数据处理过程及其优劣势。MapReduce 的输入和输出都是是一系列的 key/value 对。 MapReduce 运行环境的用户通过实现两个函数 (Map 和 Reduce)来表达自己的算法。 Map 函数, 通过读入一系列的 key/value对来输出一系列的以 key/value 对为形式的中间结果。 MapReduce 运行环境会收集这些中间结果的 key/value 对,并根据 key 的值进行聚合和排序,并将这些 key/value 对有序地传递给Reduce 函数。同样由用户定义的 列表, 合并这些 v
31、alue 来生成对应 会产生一个或零个结果 value。Reduce 函数接收这些中间结果的 key 及与其对应的 value key 的更小的一个 value 集合。通常触发一次 Reduce 函数MapReduce 的优势:1、移动计算而不是移动数据,避免了额外的网络负载。2、任务之间相互独立,让局部故障可以更容易的处理,单个节点的故障的话只需要重 启该节点任务即可。3、理想状态下 MapReduce 模型是可线性扩展的。4、 MapReduce 模型结构简单,终端用户至少只需编写6、 MapReduce 模型的扩展性曲线是平坦的。12. 实际操作搭建编程环境并编写简单的调用 HDFSHD
32、FS、 HBase 的 API 文档。略Map 和 Reduce 函数。和 HBase API 的程序,可参考13. 实际操作搭建编程环境并编写简单的 文档。略MapReduce 的程序,可参考 Hadoop 的 API14. 与 MapReduce 相比, Impala 的优势在哪里?为什么有效率方面的优势?Impala 的优势:1、较 MapReduce 而言, Impala 使用 HQL 作为查询语言, 使用者学习的门槛更低。2、 Impala 对于 MapReduce 而言在处理 HQL 查询是效率更高,官方数据时十倍以上。3、 Impala 采用类似 P2P 对等网的架构, 没有 M
33、aster 与 Slave 之分, 即使若干个 Daemon故障也不会影响整个系统可用性,不会像 MapReduce 架构中的 JobTracker 以后存在单点故障的风险。Impala 处理 HQL 查询在效率方面有优势的原因 :Impala 采用了 Linux 原生 C 语言作为基础环境,更多地采用缓存机制,减少 ETL 的次数,提高了执行效率。直接从本地文件系统读取 Impala 是一个专门为 HQL 查询处理的查询引擎, 说,对于查询有更多的优化。HDFS 中的数据,提高了数据的本地行。相对于 MapReduce 这种通用的计算模型来15. HadoopDB 是否是对于 Hadoop
34、和 Hive 的修改?如果是,它大体上修改了哪些地方?是的。添加了一下组件:Databse Connector:作用:连接节点上的 实现方法:扩展 Hadoop Catalog :作用TaskTracker 数据库。节点上的数据库相当于于传统的 InputFormat ,使 Hadoop 可以读写数据库的内容。Hadoop 中的 HDFS。1.连接数据库用到的参数的存储,如数据库位置,驱动类和证书;2.保存了一些元数据, 的 NameNode。实现保存于 HDFS 上的Data Loader如数据簇中的数据集,XML 配置文档,副本的位置, 数据的划分, 类似于 Hadoop作用将数据合理划分
35、为数据块,从 HDFS 转移到节点中的本地文件系统实现全局哈希函数把数据分配到不同节点。本地哈希函数将分配到本节点的数据继续划分为不同 SQL to MapReduce to SQL (SMS) Planner作用将 HiveQL 转化为特定执行计划, 在 HadoopDBchunks中执行。 原则是尽可能的讲操作推向节点上的 RDBMS 上执行,以此提高执行效率。实现扩展 Hive: 1.执行查找前, 用 catolog 的信息更新 Hive 的 metastore, 定向到节点数据库的表 2.执行前,决定划分的键;将部分查询语句推到节点的数据库中执行。16. HadoopDB 其优点是什么
36、?HadoopDB 的优点:? 结合 Hive 对 SQL 强大的支持并直接生成 map/reduce 任务,不需要再手动编写map/reduce 程序。? 利用关系数据库查数据则又是利用单节点的性能优势。? 利用 Hadoop 所具有的高容错性、高可用性以及对于高通量计算的性能优越性。17. 对本章节中提及的工具及其搭建方法做实践。 略18、 在搭建 HDP 集群环境的过程中, 我们使用了 SSH 的方式进行建立, 请尝试不通过 SSH 方式为集群添加一个新的 Ambari Agent 节点(提示:需要提前在所要添加的主机上安装好 Ambari-Agent 服务) 。参考答案:在新的节点上,
37、重复 10.1.2.1 小节的环境准备工作,获取并修改获取 Repo 文件,可参考 10.1.2.3 小节,通过指令 yum install ambari-agent 安装 Ambari Agent 服务,然后编辑/etc/ambari-agent/conf/ambari-agent.ini 文件,内容如下。编辑完毕后,通过指令 ambari-agentstart 启动服务,然后依次在集群主界面中点击顶部 “Hosts”选项卡 -“Actions ”-“Add New Hosts ”,需要注意的是在步骤“ Install Options ” (参考图 10.10)中, 勾选最下面的 “Perf
38、orm manual registration on hosts and do not use SSH ”, 其余按照流程填写相关信息即可。19、请在 Zeppelin 中查询出各个城市非正常驾驶事件发生的比率?参考答案:第 7 章 实时医疗大数据分析案例1.实时医疗大数据分析的核心预测模型是什么?参考答案:核心预测模型是随机森林模型, Spark 集成了相关的功能,可以很方便地通过 Spark MLib进行建模和预测。2.请根据教材内容重现思考实时医疗大数据分析的实现程序。参考答案:( 1)数据清理:主要通过界面操作实现,不存在实现程序;(2) Kafka 到 Spark Streaming
39、:请参考 4.2.2 代码;(3)训练随机森林模型及预测结果:请参考 4.3.1 代码。3.请总结实时医疗大数据分析的现实过程。参考答案:( 1)对过往历史收集存储的病例数据进行数据清理操作,(2)实时病人数据输入到高吞吐量的分布式消息系统并使用 Spark MLib 训练预测模型;Kafka ,并由 Spark Streaming 读取;(3)预测模型对 Spark Streaming 读取的实时数据进行预测并给出结果,若经验证正确可添 加到历史数据集,作为源数据重新训练模型,提高模型准确度。第 8 章 保险大数据分析案例略,参考各章节内容第 9 章 基于 Spark 聚类算法的网络流量异常
40、检测略,参考各章节内容第 10 章 基于 Hadoop 的宏基因组序列比对计算习题1. 什么是宏基因组学?答:宏基因组学 (Metagenomics)又被称为环境基因组学,是一门直接研究自然状态下微生物群落 (包含了可培养的和不可培养的细菌、真菌和病毒等基因组的总和 )的学科。2. 序列比对软件分为可以哪几类?答: 序列比对软件依据其构建索引的算法原理可大致分为两类: 基于哈希表索引的序列比对方法和基于后缀树索引的序列比对算法。3. 请简述 Hadoop Streaming 的工作原理。 Hadoop Streaming 设置输入输出文件处理方式的 命令选项是什么?答: Hadoop Stre
41、aming 是 Hadoop 为方便非 Java 用户编写 MapReduce 程序而设计的一个工具包。 它允许用户将任何可执行文件或者脚本作 Mapper/Reducer, 这大大提高了程序员的开发效率。 Hadoop Streaming 实现的关键是它使用 UNIX 标准流作为程序与Hadoop 之间的接口,它要求用户编写的 Mapper/Reducer 从标准输入中读取数据,并将结果写到标准数据中。Hadoop Streaming 设 置 输 入 输 出 文 件 处 理 方 式 的 命 令 选 项 是 -inputformat 和 -outputformat。第 11 章 基于细胞反应大
42、数据的生物效应评估计算1、什么是生物效应评估?实现它的主要技术路线是什么?意义何在?答:生物效应评估是通过测定和分析生物制剂刺激各种人体细胞后的数字化转录组反应, 快速确定相关的检测标志物和治疗靶标, 极大缩短防治手段的研发过程, 以快速有效地应对可能的生物威胁。从技术路线上看, 采用了典型的大数据策略, 即首先是系统地积累各种潜在生物制剂作用下的细胞反应大数据, 以此为基础, 通过大范围数据比较推测突发生物效应模式, 在数据的推动下实现技术跨越。其意义在于为下一步面向以大数据分析技术为基础的生物效应快速监测技术体系奠定 了研究基础。2、 LINCS 项目的全称是什么?其目标是什么?已取得那些
43、成果?答: LINCS 项目的全称是 “基于网络的细胞反应印记整合图书馆由麻省理工学院和哈佛大学共同组建的 BROAD 研究所承担,种化学分子对 15 种典型人体细胞刺激后的基因表达情况。”。其目标是系统检测 15000目前该计划第一期已获得了 15 种典型细胞中 3000 余个基因沉默和 5000 余种化学小分子刺激下的 130 余万个全基因组表达谱。3、GSEA 算法的主要思想是什么?它分为哪几个主要的步骤?当某一表达谱包含 1000 个基 因,分别取前 50 个基因和后 50 个基因为基因集,与该表达谱比较算得的富集积分为多少(p=0)?答: GSEA 主要用于分析两个不同表形样本集之间
44、的表达差异, 其基本思想是检验所定义基因集 (Gene Set)S 中的基因在整个微阵列实验中所测得的已排序的所有基因列表 (GeneList) L 中是均匀分布还是集中于顶端或底部。GSEA 分为 3 个主要步骤: 1) 富集积分的计算; 2) 估计 ES 的显著性水平 (SignificanceLevel); 3)调整多重假设检验。 分别算得的富集积分为 1 和-1。4、 KMedoids 聚类相较于 KMeans 算法有何种优势? KMedoids+ 又作了何种优化?答: KMedoids 的优势主要是解决了 KMeans 的 “噪声敏感 ”问题。回想 KMeans 寻找质点的过程: 它
45、是对某类簇中所有的样本点维度求平均值, 即获得该类簇质点的维度。 当聚类的样本点中有 “噪声 ”(离群点)时,在计算类簇质点的过程中会受到噪声异常维度的干扰,造 成 所 得 质 点 和 实 际 质 点 位 置 偏 差 过 大, 从 而 使 类 簇 发 生 “畸 变 ”。 为 了 解 决 该 问题, KMedoids 提出了新的质点选取方式,而不是简单像 kMeans 算法采用均值计算法。在KMedoids 算法中,每次迭代后的质点都是从聚类的样本点中选取,而选取的标准就是当该样本点成为新的质点后能提高类簇的聚类质量, 使得类簇更紧凑。 该算法使用绝对误差标准来定义一个类簇的紧凑程度。KMedo
46、ids 也需要随机地产生初始聚类中心,不同的初始聚类中心可能导致完全不同的聚类结果。而 KMedoids+ 算法选择初始 seeds的基本思想就是:初始的聚类中心之间的相 互距离要尽可能的远。从而在一定程度上优化了初始聚类中心的生成问题。5、案例中对 KMedoids 算法并行化的核心思路是什么?答: 通过对单次迭代过程并行化来避免迭代间的相关依赖。 通过类标记向量和平均距离向量在每次迭代中划分新类和确定新的聚类中心。第 12 章 基于 SPARK 的海量宏基因组聚类问题分析计算1. 简述大数据的定义及其它的特征。答: 大数据并没有统一的定义, 但是通常它是指所处理的数据规模巨大到无法通过目前
47、主流数据库软件工具,在可以接受的时间内完成抓取、储存、 管理和分析,并从中提取出人类可以理解的资讯。4V 特征:第一个特征 Volume 是数据体量巨大。第二个特征 Variety:数据类型繁多。非结构和半结构数据正是大数据处理的难点所在。第三个特征 Velocity :处理速度快,时效性强。最后一个特征是 Value:商业价值高,但是价值密度低。单个数据的价值很低,只有大 量数据聚合起来处理才能借助历史数据预测未来走势,体现出大数据计算的价值所在。2. 思考: HDFS 体系结构是否存在其局限性或瓶颈。 采用 Master-Slave 结构, 必定会存在单点故障问题与详细的请读者补充。3.
48、HDFS 中为什么默认副本数为 3?答: 副本数为 3 的集群中, 将一个副本保存到本地机架NameNode 性能瓶颈问题。 其他更1 的一个节点 1 上, 第二个副本保存到本地机架的一个节点 2 上,第三个副本由节点 2 传输复制到远程机架 2 的节点 3 上。把三分之二的副本储存在本地机架, 把三分之一的副本储存在远程机架。 这样做既保证了数 据的可靠性, 又节省了机架之间的网络带宽。 一整个机架崩溃的概率很明显远远低于单个节 点的崩溃概率。一个机架崩溃了可以由另一机架保证数据的可用性。4. HBase 是如何实现随机快速存取数据的?为什么要 HBASE 在创建表时只需要定义 列族,列族是
49、如何存储的?随机写入: HBase 底层的存储是采用了一个 keyvalue 的文件结构, 称作 hfile 来实现的;HBase 的随机写入并不是立刻写入 HDFS; 而是先写入内存 memstore,当 memstore 达到一定的阀值后才会写入 HDFS ;而且 HBase 的后台合并机制,将 memstore 写入到 HDFS 的小文件合并成大文件;随机删除: HBase 中删除数据并不是立即删除, 而只是在数据上做好标记, 然后再下一次合并操作的时候进行清理。随机读取: HBase 在存储数据时在一个 hfile 中只存储同一列族的数据,并且数据时按Row key 排序的,因此在读取
50、数据时只需要根据 Row key 跳转到指定行就读取数据。 HBase特别擅长的是对于同一列族的顺序读取, 如顺序读取。5. Cassandra中超级列族与超级列与所以随机小数据量读取虽然可行, 但是性能远远不HBase 中的列族和列有什么区别和联系?超级列 (super column)是一种特殊的列。两种列都是名 /值对,但是普通列的值是字节数组, 而超级列的值是一个子列的映射。 超级列不能存储其他的超级列的映射, 即超级列仅允许使用一层,但是它不限制列的数量。超级列族概念上和普通列族相似,只不过它是超级列的集合。6. Cassandra提供了怎样的可供用户选择的一致性级别?写一致性如果是向
51、 Cassandra写数据,一致性级别指定了必须写多少个副本成功后再返回给客户端应用。写可以使用如下一致性级别, ANY 是最低的一致性 (但可用性最高 ), ALL 是最高的一致性 (但可用性最低 ), QUORUM 是中间的可确保强一致性, 可以容忍一定程度的故障。ANY 至少一个节点响应写操作。 如果请求的 row key 对应的所有的副本节点都停止了,接收到请求的节点会记录 HINT 消息和请求数据,然后响应写成功。在所有副本节点至少有一个启动之前,所有读 row key 会失败。并且 HINT间,如果在这段时间内所有副本节点还不可用,则数据会丢失。ONETWO集群中至少有 1 个副本
52、节点写成功。集群中至少有 2 个副本节点写成功。row key 对应的消息只保留一段时THREE 集群中至少有 3 个副本节点写成功。QUORUM 集群中至少有 quorum 个副本节点写成功 .quorum=(各数据中心副本因子之和 )/2 + 1 ,假如 2 个数据中心, 1 个数据中的副本因子 3, 1 个数据中心的副本因子是 2, quorum=(3+2)/2 + 1 = HYPERLINK l _bookmark1 3LOCAL_QUORUM 集群中同 1 个数据中心至少有 quorum 个副本节点写成功。quorum=(本数据中心副本因子 )/2 + 1,假如接受请求的节点所在的数
53、据中心的副本因子是 2, 则 quorum=(2)/2 + 1 = HYPERLINK l _bookmark2 2EACH_QUORUM 集群中每个数据中心至少有 计算同 LOCAL_QUORUM 。ALL 集群中所有副本节点写成功。读一致性quorum 个副本节点写成功。 quorum如果是向 Cassandra读数据,一致性级别指定了必须多少个副本响应后再返回给客户端应用结果。 ONE TWOTHREE返回集群最近副本 (决定于 snitch)的响应。 返回集群里 2 个最近副本中的最新数据。 返回集群里 3 个最近副本中的最新数据。QUORUM 返回集群里 quorum 个副本中的最新
54、数据。quorum=(各数据中心副本因子之和 )/2 + 1 ,假如 2 个数据中心, 1 个数据中的副本因子 3, 1 个数据中心的副本因子是 2,quorum=(3+2)/2 + 1 = 3LOCAL_QUORUM 返回集群里当前数据中心 quorum 个副本中的最新数据。quorum=(本数据中心副本因子 )/2 + 1,假如接受请求的节点所在的数据中心的副本因子是 2, 则 quorum=(2)/2 + 1 = HYPERLINK l _bookmark5 2EACH_QUORUM 返回集群中每个数据中心至少有 quorum 计算同 LOCAL_QUORUM 。ALL 返回集群中所有副
55、本中的最新数据。quorum 个副本中的最新数据。7. Redis 的数据类型是怎样的?是否像 HBase 一样是 Key-Value 形式?Redis 并不是简单的 key-value 存储, 实际上他是一个数据结构服务器, 支持不同类型的值。也就是说,你不必仅仅把字符串当作键所指向的值。下列这些数据类型都可作为值类型。字符串( string) 、列表 (list) 、集合 (set)、有序集合 (orted set)、希表( hash)。? String 是最基本的一种数据类型,普通的 key/value 存储都可以归为此类。? List 类型其实就是一个每个子元素都是 String 类型
56、的双向链表。? Set 是 String 类型的无序集合。? Sorted set和 set一样也是 string 类型元素的集合,不同的是每个元素都会关联一个double 类型的 score。? Hash 是一个 string 类型的 field 和 value 的映射表 .它的添加, 删除操作都是 O(1)(平均) .hash特别适合用于存储对象。8. Redis 提供了哪两种分布式模型?读写分离模型: 传统 Master 与 Slave 模式。数据分片模型: 将每个节点看成都是独立的 master,然后通过业务实现数据分片。结合上面两种模型,可以将每个 master设计成由一个 mast
57、er 和多个 slave 组成的模型。9. MongoDB 的数据组织形式是怎样的?它的特点与应用场景是怎样的?MongoDB 组织数据的方式如下:Key-Value 对 文档 集合 数据库多个 Key-Value 对组织起来形成类似于 JSON 格式的文档, 多个文档组织成为一个集合,多个集合组织起来, 就形成了数据库 (database)。 单个 MongoDB 实例可以使用多个数据库, 每个数据库都是独立运作的, 可以有单独的权限, 每个数据库的数据被分开保存在不同的文 件里。适用范围:适合实时的插入, 更新与查询, 并具备应用程序实时数据存储所需的复制及高度伸缩性。适合作为信息基础设施
58、的持久化缓存层。适合由数十或数百台服务器组成的数据库。 因为 Mongo 已经包含对 MapReduce 引擎的内置支持。10. 名词解释: PRAM、 BSP、 LogP 与 MapReduce.PRAM :即并行随机存取机 ,也称之为 SIMD-SM( 共享存储的单指令流多数据流 )模型 ,是一种应用于并行计算抽象模型 ?PRAM模型中 ,假设有一组有限或无限个独立的至少拥有简单算数计算能力和逻辑判断能力的处理机,每个处理机拥有自己的本地存储(即寄存器) 假定存在一个容量无限大的共享存储器, 这个存储器被切分成特定大小的存储单元。 时间内,每个处理机都能够随机地访问任意存储单元。并在单位B
59、SP:整体同步并行计算模型 (Bulk Synchronous Parallel Computing Model) , 又名大同步模型或 BSP 模型。在一个超级步中,各处理器均执行局部操作,并且可以通过选路器接收 和发送消息。LogP: LogP 模型是一种分布存储器 ?点对点通信的多处理器模型 ?这个模型说明了由互连网络连接起来的计算机集群的性能特点 ,但没有描述网络的结构 ?MapReduce:MapReduce 模型是一种并行编程技术。 它源自函数式编程理念, 并有 Google把它应用到在分布式计算环境上的大规模数据处理中。11. 当今流行的大数据处理模型 MapReduce 的数据
60、处理过程及其优劣势。MapReduce 的输入和输出都是是一系列的 key/value 对。 MapReduce 运行环境的用户通过实现两个函数 (Map 和 Reduce)来表达自己的算法。 Map 函数, 通过读入一系列的 key/value对来输出一系列的以 key/value 对为形式的中间结果。 MapReduce 运行环境会收集这些中间结果的 key/value 对,并根据 key 的值进行聚合和排序,并将这些 key/value 对有序地传递给Reduce 函数。同样由用户定义的 列表, 合并这些 value 来生成对应 会产生一个或零个结果 value。Reduce 函数接收这
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《国防建设》国防建设与外交成就课件-1
- 大学生创新创业基础项目教程 课件全套 崔海波 项目1-9 认识创新创业-模拟开办企业
- DB11 T 398-2006 绒山羊生产技术规范
- 2025年湛江b2货运上岗证模拟考试
- 玉米课程故事:探索与成长
- 2025快递公司协议存款合同
- 基于增益率和基尼指数的决策树分类模型
- 二零二五版酒店会务服务合同
- 基于动力学模型的mpc控制算法
- 吊车出租合同包月二零二五年
- 管理学基础-形考任务三-国开-参考资料
- 2.2城镇化课件高中地理人教版(2019)必修二
- 2024-2025学年北师大版七年级数学上册期末复习压轴题12个(84题)含答案
- 2023年北京市大兴区小升初数学模拟试卷(含答案)
- 2025年3月版安全环境职业健康法律法规标准文件清单
- 2024-2025学年历史统编版七年级下册期末评估测试卷 (含答案)
- 2025年河南工业和信息化职业学院单招职业技能测试题库参考答案
- 政府审计 课件汇 蒋秋菊 第5-12章 金融审计- 政府审计报告
- 第二十一章传导热疗法讲解
- 2025年河南职业技术学院高职单招语文2018-2024历年参考题库频考点含答案解析
- 2025年福建福州港务集团有限公司招聘笔试参考题库含答案解析
评论
0/150
提交评论