大数据面试题(一)

一、Mapreduce的理解?Mapreduce 的执行原理?

Mapper 阶段

1、先将HDFS中的输入文件file按照一定的标准进行切片

2、调用自己编写的map逻辑,将输入的键值对<k1,v1>变成<k2,v2>

3、按照一定的规则对输出的键值对<k2,v2>进行分区

4、对每个分区中的键值对进行排序。
Reduce 阶段

1、对多个Mapper任务的输出,按照不同的分区,通过网络拷贝到不同的Reducer节点上进行处理,将数据按照分区拷贝到不同的Reducer节点之后,对多个Mapper任务的输出在进行合并,排序。

2、调用自己的reduce逻辑,将键值对<k2,v2>变为<k3,v3>.在这里注意:每一个键值对<k2,v2>都会调用一次reduce函数。

3、将Reducer任务的输出保存到指定的文件中。

 

二、Spark工作流程简述

1、构建Spark Application的运行环境(启动SparkContext),SparkContext向资源管理器(Standalone、Mesos或YARN)注册并申请Executor运行资源;
2、资源管理器分配Executor资源并启动StandaloneExecutorBackend,Executor运行情况将随着心跳发送资源管理器上;
3、SparkContext构建成DAG图并分解成Stage,再把Taskset发送给Task Scheduler;
4、Executor向SparkContext申请Task,Task Scheduler将Task发放给Executor,运行同时SparkContext将应用程序代码发放给Executor。
5、Task在Executor上运行,运行完毕释放所有资源。

Hadoop 中 job 和 task 之间的区别是什么

JobTracker 是一个 master 服务,软件启动之后 JobTracker 接收 Job,负责调度 Job的每一个子任务, task 运行于 TaskTracker 上,并监控它们,如果发现有失败的 task 就重新运行它。一般情况应该把 JobTracker 部署在单独的机器上。
TaskTracker 是运行在多个节点上的 slaver 服务。TaskTracker 主动与 JobTracker 通信,接收作业,并负责直接执行每一个任务。

四、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"
      }  }  }

Hive优化:看做mapreduce处理

排序优化:sort by 效率高于 order by
 分区:使用静态分区 (statu_date="20160516",location="beijin"),每个分区对应hdfs上的一个目录
 减少job和task数量:使用表链接操作
 解决groupby数据倾斜问题:设置hive.groupby.skewindata=true ,那么hive会自动负载均衡
 小文件合并成大文件:表连接操作
 使用UDF或UDAF函数:http://www.cnblogs.com/ggjucheng/archive/2013/02/01/2888819.html

五、Hbase的rk(rowkey)设计,Hbase优化

rowkey:hbase三维存储中的关键(rowkey:行键 ,columnKey(family+quilaty):列键  ,timestamp:时间戳)
   rowkey字典排序、越短越好
   使用id+时间:9527+20160517 \使用hash散列:dsakjkdfuwdsf+9527+20160518
   应用中,rowkey 一般10~100bytes,8字节的整数倍,有利于提高操作系统性能
Hbase优化
   分区:RegionSplit()方法 \NUMREGIONS=9
   column不超过3个
   硬盘配置,便于regionServer管理和数据备份及恢复
   分配合适的内存给regionserver


   其他:
   hbase查询
   (1)get
   (2)scan    使用startRow和endRow限制

六、jvm运行机制及内存原理

运行:
加载.class文件、管理并且分配内存、垃圾回收

内存原理:
JVM装载环境和配置、装载JVM.dll 并初始化JVM.dll、处理class类

hdfs、yarn参数调优

mapreduce.job.jvm.num.tasks 默认为1,设置为 -1,重用jvm

 

 

发布了77 篇原创文章 · 获赞 19 · 访问量 4049

猜你喜欢

转载自blog.csdn.net/qq_41861558/article/details/103805220