资讯详情

CC00025.hadoop——|Hadoop&Hive.V25|——|Hive.v25|Hive优化策略|实战.v01|

一、Hive调优策略
~~~     [Hive优化策略的架构优化] ~~~     [Hive本地模式优化策略,严格模式JVM重用] ~~~     [Hive并行执行/推测执行/合并小文件优化策略fetch模式] ~~~     [Hive分区裁剪/优化策略sortBy及groupBy] ~~~     [Hive优化策略之join三重方法] ~~~     [Hive调整策略Map及Reduce个数] ~~~     [Hive优化策略总结]      ~~~     [Hive优化实战数据说明和SQL案例] ~~~     [Hive优化实战后实施计划分析] ~~~     [Hive优化实战问题解答] ~~~     [Hive优化实战之SQL优化] ~~~     [Hive优化实战文件格式]
### --- Hive调优策略  ~~~     Hive作为大数据领域常用的数据仓库组件,在设计和开发阶段需要注意效率。 ~~~     影响Hive不仅仅是数据量过大; ~~~     数据倾斜,数据冗余,job或I/O过多、MapReduce分配不合理等因素都对Hive影响效率。
### --- 对Hive的调优既包含对HiveQL句子本身的优化也包括Hive配置项和MR调整方面。  ~~~     # 从以下三个方面: ~~~     架构优化 ~~~     参数优化 ~~~     SQL优化
二、架构优化
### --- 执行引擎  ~~~     Hive支持各种执行引擎,即 MapReduce、Tez、Spark、Flink。 ~~~     可以通过hivesite.xml文件中的hive.execution.engine属性控制。 ~~~     Tez构建在一起YARN以上支持复杂DAG数据处理框架(有无环图)任务。 ~~~     由Hontonworks开源,将MapReduce将过程分成几个子过程, ~~~     同时可以多个mapreduce任务组合成一个更大的任务DAG任务减少了MapReduce存储之间的文件, ~~~     同时,合理组合子过程,大大提高MR操作性能。
### --- 优化器 ~~~     类似于关系数据库,Hive逻辑执行计划和物理执行计划将在实际执行计算之前生成和优化。 ~~~     Hive有两种优化器:Vectorize(向量化优化器) 与 Cost-Based Optimization (CBO 成本优化器)。  ### --- 实施矢量化查询 ~~~     矢量查询(要求执行引擎为Tez)通过批量执行1024行,而不是每行提高扫描, ~~~     该功能显著缩短了查询执行时间。
### --- 注:实施矢量化查询,必须用ORC存储数据的格式  set hive.vectorized.execution.enabled = true;                       -- 默认 false set hive.vectorized.execution.reduce.enabled = true;                -- 默认 false
### --- 成本优化器  ~~~     Hive的CBO是基于apache Calcite的, ~~~     Hive的CBO通过查询成本(是的analyze收集的统计信息)将生成有效的执行计划, ~~~     最终会减少执行的时间和资源的利用,使用CBO配置如下:
SET hive.cbo.enable=true;                                           --从 v0.14.0默认 true SET hive.compute.query.using.stats=true;                            -- 默认false SET hive.stats.fetch.column.stats=true;                             -- 默认false SET hive.stats.fetch.partition.stats=true;                          -- 默认true
### --- 定期执行表(analyze)的分析,分析后的数据放在元数据库中。  ~~~     # 分区表 ~~~     对于较大的表,设计成分区表可以提高查询性能,对于特定分区的查询, ~~~     对应分区路径的文件数据只会加载,因此执行速度会更快。 ~~~     分区字段的选择是影响查询性能的重要因素,尽量避免层次较深的分区, ~~~     # 这会导致太多的子文件夹。一些常见的分区字段可以是: ~~~     日期或时间。如year、month、day或者hour,当表中有时间或日期字段时 ~~~     地理位置。如国家、省、城市等 ~~~     业务逻辑。如部门、销售区、客户等
### --- 分桶表  ~~~     类似于分区表,分桶表的组织模式是HDFS上述文件分为多个文件。 ~~~     分桶可以加速数据采样或改进join的性能(join字段为分桶字段), ~~~     因为分桶可以保证个桶key在一个特定的桶中(文件)对应的数据, ~~~     巧妙地选择分桶字段可以大幅度提升join的性能。 ~~~     通常情况下,可以选择常用于过滤或操作的分桶字段join操作字段。
### --- 文件格式  ~~~     在HiveQL的create table可用于句子中stored as ... 指定表的存储格式。 ~~~     Hive表支持的存储格式有TextFile、SequenceFile、RCFile、ORC、Parquet等。 ~~~     存储格式,存储格式需要根据业务进行选择,生产环境中的大多数表都是使用的TextFile、ORC、Parquet存储格式之一。 ~~~     TextFile它是最简单的存储格式,是纯文本记录,也是Hive默认格式。 ~~~     磁盘成本高,查询效率低,多用作跳板。 ~~~     RCFile、ORC、Parquet等格式表不能由文件直接导入数据,必须由TextFile来做中转。 ~~~     Parquet和ORC都是Apache其开源列式存储格式。 ~~~     与传统的行式存储相比,列式存储更适合批量存储OLAP还支持更好的压缩和编码。 ~~~     选择Parquet主要原因是它支持Impala查询引擎,对update、delete和事务性操作需求很低。
### --- 数据压缩 ~~~     可减少压缩技术map与reduce数据传输可以提高查询性能, ~~~     压缩配置可以在hive命令行中或hive-site.xml配置在文件中。  SET hive.exec.compress.1 intermediate=true
打开压缩后,可选择以下压缩格式:
三、关于压缩的编码器可以通过mapred-site.xml, hive-site.xml也可以通过命令进行配置,如:
### --- 压缩中间结果 SET hive.intermediate.compression.codec=org.apache.hadoop.io.compress.SnappyCodec ;  ### --- 压缩输出结果 SET hive.exec.compress.output=true; SET mapreduce.output.fileoutputformat.compress.codec = org.apache.hadoop.io.compress.SnappyCodc
## --- 设计阶段:

~~~     执行引擎
~~~     优化器
~~~     分区、分桶
~~~     文件格式
~~~     数据压缩

标签: 400v25kvar电容电抗器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台