大数据面试题(一)

1.  列举出Hadoop中定义的最经常使用的InputFormats,那个是默认的?java

TextInputFormat(默认)用于读取纯文本文件,key是每一行的位置偏移量,是LongWritable类型的,value是每一行的内容,为Text类型 KeyValueTextInputFormat 一样用于读取文件,若是行被分隔符(缺省是tab)分割为两部分,第一部分为key,剩下的部分 为value;若是没 有分隔符,整行做为 key,value为空 SequenceFileInputFormat 用于读取sequence file。 sequence file是Hadoop用于存储数据自定义格式的binary文件。它有 两个子类: SequenceFileAsBinaryInputFormat,将 key和value以BytesWritable的类型读出;SequenceFileAsTextInputFormat,将key和value以Text类型读出node

2..TextInputFormat和KeyValueInputFormat类不一样之处在于哪里?mysql

答:TextInputFormat读取文本文件中的全部行,提供了行的偏移做为Mapper的键,实际的行做为 mapper的值。 KeyValueInputFormat读取文本文件,解析全部行到中,首个空格前的字符是mapper的key,行的其他部分则是mapper的值面试

3. Hadoop中InputSplit是什么? 算法

答:InputSplit是指分片,在MapReduce做业中,做为map task最小输入单位。分片是基于文件基础上出来的概念,通俗的理解一个文件可 以切分为多少个片断,每一个片断包括了等信息。在 MapTask 拿到这些分片后,会知道从哪开 始读取数据。sql

4. Hadoop框架中文件拆分是如何被触发的?shell

  答:经过运行输入格式类中的getInputSplit()方法。 数据库

5. 考虑一种状况:Map/Reduce系统中,HDFS块大小是64MB,输入格式FileInputFormat,有三个文件64K,65MB,127MB, 那么有hadoop框架会将 输入划分红多少?编程

 答:hadoop将会作5个拆分,64K文件拆分1个,65MB文件拆分2个,127MB文件拆分2个。 设计模式

6. hadoop中的RecordReader的目的是什么?

 1)以怎样的方式从分片中读取一条记录,每读取一条记录都会调用RecordReader类;

  2)系统默认的RecordReader是LineRecordReader,如TextInputFormat;而SequenceFileInputFormat的RecordReader是SequenceFileRecordReader;

  3)LineRecordReader是用每行的偏移量做为map的key,每行的内容做为map的value;

  4)应用场景:自定义读取每一条记录的方式;自定义读入key的类型,如但愿读取的key是文件的路径或名字而不是该行在文件中的偏移量。 系统默认的LineRecordReader是按照每行的偏移量作为map输出时的key值,每行的内容做为map的value值,默认的分隔符是 回车和换行。 如今要更改map对应的输入的值,key对应的文件的路径(或者是文件名),value对应的是文件的内容 (content)。 那么咱们须要重写InputFormat和RecordReader,由于RecordReader是在InputFormat中调用的,固然重写RecordReader才是重点!

7. 若是hadoop中没有定义定制分区,那么如何在输出到reduce前执行数据分区? Partitioner /override getPartition()

   答:默认的分区器为各个键计算一个哈希值,并分配给基于这个结果的分区。

8. 什么是Combiner?举个例子,何时使用combiner,何时不用?

答:当map生成的数据过大时,带宽就成了瓶颈,怎样精简压缩传给Reduce的数据,有不影响最终的结果呢。有一种方法就是使 用 Combiner,Combiner号称本地的Reduce,Reduce最终的输入,是Combiner的输出 Combiner的做用是把一个map产生的多个合并成一个新的,而后再将新的做为reduce的输入; 在map函数与reduce函数之间多了一个combine函数,目的是为了减小map输出的中间结果,这样减小了reduce复制map输出的数据,减小网络 传输负载; 并非全部状况下都能使用Combiner,Combiner适用于对记录汇总的场景(如求和),可是,求平均数的场景就不能使用Combiner了。若是能够 使用Combiner,通常状况下,和咱们的reduce函数是一致的。

9. 什么是jobtracker? jobtracker有哪些特别的函数?

 答:

1,  JobTracker是整个MapReduce计算框架中的主服务,至关于集群的“管理者”,负责整个集群的做业控制和资源管理  

2,  main()函数

10. 什么是tasktracker?

TaskTracker是JobTracker和Task之间的桥梁:一方面,从JobTracker接收并执行各类命令:运行任务、提交任务、杀死任务 等;另外一方面,将本地节点上各个任务的状态经过心跳周期性汇报给JobTracker。TaskTracker与JobTracker和Task之间采用了 RPC协议进行通讯。

11. hadoop中job和task之间是什么关系?

  概述:

 (1)Hadoop MapReduce采用Master/Slave结构。

*Master:是整个集群的惟一的全局管理者,功能包括:做业管理、状态监控和任务调度等,即MapReduce中的JobTracker。

 *Slave:负责任务的执行和任务状态的回报,即MapReduce中的TaskTracker。

JobTracker剖析:

 (1)概述:JobTracker是一个后台服务进程,启动以后,会一直监听并接收来自各个TaskTracker发送的心跳信息,包括资源使用 状况和任务运行状况等信息。

 (2)JobTracker的主要功能:

 1.做业控制:在hadoop中每一个应用程序被表示成一个做业,每一个做业又被分红多个任务,JobTracker的做业控制模块则负责做业 的分解和状态监控。

 *最重要的是状态监控:主要包括TaskTracker状态监控、做业状态监控和任务状态监控。主要做用:容错和为任务调度提供决 策依据。

2.资源管理。

  TaskTracker剖析:

 (1)TaskTracker概述:TaskTracker是JobTracker和Task之间的桥梁:一方面,从JobTracker接收并执行各类命令:运行任务、提交 任务、杀死任务等;另外一方面,将本地节点上各个任务的状态经过心跳周期性汇报给JobTracker。TaskTracker与JobTracker和 Task之间采用了RPC协议进行通讯。

(2)TaskTracker的功能:

1.汇报心跳:Tracker周期性将全部节点上各类信息经过心跳机制汇报给JobTracker。这些信息包括两部分:

 *机器级别信息:节点健康状况、资源使用状况等。

 *任务级别信息:任务执行进度、任务运行状态等。

2.执行命令:JobTracker会给TaskTracker下达各类命令,主要包括:启动任务(LaunchTaskAction)、提交任务 (CommitTaskAction)、杀死任务(KillTaskAction)、杀死做业(KillJobAction)和从新初始化(TaskTrackerReinitAction)。

12. 假设hadoop一个job产生了100个task, 而且其中的一个task失败了,hadoop会如何处理?

hadoop自己的一个设计理念就是在普通的pc硬件上构建高可靠性的系统,任何failed task都不会引发整个job的失败,由于全部失败的任务 都会被从新执行(reschedule execution),只有当从新执行的次数超过4次,才会把这任务标记为失败,致使整个job的失败。

13. 经过划分多个节点上任务,hadoop实现了并行处理,对少数慢节点可能会限制剩下其余程序的 速率,并拖慢了整个程序。hadoop提供了什么机制防止这种状况的发生? speculative execution。举个简单的例子,若是某个job有2000个map task,已经完成了1999个,只剩下一个task因为硬件比较慢而成为拖尾 任务,为了减小拖尾任务对整个job运行时间的影响,jobtracker会从新启动一个如出一辙的duplicate task和原有的task并行的执行,这样有一 个task执行成功,整个map过程就会结束。speculative execution(推测执行)只有个处理拖尾任务的优化策略,并不能提升系统的可靠性

14. hadoop推测执行是如何实现的?

 答:Hadoop会为该task启动备份任务,让speculative task与原始task同时处理一份数据,哪一个先运行完,则将谁的结果做为最终结果,而且在 运行完成后Kill掉另一个任务。

15. Unix中使用命令行,如何查看hadoop集群中的全部运行的任务?或是kill掉任务?

 jps

16. 什么是hadoop streming?

答:Haoop支持用其余语言来编程,须要用到名为Streaming的通用API, Streaming主要用于编写简单,短小的MapReduce程序,能够经过脚 本语言编程,开发更快捷,并充分利用非Java库

17. 解释hadoop和hadoop生态系统两个概念

 答:Hadoop是一个可以对大量数据进行分布式处理的软件框架,Hadoop的核心是HDFS和Mapreduce,hadoop2.0还包括YARN hadoop生态系统:包含 HDFS mapreduce hive hbase zookeeper sqoop flume pig mahout

 18. 说明hadoop2.0的基本构成

 HDFS

 MapReduce

 YARN

 19. 相比于HDFS1.0. 2.0最主要的改进在哪几个方面?

 引入一个新的资源管理系统YARN

 HDFS单点故障得以解决

 Hadoop 2.0的最大变化出如今内核(HDFS、MapReduce和YARN)

20. 试使用步骤1,步骤2,步骤3.……说明YARN中运行应用程序的基本流程

步骤1 用户向YARN中提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。

步骤2 ResourceManager为该应用程序分配第一个Container,并与对应的Node-Manager通讯,要求它在这个Container中启动应用程序的 ApplicationMaster。

步骤3 ApplicationMaster首先向ResourceManager注册,这样用户能够直接经过ResourceManage查看应用程序的运行状态,而后它将为各 个任务申请资源,并监控它的运 行状态,直到运行结束,即重复步骤4~7。

步骤4 ApplicationMaster采用轮询的方式经过RPC协议向ResourceManager申请和领取资源。

步骤5 一旦ApplicationMaster申请到资源后,便与对应的NodeManager通讯,要求它启动任务Task。

步骤6 NodeManager为任务Task设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并经过 运行该脚本启动任务Task。

步骤7 各个任务Task经过某个RPC协议向ApplicationMaster汇报本身的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状 态,从而能够在任务失败时从新启动任务。 在应用程序运行过程当中,用户可随时经过RPC向ApplicationMaster查询应用程序的当前运行状态。

步骤8 应用程序运行完成后,ApplicationMaster向ResourceManager注销并关闭本身。 10. MapReducer2.0与Yarn是否等同,尝试解释说明。

21. MapReducer2.0中, MRAppMaster主要做用是什么,MRappMaster如何实现任务容错的?

22. 什么是MRAppMaster?

咱们知道,在MRv1中,JobTracker存在诸多问题,包括存在单点故障,扩展受限等,为了解决这些问题,Apache对MRv1进行了改进,提 出了YARN,YARN将JobTracker中的做业控制和资源管理两个功能分开,分别由两个不一样的进程处理,进而解决了原有JobTracker存在的问 题。通过架构调整以后,YARN已经彻底不一样于MRv1,它已经变成了一个资源管理平台,或者说应用程序管理框架。运行于YARN之上的计 算框架不仅限于MapReduce一种,也能够是其余流行计算框架,好比流式计算、迭代式计算等类型的计算框架。为了将一个计算框架运行于 YARN之上,用户须要开发一个组件—ApplicationMaster。做为一个开始,YARN首先支持的计算框架是MapReduce,YARN为用户实现好了 MapReduce的ApplicationMaster,也就是本文要介绍了MRAppMaster。

23. 相比于JobTracker,MRAppMaster有什么不一样?

既然MRAppMaster是由JobTracker衍化而来的,那么是否将JobTracker的代码稍加修改,就变成了MRAppMaster呢,答案是否认的。事实 上,YARN仅重用了MRv1中的少量代码,基本可看作重写了MRAppMaster。

YARN采用了新的软件设计思想,包括对象服务化、事件驱动的异步编程模型的。做为YARN的一部分,MRAppMaster的实现也采用了这 些设计思想。

下面简要介绍一下MRAppMaster的实现细节 

在正式介绍MRAppMaster以前,咱们先回顾一下MRv1的实现。咱们都知道,MRv1主要由两种服务组成,即:JobTracker和TaskTracker, 而在YARN中,TaskTracker已经由NodeManager代替,所以,咱们在此重点分析JobTracker。JobTracker包含资源管理和做业控制两个功能, 在YARN中,做业管理由ResourceManager实现,所以,只剩下做业控制这一个功能(由MRAppMaster实现)。MRv1中每一个做业由一个 JobInProgress控制,每一个任务由一个TaskInProgress控制,因为每一个任务可能有多个运行实例,所以,TaskInProgress实际管理了多个运行实 例Task Attempt,对于每一个运行实例,可能运行了一个MapTask或者ReduceTask,另外,每一个Map Task或者Reduce Task会经过RPC协议将状态 汇报给TaskTracker,再由TaskTracker进一步汇报给JobTracker 在MRAppMaster中,它只负责管理一个做业,包括该做业的资源申请、做业运行过程监控和做业容错等。MRAppMaster使用服务模型和 事件驱动的异步编程模型对JobInProgress和TaskInProgress进行了重写(分别对应JobImpl和TaskImpl),并让Map Task和Reduce Task(Map Task和Reduce Task重用了MRv1中的代码)直接经过RPC将信息汇报给MRAppMaster。此外,为了可以运行于YARN之上,MRAppMaster还要 与ResourceManager和NodeManager两个新的服务通讯(用到两个新的RPC协议),以申请资源和启动任务,这些都使得MRAppMaster彻底不一样于JobTracker。

24. 为何会产生yarn,它解决了什么问题。有什么优点?

25. job的运行流程(提交一个job的流程)

 

job的执行流程以下: dataInput- >split- >Mapper- >Combine- >(产出临时数据)-->Partition- >Sort- >Reducer- >最终数据

26. hadoop生态圈中各类框架的运用场景

27. hive中的压缩格式RCFile.TextFile.SequenceFile各有什么区别,以上三种格式同样大的文件哪一个占用空间大小

 textfile(默认) 存储空间消耗比较大,而且压缩的text 没法分割和合并 查询的效率最低,能够直接存储,加载数据的速度最高 sequencefile 存储空间消耗最大,压缩的文件能够分割和合并 查询效率高,须要经过text文件转化来加载 rcfile 存储空间最小,查询的效率最高 ,须要经过text文件转化来加载,加载的速度最低

28. hadoop中的一个HA压缩

29. Flume收集到的数据不少个小文件,我而要写MR处理时将这些文件合并(是在MR中进行优化 ,不让一个小文件一个MapReduce)

30. 大家的集群规模?

 开发集群:10台(8台可用)8核cpu

31. 大家的数据是用什么导入到数据库的?导入到什么数据库?

处理以前的导入:经过hadoop命令导入到hdfs文件系统 处理完成以后的导出:利用hive处理完成以后的数据,经过sqoop导出到mysql数据库中,以供报表使用

32. 大家的业务数据量多大?有多少行数据?(面试三家,都问)

 开发时使用的是部分数据,不是全量数据。有将近一亿行(8. 9千万吧, 全体不详, 通常开发不是特别关心这个问题)

33. 大家处理数据是直接读数据库的数据仍是读文本数据?

 将日志数据导入到hdfs以后时行处理

34. 大家写hive的hql语句,大概有多少条?

 不清楚,我本身写的时候也没统计

35. 大家提交job任务大概有多少个?这些job执行完成大概用多少时间(都问。)

 没统计过。加上测试的会不少

36. hive跟hbase的区别是?

37. 你在项目中主要的工做任务是?

利用hive分析数据

38. 你在项目遇到了哪些难题。是怎么解决的?

 某些任务执行时间过长, 且失败率太高。 检查日志后发现没有执行完就失败,缘由出在 hadoop的job的timout太短(相对于集群的能力来讲)设置长一点就行

39. 你本身写过udf函数么?写了哪些

40. 你的项目提交到job的时候数据量有多大?(常问)

41. reduce后输出的数据量有多大?

42. 一个网络商城1天大概产生多少G日志?4tb

43. 大概有多少条日志记录

44. 日访问大概有多少个?百万

45. hdfs的 client端,复制到第三个副本时宕机,hdfs怎么恢复下次写第三副本?block块信息是先写 dataNode仍是先写nameNode?

46. 快排现场写程序实现?

47. jvm的内存是怎么分配原理?

48. 毒酒问题---1000桶酒,其中1桶有毒,而一旦吃了,毒性会在一周后发做。问最少须要多少只 老鼠可在一周内找出毒酒?

49. 用栈实现队列?

50. 链表倒序实现?

51. 多线程模型怎么(生产,消费者)? 平时并发多线程都用哪些实现方式?

52. synchronized是同步悲观锁吗?互斥?怎么写同步提升效率?

 synchronized 关键字至关于 lock(M.class), 是将整个对象锁住,为提升效率,可使用读写锁

53. 4亿个数字,找出哪些是重复的,要用最小的比较次数,写程序实现

54. java是传值仍是传址?

55. java处理多线程,另外一线程一直等待?

56. 在线安装ssh的命令以及文件解压的命令?

57. 把公钥都追加到受权文件的命令?该命令是否在root用户下执行?

58. HadoopHA集群中各个服务启动和关闭的顺序?

59. HDFS中的block块默认保存几份?默认大小多少?

60. NameNode中的meta数据是存放在NameNode自身仍是datanode等其它节点.DataNode节点自身是否有meta数据存在?

61. 下列哪一个程序一般与NameNode在一个节点启动?

62. 下面哪一个程序负责HDFS数据存储?

63. 在Hadoop HA集群中Zookeeper 的主要做用,以及启动和查看状态的命令?

sh bin/zkServer.sh start sh bin/zkServer.sh status

64. HBase在进行模型设计进重点在什么地方?一张表中定义多少个Colum family最合适?为何?

65. 如何提升HBase客户端的读写性能?请举例说明。

66. 基于Hadoop HA集群记性MapReduce开发时,Configuration 如何设置hbase.zookeeper.quorum属性的值?

67. 在hadoop开发过程当中使用过哪些算法?其应用场景是什么?

68. MapReduce程序如何发布?若是MapReduce中涉及到了第三方的jar包,该如何处理 14. 在实际工做中使用过哪些运维工具,请分别阐述其做用。

69. hadoop中combiner的做用?

70. IO的原理。IO模型有几种?

71. Windows用什么样的模型,Linux用什么样的模型?

72. 一台机器如何应对那么多的请求访问。高并发到底怎么实现,一个请求怎么产生的。 在服务端怎么处理的。最后怎么返回给用户的。整个的环节操做系统是怎么控制的?

73. 以你的实际经验,说下怎么样预防全表扫描

74. 网络七层协议

76. 集合HashTable和HashMap的区别

1.HashTable的方法是同步的,HashMap未经同步

2.HashTable不容许null值(key和value都不能够),HashMap容许null值(key和value均可以)。

77.zookeeper优势,用在什么场合

78.HBase中的metastore用来作什么的

 79java优点及缘由

 80. jvm优化

 81写一个冒泡排序

82. hadoop底层存储设计

83. 文件大小默认64M,改成128有啥影响

 84. RPC原理

85. NameNode与SecondaryNameNode的区别与联系

 86. 介绍MapReduce整个过程.好比把WordCount的例子的细节讲清楚(重点讲shuffle)

 87. 对Hadoop有没有调优经验.有没有什么使用心得(调优从参数调优提及)

 88. MapReduce出现单点负载过大,怎么负载平衡?(能够用Partioner)

89. 说说值与引用对象的区别

90. 谈谈你对反射机制的理解及用途

91. ArrayList, Vector, LinkdList的区别及其优缺点?HashMap,HashTable的区别及其优缺点?

 92. 列出线程的实现方式? 如何实现同步

 93. 列出至少5种设计模式? 用代码或UML类图描述其中用到的技术难点及其解决思路

 94. 谈谈你最近正在研究的技术.谈谈你最近项目中用到的技术难点及其解决思路

 95. hdfs中的block默认保存几份?

 96. 哪一个程序一般与nn在一个节点启动 Jobtracker

 97. 列举几个配置文件优化?

98. 写出你对zookeeper的理解

99. DataNode首次加入cluster的时候,若是log报告不兼容文件版本.那须要NameNode执行格式化操做,这样处理的缘由是?

100. 谈谈数据倾斜,如何发生的.并给出优化方案 可以想到的关于数据倾斜的一些解决方式(欢迎补充,尤为是有没有作搜索或者数据挖掘的朋友有碰到相似问题):

1. 增长reduce 的jvm内存

2. 增长reduce 个数

3.customer partition

4. 其余优化的讨论.

5. reduce sort merge排序算法的讨论

6. 正在实现中的hive skewed join.

7. pipeline

8. distinct

9. index 尤为是bitmap index

101. 介绍一下HBase过滤器

 HBase为筛选数据提供了一组过滤器,经过这个过滤器能够在HBase中的数据的多个维度(行,列,数据版本)上进行对数据的筛选操 做,也就是说过滤器最终可以筛选的数据可以细化到具体的一个存储单元格上(由行键,列明,时间戳定位)。一般来讲,经过行键,值 来筛选数据的应用场景较多。

1. RowFilter:筛选出匹配的全部的行,对于这个过滤器的应用场景,是很是直观的:使用BinaryComparator能够筛选出具备某个行键的行, 或者经过改变比较运算符(下面的例子中是CompareFilter.CompareOp.EQUAL)来筛选出符合某一条件的多条数据,如下就是筛选出行键为 row1的一行数据:

2. PrefixFilter:筛选出具备特定前缀的行键的数据。这个过滤器所实现的功能其实也能够由RowFilter结合RegexComparator来实现,不过这 里提供了一种简便的使用方法,如下过滤器就是筛选出行键以row为前缀的全部的行:

 3. KeyOnlyFilter:这个过滤器惟一的功能就是只返回每行的行键,值所有为空,这对于只关注于行键的应用场景来讲很是合适,这样忽略 掉其值就能够减小传递到客户端的数据量,能起到必定的优化做用

4. RandomRowFilter:从名字上就能够看出其大概的用法,本过滤器的做用就是按照必定的概率(<=0会过滤掉全部的行,>=1会包含全部的 行)来返回随机的结果集,对于一样的数据集,屡次使用同一个RandomRowFilter会返回不通的结果集,对于须要随机抽取一部分数据的应 用场景,可使用此过滤器:

 102. MapReduce基本执行过程

103. 谈谈hadoop2和hadoop2的区别

104. HBase集群安装注意事项

105. 记录包含值域F和值域G.要别统计相同G值的记录中不一样的F值的数目,简单编写过程

106. HDFS原理.以及各个模块的职责

107. MR的工做原理

108. map方法是如何调用reduce方法的.

109. shell如何判断文件是否存在.若是不存在该如何处理

108. fsimage和edit的区别

109. DataNode在什么状况下不会备份

110. hdfs体系结构

111. flush的过程  

112. hadoop集群搭建过程.写出步骤

113. hadoop集群运行过程当中启动哪些线程.各自的做用是什么?

114. /tmp/hadoop-root/dfs/name the path is not exists or is not accessable. NameNode main 中报错.怎么解决

115. 工做中编写mapreduce用到的语言. 编写一个mapreduce程序

116. hadoop 命 >杀死一个job任务 >删除/tmp/aaa/文件目录 >hadoop集群添加或删除节点时.刷新集群状态的命令

117. hadoop的调度器有哪些?工做原理

118. mapreduce的join方法有哪些?

119. Hive无数据保存的方法有哪些?各有什么特色

120. java实现非递归二分法算法

121. mapreduce中combiner和Partion的做用

122. 如何实现 mapreduce的二次排序

123. hadoop的高度机制

124. 机架感知

125. MR数据倾斜缘由和解决方案?

126. 集群HA

127. 对于HIVE. 你写过哪些UDF函数.做用是什么

128. hdfs的数据压缩算法

129. mapreduce的调度模式

130. hive底层与数据库交互原理

131. hadoop运行原理

132. mapreduce的原理

133. hdfs存储机制

134. Hive内部表和外部表的区别

一、在导入数据到外部表,数据并无移动到本身的数据仓库目录下,也就是说外部表中的数据并非由它本身来管理的!而 表则不一 样;

二、在删除表的时候,Hive将会把属于表的元数据和数据所有删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数 据 是不会 删除的! 那么,应该如何选择使用哪一种表呢?在大多数状况没有太多的区别,所以选择只是我的喜爱的问题。可是做为一个经验,如 果全部处理 都须要由Hive完成,那么你应该建立表,不然使用外部表!

135. HBase的rowkey怎么建立比较好.列族怎么建立比较好

136. 用mapreduce怎么处理数据倾斜问题?

137. hadoop框架中中怎么优化.

138. HBase内部什么机制

139. 咱们在开发分布式计算job的.是否能够去掉reduce阶段

140. hive底层与数据库交互原理

 

1.  列举出Hadoop中定义的最经常使用的InputFormats,那个是默认的?

TextInputFormat(默认)用于读取纯文本文件,key是每一行的位置偏移量,是LongWritable类型的,value是每一行的内容,为Text类型 KeyValueTextInputFormat 一样用于读取文件,若是行被分隔符(缺省是tab)分割为两部分,第一部分为key,剩下的部分 为value;若是没 有分隔符,整行做为 key,value为空 SequenceFileInputFormat 用于读取sequence file。 sequence file是Hadoop用于存储数据自定义格式的binary文件。它有 两个子类: SequenceFileAsBinaryInputFormat,将 key和value以BytesWritable的类型读出;SequenceFileAsTextInputFormat,将key和value以Text类型读出

2..TextInputFormat和KeyValueInputFormat类不一样之处在于哪里?

答:TextInputFormat读取文本文件中的全部行,提供了行的偏移做为Mapper的键,实际的行做为 mapper的值。 KeyValueInputFormat读取文本文件,解析全部行到中,首个空格前的字符是mapper的key,行的其他部分则是mapper的值

3. Hadoop中InputSplit是什么?

答:InputSplit是指分片,在MapReduce做业中,做为map task最小输入单位。分片是基于文件基础上出来的概念,通俗的理解一个文件可 以切分为多少个片断,每一个片断包括了等信息。在 MapTask 拿到这些分片后,会知道从哪开 始读取数据。

4. Hadoop框架中文件拆分是如何被触发的?

  答:经过运行输入格式类中的getInputSplit()方法。

5. 考虑一种状况:Map/Reduce系统中,HDFS块大小是64MB,输入格式FileInputFormat,有三个文件64K,65MB,127MB, 那么有hadoop框架会将 输入划分红多少?

 答:hadoop将会作5个拆分,64K文件拆分1个,65MB文件拆分2个,127MB文件拆分2个。

6. hadoop中的RecordReader的目的是什么?

 1)以怎样的方式从分片中读取一条记录,每读取一条记录都会调用RecordReader类;

  2)系统默认的RecordReader是LineRecordReader,如TextInputFormat;而SequenceFileInputFormat的RecordReader是SequenceFileRecordReader;

  3)LineRecordReader是用每行的偏移量做为map的key,每行的内容做为map的value;

  4)应用场景:自定义读取每一条记录的方式;自定义读入key的类型,如但愿读取的key是文件的路径或名字而不是该行在文件中的偏移量。 系统默认的LineRecordReader是按照每行的偏移量作为map输出时的key值,每行的内容做为map的value值,默认的分隔符是 回车和换行。 如今要更改map对应的输入的值,key对应的文件的路径(或者是文件名),value对应的是文件的内容 (content)。 那么咱们须要重写InputFormat和RecordReader,由于RecordReader是在InputFormat中调用的,固然重写RecordReader才是重点!

7. 若是hadoop中没有定义定制分区,那么如何在输出到reduce前执行数据分区? Partitioner /override getPartition()

   答:默认的分区器为各个键计算一个哈希值,并分配给基于这个结果的分区。

8. 什么是Combiner?举个例子,何时使用combiner,何时不用?

答:当map生成的数据过大时,带宽就成了瓶颈,怎样精简压缩传给Reduce的数据,有不影响最终的结果呢。有一种方法就是使 用 Combiner,Combiner号称本地的Reduce,Reduce最终的输入,是Combiner的输出 Combiner的做用是把一个map产生的多个合并成一个新的,而后再将新的做为reduce的输入; 在map函数与reduce函数之间多了一个combine函数,目的是为了减小map输出的中间结果,这样减小了reduce复制map输出的数据,减小网络 传输负载; 并非全部状况下都能使用Combiner,Combiner适用于对记录汇总的场景(如求和),可是,求平均数的场景就不能使用Combiner了。若是能够 使用Combiner,通常状况下,和咱们的reduce函数是一致的。

9. 什么是jobtracker? jobtracker有哪些特别的函数?

 答:

1,  JobTracker是整个MapReduce计算框架中的主服务,至关于集群的“管理者”,负责整个集群的做业控制和资源管理  

2,  main()函数

10. 什么是tasktracker?

TaskTracker是JobTracker和Task之间的桥梁:一方面,从JobTracker接收并执行各类命令:运行任务、提交任务、杀死任务 等;另外一方面,将本地节点上各个任务的状态经过心跳周期性汇报给JobTracker。TaskTracker与JobTracker和Task之间采用了 RPC协议进行通讯。

11. hadoop中job和task之间是什么关系?

  概述:

 (1)Hadoop MapReduce采用Master/Slave结构。

*Master:是整个集群的惟一的全局管理者,功能包括:做业管理、状态监控和任务调度等,即MapReduce中的JobTracker。

 *Slave:负责任务的执行和任务状态的回报,即MapReduce中的TaskTracker。

JobTracker剖析:

 (1)概述:JobTracker是一个后台服务进程,启动以后,会一直监听并接收来自各个TaskTracker发送的心跳信息,包括资源使用 状况和任务运行状况等信息。

 (2)JobTracker的主要功能:

 1.做业控制:在hadoop中每一个应用程序被表示成一个做业,每一个做业又被分红多个任务,JobTracker的做业控制模块则负责做业 的分解和状态监控。

 *最重要的是状态监控:主要包括TaskTracker状态监控、做业状态监控和任务状态监控。主要做用:容错和为任务调度提供决 策依据。

2.资源管理。

  TaskTracker剖析:

 (1)TaskTracker概述:TaskTracker是JobTracker和Task之间的桥梁:一方面,从JobTracker接收并执行各类命令:运行任务、提交 任务、杀死任务等;另外一方面,将本地节点上各个任务的状态经过心跳周期性汇报给JobTracker。TaskTracker与JobTracker和 Task之间采用了RPC协议进行通讯。

(2)TaskTracker的功能:

1.汇报心跳:Tracker周期性将全部节点上各类信息经过心跳机制汇报给JobTracker。这些信息包括两部分:

 *机器级别信息:节点健康状况、资源使用状况等。

 *任务级别信息:任务执行进度、任务运行状态等。

2.执行命令:JobTracker会给TaskTracker下达各类命令,主要包括:启动任务(LaunchTaskAction)、提交任务 (CommitTaskAction)、杀死任务(KillTaskAction)、杀死做业(KillJobAction)和从新初始化(TaskTrackerReinitAction)。

12. 假设hadoop一个job产生了100个task, 而且其中的一个task失败了,hadoop会如何处理?

hadoop自己的一个设计理念就是在普通的pc硬件上构建高可靠性的系统,任何failed task都不会引发整个job的失败,由于全部失败的任务 都会被从新执行(reschedule execution),只有当从新执行的次数超过4次,才会把这任务标记为失败,致使整个job的失败。

13. 经过划分多个节点上任务,hadoop实现了并行处理,对少数慢节点可能会限制剩下其余程序的 速率,并拖慢了整个程序。hadoop提供了什么机制防止这种状况的发生? speculative execution。举个简单的例子,若是某个job有2000个map task,已经完成了1999个,只剩下一个task因为硬件比较慢而成为拖尾 任务,为了减小拖尾任务对整个job运行时间的影响,jobtracker会从新启动一个如出一辙的duplicate task和原有的task并行的执行,这样有一 个task执行成功,整个map过程就会结束。speculative execution(推测执行)只有个处理拖尾任务的优化策略,并不能提升系统的可靠性

14. hadoop推测执行是如何实现的?

 答:Hadoop会为该task启动备份任务,让speculative task与原始task同时处理一份数据,哪一个先运行完,则将谁的结果做为最终结果,而且在 运行完成后Kill掉另一个任务。

15. Unix中使用命令行,如何查看hadoop集群中的全部运行的任务?或是kill掉任务?

 jps

16. 什么是hadoop streming?

答:Haoop支持用其余语言来编程,须要用到名为Streaming的通用API, Streaming主要用于编写简单,短小的MapReduce程序,能够经过脚 本语言编程,开发更快捷,并充分利用非Java库

17. 解释hadoop和hadoop生态系统两个概念

 答:Hadoop是一个可以对大量数据进行分布式处理的软件框架,Hadoop的核心是HDFS和Mapreduce,hadoop2.0还包括YARN hadoop生态系统:包含 HDFS mapreduce hive hbase zookeeper sqoop flume pig mahout

 18. 说明hadoop2.0的基本构成

 HDFS

 MapReduce

 YARN

 19. 相比于HDFS1.0. 2.0最主要的改进在哪几个方面?

 引入一个新的资源管理系统YARN

 HDFS单点故障得以解决

 Hadoop 2.0的最大变化出如今内核(HDFS、MapReduce和YARN)

20. 试使用步骤1,步骤2,步骤3.……说明YARN中运行应用程序的基本流程

步骤1 用户向YARN中提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。

步骤2 ResourceManager为该应用程序分配第一个Container,并与对应的Node-Manager通讯,要求它在这个Container中启动应用程序的 ApplicationMaster。

步骤3 ApplicationMaster首先向ResourceManager注册,这样用户能够直接经过ResourceManage查看应用程序的运行状态,而后它将为各 个任务申请资源,并监控它的运 行状态,直到运行结束,即重复步骤4~7。

步骤4 ApplicationMaster采用轮询的方式经过RPC协议向ResourceManager申请和领取资源。

步骤5 一旦ApplicationMaster申请到资源后,便与对应的NodeManager通讯,要求它启动任务Task。

步骤6 NodeManager为任务Task设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并经过 运行该脚本启动任务Task。

步骤7 各个任务Task经过某个RPC协议向ApplicationMaster汇报本身的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状 态,从而能够在任务失败时从新启动任务。 在应用程序运行过程当中,用户可随时经过RPC向ApplicationMaster查询应用程序的当前运行状态。

步骤8 应用程序运行完成后,ApplicationMaster向ResourceManager注销并关闭本身。 10. MapReducer2.0与Yarn是否等同,尝试解释说明。

21. MapReducer2.0中, MRAppMaster主要做用是什么,MRappMaster如何实现任务容错的?

22. 什么是MRAppMaster?

咱们知道,在MRv1中,JobTracker存在诸多问题,包括存在单点故障,扩展受限等,为了解决这些问题,Apache对MRv1进行了改进,提 出了YARN,YARN将JobTracker中的做业控制和资源管理两个功能分开,分别由两个不一样的进程处理,进而解决了原有JobTracker存在的问 题。通过架构调整以后,YARN已经彻底不一样于MRv1,它已经变成了一个资源管理平台,或者说应用程序管理框架。运行于YARN之上的计 算框架不仅限于MapReduce一种,也能够是其余流行计算框架,好比流式计算、迭代式计算等类型的计算框架。为了将一个计算框架运行于 YARN之上,用户须要开发一个组件—ApplicationMaster。做为一个开始,YARN首先支持的计算框架是MapReduce,YARN为用户实现好了 MapReduce的ApplicationMaster,也就是本文要介绍了MRAppMaster。

23. 相比于JobTracker,MRAppMaster有什么不一样?

既然MRAppMaster是由JobTracker衍化而来的,那么是否将JobTracker的代码稍加修改,就变成了MRAppMaster呢,答案是否认的。事实 上,YARN仅重用了MRv1中的少量代码,基本可看作重写了MRAppMaster。

YARN采用了新的软件设计思想,包括对象服务化、事件驱动的异步编程模型的。做为YARN的一部分,MRAppMaster的实现也采用了这 些设计思想。

下面简要介绍一下MRAppMaster的实现细节 

在正式介绍MRAppMaster以前,咱们先回顾一下MRv1的实现。咱们都知道,MRv1主要由两种服务组成,即:JobTracker和TaskTracker, 而在YARN中,TaskTracker已经由NodeManager代替,所以,咱们在此重点分析JobTracker。JobTracker包含资源管理和做业控制两个功能, 在YARN中,做业管理由ResourceManager实现,所以,只剩下做业控制这一个功能(由MRAppMaster实现)。MRv1中每一个做业由一个 JobInProgress控制,每一个任务由一个TaskInProgress控制,因为每一个任务可能有多个运行实例,所以,TaskInProgress实际管理了多个运行实 例Task Attempt,对于每一个运行实例,可能运行了一个MapTask或者ReduceTask,另外,每一个Map Task或者Reduce Task会经过RPC协议将状态 汇报给TaskTracker,再由TaskTracker进一步汇报给JobTracker 在MRAppMaster中,它只负责管理一个做业,包括该做业的资源申请、做业运行过程监控和做业容错等。MRAppMaster使用服务模型和 事件驱动的异步编程模型对JobInProgress和TaskInProgress进行了重写(分别对应JobImpl和TaskImpl),并让Map Task和Reduce Task(Map Task和Reduce Task重用了MRv1中的代码)直接经过RPC将信息汇报给MRAppMaster。此外,为了可以运行于YARN之上,MRAppMaster还要 与ResourceManager和NodeManager两个新的服务通讯(用到两个新的RPC协议),以申请资源和启动任务,这些都使得MRAppMaster彻底不一样于JobTracker。

24. 为何会产生yarn,它解决了什么问题。有什么优点?

25. job的运行流程(提交一个job的流程)

 

job的执行流程以下: dataInput- >split- >Mapper- >Combine- >(产出临时数据)-->Partition- >Sort- >Reducer- >最终数据

26. hadoop生态圈中各类框架的运用场景

27. hive中的压缩格式RCFile.TextFile.SequenceFile各有什么区别,以上三种格式同样大的文件哪一个占用空间大小

 textfile(默认) 存储空间消耗比较大,而且压缩的text 没法分割和合并 查询的效率最低,能够直接存储,加载数据的速度最高 sequencefile 存储空间消耗最大,压缩的文件能够分割和合并 查询效率高,须要经过text文件转化来加载 rcfile 存储空间最小,查询的效率最高 ,须要经过text文件转化来加载,加载的速度最低

28. hadoop中的一个HA压缩

29. Flume收集到的数据不少个小文件,我而要写MR处理时将这些文件合并(是在MR中进行优化 ,不让一个小文件一个MapReduce)

30. 大家的集群规模?

 开发集群:10台(8台可用)8核cpu

31. 大家的数据是用什么导入到数据库的?导入到什么数据库?

处理以前的导入:经过hadoop命令导入到hdfs文件系统 处理完成以后的导出:利用hive处理完成以后的数据,经过sqoop导出到mysql数据库中,以供报表使用

32. 大家的业务数据量多大?有多少行数据?(面试三家,都问)

 开发时使用的是部分数据,不是全量数据。有将近一亿行(8. 9千万吧, 全体不详, 通常开发不是特别关心这个问题)

33. 大家处理数据是直接读数据库的数据仍是读文本数据?

 将日志数据导入到hdfs以后时行处理

34. 大家写hive的hql语句,大概有多少条?

 不清楚,我本身写的时候也没统计

35. 大家提交job任务大概有多少个?这些job执行完成大概用多少时间(都问。)

 没统计过。加上测试的会不少

36. hive跟hbase的区别是?

37. 你在项目中主要的工做任务是?

利用hive分析数据

38. 你在项目遇到了哪些难题。是怎么解决的?

 某些任务执行时间过长, 且失败率太高。 检查日志后发现没有执行完就失败,缘由出在 hadoop的job的timout太短(相对于集群的能力来讲)设置长一点就行

39. 你本身写过udf函数么?写了哪些

40. 你的项目提交到job的时候数据量有多大?(常问)

41. reduce后输出的数据量有多大?

42. 一个网络商城1天大概产生多少G日志?4tb

43. 大概有多少条日志记录

44. 日访问大概有多少个?百万

45. hdfs的 client端,复制到第三个副本时宕机,hdfs怎么恢复下次写第三副本?block块信息是先写 dataNode仍是先写nameNode?

46. 快排现场写程序实现?

47. jvm的内存是怎么分配原理?

48. 毒酒问题---1000桶酒,其中1桶有毒,而一旦吃了,毒性会在一周后发做。问最少须要多少只 老鼠可在一周内找出毒酒?

49. 用栈实现队列?

50. 链表倒序实现?

51. 多线程模型怎么(生产,消费者)? 平时并发多线程都用哪些实现方式?

52. synchronized是同步悲观锁吗?互斥?怎么写同步提升效率?

 synchronized 关键字至关于 lock(M.class), 是将整个对象锁住,为提升效率,可使用读写锁

53. 4亿个数字,找出哪些是重复的,要用最小的比较次数,写程序实现

54. java是传值仍是传址?

55. java处理多线程,另外一线程一直等待?

56. 在线安装ssh的命令以及文件解压的命令?

57. 把公钥都追加到受权文件的命令?该命令是否在root用户下执行?

58. HadoopHA集群中各个服务启动和关闭的顺序?

59. HDFS中的block块默认保存几份?默认大小多少?

60. NameNode中的meta数据是存放在NameNode自身仍是datanode等其它节点.DataNode节点自身是否有meta数据存在?

61. 下列哪一个程序一般与NameNode在一个节点启动?

62. 下面哪一个程序负责HDFS数据存储?

63. 在Hadoop HA集群中Zookeeper 的主要做用,以及启动和查看状态的命令?

sh bin/zkServer.sh start sh bin/zkServer.sh status

64. HBase在进行模型设计进重点在什么地方?一张表中定义多少个Colum family最合适?为何?

65. 如何提升HBase客户端的读写性能?请举例说明。

66. 基于Hadoop HA集群记性MapReduce开发时,Configuration 如何设置hbase.zookeeper.quorum属性的值?

67. 在hadoop开发过程当中使用过哪些算法?其应用场景是什么?

68. MapReduce程序如何发布?若是MapReduce中涉及到了第三方的jar包,该如何处理 14. 在实际工做中使用过哪些运维工具,请分别阐述其做用。

69. hadoop中combiner的做用?

70. IO的原理。IO模型有几种?

71. Windows用什么样的模型,Linux用什么样的模型?

72. 一台机器如何应对那么多的请求访问。高并发到底怎么实现,一个请求怎么产生的。 在服务端怎么处理的。最后怎么返回给用户的。整个的环节操做系统是怎么控制的?

73. 以你的实际经验,说下怎么样预防全表扫描

74. 网络七层协议

76. 集合HashTable和HashMap的区别

1.HashTable的方法是同步的,HashMap未经同步

2.HashTable不容许null值(key和value都不能够),HashMap容许null值(key和value均可以)。

77.zookeeper优势,用在什么场合

78.HBase中的metastore用来作什么的

 79java优点及缘由

 80. jvm优化

 81写一个冒泡排序

82. hadoop底层存储设计

83. 文件大小默认64M,改成128有啥影响

 84. RPC原理

85. NameNode与SecondaryNameNode的区别与联系

 86. 介绍MapReduce整个过程.好比把WordCount的例子的细节讲清楚(重点讲shuffle)

 87. 对Hadoop有没有调优经验.有没有什么使用心得(调优从参数调优提及)

 88. MapReduce出现单点负载过大,怎么负载平衡?(能够用Partioner)

89. 说说值与引用对象的区别

90. 谈谈你对反射机制的理解及用途

91. ArrayList, Vector, LinkdList的区别及其优缺点?HashMap,HashTable的区别及其优缺点?

 92. 列出线程的实现方式? 如何实现同步

 93. 列出至少5种设计模式? 用代码或UML类图描述其中用到的技术难点及其解决思路

 94. 谈谈你最近正在研究的技术.谈谈你最近项目中用到的技术难点及其解决思路

 95. hdfs中的block默认保存几份?

 96. 哪一个程序一般与nn在一个节点启动 Jobtracker

 97. 列举几个配置文件优化?

98. 写出你对zookeeper的理解

99. DataNode首次加入cluster的时候,若是log报告不兼容文件版本.那须要NameNode执行格式化操做,这样处理的缘由是?

100. 谈谈数据倾斜,如何发生的.并给出优化方案 可以想到的关于数据倾斜的一些解决方式(欢迎补充,尤为是有没有作搜索或者数据挖掘的朋友有碰到相似问题):

1. 增长reduce 的jvm内存

2. 增长reduce 个数

3.customer partition

4. 其余优化的讨论.

5. reduce sort merge排序算法的讨论

6. 正在实现中的hive skewed join.

7. pipeline

8. distinct

9. index 尤为是bitmap index

101. 介绍一下HBase过滤器

 HBase为筛选数据提供了一组过滤器,经过这个过滤器能够在HBase中的数据的多个维度(行,列,数据版本)上进行对数据的筛选操 做,也就是说过滤器最终可以筛选的数据可以细化到具体的一个存储单元格上(由行键,列明,时间戳定位)。一般来讲,经过行键,值 来筛选数据的应用场景较多。

1. RowFilter:筛选出匹配的全部的行,对于这个过滤器的应用场景,是很是直观的:使用BinaryComparator能够筛选出具备某个行键的行, 或者经过改变比较运算符(下面的例子中是CompareFilter.CompareOp.EQUAL)来筛选出符合某一条件的多条数据,如下就是筛选出行键为 row1的一行数据:

2. PrefixFilter:筛选出具备特定前缀的行键的数据。这个过滤器所实现的功能其实也能够由RowFilter结合RegexComparator来实现,不过这 里提供了一种简便的使用方法,如下过滤器就是筛选出行键以row为前缀的全部的行:

 3. KeyOnlyFilter:这个过滤器惟一的功能就是只返回每行的行键,值所有为空,这对于只关注于行键的应用场景来讲很是合适,这样忽略 掉其值就能够减小传递到客户端的数据量,能起到必定的优化做用

4. RandomRowFilter:从名字上就能够看出其大概的用法,本过滤器的做用就是按照必定的概率(<=0会过滤掉全部的行,>=1会包含全部的 行)来返回随机的结果集,对于一样的数据集,屡次使用同一个RandomRowFilter会返回不通的结果集,对于须要随机抽取一部分数据的应 用场景,可使用此过滤器:

 102. MapReduce基本执行过程

103. 谈谈hadoop2和hadoop2的区别

104. HBase集群安装注意事项

105. 记录包含值域F和值域G.要别统计相同G值的记录中不一样的F值的数目,简单编写过程

106. HDFS原理.以及各个模块的职责

107. MR的工做原理

108. map方法是如何调用reduce方法的.

109. shell如何判断文件是否存在.若是不存在该如何处理

108. fsimage和edit的区别

109. DataNode在什么状况下不会备份

110. hdfs体系结构

111. flush的过程  

112. hadoop集群搭建过程.写出步骤

113. hadoop集群运行过程当中启动哪些线程.各自的做用是什么?

114. /tmp/hadoop-root/dfs/name the path is not exists or is not accessable. NameNode main 中报错.怎么解决

115. 工做中编写mapreduce用到的语言. 编写一个mapreduce程序

116. hadoop 命 >杀死一个job任务 >删除/tmp/aaa/文件目录 >hadoop集群添加或删除节点时.刷新集群状态的命令

117. hadoop的调度器有哪些?工做原理

118. mapreduce的join方法有哪些?

119. Hive无数据保存的方法有哪些?各有什么特色

120. java实现非递归二分法算法

121. mapreduce中combiner和Partion的做用

122. 如何实现 mapreduce的二次排序

123. hadoop的高度机制

124. 机架感知

125. MR数据倾斜缘由和解决方案?

126. 集群HA

127. 对于HIVE. 你写过哪些UDF函数.做用是什么

128. hdfs的数据压缩算法

129. mapreduce的调度模式

130. hive底层与数据库交互原理

131. hadoop运行原理

132. mapreduce的原理

133. hdfs存储机制

134. Hive内部表和外部表的区别

一、在导入数据到外部表,数据并无移动到本身的数据仓库目录下,也就是说外部表中的数据并非由它本身来管理的!而 表则不一 样;

二、在删除表的时候,Hive将会把属于表的元数据和数据所有删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数 据 是不会 删除的! 那么,应该如何选择使用哪一种表呢?在大多数状况没有太多的区别,所以选择只是我的喜爱的问题。可是做为一个经验,如 果全部处理 都须要由Hive完成,那么你应该建立表,不然使用外部表!

135. HBase的rowkey怎么建立比较好.列族怎么建立比较好

136. 用mapreduce怎么处理数据倾斜问题?

137. hadoop框架中中怎么优化.

138. HBase内部什么机制

139. 咱们在开发分布式计算job的.是否能够去掉reduce阶段

140. hive底层与数据库交互原理

相关文章
相关标签/搜索