Serialzers/Deserialzers(trunk/serde) 此組件容許用戶本身開發自定義序列化、反序列化文件解析器,hive自身也內置了一些序列化解析類。
MetaStore(trunk/metastore) 此組件是hive的元數據服務器,用來存放數據倉庫中全部表和分區的信息,hive元數據建表sql、升級sql腳本都存放在此目錄下。
Query Processor(trunk/ql) 此組件用於解析sql生成map/reduce做業,並按照前後順序執行他們(hive核心包,熟讀此包,可瞭解hive執行流程核心)。 sql
Command Line Interface(trunk/cli) 此組件用於處理命令行提交做業。
Hive Server(trunk/service) 此組件全部對外api接口的服務端(經過thrift實現),可用於其餘客戶端與hive交互,好比jdbc。
Common(trunk/common) hive基礎代碼庫,hive各個組件信息的傳遞也是有此包HiveConf類來管理。
Ant Utilities(trunk/ant) 此組件包含一些ant任務須要的基礎代碼
Scripts(trunk/bin) 此組件包涵hive裏的全部腳本,包括hive CLI的腳本。 apache
trunk/conf 此目錄包涵hive配置文件hive-default.xml、hive-site.xml
trunk/data hive測試所用數據
trunk/ivy 管理hive跟hadoop各個版本之間的依賴
trunk/lib hive運行期間依賴的jar
trunk/testlibs 用於構建單元測試 api
Parse and SemanticAnalysis(ql/parse) 此組件主要用於編譯sql->Abstract Syntax Trees抽象語法樹->QB->Logical Plan->Physical Plan(hive 0.11多表join count(distinct)就在此步驟出錯) 服務器
Optimizer (ql/optimizer) 基於規則,優化hive做業(not 基於cost),ColumnPruner:列裁剪,Predicate PushDown:謂詞下推:將過濾操做推至TableScanOperator以後 ide
Plan Components(ql/plan) 封裝內置信息,用於compiler (Parser, SemanticAnalysis and Optimizer) 之間信息傳遞 svn
MetaData Layer (ql/metadata) 鏈接hive元數據倉庫,得到hive表、分區、列詳細信息,用於編譯sql語句 工具
Map/Reduce Execution Engine (ql/exec) 執行提交的map/reduce做業 oop
Hadoop Record Readers hive提交hadoop做業時,文件輸入輸出工具 單元測試
Hive Function Framework (ql/udf) 看名字就知道,hive內置udf 測試
hive多表join count(distinct)異常,是由於步驟3 lpg生成的邏輯執行計劃有bug
Driver類是hive最重要的類,瞭解其run、compile、execute方法,就清楚hive的核心。
hive源碼解析:http://blog.csdn.net/lpxuan151009/article/details/7956518
hive編譯解析:http://blog.csdn.net/lalaguozhe/article/details/9339679
hive開發者指南:https://cwiki.apache.org/confluence/display/Hive/DeveloperGuide
hive svn地址:http://svn.apache.org/repos/asf/hive/