大数据笔试题面试题16家公司hive面试_第1页
大数据笔试题面试题16家公司hive面试_第2页
大数据笔试题面试题16家公司hive面试_第3页
大数据笔试题面试题16家公司hive面试_第4页
大数据笔试题面试题16家公司hive面试_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、使用 Hive 进行1流量统计很多公司在使用 hive 对数据进行处理。hive 是hadoop成员,是一种like sql 语句的框架。它封装了常用 MapReduce 任务,让你像执行 sql 一样操作在 HDFS 的表。hive 的表分为两种,内表和外表。Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅在的路径,不对数据的位置做任何改变。数据所在删除表的时候,内部表的元数据和数据会被一起删除, 而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。Hive 的内外表,还有一个 Partition 的分区的知识点,用于

2、避免全表扫描,快速检索。后期的文章会提到。接下来开始正式开始Hive 统计流量操作步骤: 代码1. #配置好 Hive 之后,使用 hive 命令启动 hive 框架。hive 启动属于懒加载模式, 会比较慢2. hive;3. #使用 show databases 命令查看当前数据库信息4. hive> show databases;5. OK6. default7. hive8. Time taken: 3.389 seconds9. #使用 use hive 命令,使用指定的数据库 hive 数据库是我之前创建的10. use hive;11. #创建表,这里是创建内表。内表加载

3、hdfs 上的数据,会将被加载文件中的内容剪切走。12. #外表没有这个问题,所以在实际的生产环境中,建议使用外表。13. create table ll(reportTime string,msisdn string,apmac string,acmac string,host string,siteType string,upPackNum bigint,downPackNum bigint,upPayLoad bigint,downPayLoad bigint,httpStatus string)row format delimited fields terminated by '

4、;t'14. #加载数据,这里是从 hdfs 加载数据,也可用 linux 下加载数据 需要 local关键字15. load data inpath'/HTTP_20130313143750.dat' into table ll;16. #数据加载完毕之后,hdfs 的17. #执行 hive 的 like sql 语句,对数据进行统计18. selectmsisdn,sum(uppacknum),sum(downpacknum),sum(uppayload),sum(downpaylo ad) from ll group by msisdn;1.0 简要描述如何安装

5、配置 apache 的一个开源 hadoop,只描述即可,无需列出具体步骤,列出具体步骤更好。答:第一题:1 使用root 账户登录2 修改 IP3 修改host 主机名4 配置SSH 免登录5 关闭6 安装JDK6 解压hadoop 安装包7 配置hadoop 的文件 hadoop-env.sh,core-site.xml , mapred-site.xml , hdfs-site.xml8 配置hadoop 环境变量9 格式化 hadoop namenode-format10 启动节点start-all.sh2.0 请列出正常的hadoop 集群中hadoop 都分别需要启动 哪些进程,他

6、们的作用分别都是什么,请尽量列的详细一些。答:namenode:负责管理hdfs 中文件块的元数据,响应客户端请求,管理datanode 上文件 block 的均衡,维持副本数量Secondname:主要负责做checkpoint 操作;也可以做冷备,对一定范围内数据做快照性备份。Datanode:数据块,负责客户端对数据块的 io 请求Jobtracker :管理任务,并将任务分配给 tasktracker。Tasktracker: 执行JobTracker 分配的任务。ResourcemanagerNodemanagerJournalnodeZookeeperZkfc3.0 请写出以下的s

7、hell 命令(1)杀死一个 job(2)删除hdfs 上的 /tmp/aaa 目录(3)加入一个新的节点和删除一个节点需要执行令答:(1)hadoop job list得到 job 的id,然后执行 hadoop job -kill jobId 就可以杀死一个指定 jobId 的 job 工作了。(2)hadoopfs -rmr /tmp/aaa(3) 增加一个新的节点在新的几点上执行Hadoop daemon.sh start datanodeHadooop daemon.sh start tasktracker/nodemanager下线时,要在conf 目录下的excludes 文件中

8、列出要下线的datanode主机名然后在主节点中执行 hadoop dfsadmin -refreshnodes à 下线一个datanode删除一个节点的时候,只需要在主节点执行hadoop mradmin -refreshnodes -à 下线一个 tasktracker/nodemanager4.0请列出你所知道的hadoop 调度器,并简要说明其工作方法答:Fifo schedular :默认,先进先出的原则Capacity schedular :计算能力调度器,选择占用最小、优先级高的先执行,依此类推。Fair schedular:公平调度,所有的 job 具有相

9、同的。5.0请列出你在工作中使用过的开发 mapreduce 的语言答:java,hive,(python,c+)hadoop streaming6.0当前日志采样格式为a , b , c , db , b , f , ea , a , c , f请你用最熟悉的语言编写mapreduce,计算第四列每个元素出现的个数答:public classWordCount1 public static final String INPUT_PATH ="hdfs:/hadoop0:9000/in"public static final String OUT_PATH ="h

10、dfs:/hadoop0:9000/out"public static void main(String args)throws Exception Configuration conf = newConfiguration();FileSystem fileSystem =FileSystem.get(conf);if(fileSystem.exists(newPath(OUT_PATH)fileSystem.delete(newPath(OUT_PATH),true);Job job = newJob(conf,WordCount1.class.getSimpleName();/

11、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 放到一个集合中/

12、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,new Path(OUT_PATH);pletion(true);static class MyMapper extendsMappe

13、r<LongWritable, Text, Text, LongWritable>Overrideprotected void map(LongWritablek1, Text v1,org.apache.hadoop.mapreduce.Mapper.Contextcontext)throws IOException,InterruptedException String split =v1.toString().split("t");for(String words :split)context.write(split3,1);static class My

14、Reducer extends Reducer<Text,LongWritable, Text, LongWritable>protected void reduce(Text k2,Iterable<LongWritable> v2,org.apache.hadoop.mapreduce.Reducer.Contextcontext)throws IOException,InterruptedException Long count = 0L;for(LongWritable time :v2)count += time.get();context.write(v2,

15、 newLongWritable(count);7.0你认为用 java , streaming , pipe 方式开发map/reduce , 各有哪些优点就用过 java 和 hiveQL。Java 写 mapreduce 可以实现复杂的逻辑,如果需求简单,则显得繁琐。HiveQL 基本都是针对 hive 中的表数据进行编写,但对复杂的逻辑(杂)很难进行实现。写起来简单。8.0 hive 有哪些方式保存元数据,各有哪些优点三种:自带内嵌数据库derby,挺小,不常用,只能用于单节点mysql 常用上网上找了下专业名称:single user mode.multiuser mode.remo

16、te user mode9.0 请简述hadoop 怎样实现二级排序(就是对 key 和value 双排序)第法是,Reducer 将给定key 的所有值都缓存起来,然后对它们再做一个 Reducer 内排序。但是,由于 Reducer 需要保存给定key 的所有值,可能会导致出现内存耗尽的错误。第二种方法是,将值的一部分或整个值加入原始key,生成一个组合key。这两种方法各有优势,第一种方法编写简单,但并发度小,数据量大的情况下速度慢(有内存耗尽的),第二种方法则是将排序的任务交给MapReduce 框架shuffle,更符合 Hadoop/Reduce 的设计思想。这编写一个 Parti

17、tioner,确保拥有相同 key(原始key,不包括添加的部篇文章里选择的是第二种。分)的所有数据被发往同一个 Reducer,还将编写一个 Comparator,以便数据到达 Reducer 后即按原始key 分组。10.简述 hadoop 实现 jion 的几种方法Map side join-大小表 join 的场景,可以借助 distributed cacheReduce side join11.0 请用 java 实现非递归二分1.public class BinarySearchClass2.3.4.public static int binary_search(int array

18、, int value)5.6.int beginIndex = 0;/ 低位下标7.int endIndex = array.length - 1;/下标8.int midIndex = -1;9.while (beginIndex <= endIndex) 10.midIndex = beginIndex + (endIndex - beginIndex) / 2;/防止溢出11.if (value = arraymidIndex) 12.return midIndex;13. else if (value < arraymidIndex) 14.endIndex = midI

19、ndex - 1;15. else 16.beginIndex = midIndex + 1;17.18.19.return -1;20./找到了,返回找到的数值的下标,没找到,返回-4./start 提示:自动阅卷起始唯一标识,删除或增加。25.public static void main(String args)26.27.System.out.println("Start.");28.int myArray = new int 1, 2, 3, 5, 6, 7, 8, 9 ;29.System.out.println("查找数字 8

20、的下标:");30.System.out.println(binary_search(myArray, 8);31.32./end /提示:自动阅卷结束唯一标识,删除或增加。33.12.0 请简述 mapreduce 中的combine 和partition 的作用答:combiner 是发生在map 的最后一个阶段,其原理也是一个小型的 reducer,主要作用是减少输出到reduce 的数据量,缓解网络传输瓶颈,提高 reducer 的执行效率。partition 的主要作用将map 阶段产生的所有kv 对分配给不同的reducer task 处理,可以将reduce阶段的处理负

21、载进行分摊13.0 hive 内部表和外部表的区别Hive 向内部表导入数据时,会将数据移动到数据仓库指向的路径;若是外部表,数据的具体存放目录由用户建表时指定在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。14. Hbase 的 rowKey 怎么创建比较好?列簇怎么创建比较好?答:rowKey 最好要创建有规则的rowKey,即最好是有序的。经常需要批量的数据应该让他们的rowkey 连续;组织到rowkey 中;将经常需要作为条件的列族的创建:按照业务特点,把数据归类,不同类别的放在不同

22、列族15. 用mapreduce 怎么处理数据倾斜问题本质:让各分区的数据分布均匀可以根据业务特点,设置合适的partition 策略如果事先根本不知道数据的分布规律,利用随机抽样器抽样后生成partition 策略再处理16. hadoop 框架怎么来优化答:可以从很多方面来进行:比如hdfs 怎么优化,mapreduce 程序怎么优化,yarn 的 job 调度怎么优化,hbase 优化,hive 优化。17. hbase 内部机制是什么答:Hbase 是一个能适应联机业务的数据库系统物理:hbase 的持久化数据是存放在 hdfs 上管理:一个表是划分为很多region 的,这些regi

23、on 分布式地存放在很多regionserver 上Region 内部还可以划分为store,store 内部有memstore 和storefile版本管理:hbase 中的数据更新本质上是不断追加新的版本,通过 compact 操作来做版本间的文件合并Region 的split集群管理:zookeeper + hmaster(职责) + hregionserver(职责)18. 我们在开发分布式计算 job 的时候,是否可以去掉 reduce 阶段答:可以,例如我们的集群就是为了文件而设计的,不涉及到数据的计算,就可以将 mapReduce 都省掉。比如,流量运营项目中的行为轨迹增强功能部

24、分怎么样才能实现去掉reduce 阶段去掉之后就不排序了,不进行shuffle 操作了19 hadoop 中常用的数据压缩算法答:LzoGzipDefaultSnapyy如果要对数据进行压缩,最好是将原始数据转为SequenceFile 或者 Parquet File(spark)20. mapreduce 的调度模式(题意模糊,可以理解为 yarn 的调度模式,也可以理解为 mr 的内部工作流程)答: appmaster 作为调度主管,管理 maptask 和reducetaskAppmaster 负责启动、maptask 和reducetaskMaptask 处理完成之后,appmaste

25、r 会到,然后将其输出结果通知给reducetask,然后reducetask 从map 端拉取文件,然后处理;当reduce 阶段全部完成之后,appmaster 还要向resourcemanager 注销自己21. hive 底层与数据库交互原理答:Hive 的功能是由hdfs + mapreduce 结合起来实现的Hive 与mysql 的关系:只是借用mysql 来hive 中的表的元数据信息,称为 metastore22. hbase 过滤器实现原则答:可以说一下过滤器的父类(比较过滤器,过滤器)过滤器有什么用途:增强hbase数据的功能减少服务端返回给客户端的数据量23. redu

26、ce 之后数据的输出量有多大(结合具体场景,比如 pi)Sca 阶段的增强日志(1.5T-2T)过滤性质的mr 程序,输出比输入少性质的mr 程序,输出比输入多(找共同朋友)24. 现场出问题测试mapreduce 掌握情况和 hive 的ql 语言掌握情况25.datanode 在什么情况下备份数据答:在客户端上传文件时指定文件副本数量为 1bine 出现在哪个过程答:shuffle 过程中具体来说,是在maptask 输出的数据从内存溢出到磁盘,可能会调多次Combiner 使用时候要特别谨慎,不能影响最后的逻辑结果27. hdfs 的体系结构答:集群架构:namenode datanod

27、e secondarynamenode(active namenode ,standby namenode)journalnodezkfc内部工作机制:数据是分布式的对外提供一个统一的目录结构对外提供一个具体的响应者(namenode)数据的block 机制,副本机制Namenode 和datanode 的工作职责和机制读写数据流程28. flush 的过程答:flush 是在内存的基础上进行的,首先写入文件的时候,会先将文件写到内存中,当内存写满的时候,的将文件全部都写到硬盘中去保存,并清空缓存中的文件,29. 什么是队列答:是一种调度策略,机制是先进先出30. List 与set 的区别答

28、:List 和Set 都是接口。他们各自有自己的实现类,有无顺序的实现类,也有有顺序的实现类。最大的不同就是List 是可以重复的。而 Set 是不能重复的。List 适合经常追加数据,删除数据。但随即取数效率比较低。Set 适合经常地随即储存,删除。但是在遍历时效率比较低。31.数据的三范式答:第一范式()无重复的列第二范式(2NF)属性完全依赖于主键 消除部函数依赖第三范式(3NF)属性不依赖于其它非主属性 消除传递依赖32.三个 datanode 中当有一个datanode 出现错误时会怎样?答:Namenode 会通过心跳机制感知到datanode 下线会将这个datanode 上的b

29、lock 块在集群中重新一份,恢复文件的副本数量会运维团队快速响应,派出同事对下线datanode 进行检测和修复,然后重新上线33.sqoop 在导入数据到mysql 中,如何不重复导入数据,如果存在数据问题,sqoop 如何处理?答:FAILEDjava.util.NoSuchElementException此错误的原因为sqoop文件的字段与 MySql 数据库的表的字段对应不上造成的。因此需要在执行的时候给sqoop 增加参数,告诉sqoop 文件的分隔符,使它能够正确的文件字段。hive 默认的字段分隔符为'001'34.描述一下 hadoop 中,有哪些地方使用到了

30、缓存机制,作用分别是什么?答:Shuffle 中Hbase客户端/regionserver35.MapReduce 优化经验答:(1.)设置合理的 map 和reduce 的个数。合理设置 blocksize(2.)避免出现数据倾斜(bine 函数(4.对数据进行压缩(5.小文件处理优化:事先合并成大文件,combineTextInputformat,在 hdfs 上用 mapreduce 将小文件合并成SequenceFile 大文件(key:文件名,value:文件内容)(6.参数优化36.请列举出曾经修改过的/etc/下面的文件,并说明修改要解决什么问题?答:/etc/profile 这

31、个文件,主要是用来配置环境变量。让 hadoop 命令可以在任意目录下面执行。/ect/sudoers/etc/hosts/etc/sysconfig/network/etc/inittab37.请描述一下开发过程中如何对上面的程序进行性能分析,对性能分析进行优化的过程。38. 现有 1 亿个整数均匀分布,如果要得到前 1K 个最大的数,求最优的算法。参见海量数据算法面试大全39.mapreduce 的大致流程答:主要分为八个步骤1/对文件进行切片规划2/启动相应数量的 maptask 进程3/调用 FileInputFormat 中的 RecordReader,读一行数据并封装为 k1v14

32、/调用自定义的 map 函数,并将k1v1 传给map5/收集 map 的输出,进行分区和排序6/reduce task 任务启动,并从map 端拉取数据7/reduce task 调用自定义的reduce 函数进行处理8/调用 outputformat 的recordwriter 将结果数据输出41.用 mapreduce 实现 sql 语 select count (x) from a group by b;44.搭建 hadoop 集群 , master 和slaves 都运行哪些服务答:master 主要是运行我们的主节点,slaves 主要是运行我们的从节点。45. hadoop 参

33、数调优46. pig , latin , hive 语法有什么不同答:46. 描述 Hbase,ZooKeeper 搭建过程48.hadoop 运行原理答:hadoop 的主要是由两部分组成,HDFS 和mapreduce,首先 HDFS 的原理就是分布式的文件系统,将一个大的文件,分割成多个小的文件,进行在多台服务器上。Mapreduce 的原理就是使用JobTracker 和 TaskTracker 来进行作业的执行。Map 就是将任务展开,reduce 是汇总处理后的结果。49.mapreduce 的原理答:mapreduce 的原理就是将一个MapReduce 框架由一个单独的mast

34、er JobTracker 和每个集群节点一个slave TaskTracker 共同组成。master 负责调度构成一个作业的所有任务,这些的 slave 上,master它们的执行,重新执行已经失败的任务。而 slave 仅负责执行由maste 指派的任务。50.HDFS机制答:HDFS 主要是一个分布式的文件系统,由namenode 来接收用户的操作请求,然后根据文件大小,以及定义的block 块的大小,将大的文件切分成多个 block 块来进行保存51.举一个例子说明 mapreduce 是怎么运行的。Wordcount52.如何确认 hadoop 集群的健康状况答:有完善的集群体系(

35、ganglia,nagios)Hdfs dfsadmin reportHdfs haadmin getServiceState nn153.mapreduce 作业,不让reduce 输出,用什么代替 reduce 的功能。54.hive 如何调优答:hive 最终都会转化为mapreduce 的 job 来运行,要想hive 调优,实际上就是 mapreduce 调优,可以有下面几个方面的调优。解决收据倾斜问题,减少 job 数量,设置合理的map 和reduce 个数,对小文件进行合并,优化时把握整体,单个task 最优不如整体最优。按照一定规则分区。55.hive 如何控制权限我们公司没

36、做,不需要56.HBase 写数据的原理是什么?答:57.hive 能像关系型数据库那样建多个库吗?答:当然能了。58.HBase 宕机如何处理答:宕机分为 HMaster 宕机和 HRegisoner 宕机,如果是 HRegisoner 宕机,HMaster 会将其所管理的region 重新分布到其他活动的 RegionServer 上,由于数据和日志都持久在 HDFS 中,该操作导致数据丢失。所以数据的一致性和安全性是有保障的。如果是 HMaster 宕机,HMaster 没有单点问题,HBase 中可以启动多个 HMaster,通过 Zookeeper的Master Election 机

37、制保证总有一个 Master 运行。即 ZooKeeper 会保证总会有一个 HMaster 在对外提供服务。59.假设公司要建一个数据中心,你会如何处理?先进行需求分析设计功能划分架构设计吞吐量的估算采用的技术类型软硬件选型成本效益的分析项目管理扩展性安全性,稳定性60. 单项选择题1. 下面哪个程序负责HDFSC数据。a)NameNodeb)Jobtrackerc)Datanoded)secondaryNameNode e)tasktracker2. HDfS 中的blockA默认保存几份?a)3 份 b)2 份 c)1份 d)不确定3. 下列哪个程序通常与 NameNode 在一个节点启

38、动?a)SecondaryNameNode b)DataNodekTracker d)Jobtracker e)zkfc4. Hadoop 作者Da)Martin Fowler b)Kent Beck c)Doug cutting5. HDFS 默认 Block SizeBM1a)32MB b)64MB c)128MB6. 下列哪项通常是集群的最主要瓶颈DM2a)CPU b)网络 c)磁盘 d)内存7. 关于 SecondaryNameNode 哪项是正确的?Ca)它是 NameNode 的热备b)它对内存没有要求c)它的目的是帮助 NameNode 合并编辑日志,减少NameNode 启动时

39、间d)SecondaryNameNode 应与 NameNode 部署到一个节点多选题:8. 下列哪项可以作为集群的管理工具ABCD(此题出题有误)a)Puppet b)Pdsh c)Cloudera Managerd)Zookeeper9. 配置机架感知M3 的下面哪项正确ABCa)如果一个机架出问题,影响数据读写b)写入数据的时候会写到不同机架的 DataNode 中c)MapReduce 会根据机架获取离自己比较近的网络数据10. Client 端上传文件的时候下列哪项正确BCa)数据经过 NameNode传递给 DataNodeb)Client 端将文件切分为Block,依次上传c)C

40、lient 只上传数据到一台 DataNode,然后由 NameNode负责 Block工作11. 下列哪个是 Hadoop 运行的模式ABCa)单机版 b)伪分布式 c)分布式12. Cloudera 提供哪几种安装 CDHABCD的方法a)Cloudera manager b)Tar ball c)Yum d)Rpm判断题:全部都是错误滴13. Ganglia 不仅可以进行,也可以进行告警。( )14. Block Size 是不可以修改的。( )15. Nagios 不可以Hadoop 集群,因为它不提供 Hadoop 支持。( )16. 如果 NameNode意外终止, Seconda

41、ryNameNode 会接替它使集群继续工作。( )17. Cloudera CDH 是需要使用的。( )18. Hadoop 是 Java 开发的,所以 MapReduce 只支持 Java 语言编写。( )19. Hadoop 支持数据的随机读写。( )20. NameNode 负责管理 metadata, client 端每次读写请求,它都会从磁盘中或则会写入 metadata 信息并反馈 client 端。( )21. NameNode本地磁盘保存了 Block 的位置信息。( )22. DataNode 通过长连接与 NameNode 保持通信。( )23. Hadoop 自身具有严

42、格的权限管理和安全措施保障集群正常运行。( )24. Slave 节点要数据,所以它的磁盘越大越好。( )25. hadoop dfsadmin report 命令用于检测 HDFS 损坏块。( )26. Hadoop 默认调度器策略为 FIFO( )27. 集群内每个节点都应该配 RAID,这样避免单磁盘损坏,影响整个节点运行。()28. 因为 HDFS 有多个副本,所以 NameNode 是不存在单点问题的。( )29. 每个 map 槽(进程)就是一个线程。( )30. Mapreduce 的 input split 就是一个 block。( )31. NameNode 的默认Web U

43、I 端口是 50030,它通过 jetty 启动的 Web 服务。( )32. Hadoop 环境变量中的 HADOOP_HEAPSIZE 用于设置所有 Hadoop 守护线程的内存。它默认是 200 GB。( )33. DataNode 首次加入 cluster 的时候,如果 log 中报告不兼容文件版本,那需要NameNode 执行“Hadoop namenode -format”操作格式化磁盘。()63. 谈谈 hadoop1 和 hadoop2 的区别答:hadoop1 的主是由 HDFS 和mapreduce 组成的,HDFS 主要是用来数据,mapreduce 主要是用来计算的,那

44、么 HDFS 的数据是由namenode 来元数据信息,datanode 来数据的。Jobtracker 接收用户的操作请求之后去分配执行 task 任务。在hadoop2 中,首先避免了namenode 单点故障的问题,使用两个namenode 来组成namenode feduration 的机构,两个namenode 使用相同名空间,一个是standby 状态,一个是 active 状态。用户的时候,standby 状态,并且,使用 journalnode 来数据的原信息,一个 namenode 负责journalnode 中的数据,一个 namenode 负责写入 journalnode

45、 中的数据,这个平台组成了hadoop 的HA 就是high availableAbility 高可靠。然后在hadoop2 中没有了 jobtracker 的概念了,统一的使用yarn 平台来管理和调度,yarn 平台是由resourceManager 和 NodeManager 来共同组成的,ResourceManager 来接收用户的操作请求之后,去 NodeManager 上面启动一个主线程负责分配的工作,然后分配好了之后告知 ResourceManager,然后 ResourceManager 去对应的上面执行 task 任务。64. 说说值对象与对象的区别?65. 谈谈你对反射机制

46、的理解及其用途?答:java 中的反射,首先我们写好的类,经过编译之后就编程了.class 文件,我们可以获取这个类的.class 文件,获取之后,再来操作这个类。这个就是 java 的反射机制。66. ArrayList、Vector、LinkedList 的区别及其优缺点?HashMap、HashTable 的区别及其优缺点?答:ArrayList 和Vector 是采用数组方式数据, ,Vector 由于使用了synchronized 方法(线程安全)所以性能上比ArrayList 要差,LinkedList 使向链表实现,按序号索引数据需要进行向前或向后遍历,但是数据时只需要本项的前后

47、项即可,所以数度较快!HashMap 和 HashTable:Hashtable 的方法是同步的,而 HashMap 的方法不是,Hashtable 是基于陈旧的Dictionary 类的,HashMap 是Java 1.2 引进的 Map 接口的一个实现。HashMap 是一个线程不同步的,那么就意味着执行效率高,HashTable 是一个线程同步的就意味着执行效率低,但是 HashMap 也可以将线程进行同步,这就意味着,我们以后再使用中,尽量使用 HashMap 这个类。67. 文件大小默认为 64M,改为 128M 有啥影响?答:更改文件的 block 块大小,需要根据我们的实际生产中

48、来更改 block 的大小,如果 block 定义的太小,大的文件都会被切分成太多的小文件,减慢用户上传效率,如果block 定义的太大,那么太多的小文件可能都会存到一个block 块中,虽然不浪费硬盘,还是会增加 namenode 的管理内存。69. RPC 原理?答:1.调用客户端句柄;执行传送参数2.调用本地系统内核网络消息3. 消息传送到主机4. 服务器句柄得到消息并取得参数5. 执行过程6. 执行的过程将结果返回服务器句柄7. 服务器句柄返回结果,调用系统内核8. 消息传回本机9. 客户句柄由内核接收消息10. 客户接收句柄返回的数据70. 对 Hadoop 有没有调优经验,没有什么

49、使用心得?(调优从参数调优讲起)dfs.block.sizeMapredure:io.sort.mbio.sort.spill.percentmapred.local.dirmapred.map.tasks &mapred.tasktracker.map.tasks.ummapred.reduce.tasks &mapred.tasktracker.reduce.tasks.ummapred.reduce.max.attemptsmapred.reduce.parallel.copiesmapreduce.reduce.shuffle.maxfetchfailuresmapre

50、d.child.java.optsmapred.reduce.tasks.speculative.executionpress.map.output &mappression.codecmapred.repleted.maps72 以你的实际经验,说下怎样预防全表扫描答:1.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫3.描应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描4.in

51、 和 not in,用具体的字段列表代替,不要返回用不到的任何字段。in 也要慎用,否则会导致全表扫描5.避免使用模糊6.任何地方都不要使用 select* from t73. zookeeper 优点,用在什么场合答:极大方便分布式应用的开发;(轻量,成本低,性能好,稳定性和可靠性高)75.把公钥追加到令?该命令是否在 root 用户下执行?文件答:ssh-copy-id哪个用户需要做免密登陆就在哪个用户下执行76. HadoopHA 集群中各个服务的启动和关闭的顺序?答:77. 在 hadoop 开发过程中使用过哪些算法?其应用场景是什么?答:排序,分组,topk,join,group78

52、. 在实际工作中使用过哪些集群的运维工具,请分别阐述期作用。答:nmonganglia nagios79. 一台如何应对那么多的请求,高并发到底怎么实现,一个请求怎么产生的,在服务端怎么处理的,最后怎么返回给用户的,整个的环节操作系统是怎么控制的?80. java 是传值还是传址?答:传递。传址81. 问:的服务器有多少台?100 多台82. 问:服务器的内存多大?128G 或者 64G 的83. hbase 怎么预分区?建表时可以通过shell 命令预分区,也可以在代码中建表做预分区具体命令详见笔记汇总84. hbase 怎么给 web 前台提供接口来(HTABLE 可以提供对 HBase

53、的,但是怎么同一条的多个版本数据)?答:使用 HTable 来提供对HBase 的,可以使用时间戳来一条数据的多个版本。85. .htable API 有没有线程安全问题,在程序中是单例还是多例?M4多例:当多线程去同一个表的时候会有。86.的数据是用什么导入到数据库的?导入到什么数据库?处理完成之后的导出:利用hive 处理完成之后的数据,通过sqoop 导出到 mysql 数据库中,以供报表层使用。87.业务数据量多大?有多少行数据?(面试了三家,都问这个问题)亿行(8、9 千万,具体不详,一般开开发时使用的是部分数据,不是全量数据,有发中也没人会特别关心这个问题)88.处理数据是直接读数据库的数据还是读文本数据?将日志数据导入到 hdfs 之后进行处理89.写 hive 的 hql 语句,大概有多少条?不清楚,写的时候也没有做过统计90.提交的 job 任务大概有多少个?这些 job 执行完大概用多少时间?(面试了三家,都问这个问题)没统计过,加上测试的,会有很多Sca 阶段,一小时运行一个 job,处理时间约 12 分钟Etl 阶段,有 2 千多个 job,从凌晨 12:00 开始次第执行,到早上 5 点左右全部跑完91. hive 跟 hbase 的区别是?答:Hi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论