整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

hadoop的11套面试题

hadoop 小小明 149℃ 0评论

Hadoop面试题系列1

一. 问答题

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 ,依次读取一千万条短信,加载到hash_table表中,并且统计重复的次数,与此同时维护一张最多10条的短信表。这样遍历一次就能找出最多的前10条,算法复杂度为 O(n)。

Hadoop面试题系列2

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, 它解决了什么问题,有什么优势?

 

Hadoop面试题系列(3/11)

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

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

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

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

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

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

7. 你们的集群规模?

537台。

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 大概在公司业务中(主要是网上商城)大概都几个表,几个表簇,都存什么样的数据?

 

Hadoop面试题系列(4/11)

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.在实际工作中使用过哪些集群的运维工具,请分别阐述其作用。

 

Hadoop面试题系列(5/11)

一.问答题

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项目架构

 

Hadoop面试题系列(6/11)

一. 问答题

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.如果让你设计,你觉得一个分布式文件系统应该如何设计,考虑哪方面内容?

 

Hadoop面试题系列(7/11)

一. 单选题

1. 下面哪个程序负责 HDFS 数据存储
a)NameNode b)Jobtracker c)Datanode d)secondaryNameNode e)tasktracker
答案:C datanode

2. HDfS 中的 block 默认保存几份?
a)3 份 b)2 份 c)1 份d)不确定
答案:A 默认3份

3. 下列哪个程序通常与 NameNode在一个节点启动?
a)SecondaryNameNode b)DataNode c)TaskTracker d)Jobtracker
答案:D
分析:
hadoop的集群是基于master/slave模式,namenode和jobtracker属于master,datanode和tasktracker属于slave,master只有一个,而slave有多个
SecondaryNameNode内存需求和NameNode在一个数量级上,所以通常secondary NameNode(运行在单独的物理机器上)和NameNode运行在不同的机器上。
JobTracker对应于NameNode,TaskTracker对应于DataNode
DataNode和NameNode是针对HDFS数据存放来而言的,JobTracker和TaskTracker是对于MapReduce执行而言的

mapreduce中几个主要概念,mapreduce整体上可以分为这么几条执行线索:jobclient,JobTracker与TaskTracker。
(1)、JobClient会在用户端通过JobClient类将应用已经配置参数打包成jar文件存储到hdfs,
并把路径提交到Jobtracker,然后由JobTracker创建每一个Task(即MapTask和ReduceTask)并将它们分发到各个TaskTracker服务中去执行
(2)、JobTracker是一个master服务,软件启动之后JobTracker接收Job,负责调度Job的每一个子任务task运行于TaskTracker上,
并监控它们,如果发现有失败的task就重新运行它。一般应该把JobTracker部署在单独的机器上。
(3)、TaskTracker是运行在多个节点上的slaver服务。TaskTracker主动与JobTracker通信,接收作业,并负责直接执行每一个任务。
TaskTracker都需要运行在HDFS的DataNode上

4. Hadoop作者
a)Martin Fowler b)Kent Beck c)Doug cutting +
答案:C Doug cutting

5. HDFS默认Block Size
a)32MB b)64MB c)128MB
答案:B(Hadoop 1.x是64MB;Hadoop 2.x都128了。)

6. 下列哪项通常是集群的最主要瓶颈
a)CPU b)网络 c)磁盘IO d)内存
答案:C磁盘
分析:
首先集群的目的是为了节省成本,用廉价的pc机,取代小型机及大型机。cpu处理能力强, 内存够大, 所以集群的瓶颈不可能是a和d; 网络是一种稀缺资源,但是并不是瓶颈。由于大数据面临海量数据,读写数据都需要io,然后还要冗余数据,hadoop一般备3份数据,所以IO就会打折扣。对于磁盘IO:当我们面临集群作战的时候,我们所希望的是即读即得。可是面对大数据,读取数据需要经过IO,这里可以把IO理解为水的管道。管道越大越强,我们对于T级的数据读取就越快。所以IO的好坏,直接影响了集群对于数据的处理。

7. 关于SecondaryNameNode哪项是正确的?
a)它是NameNode的热备 b)它对内存没有要求
c)它的目的是帮助NameNode合并编辑日志,减少NameNode启动时间
d)SecondaryNameNode应与NameNode部署到一个节点
答案C。

二.多选题

8. 下列哪项可以作为集群的管理?
a)Puppet b)Pdsh c)Cloudera Manager d)Zookeeper
答案:ABC
分析:
A:puppetpuppet是一种Linux、Unix、windows平台的集中配置管理系统
B:pdsh可以实现在在多台机器上执行相同的命令
详细参考:集群管理小工具介绍-pdsh
C:可以参考Cloudera Manager四大功能
首先这里给管理下一个定义:部署、配置、调试、监控,属于管理,因为zookeeper不满足上面要求,所以不纳入管理范围。

9. 配置机架感知的下面哪项正确
a)如果一个机架出问题,不会影响数据读写
b)写入数据的时候会写到不同机架的 DataNode 中
c)MapReduce会根据机架获取离自己比较近的网络数据
答案:ABC

10. Client 端上传文件的时候下列哪项正确
a)数据经过 NameNode 传递给 DataNode
b)Client端将文件切分为Block,依次上传
c)Client只上传数据到一台DataNode,然后由NameNode负责Block复制工作
答案:B
分析:
Client向NameNode发起文件写入的请求。NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。
Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。

11. 下列哪个是 Hadoop 运行的模式
a)单机版 b)伪分布式 c)分布式
答案:ABC

12. Cloudera 提供哪几种安装 CDH 的方法
a)Cloudera manager b)Tarball c)Yum d)Rpm
答案:ABCD具体可以参考
Hadoop CDH四种安装方式总结及实例指导

三. 判断题

13. Ganglia不仅可以进行监控,也可以进行告警。(正确)
分析:
此题的目的是考Ganglia的了解。严格意义上来讲是正确。
ganglia作为一款最常用的Linux环境中的监控软件,它擅长的的是从节点中按照用户的需求以较低的代价采集数据。但是ganglia在预警以及发生事件后通知用户上并不擅长。最新的ganglia已经有了部分这方面的功能。但是更擅长做警告的还有Nagios。Nagios,就是一款精于预警、通知的软件。通过将Ganglia和Nagios组合起来,把Ganglia采集的数据作为Nagios的数据源,然后利用Nagios来发送预警通知,可以完美的实现一整套监控管理的系统。

14. Block Size是不可以修改的。(错误)
它是可以被修改的
Hadoop的基础配置文件是hadoop-default.xml,默认建立一个Job的时候会建立Job的Config,Config首先读入hadoop-default.xml的配置,然后再读入hadoop-site.xml的配置(这个文件初始的时候配置为空),hadoop-site.xml中主要配置需要覆盖的hadoop-default.xml的系统级配置。具体配置可以参考下

<property
  <name>dfs.block.size</name
  <value>5120000</value
  <description>The default block size for new files.</description
</property
// block的大小,单位字节,后面会提到用处,必须是512的倍数,因为采用crc作文件完整性校验,默认配置512是checksum的最小单元。 

15. Nagios不可以监控Hadoop集群,因为它不提供 Hadoop 支持。(错误)
分析:Nagios是集群监控工具,而且是云计算三大利器之一

16. 如果NameNode意外终止,SecondaryNameNode会接替它使集群继续工作。(错误)
分析:
SecondaryNameNode是帮助恢复,而不是替代,如何恢复,可以查看

17. Cloudera CDH 是需要付费使用的。(错误)
分析:
第一套付费产品是Cloudera Enterpris,Cloudera Enterprise在美国加州举行的 Hadoop 大会 (Hadoop Summit) 上公开,以若干私有管理、监控、运作工具加强 Hadoop 的功能。收费采取合约订购方式,价格随用的 Hadoop 叢集大小变动。

18. Hadoop是Java开发的,所以MapReduce只支持Java语言编写。(错误)

19. Hadoop 支持数据的随机读写。(错)
分析:
lucene是支持随机读写的,而hdfs只支持随机读。但是HBase可以来补救。HBase提供随机读写,来解决Hadoop不能处理的问题。
HBase自底层设计开始即聚焦于各种可伸缩性问题:表可以很“高”,有数十亿个数据行;也可以很“宽”,有数百万个列;水平分区并在上千个普通商用机节点上自动复制。表的模式是物理存储的直接反映,使系统有可能提高高效的数据结构的序列化、存储和检索。

20. NameNode 负责管理 metadata,client 端每次读写请求,它都会从磁盘中读取或则会写入 metadata 信息并反馈 client 端。(错误)
分析:
NameNode 不需要从磁盘读取 metadata,所有数据都在内存中,硬盘上的只是序列化的结果,只有每次 namenode 启动的时候才会读取。
(1) 文件写入
Client向NameNode发起文件写入的请求。
NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。
Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。

(2) 文件读取
Client向NameNode发起文件读取的请求。
NameNode返回文件存储的DataNode的信息。
Client读取文件信息。

21. NameNode 本地磁盘保存了 Block 的位置信息。(正确)
分析:
DataNode是文件存储的基本单元,它将Block存储在本地文件系统中,保存了Block的Meta-data,同时周期性地将所有存在的Block信息发送给NameNode。

22. DataNode 通过长连接与 NameNode 保持通信。
这个有分歧,首先明确一下概念:
(1) 长连接
Client方与Server方先建立通讯连接,连接建立后不断开,然后再进行报文发送和接收。这种方式下由于通讯连接一直存在,此种方式常用于点对点通讯。

(2) 短连接
Client方与Server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此种方式常用于一点对多点通讯,比如多个Client连接一个Server.

23. Hadoop 自身具有严格的权限管理和安全措施保障集群正常运行。(错误)
hadoop只能阻止好人犯错,但是不能阻止坏人干坏事

24. Slave 节点要存储数据,所以它的磁盘越大越好。(错误)
分析:
一旦Slave节点宕机,数据恢复是一个难题

25. hadoop dfsadmin –report 命令用于检测 HDFS 损坏块。(错误)
分析:
hadoop dfsadmin -report
用这个命令可以快速定位出哪些节点down掉了,HDFS的容量以及使用了多少,以及每个节点的硬盘使用情况。

26. Hadoop 默认调度器策略为 FIFO(正确)

27. 集群内每个节点都应该配 RAID,这样避免单磁盘损坏,影响整个节点运行。(错误)
分析:
首先明白什么是RAID,可以参考百科磁盘阵列。这句话错误的地方在于太绝对,具体情况具体分析。题目不是重点,知识才是最重要的。因为hadoop本身就具有冗余能力,所以如果不是很严格不需要都配备RAID。具体参考第二题。

28. 因为 HDFS 有多个副本,所以 NameNode 是不存在单点问题的。(错误)
分析:
NameNode存在单点问题。了解详细信息,可以参考
Hadoop中Namenode单点故障的解决方案及详细介绍AvatarNode

29. 每个 map 槽就是一个线程。(错误)
分析:首先我们知道什么是map槽,map槽->map slot
map slot只是一个逻辑值 ( org.apache.hadoop.mapred.TaskTracker.TaskLauncher.numFreeSlots ),而不是对应着一个线程或者进程

30. Mapreduce 的 input split 就是一个 block。(错误 )
InputFormat的数据划分、Split调度、数据读取三个问题的浅析

31. NameNode 的 Web UI 端口是 50030,它通过 jetty 启动的 Web 服务。(错误 )
分析:
根据下面,很显然JOBTRACKER的 Web UI 端口是 50030

端口说明: 
默认端口    设置位置                                                                                                   
9000    namenode                                                                                                 
8020    namenode                                                                                                 
8021    JT RPC                                                                                                     
50030   mapred.job.tracker.http.address JobTracker administrative web GUI       
50070   dfs.http.address NameNode administrative web GUI                                
50010   dfs.datanode.address DataNode control port                 
50020   dfs.datanode.ipc.address DataNode IPC port, used forblock transfer      
50060   mapred.task.tracker.http.address Per TaskTracker web interface            
50075   dfs.datanode.http.address Per DataNode web interface                           
50090   dfs.secondary.http.address Per secondary NameNode web interface       
  
设置位置              描述信息 
namenode              交互端口 
namenode              RPC交互端口 
JT RPC                交互端口 
mapred.job.tracker.http.address JobTracker administrative web GUI     JOBTRACKER的HTTP服务器和端口 
dfs.http.address NameNode administrative web GUI                              NAMENODE的HTTP服务器和端口 
dfs.datanode.address DataNode control port               DATANODE控制端口,主要用于DATANODE初始化时向NAMENODE提出注册和应答请求 
dfs.datanode.ipc.address DataNode IPC port, used forblock transfer    DATANODE的RPC服务器地址和端口 
mapred.task.tracker.http.address Per TaskTracker web interface           TASKTRACKER的HTTP服务器和端口 
dfs.datanode.http.address Per DataNode web interface                          DATANODE的HTTP服务器和端口 
dfs.secondary.http.address Per secondary NameNode web interface     辅助DATANODE的HTTP服务器和端口 

32. Hadoop 环境变量中的 HADOOP_HEAPSIZE 用于设置所有 Hadoop 守护线程的内存。它默认是 200 GB。( 错误)

hadoop为各个守护进程(namenode,secondarynamenode,jobtracker,datanode,tasktracker)统一分配的内存在hadoop-env.sh中设置,参数为HADOOP_HEAPSIZE,默认为1000M。

33. DataNode 首次加入 cluster 的时候,如果 log 中报告不兼容文件版本,那需要NameNode执行“Hadoop namenode -format”操作格式化磁盘。(错误 )
分析:
这个报错是说明DataNode所装的Hadoop版本和其它节点不一致,应该检查DataNode的Hadoop版本

 

Hadoop面试题系列(8/11)

一. 问答题

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 点)哪张表被访问的最频繁,以及这段时间访问这张表最多的用户,以及这个用户的总时间开销。

 

Hadoop面试题系列(9/11)

一. 问答题

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) 还有没更好更优的方法解决这个问题。

 

Hadoop面试题系列(10/11)

一. 问答题

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

2) hdfs的体系结构?

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

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

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

二. 计算题

1、使用Hive或者自定义MR实现如下逻辑

product_no lac_id moment start_time user_id county_id staytime city_id 
13429100031 22554 8 2013-03-11 08:55:19.151754088 571 571 282 571 
13429100082 22540 8 2013-03-11 08:58:20.152622488 571 571 270 571 
13429100082 22691 8 2013-03-11 08:56:37.149593624 571 571 103 571 
13429100087 22705 8 2013-03-11 08:56:51.139539816 571 571 220 571 
13429100087 22540 8 2013-03-11 08:55:45.150276800 571 571 66 571 
13429100082 22540 8 2013-03-11 08:55:38.140225200 571 571 133 571 
13429100140 26642 9 2013-03-11 09:02:19.151754088 571 571 18 571 
13429100082 22691 8 2013-03-11 08:57:32.151754088 571 571 287 571 
13429100189 22558 8 2013-03-11 08:56:24.139539816 571 571 48 571 
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。最终得到每一个用户按时间排序在每一个基站驻留时长

期望输出举例:

13429100082 22540 8 2013-03-11 08:58:20.152622488 571 571 270 571 
13429100082 22691 8 2013-03-11 08:56:37.149593624 571 571 390 571 
13429100082 22540 8 2013-03-11 08:55:38.140225200 571 571 133 571 
13429100087 22705 8 2013-03-11 08:56:51.139539816 571 571 220 571 
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 大小的文本文件,行分隔符为\x01\x02,统计一下该文件中的总行数,要求注意边界情况的处理

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

 

Hadoop面试题系列(11/11)

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

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

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

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

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

5、Hbase内部是什么机制?

6、hdfs的数据压缩算法

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

8、hbase过滤器实现原则

转载请注明:全栈大数据 » hadoop的11套面试题

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽
  1. 牛逼
    harvey2017-08-12 10:54 回复