加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

bigdata hadoop 面试问题二

发布时间:2020-12-14 02:03:27 所属栏目:大数据 来源:网络整理
导读:补充: mapreduce 、hive. 为什么不用mapredeuce,用hive? 1.MapReduce is hard to program. 2.No Schema,lack of query ?lanaguager. eg.SQL 后面facebook 开源了一个hive的框架,它是基于hadoop的。 what is hive? A Hadoop-based system for querying and ?

补充: mapreduce 、hive. 为什么不用mapredeuce,用hive?

1.MapReduce is hard to program.

2.No Schema,lack of query ?lanaguager. eg.SQL

后面facebook 开源了一个hive的框架,它是基于hadoop的。

what is hive?

  • A Hadoop-based system for querying and ?managing structured data

  1. Uses Map/Reduce for execution (执行)

  2. Uses Hadoop Distributed File System (HDFS) for storage

  • Provides SQL-like query language named HiveQL;

  • Hive compile SQL queries into MapReduce jobs and run the jobs in the Hadoop cluster.

Hive Advantages?

Indispensable for SQL users,ease-of-use;

Easier then java MR API;

Hive Disadvantages?

  • Hive does Not provide low latency or realtime queries;

  • Even querying small amounts of data may take minutes;

Hive's Focus

  • Scalable SQL processing over data in Hadoop

  • Scales to 100PB+;

  • Data has a schema;

  • Designed for scalability ?and ease-of-use rather than low latency responses;

1、Hive内部表和外部表的区别?

1) 在导入数据到外部表,数据并没有移动到自己的数据仓库目录下,也就是说外部表中的数据并不是由它自己来管理的!而内部表则不一样;
2) 在删除内部表的时候,Hive将会把属于内部表的元数据和数据全部删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数据是不会删除的!
那么,应该如何选择使用哪种表呢?在大多数情况没有太多的区别,因此选择只是个人喜好的问题。但是作为一个经验,如果所有处理都需要由Hive完成,那么你应该创建内部表,否则使用外部表!

http://www.aboutyun.com/thread-7458-1-1.html


2、Hbase的rowkey怎么创建比较好?列族怎么创建比较好?


3、用mapreduce怎么处理数据倾斜问题?

http://www.alidata.org/archives/2109

http://blog.csdn.net/biaorger/article/details/38392957

4、hadoop框架中怎么来优化?

http://itindex.net/detail/49326-hadoop-%E4%BC%98%E5%8C%96-%E6%80%BB%E7%BB%93

5、Hbase内部是什么机制?

http://ju.outofmemory.cn/entry/50070

6、hdfs的数据压缩算法

http://blog.sina.com.cn/s/blog_66474b1601017yjq.html

7、hive底层与数据库交互原理

8、hbase过滤器实现原则

http://zjushch.iteye.com/blog/1530143


一. 问答题

1) datanode在什么情况下不会备份?


2) hdfs的体系结构?

3) sqoop在导入数据到mysql时,如何让数据不重复导入?如果存在数据问题sqoop如何处理?

4) 请列举曾经修改过的/etc下的配置文件,并说明修改要解决的问题?

5) 描述一下hadoop中,有哪些地方使用了缓存机制,作用分别是什么?


二. 计算题:
1、使用Hive或者自定义MR实现如下逻辑

[plain]?view plain

  1. product_no?lac_id?moment?start_time?user_id?county_id?staytime?city_id??

  2. 13429100031?22554?8?2013-03-11?08:55:19.151754088?571?571?282?571??

  3. 13429100082?22540?8?2013-03-11?08:58:20.152622488?571?571?270?571??

  4. 13429100082?22691?8?2013-03-11?08:56:37.149593624?571?571?103?571??

  5. 13429100087?22705?8?2013-03-11?08:56:51.139539816?571?571?220?571??

  6. 13429100087?22540?8?2013-03-11?08:55:45.150276800?571?571?66?571??

  7. 13429100082?22540?8?2013-03-11?08:55:38.140225200?571?571?133?571??

  8. 13429100140?26642?9?2013-03-11?09:02:19.151754088?571?571?18?571??

  9. 13429100082?22691?8?2013-03-11?08:57:32.151754088?571?571?287?571??

  10. 13429100189?22558?8?2013-03-11?08:56:24.139539816?571?571?48?571??

  11. 13429100349?22503?8?2013-03-11?08:54:30.152622440?571?571?211?571??

字段解释:
product_no:用户手机号;
lac_id:用户所在基站;
start_time:用户在此基站的开始时间;
staytime:用户在此基站的逗留时间。

需求描述:
根据lac_id和start_time知道用户当时的位置,根据staytime 知道用户各个基站的逗留时
长。根据轨迹合并连续基站的staytime。最终得到每一个用户按时间排序在每一个基站驻留时长

期望输出举例:

[plain]?view plain

  1. 13429100082?22540?8?2013-03-11?08:58:20.152622488?571?571?270?571??

  2. 13429100082?22691?8?2013-03-11?08:56:37.149593624?571?571?390?571??

  3. 13429100082?22540?8?2013-03-11?08:55:38.140225200?571?571?133?571??

  4. 13429100087?22705?8?2013-03-11?08:56:51.139539816?571?571?220?571??

  5. 13429100087?22540?8?2013-03-11?08:55:45.150276800?571?571?660?571??


2、Linux 脚本能力考察
2.1 请随意使用各种类型的脚本语言实现:批量将指定目录下的所有文件中的
$HADOOP_HOME替换成/home/ocetl/app/hadoop

2.2 假设有10 台主机,H1 到H10,在开启SSH互信的情况下,编写一个或多个脚本实现
在所有的远程主机上执行脚本的功能
例如:runRemoteCmd.sh "ls -l"
期望结果:
H1:
XXXXXXXX
XXXXXXXX
XXXXXXXX
H2:
XXXXXXXX
XXXXXXXX
XXXXXXXX
H3:
...

3、Java能力考察
3.1 写代码实现1G 大小的文本文件,行分隔符为x01x02,统计一下该文件中的总行数,

要求注意边界情况的处理

3.2 请描述一下在开发中如何对上面的程序进行性能分析,对性能进行优化的过程。


一. 问答题:

1. 用mapreduce实现sql语句select count(x) from a group by b?

2. 简述MapReduce大致流程,map -> shuffle -> reduce

3. HDFS如何定位replica

4. Hadoop参数调优: cluster level: JVM,map/reduce slots,job level: reducer,memory,use combiner? use compression?

5. hadoop运行的原理?

6. mapreduce的原理?

7. HDFS存储的机制?

8. 如何确认Hadoop集群的健康状况?

二. 思考题
现有1 亿个整数均匀分布,如果要得到前1K 个最大的数,求最优的算法。(先不考虑内存的限制,也不考虑读写外存,时间复杂度最少的算法即为最优算法)
我先说下我的想法:分块,比如分1W块,每块1W个,然后分别找出每块最大值,从这最大的1W个值中找最大1K个,那么其他的9K 个最大值所在的块即可扔掉,从剩下的最大的1K?个值所在的块中找前1K个即可。那么原问题的规模就缩小到了1/10。
问题:
(1) 这种分块方法的最优时间复杂度。

(2) 如何分块达到最优。比如也可分10W 块,每块1000 个数。则问题规模可降到原来1/100。但事实上复杂度并没降低。

(3) 还有没更好更优的方法解决这个问题。


1.hive如何调优?

2.hive如何权限控制?

3.hbase写数据的原理是什么?

4.hive能像关系数据库那样,建多个库吗?

5.hbase宕机如何处理?

6.hive实现统计的查询语句是什么?

7.生产环境中为什么建议使用外部表?

8.hadoop mapreduce创建类DataWritable的作用是什么?


9.为什么创建类DataWritable?


二. 思考题
1.假设公司要建一个数据中心,你会如何规划?

2.用Hadoop分析海量日志文件,每行日志记录了如下数据:
TableName(表名),Time(时间),User(用户),TimeSpan(时间开销)。

要求:
编写MapReduce程序算出高峰时间段(如上午10 点)哪张表被访问的最频繁,以及这段时间访问这张表最多的用户,以及这个用户的总时间开销。

一. 问答题:

1. 简单说说map端和reduce端溢写的细节

2. hive的物理模型跟传统数据库有什么不同

3. 描述一下hadoop机架感知

4. 对于mahout,如何进行推荐、分类、聚类的代码二次开发分别实现那些接口

5. 直接将时间戳作为行健,在写入单个region 时候会发生热点问题,为什么呢?

二. 计算题:
1. 比方:如今有10个文件夹,每个文件夹都有1000000个url. 如今让你找出top1000000url。
方法一:
运用2个job,第一个job直接用filesystem读取10个文件夹作为map输入,url做key,reduce计算url的sum,
下一个job map用url作key,运用sum作二次排序,reduce中取top10000000


方法二:
建hive表A,挂分区channel,每个文件夹是一个分区.

select x.url,x.c from(select url,count(1) as c from A where channel ='' group by url) x order by x.c desc limit 1000000;

2.如果让你设计,你觉得一个分布式文件系统应该如何设计,考虑哪方面内容?

一.问答题

1、map方法是如何调用reduce方法的?

2、fsimage和edit的区别?

3、hadoop1和hadoop2的区别?

4、列举几个配置文件优化?

5、写出你对zookeeper的理解

6、datanode首次加入cluster的时候,如果log报告不兼容文件版本,那需要namenode执行格式化操作,这样处理的原因是?

7、hbase 集群安装注意事项


二. 思考题
1.?linux 基础:
(1) find 用法
(2) 给出一个文本:
http://aaa.com
http://bbb.com
http://bbb.com
http://bbb.com
http://ccc.com
http://ccc.com
让写shell统计,最后输出结果,要求结果还要排序
aaa 1
ccc 2
bbb 3

2. 画出公司的hadoop项目架构

1.文件大小默认为64M,改为128M有啥影响?

2.RPC的原理?

3.NameNode与SecondaryNameNode的区别与联系?

4.介绍MadpReduce整个过程,比如把WordCount的例子的细节将清楚(重点讲解Shuffle)?

5.MapReduce出现单点负载多大,怎么负载平衡?

6.MapReduce怎么实现Top10?

7.hadoop底层存储设计

8.zookeeper有什么优点,用在什么场合

9.Hbase中的metastore用来做什么的?

10.HBase在进行模型设计时重点在什么地方?一张表中国定义多少个Column Family最合适?为什么?

11.如何提高HBase客户端的读写性能?请举例说明。

12.在hadoop开发过程中使用过哪些算法?其应用场景是什么?

13.MapReduce程序如何发布?如果MapReduce中涉及到了第三方的jar 包,该如何处理?

14.在实际工作中使用过哪些集群的运维工具,请分别阐述其作用。

1.?集群多少台,数据量多大,吞吐量是多大,每天处理多少G的数据?

2. 我们的日志是不是除了apache的访问日志是不是还有其他的日志?

3. 假设我们有其他的日志是不是可以对这个日志有其他的业务分析?这些业务分析都有什么?

4. 你们的服务器有多少台?服务器的内存多大?

5. 你们的服务器怎么分布的?(这里说地理位置分布,最好也从机架方面也谈谈)

6. 你平常在公司都干些什么(一些建议)

7. 你们的集群规模?

开发集群: 10台(8台可用) 8核cpu

8. 你们的数据是用什么导入到数据库的?导入到什么数据库?

处理之前的导入:通过 hadoop 命令导入到 hdfs 文件系统

处理完成之后的导出:利用 hive 处理完成之后的数据,通过 sqoop 导出到 mysql 数据库中,以供报表层使用。

9. 你们业务数据量多大?有多少行数据??

开发时使用的是部分数据,不是全量数据,有将近一亿行( 8、 9 千万,具体不详,一般开发中也没人会特别关心这个问题)

10. 你们处理数据是直接读数据库的数据还是读文本数据?

将日志数据导入到 hdfs 之后进行处理


11. 你们写 hive 的 hql 语句,大概有多少条?

不清楚,我自己写的时候也没有做过统计

12. 你们提交的 job 任务大概有多少个?这些 job 执行完大概用多少时间?

没统计过,加上测试的,会有很多

13. 你在项目中主要的工作任务是?

利用 hive 分析数据

14. 你在项目中遇到了哪些难题,是怎么解决的?

某些任务执行时间过长,且失败率过高,检查日志后发现没有执行完就失败,原因出在hadoop 的 job 的 timeout 过短(相对于集群的能力来说),设置长一点即可

15. 你自己写过 udf 函数么?写了哪些?

16. 你的项目提交到 job 的时候数据量有多大??

17. 数据备份,你们是多少份,如果数据超过存储容量,你们怎么处理?

18. 怎么提升多个 JOB 同时执行带来的压力,如何优化,说说思路?

19. 你们用 HBASE 存储什么数据?


20. 你们的 hive 处理数据能达到的指标是多少?

21. ?你们的 hbase 大概在公司业务中(主要是网上商城)大概都几个表,几个表簇,都存什么样的数据?

1.hbase怎么预分区?

2.hbase怎么给web前台提供接口来访问?

3.htable API有没有线程安全问题,在程序中是单例还是多例?

4.hbase有没有并发问题?

5.metaq消息队列,zookeeper集群,storm集群,就可以完成对商城推荐系统功能吗?还有没有其他的中间件?

6.storm 怎么完成对单词的计数?

7.hdfs的client端,复制到第三个副本时宕机, hdfs怎么恢复保证下次写第三副本?

8.block块信息是先写dataNode还是先写nameNode?

9.Hadoop生态圈中各种框架的运用场景?


10.hive中的压缩格式RCFile、TextFile、SequenceFile各有什么区别??

11.说明 Hadoop 2.0 的基本构成。

12.相比于 HDFS1.0,HDFS 2.0最主要的改进在哪几方面?

13.试使用"步骤 1,步骤 2,步骤 3…" 说明YARN中运行应用程序的基本流程。

14.MapReduce2.0中,MRAppMaster主要作用是什么?MRAppMaster如何实现任务容错的?

15.为什么会产生yarn,它解决了什么问题,有什么优势?

一. 问答题

1.请说说hadoop1的HA如何实现?

2.列举出hadoop中定义的最常用的InputFormats。那个是默认的?

3.TextInputFormat和KeyValueInputFormat类之间的不同之处在于哪里?

4.hadoop中的InputSplit是什么?

5.hadoop框架中文件拆分是如何被触发的?

6.hadoop中的RecordReader的目的是什么?

7.如果hadoop中没有定义定制分区,那么如何在输出到reducer前执行数据分区?

8.什么是jobtracker?jobtracker有哪些特别的函数?

9.hadoop中job和task之间是什么关系?

10.假设hadoop一个job产生了100个task,其中一个task失败了,hadoop会如何处理?

11.hadoop推测执行是如何实现的?

12.关系型数据库有什么弱点?

很难进行分布式部署,I/O瓶颈显著,依赖于强大的服务器,需要花更大的代价才能突破性能极限

很难处理非结构化数据

13.什么情况下使用hbase?

适合海量的,但同时也是简单的操作(例如:key-value)

成熟的数据分析主题,查询模式已经确定并且不会轻易改变。

传统的关系型数据库已经无法承受负荷,高速插入,大量读取


二. 分析题
1.有一千万条短信,有重复,以文本文件的形式保存,一行一条,有重复。请用5分钟时间,找出重复出现最多的前10条。
分析:

常规方法是先排序,在遍历一次,找出重复最多的前10条。但是排序的算法复杂度最低为nlgn。可以设计一个 hash_table,hash_map<string,int> ,依次读取一千万条短信,加载到hash_table表中,并且统计重复的次数,与此同时维护一张最多10条的短信表。这样遍历一次就能找出最多的前10条,算法复杂度为 O(n)。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读