- 浏览: 111892 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
土豆蛋儿:
我想读取一个外部文件,以什么方式好了? 文件内容经常编辑
flume 自定义source -
土豆蛋儿:
大神,您好。
flume 自定义source
Hive使用的是Hadoop的文件系统和文件格式,比如TEXTFILE,SEQUENCEFILE等。
在Hive中对中间数据或最终数据数据做压缩,是提高数据吞吐量和性能的一种手段。对数据做压缩,可以大量减少磁盘的存储空间,比如基于文本的数据文件, 可以将文件压缩40%或更多,同时压缩后的文件在磁盘间传输和I/O也会大大减少;当然压缩和解压缩也会带来额外的CPU开销,但是却可以节省更多的I /O和使用更少的内存开销。
Hadoop jobs作业,往往是I/O密集型的,而非CPU集型的。数据压缩对I/O密集型的作业带来大大的性能提升,但是如果用户的jobs作业时CPU密集型 的,那么在使用压缩就会降低性能,这就要用户对作业的类型做判断,权衡是否要对数据做压缩。
选择合适的编解码器
对数据做压缩,可以最大程度的减少文件所需的磁盘空间和网络I/O的开销,但对数据做压缩和解压缩总会增加CPU的开销,故最好对那些I/O密集型的作业使用数据压缩——这样的作业会有富余的CPU资源,或者对那些磁盘空间不富裕的系统。
Hadoop默认支持Gzip和BZip2的解压缩方式,包括原生的linux解压缩库。Snappy压缩在最近的Hive版本中才被添加的压缩算法,如果您使用的是Hive不支持Snappy的话,用户就要手动添加。过去经常使用的是LZO压缩算法。
那么,为什么要使用不同的压缩算法呢?它们都有什么区别呢?BZip2有最高的压缩比但也会带来更高的CPU开销,Gzip较BZip2次之;如果基于磁盘利用率和I/O考虑,这两个压缩算法都是比较有吸引力的算法。
LZO和Snappy算法有更快的解压缩速度,如果在关注数据解压多于磁盘利用率和I/O开销的场景中,它们都是不错的选择。 LZO和Snappy在压缩数据上大致相当,但Snappy算法在解压速度上要较LZO更快。
在选择解压缩算法时,另外一个比较重要的考虑就是压缩格式是否是支持可分割的。Hadoop的会将大文件分割成HDFS block(默认64MB)大小的splits分片,每个分片对应一个Mapper程序。在这几个压缩算法中,只有 BZip2和LZO提供block级的压缩,而Gzip和Snappy则不支持。
Snappy压缩算法时首选。
打开Hive(即由mappe产生的)中间数据文件的压缩功能
HiveQL语句最终会被编译成Hadoop的Mapreduce job,开启Hive的中间数据压缩功能,就是在MapReduce的shuffle阶段对mapper产生的中间结果数据压缩。在这个阶段,优先选择一个低CPU开销的算法。
可以通过参数hive.exec.compress.intermediate来开启和禁用该功能,默认情况下该值值为false,将之设置为true为激活中间数据压缩功能:
Java代码 收藏代码
<property>
<name>hive.exec.compress.intermediate</name>
<value>true</value>
<description>This controls whether intermediate files produced by Hive between mutiple map-redece job are compressed.The compression codec and other options are determined from hadoop config variables mared.output.compress*</description>
</property>
具体的压缩算法参数配置,这是一个hadoop的配置参数,可以在Hadoop的$HADOOP_HOME/conf/marred-site.xml或$HADOOP_HOME/conf/hive-site.xml配置文件中。 SnappyCodec比较适合在这种场景中编解码器,该算法会带来很好的压缩性能和较低的CPU开销:
Java代码 收藏代码
<property>
<name>mapred.map.output.compression.codec</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
<description>This controls whether intermediate files produced by Hive between mutiple map-redece job are compressed.The compression codec and other options are determined from hadoop config variables mared.output.compress*</description>
</property>
最Hive的数据文件压缩
用户可以对最终生成的Hive表的数据通常也需要压缩。参数 hive.exec.compress.output控制这一功能的激活与禁用。用户可以通过节本来打开这个功能,同样也可以在XML配置文件中将该功能配置成全局变量:
Java代码 收藏代码
<property>
<name>hive.exec.compress.output</name>
<value>true</value>
<description>This controls whether the final outpus of a query( to a local/hdfs file or a Hive table) is compressed.The compression codec and other options are determined from hadoop config variables mared.output.compress*</description>
</property>
将hive.exec.compress.output参数设置成true后,然后选择一个合适的编解码器,如选择SnappyCodec:
Java代码 收藏代码
<property>
<name>mapred.output.compression.codec</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>
Sequence Files
压缩数据文件可以节省磁盘空间,但是在Hadoop中有些原生压缩文件的缺点之一就是不支持分割。支持分割的文件可以并行的有多个mapper程序处理大数据文件,大多数文件不支持可分割是因为这些文件只能从头开始读。
Sequence File是可分割的文件格式,支持Hadoop的block级压缩。这样,我们就可以将Hive表存储定义成SEQUENCEFILE:
Java代码 收藏代码
CREATE TABLE a_sequence_file_table SORTED AS SEQUENCEFILE;
Sequence Files有三个不同的压缩选项:NOE,RECORD和BLOCK。RECORD是默认选项,通常BLOCK会带来较RECORD更好的压缩性能。同很 多其他压缩选项一样,这个压缩类型参数不是Hive特有的,需要在Hadoop中或在每一个Hive查询脚本中2设置。
Java代码 收藏代码
<property>
<name>mapred.output.compression.type</name>
<value>BLOCK</value>
<description>If the job outputs are to compressed as SequenceFiles,how should the be compressed? Should be one od NONE,RECORDOR BLOCK.</description>
</property>
在Hive中对中间数据或最终数据数据做压缩,是提高数据吞吐量和性能的一种手段。对数据做压缩,可以大量减少磁盘的存储空间,比如基于文本的数据文件, 可以将文件压缩40%或更多,同时压缩后的文件在磁盘间传输和I/O也会大大减少;当然压缩和解压缩也会带来额外的CPU开销,但是却可以节省更多的I /O和使用更少的内存开销。
Hadoop jobs作业,往往是I/O密集型的,而非CPU集型的。数据压缩对I/O密集型的作业带来大大的性能提升,但是如果用户的jobs作业时CPU密集型 的,那么在使用压缩就会降低性能,这就要用户对作业的类型做判断,权衡是否要对数据做压缩。
选择合适的编解码器
对数据做压缩,可以最大程度的减少文件所需的磁盘空间和网络I/O的开销,但对数据做压缩和解压缩总会增加CPU的开销,故最好对那些I/O密集型的作业使用数据压缩——这样的作业会有富余的CPU资源,或者对那些磁盘空间不富裕的系统。
Hadoop默认支持Gzip和BZip2的解压缩方式,包括原生的linux解压缩库。Snappy压缩在最近的Hive版本中才被添加的压缩算法,如果您使用的是Hive不支持Snappy的话,用户就要手动添加。过去经常使用的是LZO压缩算法。
那么,为什么要使用不同的压缩算法呢?它们都有什么区别呢?BZip2有最高的压缩比但也会带来更高的CPU开销,Gzip较BZip2次之;如果基于磁盘利用率和I/O考虑,这两个压缩算法都是比较有吸引力的算法。
LZO和Snappy算法有更快的解压缩速度,如果在关注数据解压多于磁盘利用率和I/O开销的场景中,它们都是不错的选择。 LZO和Snappy在压缩数据上大致相当,但Snappy算法在解压速度上要较LZO更快。
在选择解压缩算法时,另外一个比较重要的考虑就是压缩格式是否是支持可分割的。Hadoop的会将大文件分割成HDFS block(默认64MB)大小的splits分片,每个分片对应一个Mapper程序。在这几个压缩算法中,只有 BZip2和LZO提供block级的压缩,而Gzip和Snappy则不支持。
Snappy压缩算法时首选。
打开Hive(即由mappe产生的)中间数据文件的压缩功能
HiveQL语句最终会被编译成Hadoop的Mapreduce job,开启Hive的中间数据压缩功能,就是在MapReduce的shuffle阶段对mapper产生的中间结果数据压缩。在这个阶段,优先选择一个低CPU开销的算法。
可以通过参数hive.exec.compress.intermediate来开启和禁用该功能,默认情况下该值值为false,将之设置为true为激活中间数据压缩功能:
Java代码 收藏代码
<property>
<name>hive.exec.compress.intermediate</name>
<value>true</value>
<description>This controls whether intermediate files produced by Hive between mutiple map-redece job are compressed.The compression codec and other options are determined from hadoop config variables mared.output.compress*</description>
</property>
具体的压缩算法参数配置,这是一个hadoop的配置参数,可以在Hadoop的$HADOOP_HOME/conf/marred-site.xml或$HADOOP_HOME/conf/hive-site.xml配置文件中。 SnappyCodec比较适合在这种场景中编解码器,该算法会带来很好的压缩性能和较低的CPU开销:
Java代码 收藏代码
<property>
<name>mapred.map.output.compression.codec</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
<description>This controls whether intermediate files produced by Hive between mutiple map-redece job are compressed.The compression codec and other options are determined from hadoop config variables mared.output.compress*</description>
</property>
最Hive的数据文件压缩
用户可以对最终生成的Hive表的数据通常也需要压缩。参数 hive.exec.compress.output控制这一功能的激活与禁用。用户可以通过节本来打开这个功能,同样也可以在XML配置文件中将该功能配置成全局变量:
Java代码 收藏代码
<property>
<name>hive.exec.compress.output</name>
<value>true</value>
<description>This controls whether the final outpus of a query( to a local/hdfs file or a Hive table) is compressed.The compression codec and other options are determined from hadoop config variables mared.output.compress*</description>
</property>
将hive.exec.compress.output参数设置成true后,然后选择一个合适的编解码器,如选择SnappyCodec:
Java代码 收藏代码
<property>
<name>mapred.output.compression.codec</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>
Sequence Files
压缩数据文件可以节省磁盘空间,但是在Hadoop中有些原生压缩文件的缺点之一就是不支持分割。支持分割的文件可以并行的有多个mapper程序处理大数据文件,大多数文件不支持可分割是因为这些文件只能从头开始读。
Sequence File是可分割的文件格式,支持Hadoop的block级压缩。这样,我们就可以将Hive表存储定义成SEQUENCEFILE:
Java代码 收藏代码
CREATE TABLE a_sequence_file_table SORTED AS SEQUENCEFILE;
Sequence Files有三个不同的压缩选项:NOE,RECORD和BLOCK。RECORD是默认选项,通常BLOCK会带来较RECORD更好的压缩性能。同很 多其他压缩选项一样,这个压缩类型参数不是Hive特有的,需要在Hadoop中或在每一个Hive查询脚本中2设置。
Java代码 收藏代码
<property>
<name>mapred.output.compression.type</name>
<value>BLOCK</value>
<description>If the job outputs are to compressed as SequenceFiles,how should the be compressed? Should be one od NONE,RECORDOR BLOCK.</description>
</property>
发表评论
-
hive + hbase
2015-01-04 10:42 771环境配置: hadoop-2.0.0-cdh4.3.0 (4 ... -
hive 数据倾斜
2014-08-27 09:03 685链接:http://www.alidata.org/archi ... -
hive 分通总结
2014-08-27 08:42 574总结分析: 1. 定义了桶,但要生成桶的数据,只能是由其他表 ... -
深入了解Hive Index具体实现
2014-08-25 08:51 737索引是标准的数据库技术,hive 0.7版本之后支持索引。hi ... -
explain hive index
2014-08-24 16:44 1145设置索引: 使用聚合索引优化groupby操作 hive> ... -
Hive 中内部表与外部表的区别与创建方法
2014-08-15 17:11 761分类: Hive 2013-12-07 11:56 ... -
hive map和reduce的控制
2014-08-15 16:14 623一、 控制hive任务中的map数: 1. 通 ... -
hive 在mysql中创建备用数据库
2014-08-15 09:21 880修改hive-site.xml <property> ... -
HIVE 窗口及分析函数
2014-08-11 16:21 1187HIVE 窗口及分析函数 使 ... -
hive 内置函数
2014-08-11 09:06 30671.sort_array(): sort_array(arra ... -
hive lateral view
2014-08-09 14:59 2025通过Lateral view可以方便的将UDTF得到的行转列的 ... -
hive数据的导出
2014-07-28 21:53 442在本博客的《Hive几种数据导入方式》文章中,谈到了Hive中 ... -
hive udaf
2014-07-25 16:11 751package com.lwz.udaf; import o ... -
hive自定义InputFormat
2014-07-25 09:13 860自定义分隔符 package com.lwz.inputf; ... -
HiveServer2连接ZooKeeper出现Too many connections问题的解决
2014-07-24 08:49 1764HiveServer2连接ZooKeeper出现Too man ... -
hive 常用命令
2014-07-17 22:22 6921.hive通过外部设置参数传入脚本中: hiv ... -
CouderaHadoop中hive的Hook扩展
2014-07-16 21:18 3332最近在做关于CDH4.3.0的hive封装,其中遇到了很多问题 ... -
利用SemanticAnalyzerHook回过滤不加分区条件的Hive查询
2014-07-16 16:43 1466我们Hadoop集群中将近百分之80的作业是通过Hive来提交 ... -
hive 的常用命令
2014-07-16 10:07 0设置、查看hive当前的角色: set sys ... -
hive 授权
2014-07-15 10:51 932Hive授权(Security配置) 博客分类: Hive分 ...
相关推荐
### 深入浅出Hive企业级架构优化 #### Hive概述 Apache Hive 是一个基于 Hadoop 的数据...总之,通过对 Hive 架构、SQL 语句、数据压缩以及分布式缓存等方面的综合优化,可以有效提升 Hive 在企业级应用中的表现。
8. **Hive数据压缩**:讨论Hive如何进行数据压缩,提高存储效率和查询性能,理解各种压缩算法在Hive中的应用。 9. **Hive优化**:讲解如何优化Hive查询性能,包括表设计优化、查询语句优化和资源管理优化,以提高大...
同时,Hive的性能可以通过优化元数据、分区策略、并行执行、压缩等方式进一步提升。 总的来说,理解Hive及其相关组件的工作原理,以及如何解决特定问题,对于大数据分析师和数据工程师来说至关重要。正确配置和使用...
4. **Hive 分区策略** 分区是 Hive 提高查询性能的重要手段。源码中的 `org.apache.hadoop.hive.ql.metadata.Partition` 类表示分区,`org.apache.hadoop.hive.ql.plan.CreateTableDesc` 中定义了如何创建分区的...
1. **开启Hive压缩**:压缩可以显著减少数据存储空间,加快读取速度。可以开启Hive的中间数据和最终数据压缩,使用`hive.exec.compress.output=true`和`hive.exec.compress.intermediate=true`,并选择合适的压缩...
标题 "jdbc连接hive的jar包" 涉及的关键知识点主要集中在Hive的JDBC连接以及相关依赖的Java库上。Hive是一个基于Hadoop的数据仓库...同时,了解Hive的元数据存储、分区策略、表类型等特性也对有效使用Hive至关重要。
Apache Hive 是一个基于Hadoop的数据仓库工具,它允许用户通过SQL-like的...在实际操作中,你可能还需要配置Hadoop的HDFS、YARN等组件,以及优化Hive的性能设置,如分区策略、桶表、压缩编码等,以适应你的特定需求。
通过本课程的学习,学员不仅能够全面了解Hive的基本概念、操作方法与优化策略,还能够掌握如何在实际工作中有效利用Hive进行数据处理和分析。此外,通过对Hive高级特性和实战案例的学习,学员还将具备解决复杂问题的...
本文将深入探讨Hive的核心架构、性能优化策略、数据导入导出流程、安全性增强以及与其他流行工具的集成,旨在帮助读者全面掌握Hive的使用技巧,实现高效的数据管理和分析。 #### Hive——SQL分析工具,适用于任意...
在大数据处理领域,Apache Hive 是一个非常重要的工具,它提供了SQL-like的语言(HQL)用于对存储在Hadoop上的大规模数据进行...在实际工作中,不断探索和学习新的优化策略,将使Hive在大数据场景下的表现更加出色。
标题中的“kafaka+hive.rar”表明这是一个关于Kafka和Hive整合的压缩文件,主要探讨如何在大数据处理环境中将消息队列系统Kafka与数据仓库工具Hive相结合,以实现更高效的数据流动和分析。Hive是Apache Hadoop项目的...
标题中的"apache-hive-3.1.2-bin.tar.gz"表明这是一个Hive 3.1.2的二进制发行版,以tar.gz格式压缩。这种压缩包通常包含Hive的可执行文件、库文件、配置文件以及必要的脚本,用于在Linux或Unix环境中快速部署和运行...
【Hive 学习资料】 Hive 是一个基于 Hadoop 的数据仓库系统,它主要设计用于处理和管理大规模数据集。Hive 提供了一个类似 SQL 的查询语言...了解和掌握 Hive 的核心概念、操作和优化策略是大数据分析中的重要一环。
Hive的架构优化是课程的重点,包括降低IO负载、表分区、动态分区、压缩和分布式缓存等技术,以提升Hive的性能。 针对HQL的优化,课程将深入探讨具体的策略和方法,包括Map和Reduce的优化、数据倾斜问题的解决,以及...
7. **Hive优化**:包括选择合适的存储格式(如TextFile、RCFile、Parquet)、使用分区和桶优化查询、调整执行计划、启用数据压缩等策略。优化的主要目标是提高查询效率和减少资源消耗。 8. **Hive与其他系统集成**...
存储优化涉及HDFS的Block大小调整、Hive的块大小配置,以及利用Hive的压缩配置选项。合理的存储设置可优化I/O性能,减少网络传输量。 5. **Explain命令与MapReduce属性优化** 使用`Explain`命令查看查询执行计划...
Hive支持多种压缩格式,如Gzip、Bzip2和Lzo,选择合适的压缩算法可以在保证解压速度的同时节省存储。 3. 索引:Hive的索引功能虽然有限,但依然可以用于加速某些查询。创建Bucketing或Skewed Join索引可以帮助优化...
二、Hive SQL优化策略 1. **避免使用SELECT ***:仅选择需要的列可以减少数据传输和处理量。 2. **使用WHERE子句过滤数据**:尽早过滤掉不需要的数据,减少数据处理量。 3. **JOIN操作优化**:尽量使用INNER JOIN...
Hive Summit 2011-join介绍了Facebook中Hive实现的多种join策略。Hive作为一个数据仓库工具,主要用于处理大规模数据集的分析和查询,而join操作是数据仓库中常见且关键的操作之一。在大数据的背景下,如何高效地...
本篇将深入探讨Hive的优化策略及其执行原理。 一、Hive 优化策略 1. **表分区**:分区是Hive优化的基础,通过将大表划分为小的逻辑部分,可以显著提高查询速度。合理的分区策略应基于查询中常用的过滤条件,例如...