Hive优化
中间表
业务分析处理中只涉及到少数字段,一号店的数据,计算PV,UV,一种36个字段,用到只有4个字段。
shuffle优化
hive的底层是MapReduce程序
回顾MpaReduce shuffle过程
2个阶段:map 端的shuffle,reduce端的shuffle
3个必选项:
分区Partitioner
决定MapTask输出的数据交给那个reduceTask处理
排序Sorter
很多地方都会发生排序
分组group
将相同Key的value放在一个集合中。
2个可选:
合并Combiner
在Map端进行Reducer聚合操作。
并不是所有的MapReduce程序都可以设置Combiner操作
压缩Compress
压缩Map输出结果数据,减少网络IO和磁盘IO
常见压缩算法
lzo
snappy
lz4
检查hadoop支持哪些压缩
bin/hadoop checknative
总结
对于MaprReduce程序来说
配置下面参数即可
mapreduce.map.output.compress = true;
mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.Lz4Codec
对于Hive来说
在命令行中配置
set hive.exec.compress.intermediate = true;
set mapreduce.map.output.compress = true;
set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.Lz4Codec
set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec
set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.BZip2Codec
压缩效果:
lz4和snappy的压缩效果差不多,bzip2压缩大文件,压缩效果比前两个都好。
列式存储
数据存储在文件中 按照 列 进行存储的
同一列的所有数据 存储在一起的
文件格式:
parquet
orc/rw
文本文件:按照 行 存储的
在window下可以使用记事本打开
在Linux使用cat/head/tail/more/less打开文件
在企业中使用Hive分析数据时候规范
1、原始数据文件存储格式textFile,不压缩
如果使用flume采集的话,可以设置压缩
2、针对业务表的数据,通常
parquet + snappy
orc +snappy
对于Hive表来说,采用列式存储的好处:
-a.表中文件数据大大减小-》减少磁盘存储空间
-b.分析数据时候,加载的数据量变少了
38、MetaStore
存储hive的元数据:database、table、分区信息
存储在RDBMS中database中
HiveQL几乎所有的语句都会连接到 MYSQL 查询元数据信息
hive metaStore服务
1-默认方式
bin/hive 每次启动hive CLi都会在内部启动一个meta服务
2- Remote Metastore
metaSotre服务和MYSQL不在同一台机器上
3- Local Metastore
metaSotre服务和MYSQL在同一台机器上
mastore配置
metaStore启动
bin/hive --service metastore
bin/hive --service metastore -p 9083
bin/hive(Beeline)和hiverserver2和metastore 3者的区别