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

放肆的年华 提交于 2019-11-30 18:05:49

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任务细节信息和任务运行尝试中找到输入块的位置。如果输入块的位置不是任务执行的节点,那就不是本地数据了。

技术33 Reduce实例不足或过多

技术34 诊断reduce段的数据倾斜的问题

技术35 确定reduce任务是否存在整体吞吐量过低

技术36 缓慢的洗牌(shuffle)和排序

技术37 作业竞争和调度器限制

1.查找硬件的失效

CPU竞争

3 内存交换

4 磁盘健康

 网络


技术46 规避使用reduce

技术48 使用combine

技术50 收集倾斜数据

减小Reduce端数据倾斜的性能损失

抽样和范围分区

方法2:自定义分区

方法3:Combine

方法4:Map端连接和半连接

数据大小倾斜的自定义策略

1.正则表达式(少用)

2.字符串令牌化(TOKENIZATION)Apache commons中的StringUtils类效率要更好

3.对象重用

4字符串连接

5对象的内存资源消耗

6.4.6 优化数据序列化

压缩

二进制文件格式   使用二进制文件格式,如Avro和SequenceFile,可以使数据的表达更为紧凑,并提高编组(marshalling)和逆编组的效率,相比文本格式要更为高效。

  • 确保精确的度量,理解如何获得MapReduce和系统的性能指标
  • 使用性能指标来减少潜在的性能问题
  • 通过检查MapRecue/HDFS配置,优化MapReduce洗牌/排序阶段,优化用户JAVA代码,来修复常见的性能问题


5.1 小文件

技术24 使用Avro存储多个小文件

最简单的方案就是将HDFS中的小文件打包到一个大的文件容器中。这个技术中将本地磁盘中所有的目标文件存储到HDFS中的一个单独的Avro文件。然后在MapReduce中处理Avro文件和其中的小文件。

压缩依赖

CombineFileInputFormat

基于压缩的高效存储

-------------------------------

Hadoop(1)MapReduce 性能调优:性能测量(Measuring)
http://www.aboutyun.com/thread-15514-1-1.html


Hadoop(2)MapReduce 性能调优:理解性能瓶颈,诊断map性能瓶颈
http://www.aboutyun.com/thread-15517-1-1.html


Hadoop(3)MapReduce 性能调优:诊断reduce性能瓶颈
http://www.aboutyun.com/thread-15522-1-1.html


Hadoop(4)MapReduce 性能调优:诊断一般性能瓶颈
http://www.aboutyun.com/thread-15660-1-1.html


Hadoop(5)MapReduce 性能调优:诊断硬件性能瓶颈
http://www.aboutyun.com/thread-15534-1-1.html


Hadoop(6)MapReduce 性能调优:优化洗牌(shuffle)和排序阶段
http://www.aboutyun.com/thread-15545-1-1.html


Hadoop(7)MapReduce 性能调优:减小数据倾斜的性能损失
http://www.aboutyun.com/thread-15544-1-1.html


Hadoop(8)MapReduce 性能调优:优化MapReduce的用户JAVA代码
http://www.aboutyun.com/thread-15583-1-1.html



Hadoop(9)MapReduce 性能调优:优化数据序列化
http://www.aboutyun.com/thread-15658-1-1.html



Hadoop(10)MapReduce 文件处理:小文件
http://www.aboutyun.com/thread-15592-1-1.html


Hadoop(11)MapReduce 文件处理:基于压缩的高效存储(一)
http://www.aboutyun.com/thread-15626-1-1.html


Hadoop(12)MapReduce 文件处理:基于压缩的高效存储(二)
http://www.aboutyun.com/thread-15629-1-1.html

-------------------------------






易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!