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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] # hive架構圖 ![](https://box.kancloud.cn/79a9999a934979efb10989111c30a3a8_364x473.png) ## 基本組成 * 用戶接口:包括 CLI、JDBC/ODBC、WebGUI。 * 元數據存儲:通常是存儲在關系數據庫如 mysql , derby中。 * 解釋器、編譯器、優化器、執行器。 ## 各組件的基本功能 * 用戶接口主要由三個:CLI、JDBC/ODBC和WebGUI。其中,CLI為shell命令行;JDBC/ODBC是Hive的JAVA實現,與傳統數據庫JDBC類似;WebGUI是通過瀏覽器訪問Hive。 * 元數據存儲:Hive 將元數據存儲在數據庫中。Hive 中的元數據包括表的名字,表的列和分區及其屬性,表的屬性(是否為外部表等),表的數據所在目錄等。 * 解釋器、編譯器、優化器完成 HQL 查詢語句從詞法分析、語法分析、編譯、優化以及查詢計劃的生成。生成的查詢計劃存儲在 HDFS 中,并在隨后有 MapReduce 調用執行。 ## Hive與Hadoop的關系 Hive利用HDFS存儲數據,利用MapReduce查詢分析數據 ![](https://box.kancloud.cn/2c4b73f04643d1bcbccced7a117c1797_669x271.png) ## Hive與傳統數據庫對比 hive用于海量數據的離線數據分析 ![](https://box.kancloud.cn/fefcc393e5acbd03628d7b8990ff3cd1_515x350.png) 總結:hive具有關系型數據庫的查詢分析功能,但應用場景完全不同,hive只適合用來做批量數據統計分析,數據量大、對應的延遲較高! ## 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散列之后的多個文件 # 安裝 ## derby版: 1. 解壓hive 2. 解決一下版本不兼容問題:替換 `hadoop/share/hadoop/yarn/lib`中的老版本jline 為hive的lib中的jline-2.12.jar ![](https://box.kancloud.cn/531d52fd91d46e284c36593a79c8b4b9_1910x450.png) 使用方式 Hive交互shell ~~~ bin/hive ~~~ 一些交互命令 ~~~ hive> create database db1; OK Time taken: 0.258 seconds hive> create database db2; OK Time taken: 0.063 seconds hive> show databases; OK db1 db2 default Time taken: 0.008 seconds, Fetched: 3 row(s) hive> ~~~ 這邊創建了一些庫,這些庫在哪里? 在你執行啟動hive命令下面有個`metastore_db`這個文件夾 不同的用戶在不同的目錄下啟動,都會在不同的目錄下創建`metastore_db`這個文件夾 這就是把元數據放在derby中 這樣就不便于我們的管理 缺點:多個地方安裝hive后,每一個hive是擁有一套自己的元數據,大家的庫、表就不統一; ## 元數據庫mysql版: 1. 解壓 2. 修改配置文件 3. 加載mysql數據驅動包 在hive的conf文件夾下 ~~~ vim hive-site.xml ~~~ 配置數據庫信息 ~~~ <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://192.168.33.10:3306/hive?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> <description>username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>root</value> <description>password to use against metastore database</description> </property> </configuration> ~~~ 然后配置環境變量 ~~~ mv hive-env.sh.template hive-env.sh vim hive-env.sh ~~~ 把里面的`HADOOP_HOME`配置為你自己的hadoop路徑,然后把注釋放開 然后把之前derby版的`metastore_db`這個文件夾,刪除了 在lib目錄下上傳個mysql驅動的jar包 然后就可以操作了 試著插入些庫,表還有數據 然后插入成功就看下網頁版的 ![](https://box.kancloud.cn/09826e1d6dc7f7559a1fd07cb7eeb7fe_2232x364.png) 這邊會看到創建的庫 ## Hive JDBC服務 ![](https://box.kancloud.cn/eacf697c37b4dc18aa93170368f74f5f_727x303.png) hive也可以啟動為一個服務器,來對外提供 啟動方式,(假如是在h01上): 啟動為前臺(啟動成功會占用100000端口): ~~~ bin/hiveserver2 ~~~ 啟動為后臺: ~~~ nohup bin/hiveserver2 1>/var/log/hiveserver.log 2>/var/log/hiveserver.err & ~~~ 啟動成功后,可以在別的節點上用beeline去連接 * 方式(1) hive/bin/beeline 回車,進入beeline的命令界面 輸入命令連接hiveserver2 ~~~ [root@master bin]# beeline Beeline version 1.2.1 by Apache Hive beeline> !connect jdbc:hive2://127.0.0.1:10000 Connecting to jdbc:hive2://127.0.0.1:10000 Enter username for jdbc:hive2://127.0.0.1:10000: root Enter password for jdbc:hive2://127.0.0.1:10000: Connected to: Apache Hive (version 1.2.1) Driver: Hive JDBC (version 1.2.1) Transaction isolation: TRANSACTION_REPEATABLE_READ 0: jdbc:hive2://127.0.0.1:10000> ~~~ 用戶名是root,密碼直接回車 然后那邊hiveserver2是顯示ok 上面ip端口是127.0.0.1:10000 * 方式(2) 或者啟動就連接: ~~~ bin/beeline -u jdbc:hive2://127.0.0.1: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>

                              哎呀哎呀视频在线观看