您的位置:首页 > 职场人生

大数据面试宝典(分析题)

2018-03-28 16:30 155 查看
  金三银四,正值求职的黄金季节,求职大数据的小伙伴们,看过来了,小编给你送福利了,大数据面试宝典已经为你备好,请各位小主儿过目。
  



  一、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数
97ba
据的两种方式

  这两种方式分别是:
  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范围的数据。
  以上五道大数据的经典面试题,各位小主先用着,待小编深度挖掘讲师的满满大数据技术干货库,为大家谋福利!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: