hadoop面试题

2018-12-04 16:52

Hadoop就业面试宝典

1.0 简要描述如何安装配置apache的一个开源hadoop,只描述即可,无需列出具体步骤,

列出具体步骤更好。 答:1使用root账户登录

2 修改IP

3 修改host主机名

4 配置SSH免密码登录 5 关闭防火墙 6 安装JDK

7 解压hadoop安装包

8 配置hadoop的核心文件 hadoop-env.sh,core-site.xml , mapred-site.xml , hdfs-site.xml 9 配置hadoop环境变量

10 格式化 hadoop namenode-format 11 启动节点 start-all.sh

2.0 请;列出正常的hadoop集群中hadoop都分别需要启动 哪些进程,他们的作用分别都是什么,请尽量列的详细一些。 答:namenode:管理集群,存储数据的原信息,并管理记录datanode中的文件信息。

Secondname:可以做冷备,对一定范围内数据做快照性备份。 Datanode:存储数据

Jobtracker :管理任务,并将任务分配给 tasktracker。 Tasktracker: 执行JobTracker分配的任务。

3.0请写出以下的shell命令

(1)杀死一个job

(2)删除hdfs上的 /tmp/aaa目录

(3) 加入一个新的存储节点和删除一个节点需要执行的命令 答:(1)hadoop job –list 得到job的id,然后执 行 hadoop job -kill jobId就可以杀死一个指定jobId的job工作了。 (2)hadoop fs -rmr /tmp/aaa

(3) 增加一个新的节点在新的几点上执行 Hadoop daemon.sh start datanode Hadooop daemon.sh start tasktracker 然后在主节点中执行 hadoop dfsadmin -refreshnodes 删除一个节点的时候,只需要在主节点执行 hadoop mradmin -refreshnodes

4.0 请列出你所知道的hadoop调度器,并简要说明其工作方法

答:Fifo schedular :默认,先进先出的原则

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

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

5.0 请列出你在工作中使用过的开发mapreduce的语言

答:java,hive

6.0 当前日志采样格式为

a , b , c , d b , b , f , e

a , a , c , f

请你用最熟悉的语言编写mapreduce,计算第四列每个元素出现的个数 Static final String 答:

public class WordCount1 { public static final String INPUT_PATH = \ public static final String OUT_PATH = \ public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); FileSystem fileSystem = FileSystem.get(conf); if(fileSystem.exists(new Path(OUT_PATH))){} fileSystem.delete(new Path(OUT_PATH),true); Job job = new Job(conf,WordCount1.class.getSimpleName()); //1.0读取文件,解析成key,value对 FileInputFormat.setInputPaths(job,new Path(INPUT_PATH)); //2.0写上自己的逻辑,对输入的可以,value进行处理,转换成新的key,value对进行输出 job.setMapperClass(MyMapper.class); job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(LongWritable.class); //3.0对输出后的数据进行分区 //4.0对分区后的数据进行排序,分组,相同key的value放到一个集合中 //5.0对分组后的数据进行规约 //6.0对通过网络将map输出的数据拷贝到reduce节点 //7.0 写上自己的reduce函数逻辑,对map输出的数据进行处理 job.setReducerClass(MyReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(LongWritable.class); FileOutputFormat.setOutputPath(job, new Path(OUT_PATH)); job.waitForCompletion(true); } static class MyMapper extends Mapper{ @Override protected void map(LongWritable k1, Text v1, org.apache.hadoop.mapreduce.Mapper.Context context) throws IOException, InterruptedException {

} 7.0

String[] split = v1.toString().split(\ for(String words :split){ context.write(split[3], 1); } } }

static class MyReducer extends Reducer{ protected void reduce(Text k2, Iterable v2, org.apache.hadoop.mapreduce.Reducer.Context context) throws IOException, InterruptedException { Long count = 0L; for(LongWritable time : v2){ count += time.get(); } context.write(v2, new LongWritable(count)); } }

你认为用java , streaming , pipe方式开发map/reduce , 各有哪些优点 就用过 java 和 hiveQL。

Java 写 mapreduce 可以实现复杂的逻辑,如果需求简单,则显得繁琐。

HiveQL 基本都是针对 hive 中的表数据进行编写,但对复杂的逻辑很难进行实现。写 起来简单。

8.0 hive有哪些方式保存元数据,各有哪些优点 三种:内存数据库 derby,挺小,不常用 。

本地 mysql。。常用 远程端 mysql。。不常用

上网上找了下专业名称:single user mode..multi user mode...remote user mode

9.0 请简述hadoop怎样实现二级排序 第一种方法是,Reducer将给定key的所有值都缓存起来,然后对它们再做一个Reducer内排序。但是,由于Reducer需要保存给定key的所有值,可能会导致出现内存耗尽的错误。 第二种方法是,将值的一部分或整个值加入原始key,生成一个合成key。这两种方法各有优势,第一种方法可能会更快一些(但有内存耗尽的危险),第二种方法则是将排序的任务交给MapReduce框架,更符合Hadoop/Reduce的设计思想。这篇文章里选择的是第二种。我们将编写一个Partitioner,确保拥有相同key(原始key,不包括添加的部分)的所有数据被发往同一个Reducer,还将编写一个Comparator,以便数据到达Reducer后即按原始key分组。

10.简述hadoop实现jion的几种方法

利用dataJoin来实现mapreduce的jion问题。 11.0 请用java实现非递归二分查询

1. public class BinarySearchClass 2. { 3.

4. public static int binary_search(int[] array, int value) 5. {

6. int beginIndex = 0;// 低位下标

7. int endIndex = array.length - 1;// 高位下标 8. int midIndex = -1;

9. while (beginIndex <= endIndex) {

10. midIndex = beginIndex + (endIndex - beginIndex) / 2;//防止溢出 11. if (value == array[midIndex]) { 12. return midIndex;

13. } else if (value < array[midIndex]) { 14. endIndex = midIndex - 1; 15. } else {

16. beginIndex = midIndex + 1; 17. } 18. }

19. return -1;

20. //找到了,返回找到的数值的下标,没找到,返回-1 21. } 22. 23.

24. //start 提示:自动阅卷起始唯一标识,请勿删除或增加。 25. public static void main(String[] args) 26. {

27. System.out.println(\

28. int[] myArray = new int[] { 1, 2, 3, 5, 6, 7, 8, 9 }; 29. System.out.println(\查找数字8的下标:\

30. System.out.println(binary_search(myArray, 8)); 31. }

32. //end //提示:自动阅卷结束唯一标识,请勿删除或增加。 33. }

12.0 请简述mapreduce中的combine和partion的作用

答:combiner是发生在map的最后一个阶段,其原理也是一个小型的reducer,主要作用是减少输出到reduce的个数,减少reducer的输入,提高reducer的执行效率。 Partion的主要作用就是指定输出到reduce的个数的。 13.0 hive内部表和外部表的区别

Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,

不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,

而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。

14. Hbase的rowKey怎么创建比较好?列簇怎么创建比较好?

答:rowKey最好要创建有规则的rowKey,即最好是有序的。HBase中一张表最好只创建一到两个列族比较好,因为HBase不能很好的处理多个列族。 15. 用mapreduce怎么处理数据倾斜问题

在mapreduce聚合key中所有values的时候,如果一个key对应了很多values,就会产生数据倾斜的问题。数据倾斜主要就是某个key下面对应的value太多,导致某个reduce节点执行的数据过多,然后产生某个或者某几个reduce节点的执行效率过低,导致整个集群中的任务执行效率较慢,可以使用partion对数据过多的节点进行再划分,划分成多个小的数据块,输入到reduce进行处理。 16. hadoop框架怎么来优化

答:hadoop优化的范围太宽泛了,可以从某个方面具体来谈一谈,比如说HBase的rowKey和列族的创建的来进行数据存储的优化,可以从网络的拷贝对数据的优化,可以从mapreduce对数据的处理来谈优化,可以从参数方面来说优化等。 17. hbase内部机制是什么

答:内部机制更多的是借助nosql数据的关系模型,是建立的hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。

18. 我们在开发分布式计算job的时候,是否可以去掉reduce阶段

答:可以,例如我们的集群就是为了存储文件而设计的,不涉及到数据的计算,就可以将mapReduce都省掉。 19 hdfs的数据压缩算法

答:可以使用sequenceFile和mapFile来对小文件进行压缩,压缩成大文件,然后存储,减轻namenode的内存压力。 20. mapreduce的调度模式

答:公平调度模式和容量调度模式 21. hive底层与数据库交互原理

答:hive有一套自己的sql解析引擎,称为metastore,存储在mysql或者derby数据库中,可以将sql语句转化为mapreducejob任务执行。 22. hbase过滤器实现原则

答:过滤器必须实现HBase Jar包中的Filter接口,或者继承扩展一个实现了该接口的抽象类

23. reduce之后数据的输出量有多大

24. 现场出问题测试mapreduce掌握情况和hive的ql语言掌握情况

25.datanode在什么情况下不会备份数据 答:在配置文件中设置文件副本数为1 26.combine出现在哪个过程

答:map阶段的最后一个过程。 27. hdfs的体系结构

答:HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问操作;集群中的DataNode管理存储的数据


hadoop面试题.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2017-2022年中国可控硅整流器行业市场调研与投资战略咨询报告(目

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: