Hive篇--搭建Hive集群


一.前述

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不一致!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM