[大数据]由点入面了解Hive

一:Hive内部表和外部表的区别?

Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。

二:数据倾斜的原因和解决方案?

1.数据倾斜表现:任务进度长时间维持在99%(或100%),查看任务监控页面,发现只有少量(1个或几个)reduce子任务未完成。

2.原因:key分布不均匀;业务数据本身的特性;建表时考虑不周;某些SQL语句本身就有数据倾斜。

3.Sql表现

join:其中一个表较小,但是key集中,会造成分发到某一个或几个Reduce上的数据远高于平均值;大表与大表,但是分桶的判断字段0值或空值过多,这些空值都由一个reduce处理,也会造成处理非常慢。
group by:group by的字段维度过小,某值的数量过多,会造成处理某值的reduce非常耗时。

count distinct:某特殊值过多,处理此特殊值的reduce耗时。

4.解决数据倾斜

参数调节:map端combine聚合hive.map.aggr=true,随机打散负载均衡hive.groupby.skewindata=true。

sql调节:大小表关联使用mapjoin,将值为null的情况单独处理;distinct用group by替代;order by用distruibute by sort by代替,因为order by只启一个reduce,会造成性能负荷。

5.性能调节

多次从同一张表取数考虑建立临时表;left semi join替换exists;一些情况下可以使用union all代替join。

三:Hive Sql的编译原理?

1.Antlr定义SQL的语法规则,完成SQL词法,语法解析,将SQL转化为抽象语法树AST Tree。

2.遍历AST Tree,抽象出查询的基本组成单元QueryBlock。

3.遍历QueryBlock,翻译为执行操作树OperatorTree。

4.逻辑层优化器进行OperatorTree变换,合并不必要的ReduceSinkOperator,减少shuffle数据量。

5.遍历OperatorTree,翻译为MapReduce任务。

6.物理层优化器进行MapReduce任务的变换,生成最终的执行计划。

四:Hive的权限控制?

当多个用户共同使用hive时,需要对不同角色做不同的权限控制。权限控制主要指底层的hdfs文件操作控制和hive自身对表的授权管理。hive是通过mysql的元数据来控制hive里的权限。

Hive授权的核心是:User,Group,Role。
User:是基于linux用户的user,哪个linux用户使用hive客户端,那个linux用户就是该hive的user。
Group:同样是linux层面上的用户组。
Role:只有角色是在hive里面自己创建的,可以给角色添加权限属性,再把角色赋予给user,这样该用户就拥有了该角色的权限。

五:Hive的元数据管理?

它是元数据服务组件,hive元数据集中存放地。Metastore组件包括两个部分:metastore服务和后台数据的存储。后台数据存储的介质就是关系数据库,例如mysql数据库。Metastore服务是建立在后台数据存储介质之上,并且可以和hive服务进行交互的服务组件,默认情况下,metastore服务和hive服务是安装在一起的,运行在同一个进程当中。也可以把metastore服务从hive服务里剥离出来,metastore独立安装在一个集群里,hive远程调用metastore服务,这样就可以把元数据这一层放到防火墙之后,客户端访问hive服务,就可以连接到元数据这一层,从而提供了更好的管理性和安全保障。使用远程的metastore服务,可以让metastore服务和hive服务运行在不同的进程里,这样也保证了hive的稳定性,提升了hive服务的效率。

参考文献

http://blog.csdn.net/xia_777ling/article/details/72779982

http://blog.csdn.net/lnho2015/article/details/51417880

https://tech.meituan.com/hive-sql-to-mapreduce.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值