hadoop面试记录(一)

1 描述下mr整个过程,中间用到哪些类

Map起始阶段:

使用 job.setInputFormatClass() 定义的 InputFormat 将输入的数据集分割成小数据块 split,同时 InputFormat 提供一个 RecordReader的实现。通常使用的是 TextInputFormat,它提供的 RecordReader 会将文本的行号做为 Key,这一行的文本做为 Value。这就是自定义 Mapper 的输入是 < LongWritable,Text> 的缘由。 而后调用自定义 Mapper 的map方法,将一个个< LongWritable,Text>键值对输入给 Mapper 的 map方法。程序员

Map阶段
shuffle阶段:

将map的输出做为reduce的输入的过程就是shuffle了,这个是mapreduce优化的重点地方。Shuffle一开始就是map阶段作输出操做,通常mapreduce计算的都是海量数据,map输出时候不可能把全部文件都放到内存操做,所以map写入磁盘的过程十分的复杂,更况且map输出时候要对结果进行排序,内存开销是很大的,map在作输出时候会在内存里开启一个环形内存缓冲区,这个缓冲区专门用来输出的,默认大小是100mb,而且在配置文件里为这个缓冲区设定了一个阀值,默认是0.80(这个大小和阀值都是能够在配置文件里进行配置的),同时map还会为输出操做启动一个守护线程,若是缓冲区的内存达到了阀值的80%时候,这个守护线程就会把内容写到磁盘上,这个过程叫spill,另外的20%内存能够继续写入要写进磁盘的数据,写入磁盘和写入内存操做是互不干扰的,若是缓存区被撑满了,那么map就会阻塞写入内存的操做,让写入磁盘操做完成后再继续执行写入内存操做。在写磁盘以前,线程首先根据数据最终要传的reducer把数据划分红相应的分区(job.setPartitionerClass())。在每一个分区中,后台进程按键进行内排序 job.setSortComparatorClass(),若是没设置回默认使用 Key 实现的 compareTo() 方法),若是咱们定义了combiner函数(job.setCombinerClass()),那么排他就在排序后的输出上运行。每次spill操做也就是写入磁盘操做时候就会写一个溢出文件,也就是说在作map输出有几回spill就会产生多少个溢出文件,等map输出所有作完后,map还会调用combine合并这些输出文件。sql

到了reduce阶段就是合并map输出文件了,Partitioner会找到对应的map输出文件,而后进行复制操做,复制操做时reduce会开启几个复制线程,这些线程默认个数是5个,程序员也能够在配置文件更改复制线程的个数,这个复制过程和map写入磁盘过程相似,也有阀值和内存大小,阀值同样能够在配置文件里配置,而内存大小是直接使用reduce的tasktracker的内存大小,复制完全部map输出后,reduce还会进行排序操做和合并文件操做,这些操做完了就会进行reduce计算了。
shell

reduce过程当中用到的类

在 Reduce 阶段,reduce() 方法接受全部映射到这个 Reduce 的 map 输出后,也是会调用 job.setSortComparatorClass()方法设置的 Key 比较函数类,对全部数据进行排序。而后开始构造一个 Key 对应的 Value 迭代器。 这时就要用到分组,使用 job.setGroupingComparatorClass()方法设置分组函数类。只要这个比较器比较的两个 Key 相同,它们就属于同一组,它们的 Value 放在一个 Value 迭代器,而这个迭代器的 Key 使用属于同一个组的全部Key的第一个Key。最后就是进入 Reducer 的 reduce() 方法,reduce() 方法的输入是全部的 Key 和它的 Value 迭代器,一样注意输入与输出的类型必须与自定义的 Reducer 中声明的一致。数据库

数据通过reduce处理后,经过OutPutFormat实现类输出缓存


2 hadoop各配置文件分别有什么用app

3 hive添加一列语句怎么写函数

alter table test_table add columns (d string);


4 sqoop将关系数据库数据导入hive命令上须要加一个什么配置工具

--hive-import

5 项目中文件怎么传到hdfsoop

flume,kettle,shell脚本优化

7 hive某个分区文件损坏,对其余分区是否有影响

8 怎么理解hive

hive能够理解为基于hadoop的数据仓库,他负责管理hdfs,并提供解释器将hive sql翻译成mr程序进行查询(我的理解,可自由发挥)

9 怎么理解sqoop

关系型数据库与hdfs之间互相倒数的工具,底层用mr实现

相关文章
相关标签/搜索