你好,游客 登录
背景:
阅读新闻

Spark 和hadoop的一些面试题(准备)

[日期:2017-09-13] 来源:CSDN  作者: [字体: ]

1、将现有逻辑在spark上面实现。

2、数据倾斜怎么处理?

    数据倾斜有很多解决方案,本例子简要介绍一种实现方式,假设表A 和表B连接,表A 数据倾斜,只有一个key倾斜,首先对A进行采样,统计出最倾斜的key,将A     表分隔为A1 只有倾斜 key, A2 不包含倾斜key, 然后分别与 表B 连接。

    最后将结果合并, union

3 、各完成一个awk和sed的例子,最简单的应用即可,并说明。

 

   cat /etc/passwd |awk  -F ':'  '{print $1}'   读取文件,指定文本分隔符,然后打印第一个域
 

       cat test.sh | sed  '2,50d'       读取文件的每一行,然后对每一行进行处理后打印在控制台, 有很多模式,很多方法。还可以直接修改文件

4、简要描述你知道的数据挖掘算法和使用场景

 

(一)基于分类模型的案例

    ( 1)垃圾邮件的判别    通常会采用朴素贝叶斯的方法进行判别

    (2)医学上的肿瘤判断   通过分类模型识别 

(二)基于预测模型的案例  

         (1)红酒品质的判断  分类回归树模型进行预测和判断红酒的品质  

         ( 2)搜索引擎的搜索量和股价波动

(三)基于关联分析的案例:沃尔玛的啤酒尿布

(四)基于聚类分析的案例:零售客户细分

(五)基于异常值分析的案例:支付中的交易欺诈侦测

(六)基于协同过滤的案例:电商猜你喜欢和推荐引擎

(七)基于社会网络分析的案例:电信中的种子客户

(八)基于文本分析的案例

(1)字符识别:扫描王APP

(2)文学著作与统计:红楼梦归属

5、列举你知道的常用的hadoop管理和监控的命令、比如hdfs dfs -mkdir /usr

       -ls  -cat   -text    -cp   -put  -chmod   -chown

       -du      -get   -copyFromLocal   -copyToLocal 

      -mv   -rm   - tail   -chgrp

6、评述hadoop运行原理

   站在高处,大的方面讲解

   1、有hdfs 负责数据存放  是Hadoop的分布式文件存储系统

 

  1. 将大文件分解为多个Block,每个Block保存多个副本。提供容错机制,副本丢失或者宕机时自动恢复。
  2. 默认每个Block保存3个副本,64M为1个Block。
  3. 将Block按照key-value映射到内存当中。

   2、有mapreduce负责计算,Map(映射)和Reduce(归约)

  7、讲述mapreduce的原理

ApplicationMaster 是一个详细的框架库,它结合从 ResourceManager 获得的资源和 NodeManager 协同工作来运行和监控任务。

ResourceManager 支持分层级的应用队列,这些队列享有集群一定比例的资源。从某种意义上讲它就是一个纯粹的调度器,

ApplicationMaster 的职责有:向调度器索要适当的资源容器,运行任务,跟踪应用程序的状态和监控它们的进程,处理任务的失败原因。

输入分片(input split)

map阶段:

combiner阶段:


8、JVM&垃圾回收机制

三个代:年轻代(Young Generation)、年老代(Old Generation)和持久代(Permanent Generation)


9、找出公共好友:

http://www.cnblogs.com/lucius/p/3483494.html

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

 原理:A 有好友 B ,C,D    F 有好友 D E F  

            其实A 的好友也是他好友的好友

            其实F 的好友也是他的好友的好友

            那么D 的共同好友就是  A F 

10、combiner作用

    Combiner最基本是实现本地key的聚合,对map输出的key排序、value进行迭代。 

Combiner还有本地reduce功能(其本质上就是一个reduce): 

使用Combiner先完成在map端的本地聚合,可以减少网络传输数据量,提高性能。 

平均数的归约算法不能多次调用。


11、在mr环节中,那些环节需要优化,如何优化,请详细说明。

    1、 setNumReduceTasks  适当的设置reduce的数量,如果数据量比较大,那么可以增加reduce的数量

    2、适当的时候使用 combine 函数,减少网络传输数据量

    3、压缩map和reduce的输出数据

   4、使用SequenceFile二进制文件。

   5、通过application 的ui页面观察job的运行参数

  6、太多小文件,造成map任务过多的问题,应该可以先合并小文件,或者有一个特定的map作为处理小文件的输入

   7、map端效率低原因分析

  • 源文件的大小远小于HDFS的块的大小。这意味着任务的开启和停止要耗费更多的时间,就没有足够的时间来读取并处理输入数据。
  • 源文件无法分块。这导致需要通过网络IO从其他节点读取文件块。
  • 一个节点的本地磁盘或磁盘控制器运行在降级模式中,读取写入性能都很差。这会影响某个节点,而不是全部节点。
  • 源文件不来自于HDFS。则可能是Hadoop节点和数据源之间的延迟导致了性能低下。
  • Map任务从其他数据节点读取数据。可以从JobTracker的map任务细节信息和任务运行尝试中找到输入块的位置。如果输入块的位置不是任务执行的节点,那就不是本地数据了
收藏 推荐 打印 | 阅读:
相关新闻       spark面试题