wanmin444 发表于 2015-11-11 13:03:42

Hadoop之数据仓库构建-Hive

  目录
  Hive是什么...1
  hadoop是什么...1
  hadoop、hive两者关系...2
  hive的优缺点...2
  hive的存在意义...2
  hive常用命令...2
  一些相关命令...2
  创建表...3
  创建分区partition_table.dt.3
  加载数据到分区...4
  删除表 droptable partition_table. 4
  桶表...4
  内部表与外部表:4
  UDF、UDAF、UDTF:4
  hive使用技巧与优化方法...4
  3.1 重点参数设置... 4
  3.2 MapJoin. 4
  3.3 数据倾斜问题原因查找与解决方法... 5
  3.4 减少重复IO.. 5
  3.5 Map/Reduce参数的优化设置... 5
  FAQ..5
  4.1执行慢或卡死... 5
  4.2突然报异常,重跑后正常了/重跑后不正常?. 5
  4.3任务执行忽快忽慢,如之奈何... 5
  4.4数据评估一个任务合理的运行时间... 5
  4.5如何系统地完成一个hive任务的设计与实现... 5
  参考资料:...5
  QA.6
  自由问答时间...6
  
Hive是什么
hadoop是什么
  分布式存储系统(HDFS)   
  并行计算框架(Map/Reduce)
hadoop、hive两者关系
  前者为Core,后者为Shell
  前者为驱体,后者为形状
hive的优缺点
  过度封装,易于使用,但难理其所以然,如遇异常情况经常使初学者或欠经验者卡壳。
  开放出来的API不够丰富灵活,个性化优化偶尔会比较困难,必要时要写原生态的MR。
  存在很多版本上的bug,有一定的不稳定性,升级成本较高。而原生态的MR要小很多。
hive的存在意义
  易于构建数据仓库:承载大数据量、易扩展、接口统一、易于维护
  BI等轻开发等人员的需要
  降低大数据应用研发门槛
  Hadoop生态圈的重要一环
hive常用命令
一些相关命令
SHOW TABLES; #查看所有的表
SHOW TABLES '*TMP*'; #支持模糊查询
SHOWPARTITIONS TMP_TABLE; #查看表有哪些分区
DESCRIBE TMP_TABLE; #查看表结构
创建表
  CREATE TABLE tmp_table #表名
  (
  title   string, #字段名称 字段类型
  minimum_bid   double,
  quantity      bigint,
  have_invoice    bigint
  )COMMENT'注释:XXX' #表注释
  PARTITIONED BY(pt STRING) #分区表字段(如果你文件非常之大的话,采用分区表可以快过滤出按分区字段划分的数据)
  ROW FORMAT DELIMITED
  FIELDSTERMINATED BY '\001'   # 字段是用什么分割开的
  STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'; #用哪种方式存储数据
创建分区partition_table.dt
创建表
createtable partition_table(c1 string,c2 string)
partitioned by(daytime string,city string)
row formatdelimited fields terminated by '\t'
stored asTEXTFILE;
加载数据到分区
load data local inpath '/home/partition_table.dat'into table
partition_tablepartition(daytime='2013-02-01',city='bj');
删除表 drop table partition_table
桶表
  桶表是对数据进行哈希取值,然后放到不同文件中存储。
  创建表create table bucket_table(id string) clustered by(id) into 4buckets; 加载数据set hive.enforce.bucketing = true;
  数据加载到桶表时,会对字段取hash值,然后与桶的数量取模。把数据放到对应的文件中。
  T1, f1,
  T2 f2
内部表与外部表:
UDF、UDAF、UDTF:
hive使用技巧与优化方法
3.1重点参数设置
MR:Map(combiner),Reduce(copy,sort,reduce)
set hive.map.aggr=true;
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.parallel=true;
set hive.exec.parallel.thread.number=4;
set hive.groupby.skewindata=false;
set mapreduce.reduce.shuffle.memory.limit.percent=0.01;
set mapreduce.reduce.shuffle.input.buffer.percent=0.01;
set mapred.reduce.copy.backoff=20;
set io.sort.mb=200;
set mapred.max.split.size=536870912;
set mapred.child.java.opts=-Xms512m -Xmx5120m;
set mapred.job.map.memory.mb=3072;
set mapred.job.reduce.memory.mb=5120;
set mapred.reduce.tasks.speculative.execution=true;
set mapred.map.tasks.speculative.execution=true;
set hive.mapred.reduce.tasks.speculative.execution=true;
set mapred.reduce.tasks=1500;
set mapred.reduce.slowstart.completed.maps=0.95;
3.2MapJoin
http://blog.iyunv.com/liuxianbing119/article/details/8668635
3.3 数据倾斜问题原因查找与解决方法
3.4减少重复IO
      一次查询,多次插入,即Multi-groupBy操作
3.5Map/Reduce参数的优化设置
  
FAQ
      4.1 执行慢或卡死
      4.2 突然报异常,重跑后正常了/重跑后不正常?
      4.3 任务执行忽快忽慢,如之奈何
      4.4 数据评估一个任务合理的运行时间
      4.5 如何系统地完成一个hive任务的设计与实现         
  
参考资料:
  天亮教育云分享地址:http://pan.baidu.com/s/1pJJrcqJ
  Csdn博客: http://blog.iyunv.com/erliang20088
  技术交流群:320349384
  
QA
自由问答时间
  
         版权声明:本文为博主原创文章,未经博主允许不得转载。
页: [1]
查看完整版本: Hadoop之数据仓库构建-Hive