图解数据

2017-04-07  本文已影响0人  旺达丨

数据架构

数据处理过程

案例

数据采集

数据存储

HDFS

数据计算

离线计算

MapReduce

实时计算

Storm

内存计算

Spark

Hive

hive 架构[6]<\sup>

hive常见问题总结

set mapred.child.java.opts=-Xmx200m;  #设置task启动的java虚拟机能够从操作系统那里挖到最大内存大小,建议为内存一半.
set mapreduce.task.io.sort.mb=573; #默认是100
set mapred.child.java.opts -Xmx200m;
set mapreduce.map.java.opts -Xmx1024m
set mapreduce.reduce.java.opts  -Xmx1228m
set mapreduce.task.io.sort.mb=950
--------------
mapreduce.map.memory.mb 1024
mapreduce.reduce.memory.mb  1536
yarn.nodemanager.resource.memory-mb 153600
yarn.app.mapreduce.am.resource.mb   896
  1. map端聚合set hive.map.aggr=false
  2. 给mapper分配更多的内存
  3. 重构query查询。利用子查询等方法,优化查询语句
select count(distinct v) from tbl
改写成
select count(1) from (select v from tbl group by v) t.

Group过程倾斜,还可以开启hive.groupby.skewindata=true来改善,这个是让key随机分发到reducer,而不是同样的key分发到同一个reducer,然后reduce做聚合,做完之后再做一轮map-reduce。这个是把上面提到的map端聚合放到了reduce端,增加了reducer新的开销,大多数情况效果并不好。

  1. map join可以解决大表join小表时候的数据倾斜
  2. skew join是hive中对数据倾斜的一个解决方案,set hive.optimize.skewjoin = true;
    根据hive.skewjoin.key(默认100000)设置的数量hive可以知道超过这个值的key就是特殊key值。对于特殊的key,reduce过程直接跳过,最后再启用新的map-reduce过程来处理。
    业务数据本身的倾斜,可以从业务数据特点本身出发,通过设置reduce数量等方式,来避免倾斜

Hive SQL编译为MapReduce的过程

数据应用

上一篇下一篇

猜你喜欢

热点阅读