hive上mysql元數據庫配置

hive調試信息顯示模式:html

./hive -hiveconf hive.root.logger=DEBUG,consolejava

很是有用。mysql

 

默認狀況下,Hive元數據保存在內嵌的 Derby 數據庫中,只能容許一個會話鏈接,只適合簡單的測試。爲了支持多用戶多會話,則須要一個獨立的元數據庫,咱們使用 MySQL 做爲元數據庫,Hive 內部對 MySQL 提供了很好的支持,配置一個獨立的元數據庫須要增長如下幾步驟:

第一步:安裝MySQL服務器端和MySQL客戶端,並啓動MySQL服務。
此步省略,具體請看http://www.cnblogs.com/wuhou/archive/2008/09/28/1301071.htmlsql


第二步:安裝Hive
此步省略,具體請看http://www.cnblogs.com/linjiqin/archive/2013/03/04/2942402.html

第三步:爲Hive創建相應的MySQL帳戶,並賦予足夠的權限,執行命令以下:shell

hadoop@ubuntu:~$ mysql -uroot -pmysql
mysql> CREATE USER 'hive' IDENTIFIED BY 'mysql';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANT OPTION;
mysql> flush privileges;

默認狀況下Mysql只容許本地登陸,因此須要修改配置文件將地址綁定給註釋掉:數據庫

root@ubuntu:~# sudo gedit /etc/mysql/my.cnf

找到以下內容:ubuntu

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address           = 127.0.0.1  <---註釋掉這一行就能夠遠程登陸了

重啓mysql服務:服務器

sudo service mysql restart

第四步:創建 Hive 專用的元數據庫,記得建立時用剛纔建立的「hive」帳號登錄。less

mysql> exit;
hadoop@ubuntu:~$ mysql -uhive -pmysql
mysql> create database hive;

第五步:在Hive的conf目錄下的文件「hive-site.xml」中增長以下配置:oop

複製代碼
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <property>
        <name>hive.metastore.local</name>
        <value>true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://192.168.11.157:3306/hive?characterEncoding=UTF-8</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>mysql</value>
    </property>
</configuration>
複製代碼

從前面咱們知道咱們的「hive-site.xml」是一個「hive-default.xml.template」的一個拷貝,裏面的配置參數很是之多,可是並非咱們都須要的,咱們知道,Hive 系統會加載兩個配置文件一個默認配置文件「hive-default.xml」,另外一個就是用戶自定義文件「hive-site.xml」。當「hive-site.xml」中的配置參數的值與「hive-default.xml」文件中不一致時,以用戶自定義的爲準。因此咱們就把咱們不須要的參數都刪除掉,只留下上面所示的內容。
備註:其實修改這裏的配置文件若是在Linux下面進行則很是麻煩,盡然咱們都創建了FTP了,爲什麼不用,因此把Master.Hadoop上面的這個配置文件下載下來,按照要求進行修改,這樣的文件在Windows進行操做是很是方便的,弄好以後在上傳上去,覆蓋原來的便可。

第六步:把MySQL的JDBC驅動包複製到Hive的lib目錄下。
JDBC驅動包的版本:mysql-connector-java-5.1.18-bin.jar

第七步:啓動 Hive Shell, 執行「show tables;」命令,若是不報錯,代表基於獨立元數據庫的 Hive 已經安裝成功了。

複製代碼
hadoop@ubuntu:~$ hive
Logging initialized using configuration in file:/home/hadoop/hive-0.9.0/conf/hive-log4j.properties
Hive history file=/tmp/hadoop/hive_job_log_hadoop_201303041631_450140463.txt
hive> show tables;
OK
Time taken: 1.988 seconds
hive> 
複製代碼

第八步:驗證Hive配置是否有誤,進入Hive的shell新建表,在MySQL的Hive數據庫中能夠看到相應的元數據庫信息。
1)在Hive上創建數據表
hive> CREATE TABLE xp(id INT,name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
2)從 MySQL 數據庫上查看元數據信息
用到的 SQL 語句:
use hive; //使用 hive 數據庫庫
show tables;//顯示 hive 數據庫中的數據表
select * from TBLS;//查看 hive 的元數據信息
到此Hive集成Mysql做爲元數據已完成。

遠程模式安裝
遠程模式安裝是把 metastore 配置到遠程機器上,能夠配置多個。在獨立模式的基礎上須要在 hive-site.xml 文件中增長的配置項以下:

複製代碼
<property>
    <name>hive.metastore.local</name>
    <value>local</value>
</property>
<property>
    <name>hive.metastore.uris</name>
    <value>uri1,uri2,... </value>//可配置多個 uri
    <description>JDBC connect string for a JDBC metastore</description>
</property>
複製代碼
相關文章
相關標籤/搜索