2019独角兽企业重金招聘Python工程师标准>>>

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实现

转载于:https://my.oschina.net/firstBlooded/blog/636431

hadoop面试记录(一)相关推荐

  1. hadoop面试100道收集(带答案)

    a) 创建hadoop账号 b) 更改ip c) 安装java 更改/etc/profile 配置环境变量 d) 修改host文件域名 e) 安装ssh 配置无密码登录 f) 解压hadoop g)  ...

  2. 2017校招准备 hadoop面试100道

    [转]http://blog.csdn.net/kingmax54212008/article/details/51257067 1.列出安装hadoop流程步骤 a) 创建hadoop账号 b) 更 ...

  3. hadoop面试真实,

    3 3 4 第一题:1.创建 hadoop 帐户. 2.setup.改 IP. 3.安装 java,并修改/etc/profile 文件,配置 java 的环境变量. 4.修改 Host 文件域名. ...

  4. hadoop面试真实

    一.来自****提供的面试题(14** 道): 第一题:1.创建 hadoop 帐户. 2.setup.改 IP. 3.安装 java,并修改/etc/profile 文件,配置 java 的环境变量 ...

  5. Interview:算法岗位面试—11.19早上上海某银行(总行,四大行之一)信息技术岗面试记录

    ML岗位面试:11.19早上上海某银行(总行,四大行之一)信息技术岗面试记录 Interview:算法岗位面试-11.19早上上海某银行(总行,四大行之一)信息技术岗面试记录 导读:该次面试是笔试通过 ...

  6. 【面试招聘】据说这里有一份关于BAT的 “宝藏级” 面试记录终于可以看了!...

    文章来源于海边的拾遗者,作者守着光的 写在前面 作者是研二的学弟,实力强悍的清北大佬一枚,研究方向与求职方向高度一致,为图机器学习/推荐系统,学弟本人非常有自己的想法,不光优秀还极其自律,不光收割了B ...

  7. ios kvo 要引入_腾讯社招iOS面试记录

    毕业好几年了,上周发送了简历给腾讯,参加了腾讯面试.具体部门这边就不说了.这次面试还是收获到了很多. 一面电话面试: 面试官主要是针对iOS相关的基础问题. 先简单自我介绍一下自己 对mrc和arc的 ...

  8. 2022前端秋招面试题总结 阿里 腾讯 字节 百度 网易 京东 小红书 快手面试记录

    2022前端秋招面试题总结 阿里 腾讯 字节 百度 网易 京东 小红书 快手面试记录 等了百度三个月,终于发offer了,白菜价,92大佬们拒的薪资,我知足了. 排序挂了狠多,快手,蚂蚁,- 很绝望 ...

  9. Hadoop实战记录-目录

    目录 Hadoop实战记录(1)-安装部署:https://blog.csdn.net/weixin_39565597/article/details/104525916

最新文章

  1. static关键字的作用?
  2. Qt控制台输出QString
  3. POJ-3241 Object Clustering 曼哈顿最小生成树
  4. 一个不错的CSS DIV布局,DIV高度自适应
  5. 用Python玩转时序数据
  6. JEECG - 基于代码生成器的J2EE智能开发框架 续一: JEECG框架搭建步骤 [更新版]
  7. matplolib绘图
  8. 目前机器学习最热门的领域有哪些
  9. php_memcahed telnet远程操作方法
  10. Java 并发编程之 Callable 和 Future
  11. 实现一个简单的HTTP
  12. python自带的PIL库扩展图片大小给图片加上文字描述
  13. 语法高亮_Qt官方示例语法高亮器
  14. mysql 失败 捕获 net core_从NetCore报错到MySql安全
  15. 信息系统项目管理师备考资料-第三版(4)
  16. 分享一个开源的Springboot博客系统,界面简洁精致,拿来即用
  17. mysql 在指定的dsn中_指定的DSN包含驱动程序和应用程序之间的体系结构不匹配。 JAVA...
  18. 蜗牛爬墙墙高10米C语言,蜗牛爬墙——打破小朋友的数学思维模式
  19. 03 TI OMAPL138E Linux移植 (Davinci) (资源获取+从串口启动UBoot+从网络启动Linux与文件系统)
  20. [开发工具]记录MPLAB新老双IDE与C18编译器配置

热门文章

  1. 常用git命令思维图
  2. 网站性能优化之yahoo军规
  3. 用JDK自带的监控工具jconsole来监控程序运行
  4. Windows7 设置 Java环境变量
  5. powerdesigner逆向工程,从数据库导出PDM
  6. 教你加快Win7 的启动速度
  7. js获取url地址栏参数的方法,解决中文乱码问题,能支持中文参数
  8. 关于Android 8.0java.lang.SecurityException: Permission Denial错误的解决方法
  9. ORA-00907: 缺失右括号问题整理解决
  10. vue-cli3 一直运行 /sockjs-node/info?t= 解决方案