Hadoop爲基礎關於Hive的安裝配置及連接(安裝)MySQL和Navicat

Hive的本地安裝配置(部分遠程)及連接MySQL和Navicat


Hive

hive是基於Hadoop構建的一套數據倉庫分析系統,它提供了豐富的SQL查詢方式來分析存儲在Hadoop分佈式文件系統中的數據:可以將結構化的數據文件映射爲一張數據庫表,並提供完整的SQL查詢功能;可以將SQL語句轉換爲MapReduce任務運行,通過自己的SQL查詢分析需要的內容,這套SQL簡稱Hive SQL,使不熟悉mapreduce的用戶可以很方便地利用SQL語言‘查詢、彙總和分析數據。

三種安裝模式

(metastore包括兩部分,服務進程和數據的存儲。)
內嵌模式,特點是:hive服務和metastore服務運行在同一個進程中,derby服務也運行在該進程中。
本地模式,特點是:hive服務和metastore服務運行在同一個進程中,mysql是單獨的進程,可以在同一臺機器上,也可以在遠程機器上。該模式只需將hive-site.xml中的ConnectionURL指向mysql,並配置好驅動名、數據庫連接賬號即可。能夠支持多會話和多用戶連接。
遠程模式,特點是:hive服務和metastore在不同的進程內,可能是不同的機器。該模式需要將hive.metastore.local設置爲false,並將hive.metastore.uris設置爲metastore服務器URI。舉例來說就是,如果我們的hive客戶端較多,在每個客戶端都安裝mysql服務,還是會造成一定的冗餘和浪費,這種情況下就可以將mysql獨立出來將元數據保存在遠程獨立的mysql服務中。僅連接遠程的mysql並不能稱之爲“遠程模式”,是否遠程指的是metastore和hive服務是否在同一進程內

前提

Hadoop已安裝配置且能正常啓動,如果沒有請參考:

所需文件

apache-hive-2.3.6-bin.tar.gz:下載地址
mysql-8.0.18-1.el7.x86_64.rpm-bundle.tar:下載地址
mysql-connector-java-8.0.18.zip 只需要其中的jar包:下載地址
由於官網下載忒慢,所以選用版本相較完整的華爲開源鏡像站
所需工具
Xshell,Xftp,Navicat等(皆可在官網下載)
另附網盤地址
提取碼 a5dq
1,通過Xshell連接Xftp將所需文件傳入到/opt目錄,可自定。
在這裏插入圖片描述
2,安裝hive,爲方便重命名以及刪除包

tar -xzvf apache-hive-2.3.6-bin.tar.gz
mv apache-hive-2.3.6-bin hive
rm apache-hive-2.3.6-bin.tar.gz

3,安裝mysql
<1,卸載CentOS自帶的Mariadb

rpm -qa|grep mariadb (查找)
rpm -e --nodeps 所查文件  (刪除)
rm /etc/my.cnf  (刪除配置文件)

<2,這裏我通過rpm安裝

tar -xvf mysql-8.0.18-1.el7.x86_64.rpm-bundle.tar

在這裏插入圖片描述
解決一些依賴不是都必須成功,有的自身配置就是最新就不會安裝

yum -y install numactl
yum -y install libaio.so.1 libgcc_s.so.1 libstdc++.so.6
yum update libstdc++-4.4.7-4.el6.x86_64
yum search libaio
yum install libaio
yum install net-tools
yum install openssl-devel
yum remove mysql-libs -y

按次序安裝
commonlibsclientserverdevel最後一個隨意

rpm -ivh mysql-community-common-8.0.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-8.0.18-1.el7.x86_64.rpm 

在這裏插入圖片描述
有的不成功就是上述依賴未更新

4,配置MySQL及連接Navicat
<1,初始化

mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql

<2,啓動

systemctl start mysqld

登陸方法1

vim /etc/my.cnf
在 [mysqld] 下添加skip-grant-tables
在這裏插入圖片描述

systemctl restart mysqld (重啓)
mysql -uroot -p  (密碼直接回車即可)
use mysql;  (選擇mysql數據庫)
update user set authentication_string='' where user='root';
(將默認密碼清空)
exit  (退出)
vim /etc/my.cnf
skip-grant-tables  (刪除)
systemctl restart mysqld (重啓)
mysql -uroot -p   (密碼直接回車)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'QWE123@qweasd';
(修改密碼)`可自定但以防出現錯誤先用這個`

在這裏插入圖片描述
登陸方法2
查看初始密碼,然後直接登陸,改密碼(有時不成功

grep 'temporary password' /var/log/mysqld.log

小插曲
修改的密碼想簡單點如’123456’之類,但修改時會出現
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements提示密碼策略問題異常信息
解決方法
SHOW VARIABLES LIKE 'validate_password%'; 查看mysql初始的密碼策略
在這裏插入圖片描述
set global validate_password_policy=LOW; 設置密碼的驗證強度等級
set global validate_password_length=6; 設置密碼長度

` 1)、validate_password_length  固定密碼的總長度;`
` 2)、validate_password_dictionary_file 指定密碼驗證的文件路徑;`
` 3)、validate_password_mixed_case_count  整個密碼中至少要包含大/小寫字母的總個數;`
` 4)、validate_password_number_count  整個密碼中至少要包含阿拉伯數字的個數;`
` 5)、validate_password_policy 指定密碼的強度驗證等級,默認爲 MEDIUM;`

如果查看密碼策略沒有出現上圖表格
INSTALL PLUGIN validate_password SONAME 'validate_password.so';即可
在這裏插入圖片描述
重新進一遍就會出現
< 3,與Navicat的連接
由於本主機安裝的是8.0的版本,所以用戶授予權限時:
GRANT ALL PRIVILEGES ON *.* 'root'@'%' identified by ‘123123’ WITH GRANT OPTION;之類的寫法會報錯!
在這裏插入圖片描述
正確寫法

(`創建用戶`)  create user  'root'@'%' identified by '123456';
(`賦予權限`)  grant all privileges on  *.* to 'root'@'%';
(`執行命令修改`)  alter user 'root'@'%'identified with mysql_native_password by '123456';
(`生效`)  flush privileges;

在這裏插入圖片描述
切記:注意寫法,要不就會報錯1064
打開Navicat新建連接
在這裏插入圖片描述
相對應輸入並連接

在這裏插入圖片描述
之後便會出現數據庫
5,配置hive
<1, vim /etc/profile
在這裏插入圖片描述
hadoop與java的配置在開頭請參考
添加對應的目錄文件

export HIVE_HOME=/opt/hive
export HIVE_CONF_DIR=${HIVE_HOME}/conf
export CLASS_PATH=${HIVE_HOME}/lib
export PATH=$PATH:${HIVE_HOME}/bin

source /etc/profile
<2, hiveconf目錄下
新建hive-site.xml文件

cp hive-default.xml.template hive-site.xml

新建hive-env.sh文件

cp hive-env.sh.template  hive-env.sh

使用hadoop命令新建目錄文件並賦予讀寫權限

hadoop fs -mkdir -p  /user/hive/warehouse
hadoop fs -chmod 777 /user/hive/warehouse 
hadoop fs -mkdir -p  /tmp/hive/
hadoop fs -chmod 777 /tmp/hive

查看是否創建成功

hadoop fs -ls /user/hive/
hadoop fs -ls /tmp/

< 3, vim hive-site.xml
hive-site.xml文件中的${system:java.io.tmpdir}替換爲hive臨時目錄
我替換爲/opt/hive/tmp如果不存在要手工創建並賦予讀寫權限
${system:user.name}都替換爲root
在這裏插入圖片描述

在未插入之前,使用 / 可以進行查詢,n 爲下一個可以 i,esc,n,i,esc,n 進行相應的刪改
在這裏插入圖片描述
在這裏插入圖片描述
刪改內容要全部找完爲止

修改數據庫相關設置
找到javax.jdo.option.ConnectionURL,將該name對應的value修改爲MySQL的地址
在這裏插入圖片描述

jdbc:mysql://192.168.1.111:3306/myhive?createDatabaseIfNotExist=true

myhive代表Navicat中所顯示的數據庫名字,自擬ip地址與自身對應。

找到javax.jdo.option.ConnectionDriverName,將該name對應的value修改爲MySQL驅動類路徑
在這裏插入圖片描述

com.mysql.jdbc.Driver

找到javax.jdo.option.ConnectionUserName,將對應的value修改爲MySQL數據庫登錄名
在這裏插入圖片描述
找到javax.jdo.option.ConnectionPassword,將對應的value修改爲MySQL數據庫的登錄密碼

在這裏插入圖片描述

找到hive.metastore.schema.verification,將對應的value修改爲false
在這裏插入圖片描述
<4, 將MySQL的jar包傳輸到Hive的lib目錄下
在這裏插入圖片描述

不要將整個壓縮包傳進,只要其中的jar包
<5, vim hive-env.sh
在這裏插入圖片描述

export HADOOP_HOME=/opt/hadoop
export HIVE_CONF_DIR=/opt/hive/conf
export HIVE_AUX_JARS_PATH=/opt/hive/lib

6,在hivebin目錄下對數據庫進行初始化

schematool -initSchema -dbType mysql

在這裏插入圖片描述
成功之後便會,在Navicat中出現myhive

在這裏插入圖片描述
也可以在mysql中 show databases;
在這裏插入圖片描述

7,輸入hive登陸
在這裏插入圖片描述
8,簡單測試show functions;查看函數
在這裏插入圖片描述
9,簡單操作
mysql

create database abc;
use abc;

創建表
在這裏插入圖片描述

CREATE TABLE IF NOT EXISTS `runoob_tbl`(
   `runoob_id` INT UNSIGNED AUTO_INCREMENT,
   `runoob_title` VARCHAR(100) NOT NULL,
   `runoob_author` VARCHAR(40) NOT NULL,
   `submission_date` DATE,
   PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

如果你不想字段爲 NULL 可以設置字段的屬性爲 NOT NULL, 在操作數據庫時如果輸入該字段的數據爲NULL ,就會報錯。
AUTO_INCREMENT定義列爲自增屬性,一般用於主鍵,數值會自動加1。
PRIMARY KEY關鍵字用於定義列爲主鍵。 您可以使用多列來定義主鍵,列間以逗號分隔。
ENGINE 設置存儲引擎,CHARSET 設置編碼。

查看錶
在這裏插入圖片描述
hive
新建數據庫

create database db_myhive_edu;

在這裏插入圖片描述
在剛創建的數據庫中創建數據表

use db_myhive_edu;
create table student(id int,name string) row format delimited fields terminated by '\t';

在這裏插入圖片描述
/opt/hive目錄內新建一個文件(打開另一個終端)
touch /opt/hive/student.txt
在文件中編寫

01      zhao
02      qian
03      sun
04      li
05      zhou
06      wu

id和name直接是TAB鍵,不是空格,因爲在上面創建表的語句中用了terminated by '\t’所以這個文本里id和name的分割必須是用TAB鍵
轉到hive

load data local inpath '/opt/hive/student.txt' into table db_myhive_edu.student;

在這裏插入圖片描述
查看
select * from student;
在這裏插入圖片描述
Navicat中
新建查詢
SELECT * FROM myhive.TBLS
在這裏插入圖片描述
在瀏覽器中
在這裏插入圖片描述
至此完成本地模式搭建

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