本教程採用了兩種方案mysql
一種是hive-1.21版本,hadoop版本爲hadoop2.6.5sql
還有一種是主要講基於hadoop3.x hive的搭建 數據庫
關注公衆號:Java架構師聯盟,每日更新技術好文服務器
先來第一種架構
1、本地方式(內嵌derby)ide
步驟oop
這種存儲方式須要在本地運行一個mysql服務器,並做以下配置日誌
解壓code
修改安裝包內conf文件夾下的hive-default.xml.template,並重命名爲hite-site.xmlserver
<configuration>
將hive/lib目錄下的jline jar包拷貝到hadoop的yarn lib下,並將原jar包刪除或更名令其失效。不然會報版本不匹配的錯誤 問題
使用derby存儲方式時,運行hive會在當前目錄生成一個derby文件和一個metastore_db目錄。這種存儲方式的弊端是在同一個目錄下同時只能有一個hive客戶端能使用數據庫,多個用戶登陸時會報錯。(這是因爲derby數據庫的侷限性形成的)
2、Local模式(mysql)
這種存儲方式須要在本地運行一個mysql服務器,並做以下配置
步驟
安裝一個mysql數據庫
yum install mysql-server -y
拷貝mysql驅動包到$HIVE_HOME\lib目錄下
修改hive-site,xml
<configuration>
啓動sql服務
service mysqld start
設置開機啓動
chkconfig mysqld on
修改root用戶權限
(1)登陸mysql
mysql -uroot
(2)修改權限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
(3)刷新
flush privileges;
建立hive_meta數據庫
create database hive_meta;
添加用戶並修改權限
(1)建立hive用戶和密碼
CREATE USER 'hive'@'%' IDENTIFIED BY '123';
(2)賦予權限
grant all privileges on hive_meta.* to hive@"%" identified by '123';
刪除多餘權限
1.進入mysql數據庫
use mysql;
2.查看用戶
select host,user,password from user;
3. 刪除多餘會對權限形成影響的數據
delete from user where password = '';
將hive/lib目錄下的jline jar包拷貝到hadoop的yarn lib下
配置HIVE_HOME,hive啓動
3、遠程(remote)模式
當有多個客戶端使用hive時,若使用各自本地的hive和mysql,會致使各端元數據不一致,不易於管理,可能會出現各類問題。在一個基於本地mysql數據庫的hive做爲服務端,啓動一個metastore服務,其餘客戶端經過thrift協議鏈接metastore使用服務端hive,從而使用同一份mysql內的元數據。
步驟
在一個搭建好基於mysql的hive的節點啓動metastore服務做爲服務端
hive --service metastore
在客戶端解壓安裝包並修改hive-site.xml
<configuration>
注:metastore的啓動會一直啓動在前臺,可利用以下方法解決
hive --service metastore >> meta.log 2>&1 &
將日誌打印到meta.log 錯誤日誌(2)重定向到正常日誌(1)
&表示後臺執行
這種方式服務端只提供元數據,客戶端運行本身的hiv
再來第二種
本篇主要描述hive3.x與歷史版本搭建的不一樣之處。本地模式用的較少就不復贅述,直接從local模式開始,遠程模式與歷史版本無異,本篇也再也不贅述。
1、local模式
1.修改hive-site.xml
<configuration>
2.修改hive-env.sh
3.將hadoop/share/hadoop/common/lib 下的 guava-xx.jar 複製到hive/lib 下 將hive 的guava-xx.jar刪除
4.大功告成了,趕快試試吧!