189 8069 5689

hadoop基础面试题有哪些

这篇文章主要为大家展示了“hadoop基础面试题有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“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合并这些输出文件。

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

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各配置文件分别有什么用

3 hive添加一列语句怎么写

alter table test_table add columns (d string);

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

--hive-import

5 项目中文件怎么传到hdfs

flume,kettle,shell脚本

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

8 怎么理解hive

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

9 怎么理解sqoop

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

以上是“hadoop基础面试题有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


网站栏目:hadoop基础面试题有哪些
链接分享:http://cdxtjz.cn/article/gjsccg.html

其他资讯