1. 程式人生 > >hive元資料庫配置、metadata

hive元資料庫配置、metadata

QQ交流群:335671559,歡迎交流

一、什麼是hive元資料?

hive元資料就是hive的一些基本的元素,主要包括hive表的基本屬性,如下 (1)hive表的資料庫名、表名、欄位名稱與型別、分割槽欄位與型別 (2)表的分割槽,分割槽的屬性location等 (3)serdeproperties, tblproperties等等 可以通過 desc formatted tablename 查看錶有哪些屬性 二、hive預設元資料庫Derby(嵌入模式) hive-default.xml通過如下配置設定
  1.   <name>javax.jdo.option.ConnectionURL</
    name>  
  2.   <value>jdbc:derby:;databaseName=metastore_db;create=true</value>  
  3.   <description>JDBC connect string for a JDBC metastore</description>  
  4. </property>  
  5. <property>  
  6.   <name>javax.jdo.option.ConnectionDriverName</name>  
  7.   <value>org.apache.derby.jdbc.EmbeddedDriver</
    value>  
  8.   <description>Driver class name for a JDBC metastore</description>  
  9. </property>  
    Apache Derby非常小巧,核心部分derby.jar只有2M,所以既可以做為單獨的資料庫伺服器使用,也可以內嵌在應用程式中使用。所以hive採用了Derby作為一個內嵌的元資料庫,可以完成hive安裝的簡單測試。     hive安裝完成之後,就可以在hive shell中執行一些基本的操作,建立表、查詢等等。如果你細心的話,就會發現一個問題:     當在某個目錄下啟動終端,進入hive shell時,hive預設會在當前目錄下生成
一個derby檔案一個metastore_db目錄,這兩個檔案主要儲存剛剛在shell中操作的一些sql的結果,比如新建的表、新增的分割槽等等 這種儲存方式的帶來弊端     1.在同一個目錄下同時只能有一個hive客戶端能使用資料庫     2.切換目錄啟動新的shell,無法檢視之前建立的表,不能實現表資料的共享 三、使用mysql作為元資料庫     由於使用預設的元資料庫有些弊端,所以採用mysql儲存hive元資料解決上面的問題。hive所有的元資料都儲存在同一個庫裡,這樣不同開發者建立的表可以實現共享。 mysql配置又分為幾種情況: (1)mysql部署在hive伺服器,使用本地服務(測試、學習使用)
(2)mysql部署在其他機器,hive伺服器開啟metadata服務,在hive伺服器上操作hive
(3)mysql部署在其他機器,hive伺服器開啟metadata服務,在hive客戶端訪問hive的metadata服務
配置mysql     配置mysql時,首先要把mysql-jdbc-driver.jar拷貝到$HIVE_HOME/lib目錄下,修改hive-default.xml名字為hive-site.xml 第一種情況,hive-site.xml配置如下
  1. <property>  
  2.   <name>hive.metastore.local</name>  
  3.   <value>true</value>  
  4. </property>  
  5. <property>  
  6.   <name>javax.jdo.option.ConnectionURL</name>  
  7.   <value>jdbc:mysql://localhost/hive?createDatabaseIfNotExist=true</value>  
  8. </property>  
  9. <property>  
  10.   <name>javax.jdo.option.ConnectionDriverName</name>  
  11.   <value>com.mysql.jdbc.Driver</value>  
  12. </property>  
  13. <property>  
  14.   <name>javax.jdo.option.ConnectionUserName</name>  
  15.   <value>hive</value>  
  16. </property>  
  17. <property>  
  18.   <name>javax.jdo.option.ConnectionPassword</name>  
  19.   <value>password</value>  
  20. </property> 
第二種情況hive-site.xml配置
  1. <property>  
  2.   <name>javax.jdo.option.ConnectionURL</name>  
  3.   <value>jdbc:mysql://192.168.0.1:3306/hive?createDatabaseIfNotExist=true</value>  
  4. </property>  
  5. <property>  
  6.   <name>javax.jdo.option.ConnectionDriverName</name>  
  7.   <value>com.mysql.jdbc.Driver</value>  
  8. </property>  
  9. <property>  
  10.   <name>javax.jdo.option.ConnectionUserName</name>  
  11.   <value>hive</value>  
  12. </property>  
  13. <property>  
  14.   <name>javax.jdo.option.ConnectionPassword</name>  
  15.   <value>password</value>  
  16. </property>  
  17. <property>  
  18.   <name>hive.metastore.local</name>  
  19.   <value>false</value>  
  20. </property>  
  21. <property>  
  22.   <name>hive.metastore.uris</name>  
  23.   <value>thrift://192.168.0.101:9083</value>  
  24. </property>
第三種情況hive-site.xml配置    1、 服務端配置
  1. <property>  
  2.   <name>javax.jdo.option.ConnectionURL</name>  
  3.   <value>jdbc:mysql://192.168.1.214:3306/hive?createDatabaseIfNotExist=true</value>  
  4. </property>  
  5. <property>  
  6.   <name>javax.jdo.option.ConnectionDriverName</name>  
  7.   <value>com.mysql.jdbc.Driver</value>  
  8. </property>  
  9. <property>  
  10.   <name>javax.jdo.option.ConnectionUserName</name>  
  11.   <value>hive</value>  
  12. </property>  
  13. <property>  
  14.   <name>javax.jdo.option.ConnectionPassword</name>  
  15.   <value>password</value>  
  16. </property>  
    2、客戶端配置
  1. <property>  
  2.   <name>hive.metastore.local</name>  
  3.   <value>false</value>  
  4. </property>  
  5. <property>  
  6.   <name>hive.metastore.uris</name>  
  7.   <value>thrift://192.168.0.101:9083</value>  
  8. </property>
在使用hive開始前,如果mysql是部署在遠端且 hive.metastore.local=false 則需要啟動hive的metadata服務
  1. $ hive --service metastore   

客戶端使用hive命令即可

  1. [email protected]:~$ hive   
  2. hive> show tables;  
  3. OK  
  4. Time taken: 0.7 seconds  
  5. hive>