Hive与hadoop的面试知识点

一.hive中sort by、order by、distribute by、Cluster by代表什么意思?

1、order by 会对输入做全局排序,因此只有一个 reducer,会导致当输入规模较大时,
需要较长的计算时间。
2、sort by 不是全局排序,其在数据进入 reducer 前完成排序。因此,如果用 sort by 进行排序,并且设置 mapred.reduce.tasks>1,则 sort by 只保证每个 reducer 的输出有序,不保证全局有序。
3、distribute by(字段)根据指定字段将数据分到不同的 reducer,分发算法是 hash 散列。
4、Cluster by(字段) 除了具有 Distribute by 的功能外,还会对该字段进行排序。
如果分桶和 sort 字段是同一个时,此时,cluster by = distribute by + sort by

二.写出hive中split和coalesce函数的用法?

1.非空查找函数 : COALESCE
语法: COALESCE(T v1, T v2, …)
返回值: T
说明: 返回参数中的第一个非空值;如果所有值都为NULL,那么返回NULL
举例:
hive> select COALESCE(null,’100’,’50′) from dual;
100
2.条件判断函数: CASE
语法 : CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END
返回值 : T
说明:如果 a 等于 b ,那么返回 c ;如果 a 等于 d ,那么返回 e ;否则返回 f
举例:
hive> Select case 100 when 50 then ‘tom’ when 100 then ‘mary’ else ‘tim’ end from dual;
mary

三:简述MapReduce中conbiner和partition的作用

1、Combiner:
每一个 map 都可能会产生大量的本地输出,Combiner 的作用就是对 map 端的输出先做一次合并,以减少在 map 和 reduce 节点之间的数据传输量,以提高网络 IO 性能,是 MapReduce 的一种优化手段之一。
l combiner 是 MR 程序中 Mapper 和 Reducer 之外的一种组件
l combiner 组件的父类就是 Reducer
l combiner 和 reducer 的区别在于运行的位置:
Combiner 是在每一个 maptask 所在的节点运行
Reducer 是接收全局所有 Mapper 的输出结果;
l combiner 的意义就是对每一个 maptask 的输出进行局部汇总,以减小网络传
输量
2、partition是分割map每个节点的结果,按照key分别映射给不同的reduce,也是可以自定义的。这里其实可以理解归类。
我们对于错综复杂的数据归类。partition的作用就是把这些数据归类。只不过在写程序的时候,mapreduce使用哈希HashPartitioner帮我们归类了。这个我们也可以自定义。

四、Hadoop性能调优

1、从硬件选择、操作系统参数调优、JVM参数调优和Hadoop参数调优等四个方面入手

l 好的模型设计事半功倍。
l 解决数据倾斜问题。
l 减少job数。
l 设置合理的map reduce的task数,能有效提升性能。(比如,10w+级别的计算,用160个reduce,那是相当的浪费,1个足够)。
l 了解数据分布,自己动手解决数据倾斜问题是个不错的选择。set hive.groupby.skewindata=true;这是通用的算法优化,但算法优化有时不能适应特定业务背景,开发人员了解业务,了解数据,可以通过业务逻辑精确有效的解决数据倾斜问题。
l 数据量较大的情况下,慎用count(distinct),count(distinct)容易产生倾斜问题。
l 对小文件进行合并,是行至有效的提高调度效率的方法,假如所有的作业设置合理的文件数,对云梯的整体调度效率也会产生积极的正向影响。
l 优化时把握整体,单个作业最优不如整体最优

五、MapReduce编程模型

    MapReduce将作业的整个运行过程分为两个阶段:Map阶段和Reduce阶段
    Map阶段由一定数量的Map Task组成
        输入数据格式解析:InputFormat
         输入数据处理:Mapper
        数据分组:Partitioner
   Reduce阶段由一定数量的Reduce Task组成
         数据远程拷贝
        数据按照key排序
        数据处理:Reducer 

数据输出格式:OutputFormat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值