




免费预览已结束,剩余15页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单选题1.下面哪个程序负责 HDFS 数据存储。a)NameNode b)Jobtracker c)Datanode d)secondaryNameNode e)tasktracker答案C datanode2. HDfS 中的 block 默认保存几份?a)3 份 b)2 份c)1 份d)不确定答案A默认3分3. 下列哪个程序通常与 NameNode 在一个节点启动?a)SecondaryNameNode b)DataNode c)TaskTracker d)Jobtracker答案D4. Hadoop 作者a)Martin Fowler b)Kent Beck c)Doug cutting 答案C Doug cutting5. HDFS 默认 Block Sizea)32MB b)64MB c)128MB答案:1.X版本是64M2.X版本是128M6.下列哪项通常是集群的最主要瓶颈a)CPU b)网络 c)磁盘IO d)内存答案:C磁盘7.Doug Cutting所创立的项目的名称都受到其家人的启发,以下项目不是由他创立的项目是A HadoopB NutchC LuceneD Solr答案:D8.配置Hadoop时,JAVA_HOME包含在哪一个配置文件中A hadoop-default.xmlB hadoop-env.shC hadoop-site.xmlD configuration.xsl答案:B9. Hadoop配置文件中,hadoop-site.xml显示覆盖hadoop-default.xml里的内容。在版本0.20中,hadoop-site.xml被分离成三个XML文件,不包括A conf-site.xmlB mapred-site.xmlC core-site.xmlD hdfs-site.xml答案:A10.HDFS默认的当前工作目录是/user/$USER,的值需要在哪个配置文件内说明A. mapred-site.xmlB. core-site.xmlC. hdfs-site.xmlD. 以上均不是答案:B11.关于Hadoop单机模式和伪分布式模式的说法,正确是A 两者都起守护进程,且守护进程运行在一台机器上B 单机模式不使用HDFS,但加载守护进程C 两者都不与守护进程交互,避免复杂性D 后者比前者增加了HDFS输入输出以及可检查内存使用情况答案:D12.下列关于Hadoop API的说法错误的是A Hadoop的文件API不是通用的,只用于HDFS文件系统B Configuration类的默认实例化方法是以HDFS系统的资源配置为基础的C FileStatus对象存储文件和目录的元数据D FSDataInputStream是java.io.DataInputStream的子类答案:A13.HDFS的NameNode负责管理文件系统的命名空间,将所有的文件和文件夹的元数据保存在一个文件系统树中,这些信息也会在硬盘上保存成以下文件:A日志B命名空间镜像C两者都是答案:C14. HDFS的namenode保存了一个文件包括哪些数据块,分布在哪些数据节点上,这些信息也存储在硬盘上。A正确B错误答案:B知识点:在系统启动的时候从数据节点收集而成的15.Secondary namenode就是namenode出现问题时的备用节点 A正确B错误答案:B知识点:它和元数据节点负责不同的事情。其主要功能就是周期性将元数据节点的命名空间镜像文件和修改日志合并,以防日志文件过大。合并过后的命名空间镜像文件也在Secondary namenode保存了一份,以防namenode失败的时候,可以恢复。16.HDFS的是基于流数据模式访问和处理超大文件的需求而开发的,默认的最基本的存储单位是64M,具有高容错、高可靠性、高可扩展性、高吞吐率等特征,适合的读写任务是A一次写入,少次读写B多次写入,少次读写C一次写入,多次读写D多次写入,多次读写答案:C17.HDFS无法高效存储大量小文件,想让它能处理好小文件,比较可行的改进策略不包括A 利用SequenceFile、MapFile、Har等方式归档小文件B 多Master设计C Block大小适当调小D 调大namenode内存或将文件系统元数据存到硬盘里答案:D18.关于HDFS的文件写入,正确的是A 支持多用户对同一文件的写操作B 用户可以在文件任意位置进行修改C 默认将文件块复制成三份存放D 复制的文件块默认都存在同一机架上答案:C19.Hadoop fs中的-get和-put命令操作对象是A 文件B 目录C 两者都是答案:C20.Namenode在启动时自动进入安全模式,在安全模式阶段,说法错误的是A 安全模式目的是在系统启动时检查各个DataNode上数据块的有效性B 根据策略对数据块进行必要的复制或删除C 当数据块最小百分比数满足的最小副本数条件时,会自动退出安全模式D 文件系统允许有修改答案:D21. 下列关于HDFS为存储MapReduce并行切分和处理的数据做的设计,错误的是 A FSDataInputStream扩展了DataInputStream以支持随机读 B 为实现细粒度并行,输入分片(Input Split)应该越小越好 C 一台机器可能被指派从输入文件的任意位置开始处理一个分片 D 输入分片是一种记录的逻辑划分,而HDFS数据块是对输入数据的物理分割 答案:B多选题1. 关于 SecondaryNameNode 哪项是正确的?a)它是 NameNode 的热备 b)它对内存没有要求c)它的目的是帮助 NameNode 合并编辑日志,减少 NameNode 启动时间d)SecondaryNameNode 应与 NameNode 部署到一个节点答案C D2. 下列哪项可以作为集群的管理?a)Puppet b)Pdsh c)Cloudera Manager d)Zookeeper答案1:ABC3. 配置机架感知的下面哪项正确a)如果一个机架出问题,不会影响数据读写b)写入数据的时候会写到不同机架的 DataNode 中c)MapReduce 会根据机架获取离自己比较近的网络数据答案ABC具体可以参考hadoop机架感知-加强集群稳固性,该如何配置hadoop机架感知4. Client 端上传文件的时候下列哪项正确a)数据经过 NameNode 传递给 DataNodeb)Client 端将文件切分为 Block,依次上传c)Client 只上传数据到一台 DataNode,然后由 NameNode 负责 Block 复制工作答案B5. 下列哪个是 Hadoop 运行的模式a)单机版 b)伪分布式 c)分布式答案ABC6. Cloudera 提供哪几种安装 CDH 的方法a)Cloudera manager b)Tarball c)Yum d)Rpm答案:ABCD具体可以参考Hadoop CDH四种安装方式总结及实例指导简答题1.Hadoop集群可以运行的3个模式?1)单机(本地)模式;2)伪分布式模式;3)全分布式模式;2.单机(本地)模式中的注意点?在单机模式(standalone)中不会存在守护进程,所有东西都运行在一个JVM上。这里同样没有DFS,使用的是本地文件系统。单机模式适用于开发过程中运行MapReduce程序,这也是最少使用的一个模式。3.伪分布模式中的注意点?伪分布式(Pseudo)适用于开发和测试环境,在这个模式中,所有守护进程都在同一台机器上运行。4. 全分布模式又有什么注意点?全分布模式通常被用于生产环境,这里我们使用N台主机组成一个Hadoop集群,Hadoop守护进程运行在每台主机之上。这里会存在Namenode运行的主机,Datanode运行的主机,以及task tracker运行的主机。在分布式环境下,主节点和从节点会分开。5. Hadoop是否遵循UNIX模式?是的,在UNIX用例下,Hadoop还拥有“conf”目录。6. Hadoop的核心配置是什么?Hadoop的核心配置通过两个xml文件来完成:1,hadoop-default.xml;2,hadoop-site.xml。这些文件都使用xml格式,因此每个xml中都有一些属性,包括名称和值,但是当下这些文件都已不复存在。7. 那当下又该如何配置?Hadoop现在拥有3个配置文件:1,core-site.xml;2,hdfs-site.xml;3,mapred-site.xml。这些文件都保存在conf/子目录下。8. fs.mapr.working.dir只是单一的目录?fs.mapr.working.dir只是一个目录。9. hdfs-site.xml的3个主要属性?.dir决定的是元数据存储的路径以及DFS的存储方式(磁盘或是远端)dfs.data.dir决定的是数据存储的路径fs.checkpoint.dir用于第二Namenode10. 如何退出输入模式?退出输入的方式有:1,按ESC;2,键入:q(如果你没有输入任何当下)或者键入:wq(如果你已经输入当下),并且按下Enter。11. “jps”命令的用处?这个命令可以检查Namenode、Datanode、Task Tracker、 Job Tracker是否正常工作。12. 如何重启Namenode?点击stop-all.sh,再点击start-all.sh。键入sudo hdfs(Enter),su-hdfs (Enter),/etc/init.d/ha(Enter),及/etc/init.d/hadoop-0.20-namenode start(Enter)。13. Fsck的全名?全名是:File System Check。14. mapred.job.tracker命令的作用?可以让你知道哪个节点是Job Tracker。15. /etc /init.d命令的作用是?/etc /init.d说明了守护进程(服务)的位置或状态,其实是LINUX特性,和Hadoop关系不大。16. 如何在浏览器中查找Namenode?如果你确实需要在浏览器中查找Namenode,你不再需要localhost:8021,Namenode的端口号是50070。17. hadoop-env.sh是用于做什么的?hadoop-env.sh提供了Hadoop中. JAVA_HOME的运行环境。18. Master文件是否提供了多个入口?是的你可以拥有多个Master文件接口。19. Hadoop-env.sh文件当下的位置?hadoop-env.sh现在位于conf。20. 在Hadoop_PID_DIR中,PID代表了什么?PID代表了“Process ID”。21. /var/hadoop/pids用于做什么?/var/hadoop/pids用来存储PID。22. Hadoop需求什么样的网络?Hadoop核心使用Shell(SSH)来驱动从节点上的服务器进程,并在主节点和从节点之间使用password-less SSH连接。23.全分布式环境下为什么需求password-less SSH?这主要因为集群中通信过于频繁,Job Tracker需要尽可能快的给Task Tracker发布任务。24. SSH工作的端口号是?SSH工作的端口号是NO.22,当然可以通过它来配置,22是默认的端口号。25.为什么SSH本地主机需要密码?在SSH中使用密码主要是增加安全性,在某些情况下也根本不会设置密码通信。26.如果在SSH中添加key,是否还需要设置密码?是的,即使在SSH中添加了key,还是需要设置密码。27.假如Namenode中没有数据会怎么样?没有数据的Namenode就不能称之为Namenode,通常情况下,Namenode肯定会有数据28.当Job Tracker宕掉时,Namenode会发生什么?当Job Tracker失败时,集群仍然可以正常工作,只要Namenode没问题。29.是否可以在Windows上运行Hadoop?你最好不要这么做,Red Hat Linux或者是Ubuntu才是Hadoop的最佳操作系统。在Hadoop安装中,Windows通常不会被使用,因为会出现各种各样的问题。因此,Windows绝对不是Hadoop的推荐系统。30.简要描述如何安装配置一个apache开源版hadoop,描述即可,列出步骤更好1.配置主机名2.配置Hosts3.配置面密码互通4.安装JDK5.安装hadoop6.配置hadoop(1)修改 hadoop-env.sh(2)修改 core-site.xml(3)修改 hdfs-site.xml(4)修改 mapred-site.xml(5)修改 yarn-site.xml(6)修改 slaves7.配置hadoop的环境变量 8.格式化namenode32.请列出正常工作的hadoop集群中hadoop都需要启动哪些进程,他们的作用分别是什么?NameNode - hdfs名字节点,存储hdfs元数据SecondaryNameNode - 辅助NameNode实现fsimage文件和edits文件的合并DataNode - 存储数据的节点ResourceManager -负责集群中所有资源的统一管理和分,它接收来自各个节点(NodeManager)的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程序NodeManager -是YARN中每个节点上的代理,它管理Hadoop集群中单个计算节点,包括与ResourceManger保持通信,监督Container的生命周期管理,监控每个Container的资源使用(内存、CPU等)情况,追踪节点健康状况,管理日志和不同应用程序用到的附属服务(auxiliary service)33.请写出以下执行命令1)杀死一个job?hadoop job kill job_id2)删除hdfs上的/tmp/aaa目录hadoop fs -rmdir /tmp/aaa3加入一个新的存储节点和删除一个计算节点需要刷新集群状态命令?hadoop balance5.请列出你所知道的hadoop调度器,并简要说明其工作方法?(1)默认的调度器FIFO(2) 计算能力调度器Capacity Scheduler(3)公平调度器Fair Scheduler(4)适用于异构集群的调度器LATE(5)适用于实时作业的调度器Deadline Scheduler和Constraint-based Scheduler6.请列出在你以前工作中所使用过的开发mapreduce的语言?Java7.当前日志采样格式为34.hive有哪些方式保存元数据,各有哪些特点?Hive原生使用derby作为元数据库,无法并发调用hive可以将Hive元数据保存在mysql数据库中远程服务器模式,在服务器端启动一个 MetaStoreServer,客户端利用 Thrift 协议通过 MetaStoreServer 访问元数据库35.请简述hadoop怎么样实现二级排序?有两种方法进行二次排序,分别为:buffer and in memory sort和 value-to-key conversion。对于buffer and in memory sort,主要思想是:在reduce()函数中,将某个key对应的所有value保存下来,然后进行排序。 这种方法最大的缺点是:可能会造成out of memory。对于value-to-key conversion,主要思想是:将key和部分value拼接成一个组合key(实现WritableComparable接口或者调用setSortComparatorClass函数),这样reduce获取的结果便是先按key排序,后按value排序的结果,需要注意的是,用户需要自己实现Paritioner,以便只按照key进行数据划分36.简述hadoop实现join的几种方法?2.1 reduce side joinreduce side join是一种最简单的join方式,其主要思想如下:在map阶段,map函数同时读取两个文件File1和File2,为了区分两种来源的key/value数据对,对每条数据打一个标签(tag),比如:tag=0表示来自文件File1,tag=2表示来自文件File2。即:map阶段的主要任务是对不同文件中的数据打标签。在reduce阶段,reduce函数获取key相同的来自File1和File2文件的value list, 然后对于同一个key,对File1和File2中的数据进行join(笛卡尔乘积)。即:reduce阶段进行实际的连接操作。2.2 map side join之所以存在reduce side join,是因为在map阶段不能获取所有需要的join字段,即:同一个key对应的字段可能位于不同map中。Reduce side join是非常低效的,因为shuffle阶段要进行大量的数据传输。Map side join是针对以下场景进行的优化:两个待连接表中,有一个表非常大,而另一个表非常小,以至于小表可以直接存放到内存中。这样,我们可以将小表复制多份,让每个map task内存中存在一份(比如存放到hash table中),然后只扫描大表:对于大表中的每一条记录key/value,在hash table中查找是否有相同的key的记录,如果有,则连接后输出即可。为了支持文件的复制,Hadoop提供了一个类DistributedCache,使用该类的方法如下:(1)用户使用静态方法DistributedCache.addCacheFile()指定要复制的文件,它的参数是文件的URI(如果是HDFS上的文件,可以这样:hdfs:/namenode:9000/home/XXX/file,其中9000是自己配置的NameNode端口号)。JobTracker在作业启动之前会获取这个URI列表,并将相应的文件拷贝到各个TaskTracker的本地磁盘上。(2)用户使用DistributedCache.getLocalCacheFiles()方法获取文件目录,并使用标准的文件读写API读取相应的文件。2.3 SemiJoinSemiJoin,也叫半连接,是从分布式数据库中借鉴过来的方法。它的产生动机是:对于reduce side join,跨机器的数据传输量非常大,这成了join操作的一个瓶颈,如果能够在map端过滤掉不会参加join操作的数据,则可以大大节省网络IO。实现方法很简单:选取一个小表,假设是File1,将其参与join的key抽取出来,保存到文件File3中,File3文件一般很小,可以放到内存中。在map阶段,使用DistributedCache将File3复制到各个TaskTracker上,然后将File2中不在File3中的key对应的记录过滤掉,剩下的reduce阶段的工作与reduce side join相同。2.4 reduce side join + BloomFilter在某些情况下,SemiJoin抽取出来的小表的key集合在内存中仍然存放不下,这时候可以使用BloomFiler以节省空间。BloomFilter最常见的作用是:判断某个元素是否在一个集合里面。它最重要的两个方法是:add() 和contains()。最大的特点是不会存在false negative,即:如果contains()返回false,则该元素一定不在集合中,但会存在一定的true negative,即:如果contains()返回true,则该元素可能在集合中。因而可将小表中的key保存到BloomFilter中,在map阶段过滤大表,可能有一些不在小表中的记录没有过滤掉(但是在小表中的记录一定不会过滤掉),这没关系,只不过增加了少量的网络IO而已。37.请用Java实现非递归二分查找?public static int binarySearch(IntegersrcArray,int des)/第一个位置.int low=0;/最高位置.数组长度-1,因为下标是从0开始的.int high=srcArray.length-1;/当low指针和high不重复的时候.while(low1);/与最中间的数字进行判断,是否相等,相等的话就返回对应的数组下标.if(des=srcArraymiddle)return middle;/如果小于的话则移动最高层的指针else if(dessrcArraymiddle)high=middle-1;/移动最低的指针elselow=middle+1;return -1;38.请简述mapreduce中,combiner,partition作用?Partition:分区操作是shuffle操作中的一个重要过程,作用就是将map的结果按照规则分发到不同reduce中进行处理,从而按照分区得到多个输出结果Combiner:每一个MapperTask可能会产生大量的输出,combiner的作用就是在MapperTask端对输出先做一次合并,以减少传输到reducerTask的数据量39用mapreduce如何处理数据倾斜问题1. 增加reduce 的jvm内存2. 增加reduce 个数3. customer partition4. 其他优化的讨论.5. reduce sort merge排序算法的讨论6. 正在实现中的hive skewed join.7. pipeline8. distinct9. index 尤其是bitmap index40 Hive中内部表和外部表的区别内部表现有表后有数据,数据在hive的hdfs目录下管理外部表先有数据后有表,数据不再hive的hdfs目录下管理删除表时,内部表对应文件被删除删除表时,外部表对应的文件不会被删除41用JAVA使用非递归二分查找参看题3742HADOOP如何处理大量小文件(1) Hadoop ArchiveHadoop Archive或者HAR,是一个高效地将小文件放入HDFS块中的文件存档工具,它能够将多个小文件打包成一个HAR文件,这样在减少namenode内存使用的同时,仍然允许对文件进行透明的访问。对某个目录/foo/bar下的所有小文件存档成/outputdir/ zoo.har:hadoop archive -archiveName zoo.har -p /foo/bar /outputdir当然,也可以指定HAR的大小(使用-Dhar.block.size)。HAR是在Hadoop file system之上的一个文件系统,因此所有fs shell命令对HAR文件均可用,只不过是文件路径格式不一样,HAR的访问路径可以是以下两种格式:har:/scheme-hostname:port/archivepath/fileinarchivehar:/archivepath/fileinarchive(本节点)可以这样查看HAR文件存档中的文件:hadoop dfs -ls har:/user/zoo/foo.har输出:har:/user/zoo/foo.har/hadoop/dir1har:/user/zoo/foo.har/hadoop/dir2使用HAR时需要两点,第一,对小文件进行存档后,原文件并不会自动被删除,需要用户自己删除;第二,创建HAR文件的过程实际上是在运行一个mapreduce作业,因而需要有一个hadoop集群运行此命令。此外,HAR还有一些缺陷:第一,一旦创建,Archives便不可改变。要增加或移除里面的文件,必须重新创建归档文件。第二,要归档的文件名中不能有空格,否则会抛出异常,可以将空格用其他符号替换(使用-Dhar.space.replacement.enable=true 和-Dhar.space.replacement参数)。(2) Sequence filesequence file由一系列的二进制key/value组成,如果为key小文件名,value为文件内容,则可以将大批小文件合并成一个大文件。Hadoop-0.21.0中提供了SequenceFile,包括Writer,Reader和SequenceFileSorter类进行写,读和排序操作。如果hadoop版本低于0.21.0的版本,实现方法可参见3。(3)CombineFileInputFormatCombineFileInputFormat是一种新的inputformat,用于将多个文件合并成一个单独的split,另外,它会考虑数据的存储位置。43hdfs中的block默认保存几份?3份44 hive udf继承那个类创建类继承UDF自己编写一个evaluate方法,返回值和参数任意。45.请列出正常工作的hadoop集群中hadoop都需要启动哪些进程,他们的作用分别是什么?参看题3246、Maperduce处理过程1)输入文件(File)2)格式化输入文件(InputFormat)3)分割器(InputSplit)4)RecordReader5)Mapper6)分区和洗牌(Partition & Shuffle)7)Sort8)Reducer9)格式化输出(OutputFormat)47、Hadoop流程参看题4848、Hadoop上传细节使用HDFS提供的客户端开发库Client,向远程的Namenode发起RPC请求;Namenode会检查要创建的文件是否已经存在,创建者是否有权限进行操作,成功则会为文件创建一个记录,否则会让客户端抛出异常;当客户端开始写入文件的时候,开发库会将文件切分成多个packets,并在内部以数据队列data queue的形式管理这些packets,并向Namenode申请新的blocks,获取用来存储replicas的合适的datanodes列表, 列表的大小根据在Namenode中对replication的设置而定。开始以pipeline(管道)的形式将packet写入所 有的replicas中。开发库把packet以流的方式写入第一个datanode,该datanode把该packet存储之后,再将其传递给在此 pipeline中的下一个datanode,直到最后一个datanode,这种写数据的方式呈流水线的形式。最后一个datanode成功存储之后会返回一个ack packet,在pipeline里传递至客户端,在客户端的开发库内部维护着ack queue,成功收到datanode返回的ack packet后会从ack queue移除相应的packet。如果传输过程中,有某个datanode出现了故障,那么当前的pipeline会被关闭,出现故障的datanode会从当前的pipeline中移除, 剩余的block会继续剩下的datanode中继续以pipeline的形式传输,同时Namenode会分配一个新的datanode,保持 replicas设定的数量。49、Zookeeper的做什么的zookeeper是一个开放源码的分布式协调服务,是一种典型的分布式数据一致性解决方案。由雅虎创建,贡献给了apache。利用zookeeper可以实现数据发布订阅、负载均衡、命名服务、分布式协调/通知、集群管理、分布式锁、分布式队列等功能。50、NIO是什么NIO是jdk4提供的一种新的io方式,也叫做非阻塞式IO,特点是可以在非阻塞模式下进行工作,ACCEPT CONNECT READ WRITE时都不会产生阻塞,从而可以解决BIO在高并发场景下遇到的问题。51、Hbase的细节hbase中的表在行的方向上分隔为多个HRegion,分散在不同的RegionServer中这样做的目的是在查询时可以将工作量分布到多个RegionServer中以提高速度region由startkey,endkey)表示HRegion是hbase分布式存储和负载均衡的最小单元要注意HRegion不在hdfs中,而是在RegionServer的内存中,在内存(其实也有数据在本地文件系统中,因为内存空间毕竟是有限的)中存储数据以提高查询性能,对于修改会将数据同步到hdfs中,以持久化数据。hbase中的数据按照rowkey的字典顺序(字典顺序!先比较第一位 如果相同再比较第二位。)按序存储,所以当以rowkey查询数据时,可以提高速度。hregion的分裂,当hregion变的很大时会分裂成两个,存放到不同的RegionServer中,防止一个Region过大,导致查询其中数据时速度很慢hbase的系统结构:主要有client master regionServer zookeeper52、什么是分布式分布式处理则是将不同地点的,或具有不同功能的,或拥有不同数据的多台计算机通过通信网络连接起来,在控制系统的统一管理控制下,协调地完成大规模信息处理任务的计算机系统。53函数式编程的好处:1.代码简洁,开发快速2.接近自然语言,易于理解3.更方便的代码管理4.易于“并发编程”5.代码的热升级(函数式编程没有副作用,只要保证接口不变,内部实现是外部无关的。所以,可以在运行状态下直接升级代码,不需要重启,也不需要停机。)54 在linux中,比如启动hadoop,会打印很多日志,什么命令可以不显示这些日志?可以通过在命令前增加上nohup命令来实现55 concurrent 的map 加锁是加部分 锁 是加的哪部分? 数据分段上56环形缓冲区集群搭配的作用和优化?每个MapperTask有一个环形内存缓冲区,用于存储map任务的输出。默认大小100MB(io.sort.mb属性),一旦达到阀值0.8(io.sort.spill.percent),一个后台线程把内容写到(spill)磁盘的指定目录(mapred.local.dir)下的新建的一个溢出写文件。写磁盘前,要partition,sort,Combiner。如果有后续的数据,将会继续写入环形缓冲区中,最终写入下一个溢出文件中。环形缓冲区是一种缓冲区技术,通过首尾相接的方式循环使用缓冲区,解决了数据量过大时缓冲区大小过大的问题。57、 zookeeper原理leader和所有的follower都可以提供查询功能只有leader能够提供增删改的功能,如果客户端连接follower表示要进行增删改,follower会将请求转发给leader来处理。所有的增删改的操作都会有一个版本号,这个版本号是递增唯一的,用来记录提案的顺序。如何选老大?选老大情况1:集群刚启动时,谁当老大都可以,一般是最先启动的做老大选老大情况2:老大挂了,集群会暂时停止对外服务进入选举阶段,所有follower都会广播一个自己的所持有的最高版本给整个集群,当大家收到其他follwoer发过来的最高版本信息后,就会进行投票,投给收到的版本信息最高的follwer,每个机器只能发一票,此时选择集群中数据版本最高的机器做老大,任意一个follower当发现自己收到了过半的投票(自己也可以投给自己),可以认为获得了选举胜利,可以成为leader了。老大如何决定一个提案是否通过?如果老大自己说了算,那么如果刚好老大挂了,其他人不知道老大同一的提案,可能就造成新选出来的leader不知道之前老大同意过的提案,从而造成违反一致性。不可行如果老大把提案发给所有人,所有人都同意了才能通过提案,这时如果集群中任意一台机器出问题,投票都无法进行,相当于存在单节点故障的可能。不可取。折中一下,老大收到提案后,发给所有人,所有人收到后都要回复老大,当老大收到过半同意的投票时,则通过这个提案。这样一来,极端的情况下只要集群中有过半的机器还活着,选出来的老大是一定知道之前老大最后提案的。!引申出来的结论是,zookeeper集群必须过半存活才能正常工作!!又引申出来的结论是,偶数台机器提供的集群可靠性和偶数-1台机器提供的可靠性是相同的!所以zookeeper集群中机器的数量最好是基数个。58、hadoop的namenode可以存那些数据包括文件和Block之间关系的信息、Block数量信息、Block和DataNode之间的关系信息59 NIO和BIO传统的BIO面临的问题:在执行如下操作时会产生阻塞:ACCEPT CONNECT READWRITE在高并发场景下,如上的方法产生的阻塞可能会产生一些无法避免的问题。在开发服务器程序时,通常针对于每一个客户端都要创建一个线程来处理,而线程的开辟和运行是相当耗费资源的,服务器能够运行的并发线程数量是很有限的。在高并发场景下,大量的客户端并发连接导致服务器创建大量线程,会直接影响服务器的性能。而一些场景下客户端连接后传输的数据并不多,只是保持连接的状态,此时创建的大量线程闲置着浪费服务器资源。所以我们想到用少量的线程来处理多个客户端的连接,但是这种方式下传统BIO会有阻塞的问题决定了是无法实现的。NIO 也叫做非阻塞式IO,特点是可以在非阻塞模式下进行工作,ACCEPT CONNECT READ WRITE时都不会产生阻塞,从而可以解决BIO在高并发场景下遇到的问题。BIO:面向流操作的是字节或字符InputStream OutputStream Reader Writer流只能单向传输数据 操作的是字节或字符NIO:面向通道操作的是缓冲区Channel Buffer Selector通道可以双向的传输数据 操作的是缓冲区60 聚类包括那些?一堆数据,怎么用聚类中的一个算法实现?K-MEANSk-means 算法接受输入量 k ;然后将n个数据对象划分为 k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的。k-means 算法的工作过程说明如下:首先从n个数据对象任意选择 k 个对象作为初始聚类中心;而对于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文化展示中心施工进度管理实施方案
- 土壤改良材料运输存储方案
- 低热值煤发电项目技术方案
- 校园防暴安全教育目标
- 生活垃圾焚烧预处理技术方案
- 智算中心边缘节点协同部署方案
- 节能型阻水电缆生产线项目施工方案
- 高速公路养护技术方案
- 农村生态景观建设与绿化美化方案
- 解析2025年美妆护肤电商供应链优化升级关键因素研究
- 船体密性试验培训
- 过敏性鼻炎-哮喘课件
- 安环部工作总结汇报
- 2025年浙江省金融控股有限公司招聘笔试参考题库含答案解析
- 北京四合院的课件
- 《车用氢气传感器》
- 物业员工安全知识教育培训
- 办公楼装饰装修工程施工组织设计方案
- 《机械制图(多学时)》中职全套教学课件
- 2024年公司内部审计制度例文(四篇)
- 小学英语词汇量小学英语词汇大全(约1000词)(按字母顺序)修改版
评论
0/150
提交评论