hive基本组件简单介绍

Hive 开发指南
三个主要组件:
    Serializers/Deserializers,用户能够自定义来解析自有的数据格式。
    MetaStore
    Query Processor
一些其它组件:
    命令行组件
    Hive Server:提供被客户端使用的api,用于操做hive。
    通用组件:
    Ant相关:
    脚本组件:java

Hive SerDe (Serializer  Deserializer):
    Hive 使用SerDe结合FileFormat来读写表中的行。sql

    hive并不能识别HDFS中的文件格式,用户能够使用其余工具把hdfs上的文件读取到hive表中,或者把信息按照hive能识别的格式写到hdfs上,这些格式化过的文件能够经过create external table 或者load data inpath 加载到hive中,这样仅仅是把这些文件移动到hive的表存储目录中。
    
    Hive读写hdfs文件的FileFormat类:
        TextInputFormat/HiveIgnoreKeyTextOutputFormat:读写纯文本格式的文件。
        SequenceFileInputFormat/SequenceFileOutputFormat:读写序列化格式的文件(SequenceFile)。
    
    Hive序列化和反序列化的SerDe类:
        MetadataTypedColumnsetSerDe:能够读写分割符分隔的记录,如csv、制表符分隔、CTRL+A分隔的记录。
        LazySimpleSerDe:这个一样能够读写上面这些分隔的记录,性能更好,并且支持编码设置,如:
            ALTER TABLE person SET SERDEPROPERTIES ('serialization.encoding'='GBK');
        该类还能够把T、t、F、f、一、0看成boolean值,若是hive.lazysimple.extended_boolean_literal参数设置成true的话,默认为false,只有true、false被看成boolean。
        ThriftSerDe:能够读写Thrift serialized objects,要读取的类文件必须首先加载才能够读取。
        DynamicSerDe:读写ThriftSerDe所能读取的序列化对象,可是能够解析Thrift DDL,而且支持不少种协议,包括TBinaryProtocol、TJSONProtocol、TCTLSeparatedProtocol(读写分隔符分隔的数据)。数据库

MetaStore:
    包含表、分区、数据库的元数据信息,这些信息被hive的查询处理器使用。
    Metastore Server:
        这是一个Thrift服务(接口定义在metastore/if/hive_metastore.if),管理着底层的元数据存储和hadoop文件系统。
    Object Store:
        ObjectStore用来处理存储在SQL store中的实际元数据的访问,当前的实现基于JDA规范的JPOX ORM实现,经过实现MetaStore接口能够建立新的meta store(如基于文件或者xml),FileStore是一个部分的实现,很快会过时。
    Metastore Client:
        java中的客户端是一个继承了HiveMetaStoreClient的类,被Query Processor使用。是其它hive组件的重要接口。
Query Processor:
主要组件:
    语法解析和语义分析,主要用于解析sql,执行转化流程,解析sql -> 抽象语法树 -> 操做计划(operator plan) -> 有向任务图,最终结果被Driver.java执行。
    优化器:执行基本的优化,如排除未被引用的列。
    Plan Components
    MetaData Layer
    Map/Reduce Execution Engine
    Hadoop Record Readers, Input and Output Formatters for Hive
    Sessions 
    Type interfaces
    Hive Function Framework 
    Toolsapi

相关文章
相关标签/搜索