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、简要描述你知道的数据挖掘算法和使用场景
(一)基于分类模型的案例
(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的分布式文件存储系统
- 将大文件分解为多个Block,每个Block保存多个副本。提供容错机制,副本丢失或者宕机时自动恢复。
- 默认每个Block保存3个副本,64M为1个Block。
- 将Block按照key-value映射到内存当中。
2、有mapreduce负责计算,Map(映射)和Reduce(归约)
7、讲述mapreduce的原理
ApplicationMaster 是一个详细的框架库,它结合从 ResourceManager 获得的资源和 NodeManager
协同工作来运行和监控任务。
ResourceManager
支持分层级的应用队列,这些队列享有集群一定比例的资源。从某种意义上讲它就是一个纯粹的调度器,
ApplicationMaster 的职责有:向调度器索要适当的资源容器,运行任务,跟踪应用程序的状态和监控它们的进程,处理任务的失败原因。
输入分片(input
split)
map阶段:
combiner阶段:
三个代:年轻代(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 优化数据序列化
压缩
- 确保精确的度量,理解如何获得MapReduce和系统的性能指标
- 使用性能指标来减少潜在的性能问题
- 通过检查MapRecue/HDFS配置,优化MapReduce洗牌/排序阶段,优化用户JAVA代码,来修复常见的性能问题
最简单的方案就是将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
-------------------------------
来源:CSDN
作者:孟德新书
链接:https://blog.csdn.net/qiezikuaichuan/article/details/51578743