Hive篇--搭建Hive叢集

LHBlog發表於2018-01-15

一.前述

Hive中搭建分為三中方式 a)內嵌Derby方式 b)Local方式 c)Remote方式 三種方式歸根到底就是後設資料的儲存位置不一樣。

二.具體實現

a)內嵌Derby方式

使用derby儲存方式時,執行hive會在當前目錄生成一個derby檔案和一個metastore_db目錄。這種儲存方式的弊端是在同一個目錄下同時只能有一個hive客戶端能使用資料庫。

b)本地模式

這種儲存方式需要在本地執行一個mysql伺服器,並作如下配置(下面兩種使用mysql的方式,需要將mysql的jar包拷貝到$HIVE_HOME/lib目錄下)。

並作如下配置:

<?xml version="1.0"?>  
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
  
<configuration>  
<property>  
  <name>hive.metastore.warehouse.dir</name>  
  <value>/user/hive_remote/warehouse</value>  
</property>  
   
<property>  
  <name>hive.metastore.local</name>  
  <value>true</value>  
</property>  
   
<property>  
  <name>javax.jdo.option.ConnectionURL</name>  
  <value>jdbc:mysql://localhost/hive_remote?createDatabaseIfNotExist=true</value>  
</property>  
   
<property>  
  <name>javax.jdo.option.ConnectionDriverName</name>  
  <value>com.mysql.jdbc.Driver</value>  
</property>  
   
<property>  
  <name>javax.jdo.option.ConnectionUserName</name>  
  <value>hive</value>  
</property>  
   
<property>  
  <name>javax.jdo.option.ConnectionPassword</name>  
  <value>password</value>  
</property>  
</configuration>  

 

c)多使用者模式

   1.Remote一體:

這種儲存方式需要在遠端伺服器執行一個mysql伺服器,並且需要在Hive伺服器啟動meta服務。

這裡用mysql的測試伺服器,ip位192.168.1.214,新建hive_remote資料庫,字符集位latine1

<?xml version="1.0"?>  

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  

<configuration>  
<property>  
  <name>hive.metastore.warehouse.dir</name>  
  <value>/user/hive/warehouse</value>  
</property>  
<property>  
  <name>javax.jdo.option.ConnectionURL</name>  
  <value>jdbc:mysql://192.168.57.6:3306/hive?createDatabaseIfNotExist=true</value>  
</property>  
<property>  
  <name>javax.jdo.option.ConnectionDriverName</name>  
  <value>com.mysql.jdbc.Driver</value>  
</property>    
<property>  
  <name>javax.jdo.option.ConnectionUserName</name>  
  <value>hive</value>  
</property>  
<property>  
  <name>javax.jdo.option.ConnectionPassword</name>  
  <value>password</value>  
</property>  
<property>  
  <name>hive.metastore.local</name>  
  <value>false</value>  
</property> 
<property>  
  <name>hive.metastore.uris</name>  
  <value>thrift://192.168.1.188:9083</value>  
</property>  
</configuration>  

注:這裡把hive的服務端和客戶端都放在同一臺伺服器上了。服務端和客戶端可以拆開。

   2.Remote分開:將hive-site.xml配置檔案拆為如下兩部分

           服務端配置檔案(因為服務端需要和Mysql通訊,所以服務端需要Mysql的lib安裝包到Hive_Home/conf目錄下)

<?xml version="1.0"?>  

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  

<configuration>  

<property>  

  <name>hive.metastore.warehouse.dir</name>  

  <value>/user/hive/warehouse</value>  

</property>  

<property>  

  <name>javax.jdo.option.ConnectionURL</name>  

  <value>jdbc:mysql://192.168.57.6:3306/hive?createDatabaseIfNotExist=true</value>  

</property>  

<property>  

  <name>javax.jdo.option.ConnectionDriverName</name>  

  <value>com.mysql.jdbc.Driver</value>  

</property>  

<property>  

  <name>javax.jdo.option.ConnectionUserName</name>  

  <value>root</value>  

</property>  

<property>  

  <name>javax.jdo.option.ConnectionPassword</name>  

  <value>123456</value>  

</property>  

</configuration>  

  客戶端配置檔案(由於客戶端需要和Hadoop通訊,所以需要更改Hadoop中jline的版本。從hive的lib包中拷貝到Hadoop中lib位置為/opt/soft/hadoop-2.6.5/share/hadoop/yarn/lib)  留一個高版本的jline jar包!!

<?xml version="1.0"?>  

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
<configuration> 

<property>  

  <name>hive.metastore.warehouse.dir</name>  

  <value>/user/hive/warehouse</value>  

</property>  


<property>  

  <name>hive.metastore.local</name>  

  <value>false</value>  

</property>  

 
<property>  

  <name>hive.metastore.uris</name>  

  <value>thrift://192.168.57.5:9083</value>  

</property>  
  
</configuration> 
 

啟動hive服務端程式 

hive --service metastore 2>&1 >> /dev/null &

客戶端直接使用hive命令即可!!!

PS:客戶端啟動的時候要注意:

[ERROR] Terminal initialization failed; falling back to unsupported

java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected

at jline.TerminalFactory.create(TerminalFactory.java:101)

錯誤的原因: Hadoop jline版本和hive的jline不一致!!!

 

相關文章