hive入門

什麼是Hive

       Hive 是建立在 Hadoop  上的數據倉庫基礎構架。它提供了一系列的工具,可以用來進行數據提取轉化加載(ETL ),這是一種可以存儲、查詢和分析存儲在 Hadoop  中的大規模數據的機制。Hive 定義了簡單的類 SQL  查詢語言,稱爲 QL ,它允許熟悉 SQL  的用戶查詢數據。同時,這個語言也允許熟悉 MapReduce  開發者的開發自定義的 mapper  和 reducer  來處理內建的 mapper 和 reducer  無法完成的複雜的分析工作。

      Hive是SQL解析引擎,它將SQL語句轉譯成M/R Job然後在Hadoop執行。

      Hive的表其實就是HDFS的目錄/文件,按表名把文件夾分開。如果是分區表,則分區值是子文件夾,可以直接在M/R Job裏使用這些數據。

Hive的系統架構

      •用戶接口,包括 CLI,JDBC/ODBC,WebUI
      •元數據存儲,通常是存儲在關係數據庫如 mysql, derby 中
      •解釋器、編譯器、優化器、執行器
      •Hadoop:用 HDFS 進行存儲,利用 MapReduce 進行計算

       hive的系統架構圖如下圖所示:

                                                                                                     

         用戶接口主要有三個:CLI,JDBC/ODBC和 WebUI
         CLI,即Shell命令行
        JDBC/ODBC 是 Hive 的Java,與使用傳統數據庫JDBC的方式類似
        WebGUI是通過瀏覽器訪問 Hive
        Hive 將元數據存儲在數據庫中(metastore),目前只支持 mysql、derby。Hive 中的元數據包括表的名字,表的列和分區及其屬性,表的屬性(是否爲外部表等),表的數據所在目錄等
        解釋器、編譯器、優化器完成 HQL 查詢語句從詞法分析、語法分析、編譯、優化以及查詢計劃(plan)的生成。生成的查詢計劃存儲在 HDFS 中,並在隨後MapReduce 調用執行
         Hive 的數據存儲在 HDFS 中,大部分的查詢由 MapReduce 完成(包含 * 的查詢,比如 select * from table 不會生成 MapRedcue 任務)





       






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章