<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>

                [TOC] # Hive簡介及安裝 ## 1. Hive基本概念 ### > Hive簡介 #### 1.1.1 什么是Hive > Hive是基于Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,并提供類SQL查詢功能。 #### 1.1.2 為什么使用Hive 1) 直接使用hadoop所面臨的問題 > 人員學習成本太高 > 項目周期要求太短 > MapReduce實現復雜查詢邏輯開發難度太大 2) 為什么要使用Hive > 操作接口采用類SQL語法,提供快速開發的能力。 > 避免了去寫MapReduce,減少開發人員的學習成本。 > 功能擴展很方便。 #### 1.1.3 Hive的特點 1) 可擴展 > Hive可以自由的擴展集群的規模,一般情況下不需要重啟服務。 2) 延展性 > Hive支持用戶自定義函數,用戶可以根據自己的需求來實現自己的函數。 3) 容錯 > 良好的容錯性,節點出現問題SQL仍可完成執行。 ### 1.2 Hive架構 #### 1.2.1 架構圖 ![](https://box.kancloud.cn/5e04183b9edfbfe283cc848851170999_255x333.png) #### 1.2.2 基本組成 1. 用戶接口:包括 CLI、JDBC/ODBC、WebGUI。 2. 元數據存儲:通常是存儲在關系數據庫如 mysql , derby中。 3. 解釋器、編譯器、優化器、執行器。 #### 1.2.3 各組件的基本功能 1. 用戶接口主要由三個:CLI、JDBC/ODBC和WebGUI。其中,CLI為shell命令行;JDBC/ODBC是Hive的JAVA實現,與傳統數據庫JDBC類似;WebGUI是通過瀏覽器訪問Hive。 2. 元數據存儲:Hive 將元數據存儲在數據庫中。Hive 中的元數據包括表的名字,表的列和分區及其屬性,表的屬性(是否為外部表等),表的數據所在目錄等。 3. 解釋器、編譯器、優化器完成 HQL 查詢語句從詞法分析、語法分析、編譯、優化以及查詢計劃的生成。生成的查詢計劃存儲在 HDFS 中,并在隨后有 MapReduce 調用執行。 ### 1.3 Hive與Hadoop的關系 > Hive利用HDFS存儲數據,利用MapReduce查詢分析數據 ![](https://box.kancloud.cn/6bd881e1e6034606e5b8183ec3fa6481_489x198.png) ### 1.4 Hive與傳統數據庫對比 > hive用于海量數據的離線數據分析 ![](https://box.kancloud.cn/00e31a9f4d813874b29d27098d55e8fe_401x248.png) > 總結:hive具有關系型數據庫的查詢分析功能,但應用場景完全不同,hive只適合用來做批量數據統計分析,數據量大、對應的延遲較高! ### 1.5 Hive的數據存儲 1、 Hive中所有的數據都存儲在 HDFS 中,沒有專門的數據存儲格式(可支持Text,SequenceFile,ParquetFile,RCFILE等) > SequenceFile是hadoop中的一種文件格式: > 文件內容是以序列化的kv對象來組織的 2、只需要在創建表的時候告訴 Hive 數據中的列分隔符和行分隔符,Hive 就可以解析數據。 3、Hive 中包含以下數據模型:DB、Table,External Table,Partition,Bucket。 > db:在hdfs中表現為${hive.metastore.warehouse.dir}目錄下一個文件夾 > table:在hdfs中表現所屬db目錄下一個文件夾 > external table:與table類似,不過其數據存放位置可以在任意指定路徑 > partition:在hdfs中表現為table目錄下的子目錄 > bucket:在hdfs中表現為同一個表目錄下根據hash散列之后的多個文件 ### 1.6 HIVE的安裝部署 #### 1.6.1 安裝 > derby版: 1. 解壓hive 2. 解決一下版本不兼容問題:替換 /var/local/hadoop/share/hadoop/yarn/lib中的老版本jline 為hive的lib中的jline-2.12.jar > 缺點:多個地方安裝hive后,每一個hive是擁有一套自己的元數據,大家的庫、表就不統一; > 元數據庫mysql版: 1. 解壓 2. 修改配置文件 3. 加載mysql數據驅動包 #### 1.6.2 使用方式 1) Hive交互shell ~~~ bin/hive ~~~ 2) Hive JDBC服務 ![](https://box.kancloud.cn/95083cf89a3ec184cc2d949dc38f18d9_553x242.png) > hive也可以啟動為一個服務器,來對外提供 ~~~ 啟動方式,(假如是在itcast01上): 啟動為前臺:bin/hiveserver2 啟動為后臺:nohup bin/hiveserver2 1>/var/log/hiveserver.log 2>/var/log/hiveserver.err & ~~~ > 啟動成功后,可以在別的節點上用beeline去連接 > 方式(1) > hive/bin/beeline 回車,進入beeline的命令界面 > 輸入命令連接hiveserver2 > beeline> !connect jdbc:hive2://itcast01:10000 > (itcast01是hiveserver2所啟動的那臺主機名,端口默認是10000) > 方式(2) > 或者啟動就連接: ~~~ bin/beeline -u jdbc:hive2://itcast01:10000 -n root ~~~ > 接下來就可以做正常sql查詢了
                  <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>

                              哎呀哎呀视频在线观看