您好,欢迎访问三一刀客
当前位置:首页 > 商业/管理/HR > 招聘面试 > Hadoop就业面试宝典.txt
Hadoop就业面试宝典1.0简要描述如何安装配置apache的一个开源hadoop,只描述即可,无需列出具体步骤,列出具体步骤更好。答:1使用root账户登录2修改IP3修改host主机名4配置SSH免密码登录5关闭防火墙6安装JDK7解压hadoop安装包8配置hadoop的核心文件hadoop-env.sh,core-site.xml,mapred-site.xml,hdfs-site.xml9配置hadoop环境变量10格式化hadoopnamenode-format11启动节点start-all.sh2.0请列出正常的hadoop集群中hadoop都分别需要启动哪些进程,他们的作用分别都是什么,请尽量列的详细一些。答:namenode:管理集群,存储数据的原信息,并管理记录datanode中的文件信息。Secondname:可以做冷备,对一定范围内数据做快照性备份。Datanode:存储数据Jobtracker:管理任务,并将任务分配给tasktracker。Tasktracker:执行JobTracker分配的任务。3.0请写出以下的shell命令(1)杀死一个job(2)删除hdfs上的/tmp/aaa目录(3)加入一个新的存储节点和删除一个节点需要执行的命令答:(1)hadoopjob–list得到job的id,然后执行hadoopjob-killjobId就可以杀死一个指定jobId的job工作了。(2)hadoopfs-rmr/tmp/aaa(3)增加一个新的节点在新的几点上执行Hadoopdaemon.shstartdatanodeHadooopdaemon.shstarttasktracker然后在主节点中执行hadoopdfsadmin-refreshnodes删除一个节点的时候,只需要在主节点执行hadoopmradmin-refreshnodes4.0请列出你所知道的hadoop调度器,并简要说明其工作方法答:Fifoschedular:默认,先进先出的原则Capacityschedular:计算能力调度器,选择占用最小、优先级高的先执行,依此类推。Fairschedular:公平调度,所有的job具有相同的资源;5.0请列出你在工作中使用过的开发mapreduce的语言答:java,hive6.0当前日志采样格式为a,b,c,db,b,f,ea,a,c,f请你用最熟悉的语言编写mapreduce,计算第四列每个元素出现的个数StaticfinalString答:publicclassWordCount1{publicstaticfinalStringINPUT_PATH=hdfs://hadoop0:9000/in;publicstaticfinalStringOUT_PATH=hdfs://hadoop0:9000/out;publicstaticvoidmain(String[]args)throwsException{Configurationconf=newConfiguration();FileSystemfileSystem=FileSystem.get(conf);if(fileSystem.exists(newPath(OUT_PATH))){}fileSystem.delete(newPath(OUT_PATH),true);Jobjob=newJob(conf,WordCount1.class.getSimpleName());//1.0读取文件,解析成key,value对FileInputFormat.setInputPaths(job,newPath(INPUT_PATH));//2.0写上自己的逻辑,对输入的可以,value进行处理,转换成新的key,value对进行输出job.setMapperClass(MyMapper.class);job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(LongWritable.class);//3.0对输出后的数据进行分区//4.0对分区后的数据进行排序,分组,相同key的value放到一个集合中//5.0对分组后的数据进行规约//6.0对通过网络将map输出的数据拷贝到reduce节点//7.0写上自己的reduce函数逻辑,对map输出的数据进行处理job.setReducerClass(MyReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(LongWritable.class);FileOutputFormat.setOutputPath(job,newPath(OUT_PATH));job.waitForCompletion(true);}staticclassMyMapperextendsMapperLongWritable,Text,Text,LongWritable{@Overrideprotectedvoidmap(LongWritablek1,Textv1,org.apache.hadoop.mapreduce.Mapper.Contextcontext)throwsIOException,InterruptedException{String[]split=v1.toString().split(\t);for(Stringwords:split){context.write(split[3],1);}}}staticclassMyReducerextendsReducerText,LongWritable,Text,LongWritable{protectedvoidreduce(Textk2,IterableLongWritablev2,org.apache.hadoop.mapreduce.Reducer.Contextcontext)throwsIOException,InterruptedException{Longcount=0L;for(LongWritabletime:v2){count+=time.get();}context.write(v2,newLongWritable(count));}}}7.0你认为用java,streaming,pipe方式开发map/reduce,各有哪些优点就用过java和hiveQL。答:Java写mapreduce可以实现复杂的逻辑,如果需求简单,则显得繁琐。HiveQL基本都是针对hive中的表数据进行编写,但对复杂的逻辑很难进行实现。写起来简单8.0hive有哪些方式保存元数据,各有哪些优点答:三种:内存数据库derby,挺小,不常用。本地mysql。。常用远程端mysql。。不常用上网上找了下专业名称:singleusermode..multiusermode...remoteusermode9.0请简述hadoop怎样实现二级排序答:第一种方法是,Reducer将给定key的所有值都缓存起来,然后对它们再做一个Reducer内排序。但是,由于Reducer需要保存给定key的所有值,可能会导致出现内存耗尽的错误。第二种方法是,将值的一部分或整个值加入原始key,生成一个合成key。这两种方法各有优势,第一种方法可能会更快一些(但有内存耗尽的危险),第二种方法则是将排序的任务交给MapReduce框架,更符合Hadoop/Reduce的设计思想。这篇文章里选择的是第二种。我们将编写一个Partitioner,确保拥有相同key(原始key,不包括添加的部分)的所有数据被发往同一个Reducer,还将编写一个Comparator,以便数据到达Reducer后即按原始key分组。10.简述hadoop实现jion的几种方法答:利用dataJoin来实现mapreduce的jion问题。11.请用java实现非递归二分查询答:1.publicclassBinarySearchClass2.{3.4.publicstaticintbinary_search(int[]array,intvalue)5.{6.intbeginIndex=0;//低位下标7.intendIndex=array.length-1;//高位下标8.intmidIndex=-1;9.while(beginIndex=endIndex){10.midIndex=beginIndex+(endIndex-beginIndex)/2;//防止溢出11.if(value==array[midIndex]){12.returnmidIndex;13.}elseif(valuearray[midIndex]){14.endIndex=midIndex-1;15.}else{16.beginIndex=midIndex+1;17.}18.}19.return-1;20.//找到了,返回找到的数值的下标,没找到,返回-121.}22.23.24.//start提示:自动阅卷起始唯一标识,请勿删除或增加。25.publicstaticvoidmain(String[]args)26.{27.System.out.println(Start...);28.int[]myArray=newint[]{1,2,3,5,6,7,8,9};29.System.out.println(查找数字8的下标:);30.System.out.println(binary_search(myArray,8));31.}32.//end//提示:自动阅卷结束唯一标识,请勿删除或增加。33.}12.0请简述mapreduce中的combine和partion的作用答:combiner是发生在map的最后一个阶段,其原理也是一个小型的reducer,主要作用是减少输出到reduce的个数,减少reducer的输入,提高reducer的执行效率。Partion的主要作用就是指定输出到reduce的个数的。13.0hive内部表和外部表的区别Hive创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。14.Hbase的rowKey怎么创建比较好?列簇怎么创建比较好?答:rowKey最好要创建有规则的rowKey,即最好是有序的。HBase中一张表最好只创建一到两个列族比较好,因为HBase不能很好的处理多个列族。15.用mapreduce怎么处理数据倾斜问题答:在mapreduce聚合key中所有values的时候,如果一个key对应了很多values,就会产生数据倾斜的问题。数据倾斜主要就是某个key下面对应的value太多,导致某个reduce节点执行的数据过多,然后产生某个或者某几个reduce节点的执行效率过低,导致整个集群中的任务执行效率较慢,可以使用partion对数据过多的节点进行再划分,划分成多个小的数据块,输入到reduce进行处理。16.hadoop框架怎么来优化答:hadoop优化的范围太宽泛了,可以从某个方面具体来谈一谈,比如说HBase的rowKey和列族的创建的来进行数据存储的优化,可以从网络的拷贝对数据的优化,可以从mapreduce对数据的处理来谈优化,可以从参数方面来说优化等。17.hbase内部机制是什么答:内部机制更多的是借助nosql数据的关系模型,是建立的hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。18.我们在开发分布式计算job的时候,是否可以去掉reduce阶段答:可以,例如我们的集群就是为了存储文件而设计的,不涉及到数据的计算,就可以将mapReduc
本文标题:Hadoop就业面试宝典.txt
链接地址:https://www.111doc.com/doc-5965928 .html