基於Hadoop不一樣版本搭建hive集羣(附配置文件)

本教程採用了兩種方案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.大功告成了,趕快試試吧!

相關文章
相關標籤/搜索