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

相關文章
相關標籤/搜索