安裝並使用mysql5.7作為hive的metastore
前言
hive的metastore預設是使用derby來作為metastore,但是derby有一個缺點是不能支援多使用者連結,雖然你可以通過切換目錄來支援,但是不同目錄的metastore會不一致,所以這裡使用mysql來作為hive的metastore。
在linux上安裝mysql資料庫
1、下載最新的mysql資料庫,這裡使用的版本是5.7.13,這裡是使用二進位制rpm進行安裝
mysql-community-client-5.7.13-1.el7.x86_64.rpm
mysql-community-common-5.7.13-1.el7.x86_64.rpm
mysql-community-libs-5.7 .13-1.el7.x86_64.rpm
mysql-community-server-5.7.13-1.el7.x86_64.rpm
mysql-connector-java-5.1.39.tar.gz #jdbc java驅動
2、上傳到linux,並使用rpm命令安裝,若出現庫衝突,先把衝突的庫刪除,例如在rhel7上
rpm -e mariadb-libs-5.5.35-3.el7.x86_64 --nodeps #出現mariadb衝突
接下來安裝mysql
rpm -ivh mysql-community-*;
或
rpm -ivh mysql-community -common-5.7.13-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.13-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.13-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.13-1.el7.x86_64.rpm
3、檢視是否安裝成功
[root@localhost ~]# rpm -qa | grep mysql
mysql-community-server-5.7.13-1.el7.x86_64
mysql-community-common-5.7 .13-1.el7.x86_64
mysql-community-client-5.7.13-1.el7.x86_64
mysql-community-libs-5.7.13-1.el7.x86_64
4、啟動mysql服務,這裡我的linux環境是rhel-server-7.0-x86_64
[root@localhost ~]# service mysqld start
Redirecting to /bin/systemctl start mysqld.service
5、初始化mysql的密碼
a.編輯/etc/my.cnf配置檔案,新增skip-grant-tables,取消密碼驗證
vi /etc/my.cnf
b.啟動服務
service mysqld restart ;
c.命令列輸入mysql進入命令列介面,修改密碼
update user set authentication_string=PASSWORD('123') where User='root';
d.重新編輯/etc/my.cnf配置檔案,去掉skip-grant-tables,登入需密碼驗證,並重啟服務
e.登入進入mysql客戶端
mysql -uroot -p123;
f.進入客戶端之後,若使用切換資料庫,例如use mysql出現
You must reset your password using ALTER USER statement before executing this statement
那是因為上面修改的密碼相當於在mysql安裝的時候的初始化的密碼變成了我們修改的密碼。所以在登入系統後mysql資料庫要你修改原始密碼
SET PASSWORD = PASSWORD('123');
g.退出mysql客戶端,再重新登入,切換資料庫
到此在linux上的mysql資料庫安裝成功,在這裡為了允許遠端客戶端可以鏈到mysql資料庫,需要修改下mysql資料庫的登陸許可權
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
FLUSH PRIVILEGES;
配置mysql作為hive的metastore
1、進入到hive的配置檔案目錄
cd /home/cloud/hadoop/apache-hive-0.13.0-bin/conf
2、將hive-default.xml.template複製一份作為hive-site.xml
cp hive-default.xml.template hive-site.xml
hive預設是使用hive-default.xml.template作為配置檔案,如果你想要自定義配置檔案,需要自定義一個hive-site.xml
3、配置mysql的資料庫連結,使用者和密碼
vi hive-site.xml;
配置資訊如下:
<configuration>
<!-- WARNING!!! This file is provided for documentation purposes ONLY! -->
<!-- WARNING!!! Any changes you make to this file will be ignored by Hive. -->
<!-- WARNING!!! You must make your changes in hive-site.xml instead. -->
<!-- config mysql connection -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.137.101:3306/hive?createDatabaseIfNotExist=true&useSSL=false</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>123</value>
<description>password to use against metastore database</description>
</property>
</configuration>
<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>123</value>
<description>password to use against metastore database</description>
</property>
</configuration>
配置該檔案之前,注意要把hive-site.xml一些老的配置刪除,即先把configuration節點中的配置先清空,再配置資料庫連結
4、需要把mysql的驅動放到/home/cloud/hadoop/apache-hive-0.13.0-bin/lib目錄下
5、啟動hive
發現在mysql的資料庫中生成了一個hive的資料,到此說明配置成功
而建立的資料庫資訊和表資訊可以分別在hive資料庫中的DBS和TBLS表中檢視