深圳大数据培训带来如何提升面试成功率的宝典
时间:2018-03-30 15:07:06 | 来源:千锋教育深圳校区 | 作者:千锋金三银四,正值求职的黄金季节,求职大数据的小伙伴们,看过来了,千锋小编给你送福利了,千锋深圳大数据培训面试宝典已经为你备好,请各位小主儿过目。
一、hive的使用,内外部表的区别,分区作用,UDF和Hive优化
(1)hive使用:仓库、工具
(2)hive内外部表:内部表数据永久删除,外部表数据删除后、其他人依然可以访问
(3)分区作用:防止数据倾斜
(4)UDF函数:用户自定义的函数(主要解决格式,计算问题),需要继承UDF类
java代码实现
class TestUDFHive extends UDF {
public String evalute(String str){
try{
return "hello"+str
}catch(Exception e){
return str+"error"
}
}
}
(5)Hive优化:看做mapreduce处理
a\排序优化:sort by 效率高于 order by
b\分区:使用静态分区 (statu_date="20160516",location="beijin"),每个分区对应hdfs上的一个目录
c\减少job和task数量:使用表链接操作
d\解决groupby数据倾斜问题:设置hive.groupby.skewindata=true ,那么hive会自动负载均衡
e\小文件合并成大文件:表连接操作
f\使用UDF或UDAF函数:
二、简要描述如何安装配置一个apache开原本hadoop,只描述即可,无需列出完整步骤,能列出步骤好。
流程:
1.创建hadoop用户
2.修改IP
3.安装JDK,并配置环境变量
4.修改host文件映射
5.安装SSH,配置无秘钥通信
6.上传解压hadoop安装包
7.配置conf文件夹下的hadoop-env.sh、core-site.xlmapre-site.xml、hdfs-site.xml
8.配置hadoop的环境变量
9.Hadoop namenode -format
10.start-all
三、MapReduce优化
1. 任务调度
I/O 方面:Hadoop 会尽量将 Map 任务分配给 InputSplit 所在的机器,以减少网
络 I/O 的消耗。
2.数据预处理与 InputSplit 的大小
合理地设置 block块大小是很重要的调节方式。除此之外,也可以依靠合理地设置 Map 任务的数量来调节 Map 任务的数据输入。
3. Map 和 Reduce 任务的数量
当 Reduce 任务的数量是任务槽的 1.75 倍时,执行速度快的机器可以获得多
的 Reduce 任务,因此可以使负载加均衡,以提高任务的处理速度。
4. Combine 函数
MapReduce 框架运行用户写的 combine 函数用于本地合并,这会大大减少网
络 I/O 操作的消耗
四、spark集群运算的模式
Spark 有很多种模式,比较简单的就是单机本地模式,还有单机伪分布式模式,复杂的则运行在集群中,目前能很好的运行在 Yarn和 Mesos 中,当然 Spark 还有自带的 Standalone 模式,对于大多数情况 Standalone 模式就足够了,如果企业已经有 Yarn 或者 Mesos 环境,也是很方便部署的。
standalone(集群模式):典型的Mater/slave模式,不过也能看出Master是有单点故障的;Spark支持ZooKeeper来实现 HA
on yarn(集群模式): 运行在 yarn 资源管理器框架之上,由 yarn 负责资源管理,Spark 负责任务调度和计算
on mesos(集群模式): 运行在 mesos 资源管理器框架之上,由 mesos 负责资源管理,Spark 负责任务调度和计算
on cloud(集群模式):比如 AWS 的 EC2,使用这个模式能很方便的访问 Amazon的 S3;Spark 支持多种分布式存储系统:HDFS 和 S3
五、spark streaming 读取kafka数据的两种方式
这两种方式分别是:
Receiver-base
使用Kafka的高层次Consumer API来实现。receiver从Kafka中获取的数据都存储在Spark Executor的内存中,然后Spark Streaming启动的job会去处理那些数据。然而,在默认的配置下,这种方式可能会因为底层的失败而丢失数据。如果要启用高可靠机制,让数据零丢失,就必须启用Spark Streaming的预写日志机制(Write Ahead Log,WAL)。该机制会同步地将接收到的Kafka数据写入分布式文件系统(比如HDFS)上的预写日志中。所以,即使底层节点出现了失败,也可以使用预写日志中的数据进行恢复。
Direct
Spark1.3中引入Direct方式,用来替代掉使用Receiver接收数据,这种方式会周期性地查询Kafka,获得每个topic+partition的新的offset,从而定义每个batch的offset的范围。当处理数据的job启动时,就会使用Kafka的简单consumer api来获取Kafka指定offset范围的数据。
以上五道大数据的经典面试题,各位小主先用着,未来小编会深度挖掘千锋深圳大数据分析培训讲师的满满大数据技术干货库,为大家谋福利!