<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                <mark>Hive 底層存儲是基于 HDFS 進行存儲,Hive 的計算底層是轉換成 MapReduce 程序進行計算</mark>。 :-: ![](https://img.kancloud.cn/29/17/291738fcfcd046519383bf9e7ec94e0f_1009x444.png) hive 架構圖參考 <br/> 如圖中所示,Hive 通過給用戶提供的一系列交互接口,接收到用戶的指令(SQL),使用自己的 Driver,結合元數據 (MetaStore),將這些指令翻譯成MapReduce,提交到 Hadoop 中執行,最后,將執行返回的結果輸出到用戶交互接口。 <br/> **1. 用戶接口:Client** CLI(Hive Shell)、JDBC/ODBC(Java 訪問 Hive)、WEBUI(瀏覽器訪問 Hive)。 <br/> (1)CLI:命令行接口,是最常用的一種用戶接口,CLI 啟動時會同時啟動一個 Hive 副本。CLI 是和 Hive 交互的最簡單也是最常用方式,只需要在一個具備完整 Hive環境下的 Shell 終端中鍵入 hive 即可啟動服務。<ins>用戶可以在 CLI 上輸入 HQL 來執行創建表、更改屬性以及查詢等操作。不過 Hive CLI 不適應于高并發的生產環境,僅僅是 Hive 管理員的好工具(開發測試常用)</ins>。 <br/> (2)JDBC/ODBC: JDBC 是 java database connection 的規范,它定義了一系列 java 訪問各類 db 的訪問接口,因此 hive-jdbc 其實本質上是扮演一個協議轉換的角色,把 jdbc 的標準協議轉換為訪問 HiveServer 服務的協議。hive-jdbc 除了扮演網絡協議轉化的工作,并不承擔他的工作,比如 sql 的合法性校驗和解析,一律忽略 。 <br/> ODBC 是一組對數據庫訪問的標準 API,它的底層實現源碼是采用 C/C++編寫的。 JDBC/ODBC 都是通過 hiveclient 與 hiveserver 保持通訊的,借助 thrfit rpc 協議來實現交互。 <br/> (3)HWI:HWI 是 Hive 的 web 方為接口,提供了一種可以可以通過瀏覽器來訪問 Hive 的服務(開發測試常用)。 <br/> **2. 服務端組件** (1)Thrift Server Thrift 是 facebook 開發的一個軟件框架,它用來進行可擴展且跨語言的服務的開發,hive 集成了 Thrift Server 服務,能讓不同的編程語言調用 hive 的接口。 <br/> (2)元數據(Metastore) 元數據服務組件,這個組件用于存儲 hive 的元數據,包括表名、表所屬的數據庫、表的擁有者、列/分區字段、表的類型、表的數據所在目錄等內容。 <br/> <ins>hive 的元數據存儲在關系數據庫里,支持 derby、mysql 兩種關系型數據庫。</ins>元數據對于 hive 十分重要,因此 hive 支持把 metastore 服務獨立出來,安裝到遠程的服務器集群里,從而解耦 hive 服務和 metastore 服務,保證 hive 運行的健壯性。 <br/> (3)Driver 組件 該組件包括 Interpreter、Complier、Optimizer 和 Executor,它的作用是將我們寫的 HiveQL(類 SQL)語句進行解析、編譯、優化,生成執行計劃,然后調用底層的 mapreduce 計算框架。 * 解析器(SQL Parser):<mark>將 SQL 字符串轉換成抽象語法樹 AST</mark>,這一步一般都用第三方工具庫完成,比如 antlr;對 AST 進行語法分析,比如表是否存在、字段是否存在、SQL 語義是否有誤。 * 編譯器(Physical Plan):<mark>將 AST 編譯生成邏輯執行計劃</mark>。 * 優化器(Query Optimizer):<mark>對邏輯執行計劃進行優化</mark>。 * 執行器(Execution):<mark>把邏輯執行計劃轉換成可以運行的物理計劃</mark>。對于 Hive 來說,一般常用的為 MR/TEZ/Spark。 <br/> **3. Hadoop** Hive 底層是使用 HDFS 進行存儲,默認使用 MapReduce 進行計算。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看