Hive修改derby爲mysql數據庫

一、概述

  1. hive可以管理hdfs上的文件,用表的形式來管理文件數據。而表名、表裏有哪些字段,字段類型、哪張表存在哪個數據下等這些表信息,稱之爲hive的元數據信息
  2. 默認情況下,hive的元數據信息不是存在hdfs上的,而是存在hive自帶的derby關係型數據庫裏的
  3. Hive安裝完成之後,通常都需要替換元數據庫,目前Hive只支持derby和mysql兩種元數據庫,需要將元數據庫替換爲MySQL
  4. 元數據的默認字符集是ISO8859-1

二、derby存在的問題

  1. derby數據庫是一種文件型的數據庫,在進入時會檢查當前目錄下是否有metastore_db文件夾用來存儲數據庫數據,如果有就直接使用,如果沒有就創建,這樣一旦換一個目錄,元數據就找不到了
  2. derby數據庫是一個單用戶的數據庫,無法支持多用戶同時操作,而hive如果使用derby作爲元數據庫,則也只能支持單用戶操作,這就導致在數據量大連接多的情況下會產生大量連接的積壓

替換爲MySQL

所以每次在不同的目錄啓動hive都會生成不同的derby數據文件,所以很麻煩,不如直接替換成MySQL使用
不同的目錄指的是在當前目錄通過路徑的方式啓動hive 例如在home目錄下 sh /home/software/hive-1.2.2/bin/hive,就會在home目錄下生成metastore_db文件

1. 將mysql驅動包上傳到hive安裝目錄的lib目錄下

下載地址:http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.38/

cp mysql-connector-java-5.1.38.jar /home/software/hive-1.2.2/lib/
2. 進入conf目錄下,編輯新的配置文件,名字爲:hive-site.xml
vim hive-site.xml
3. 配置相關信息:

數據庫的連接信息,按照自己的數據庫填寫既可

<configuration>
	<property>
		<name>javax.jdo.option.ConnectionURL</name>
		<value>jdbc:mysql://hadoop01: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>root</value>
	</property>
</configuration>
4. 進入hive ,進入bin目錄,執行:sh hive

如果出現:Access denied for user ‘root’@‘hadoop01’ (using password: YES)這個錯誤,指的是當前用戶操作mysql數據庫的權限不夠

5. 使用連接工具到mysql數據庫,進行權限分配
grant all privileges on *.* to 'root'@'hadoop01' identified by 'root' with grant option;
grant all on *.* to 'root'@'%' identified by 'root';
flush privileges;

在這裏插入圖片描述

6. 進入mysql數據庫,執行:create database hive character set latin1;

在這裏插入圖片描述

7. 啓動hive客戶端

sh hive

8. 以上步驟都做完後,再次進入mysql的hive數據,發現有如下的表:

在這裏插入圖片描述

9. 可以通過DBS 、TBLS、COLUMNS_V2、SDS這幾張表來查看元數據信息

用hive創建一個表
在這裏插入圖片描述

create table stu(id int,name varchar(50));

a. DBS 存放的數據庫的元數據信息
在這裏插入圖片描述
b. TBLS存放的tables表信息
在這裏插入圖片描述
c. COLUMNS表存放的是列字段信息3
在這裏插入圖片描述

d. SDS表存放的HDFS裏的位置信息
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章