大数据面试题整理

  • 1、fsimage和edit的区别?
大家都知道namenode与secondary namenode 的关系,当他们要进行数据同步时叫做checkpoint时就用到了fsimage与edit,fsimage是保存最新的元数据的信息,当fsimage数据到一定的大小事会去生成一个新的文件来保存元数据的信息,这个新的文件就是edit,edit会回滚最新的数据。
  • 2、列举几个配置文件优化? --发挥
1)Core-site.xml 文件的优化
    a、fs.trash.interval,默认值: 0;说明: 这个是开启hdfs文件删除自动转移到垃圾箱的选项,值为垃圾箱文件清除时间。一般开启这个会比较好,以防错误删除重要文件。单位是              分钟。
    b、dfs.namenode.handler.count,默认值:10;说明:hadoop系统里启动的任务线程数,这里改为40,同样可以尝试该值大小对效率的影响变化进行最合适的值的设定。
    c、mapreduce.tasktracker.http.threads,默认值:40;说明:map和reduce是通过http进行数据传输的,这个是设置传输的并行线程数。
  • 3、datanode 首次加入 cluster 的时候,如果 log 报告不兼容文件版本,那需要namenode 执行格式化操作,这样处理的原因是?
  1)这样处理是不合理的,因为那么 namenode 格式化操作,是对文件系统进行格式化,namenode 格式化时清空 dfs/name 下空两个目录下的所有文件,之后,会在目录 dfs.name.dir 下创建文件。
  2)文本不兼容,有可能时 namenode 与 datanode 的 数据里的 namespaceID、clusterID 不一致,找到两个 ID 位置,修改为一样即可解决。
  • 4、MapReduce 中排序发生在哪几个阶段?这些排序是否可以避免?为什么?
  1)一个 MapReduce 作业由 Map 阶段和 Reduce 阶段两部分组成,这两阶段会对数据排序,从这个意义上说,MapReduce 框架本质就是一个 Distributed Sort。
  2)在 Map 阶段,Map Task 会在本地磁盘输出一个按照 key 排序(采用的是快速排序)的文件(中间可能产生多个文件,但最终会合并成一个),在 Reduce 阶段,每个 Reduce Task 会对收到的数据排序,这样,数据便按照 Key 分成了若干组,之后以组为单位交给 reduce()处理。
  3)很多人的误解在 Map 阶段,如果不使用 Combiner便不会排序,这是错误的,不管你用不用 Combiner,Map Task 均会对产生的数据排序(如果没有 Reduce Task,则不会排序,实际上 Map 阶段的排序就是为了减轻 Reduce端排序负载)。
  4)由于这些排序是 MapReduce 自动完成的,用户无法控制,因此,在hadoop 1.x 中无法避免,也不可以关闭,但 hadoop2.x 是可以关闭的。
  • 5、hadoop的优化?
  1)优化的思路可以从配置文件和系统以及代码的设计思路来优化
  2)配置文件的优化:调节适当的参数,在调参数时要进行测试
  3)代码的优化:combiner的个数尽量与reduce的个数相同,数据的类型保持一致,可以减少拆包与封包的进度
  4)系统的优化:可以设置linux系统打开最大的文件数预计网络的带宽MTU的配置
  5)为 job 添加一个 Combiner,可以大大的减少shuffer阶段的maoTask拷贝过来给远程的   reduce task的数据量,一般而言combiner与reduce相同。
  6)在开发中尽量使用stringBuffer而不是string,string的模式是read-only的,如果对它进行修改,会产生临时的对象,二stringBuffer是可修改的,不会产生临时对象。
  7)修改一下配置:以下是修改 mapred-site.xml 文件
    a、修改最大槽位数:槽位数是在各个 tasktracker 上的 mapred-site.xml 上设置的,默认都是 2
<property>
<name>mapred.tasktracker.map.tasks.maximum</name>
<value>2</value>
</property>
<property>
<name>mapred.tasktracker.reduce.tasks.maximum</name>
<value>2</value>
</property>
    b、调整心跳间隔:集群规模小于 300 时,心跳间隔为 300 毫秒
mapreduce.jobtracker.heartbeat.interval.min 心跳时间
mapred.heartbeats.in.second 集群每增加多少节点,时间增加下面的值
mapreduce.jobtracker.heartbeat.scaling.factor 集群每增加上面的个数,心跳增多少
    c、启动带外心跳
mapreduce.tasktracker.outofband.heartbeat 默认是 false
    d、配置多块磁盘
mapreduce.local.dir
    e、配置 RPC hander 数目
mapred.job.tracker.handler.count 默认是 10,可以改成 50,根据机器的能力
    f、配置 HTTP 线程数目
tasktracker.http.threads 默认是 40,可以改成 100 根据机器的能力
    g、选择合适的压缩方式,以 snappy 为例:
<property>
<name>mapred.compress.map.output</name>
<value>true</value>
</property>
<property>
<name>mapred.map.output.compression.codec</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>
  • 6.  请列出你所知道的 hadoop 调度器,并简要说明其工作方法?
解答:

1.FIFO schedular:默认,先进先出的原则

2.Capacity schedular:计算能力调度器,选择占用最小,优先级高的先执行,以此类推。

3.Fair schedular:公平调度,所有的job具有相同的资源。

7.请简述 mapreduce 中,combiner,partition 作用?

解答:

combiner是reduce的实现,在map端运行计算任务,减少map端的输出数据。

作用就是优化。

但是combiner的使用场景是mapreduce的map输出结果和reduce输入输出一样。

partition的默认实现是hashpartition,是map端将数据按照reduce个数取余,进行分区,不同的reduce来copy自己的数据。

partition的作用是将数据分到不同的reduce进行计算,加快计算效果。

1、combiner最基本是实现本地key的聚合,对map输出的key排序,value进行迭代。如下所示:

  map: (K1, V1) → list(K2, V2)

  combine: (K2, list(V2)) → list(K2, V2)

  reduce: (K2, list(V2)) → list(K3, V3)

  2、combiner还具有类似本地的reduce功能.

  例如hadoop自带的wordcount的例子和找出value的最大值的程序,combiner和reduce完全一致。如下所示:

  map: (K1, V1) → list(K2, V2)

  combine: (K2, list(V2)) → list(K3, V3)

  reduce: (K3, list(V3)) → list(K4, V4)

  3、如果不用combiner,那么,所有的结果都是reduce完成,效率会相对低下。使用combiner,先完成的map会在本地聚合,提升速度。

  4、对于hadoop自带的wordcount的例子,value就是一个叠加的数字,所以map一结束就可以进行reduce的value叠加,而不必要等到所有的map结束再去进行reduce的value叠加。

  combiner使用的合适,可以在满足业务的情况下提升job的速度,如果不合适,则将导致输出的结果不正确。
  • 8.  相比于 HDFS1.0,HDFS 2.0 最主要的改进在哪几方面?
  • 9.MapReduce 2.0 中,MRAppMaster 主要作用是什么,MRAppMaster如何实现任务容错的?
  • 10.  mr 的工作原理

解答:

Map—combiner—partition—sort—copy—sort—grouping—reduce
  • 11.hive 有哪些方式保存元数据,各有哪些特点?
解答:

1、内存数据库derby,安装小,但是数据存在内存,不稳定

2、mysql数据库,数据存储模式可以自己设置,持久化好,查看方便
  • 12.生产环境中为什么建议使用外部表?
解答:

1、因为外部表不会加载数据到hive,减少数据传输、数据还能共享。

2、hive不会修改数据,所以无需担心数据的损坏

3、删除表时,只删除表结构、不删除数据。
  • 13.假如一个分区的数据主部错误怎么通过hivesql删除hdfs

解答:

alter table ptable drop partition (daytime=‘20140911‘,city=‘bj‘);

元数据,数据文件都删除,但目录daytime= 20140911还在

画出你们的大数据架构,并说一下如和做到精准一次、小文件的规避

原文地址:https://www.cnblogs.com/xuziyu/p/10800111.html

时间: 2024-10-29 16:59:20

大数据面试题整理的相关文章

史上最全“大数据”学习资源整理

史上最全"大数据"学习资源整理 当前,整个互联网正在从IT时代向DT时代演进,大数据技术也正在助力企业和公众敲开DT世界大门.当今"大数据"一词的重点其实已经不仅在于数据规模的定义,它更代表着信息技术发展进入了一个新的时代,代表着爆炸性的数据信息给传统的计算技术和信息技术带来的技术挑战和困难,代表着大数据处理所需的新的技术和方法,也代表着大数据分析和应用所带来的新发明.新服务和新的发展机遇. 为了帮助大家更好深入了解大数据,云栖社区组织翻译了GitHub Aweso

数据库面试题整理

数据库 以下是对面试常见面试题整理,来自知乎大神分享的pdf,引用部分链接已给出,如果有没有标注的,纯属意外,希望提醒.这篇主要整理出来给自己看的 B/B+树 B/B+ 一.B树: 定义:B 树又叫平衡多路查找树.一棵m阶的B 树 的特性如下: 树中每个结点最多含有m个孩子(m>=2): 除根结点和叶子结点外,其它每个结点至少有[ceil(m / 2)]个孩子(其中ceil(x)是一个取上限的函数): 若根结点不是叶子结点,则至少有2个孩子(特殊情况:没有孩子的根结点,即根结点为叶子结点,整棵树

2018年大数据面试题总结

目前面试了多家大数据开发工程师,成长了很多,也知道了很多知识,下面和大家分享一下我遇到的面试题和答案. 1.kafka集群的规模,消费速度是多少. 答:一般中小型公司是10个节点,每秒20M左右. 2.hdfs上传文件的流程. 答:这里描述的 是一个256M的文件上传过程 ① 由客户端 向 NameNode节点节点 发出请求 ②NameNode 向Client返回可以可以存数据的 DataNode 这里遵循机架感应原则 ③客户端 首先 根据返回的信息 先将 文件分块(Hadoop2.X版本 每一

117道有关大数据面试题解析,希望对你有所帮助

一 .简述如何安装配置apache 的一个开源的hadoop 使用root账户登陆 2.修改ip 3.修改host主机名 4.配置ssh 免密登陆 5.关闭防火墙 6.安装JDK 7.解压hadoop安装包 8.配置hadoop的核心配置文件 hadoop-env.sh? core-site.xml? mapred-site.xml yarn-site.xml hdfs-site.xml 9.配置hadoop 的环境变量 10 .格式化hadoop namenode-format 启动节点sta

117道有关大数据面试题的解析,希望对你有所帮助!

一 .简述如何安装配置apache 的一个开源的hadoop 使用root账户登陆 2.修改ip 3.修改host主机名 4.配置ssh 免密登陆 5.关闭防火墙 6.安装JDK 7.解压hadoop安装包 8.配置hadoop的核心配置文件 hadoop-env.sh? core-site.xml? mapred-site.xml yarn-site.xml hdfs-site.xml 9.配置hadoop 的环境变量 10 .格式化hadoop namenode-format 启动节点sta

大数据面试题分析

最近学习了hashtable的一点知识,发现可以用来解决大数据的一些问题.我们这里讲的大数据分析事实上并不是分布式和数据挖掘这些高深的概念,而是针对从从一个大文件或者一堆数据(内存放不下)中找出具有某种特点的数,这也是近年来各大公司经常考的问题. 面试题1:给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址? 解析:100G的文件给我们的感觉是太大,我们的电脑内存一般都为4G左右所以不可能一次性把这么多的信息都加载到内存,所以就要进行切分成10

Hadoop大数据面试题( 全)

以下资料来源于互联网,很多都是面试者们去面试的时候遇到的问题,我对其中有的问题做了稍许的修改了回答了部分空白的问题,其中里面有些考题出的的确不是很好,但是也不乏有很好的题目,这些都是基于真实的面试来的,希望对即将去面试或向继续学习hadoop,大数据等的朋友有帮助! 前言 有一句话叫做三人行必有我师,其实做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这是一个我的大数据交流学习群531629188不管你是小白还是大牛欢迎入驻,正在求职的也可以加入,大家一起交流学习,话糙理不糙,互相学习,共

经典大数据面试题

什么是大数据? 大数据(big data,mega data),或称巨量资料,指的是需要新处理模式才能具有更强的决策力.洞察力和流程优化能力的海量.高增长率和多样化的信息资产. 在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的<大数据时代>中大数据指不用随机分析法(抽样调查)这样的捷径,而采用所有数据进行分析处理.大数据的4V特点:Volume(大量).Velocity(高速).Variety(多样).Value(价值). 1>给一个超过100G大小的log file,log中存着IP地址

大数据学习路线整理

一.大数据技术基础 1.linux操作基础 linux系统简介与安装    linux常用命令–文件操作    linux常用命令–用户管理与权限    linux常用命令–系统管理    linux常用命令–免密登陆配置与网络管理    linux上常用软件安装    linux本地yum源配置及yum软件安装    linux防火墙配置    linux高级文本处理命令cut.sed.awk    linux定时任务crontab 2.shell编程 shell编程–基本语法    shel