寫在前面:
由于這是在學校配置后,假期在家補的開發檔案,所以很多部分沒有截圖,只有文字說明,但是在我這里都是可運行的,
關于配置,我安裝的java版本為1.8,hadoop版本為3.2.2,教程中安裝的mysql版本為8.0.25,hive版本為3.1.2,
其中對應版本的安裝包及jar包在這里,阿里云盤分享鏈接
https://www.aliyundrive.com/s/K35cMdyRFLJ
下面進入正題,
目錄
- 1. Mysql安裝
- 1.1 準備作業
- 1.2 安裝mysql
- 1.3 給mysql目錄指定專有用戶和用戶組目錄
- 1.4 配置my.cnf
- 1.5 初始化mysql
- 1.6 啟動mysql
- 1.7 設為開機啟動
- 1.8 登錄mysql修改密碼授權遠程登錄
- 1.9 在mysql中為hive設定賬戶
- 1.10 測驗遠程連接
- 1.11 忘記密碼的處理
- 2. Hive配置
- 2.1 Hive下載安裝
- 2.2 加載mysql驅動包
- 2.3 配置Hive環境變數
- 2.4 修改Hive的hive-env.sh、hive-site.xml和hive-log4j.proprties組態檔
- 2.5 修改組態檔
- 2.6 Hive啟動
- 2.7 Hive初始化
- 2.8 Hive Web服務開啟
1. Mysql安裝
1.1 準備作業
檢查Java JDK是否安裝
java -version
檢查 Hadoop 是否安裝
hadoop version
我安裝的hadoop版本為3.2.2
檢查Mysql是否安裝
service mysql status
如果回傳mysql.service could not be found,則需要安裝mysql資料庫
檢查系統有無mysql
rpm -qa|grep -i mysql
輸出
akonadi-mysql-1.9.2-4.el7.x86_64
perl-DBD-MySQL-4.023-6.el7.x86_64
qt-mysql-4.8.7-2.el7.x86_64
卸載
Centos7服務器配置默認安裝MySQL,如果存在,則需要先卸載掉,不然會出現覆寫錯誤,
yum remove akonadi-mysql perl-DBD-MySQL qt-mysql
1.2 安裝mysql
以下安裝的mysql版本為 8.0.25
把壓縮包解壓到/usr/local目錄
cd /usr/local
tar -xf mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz
tar -xf mysql-8.0.25-linux-glibc2.12-x86_64.tar
進入/usr/local/目錄 把解壓包重命名為mysql
mv mysql-8.0.25-linux-glibc2.12-x86_64 mysql
創建用戶組
groupadd mysql
創建用戶
useradd -g mysql mysql
給mysql設定密碼
passwd mysql
1.3 給mysql目錄指定專有用戶和用戶組目錄
首先創建data目錄:
cd /usr/local/mysql
mkdir data
指定用戶和用戶組:
cd /usr/local
chown -R mysql mysql/
chgrp -R mysql mysql/
sudo chown -R mysql:mysql /usr/local/mysql
1.4 配置my.cnf
vim /etc/my.cnf
輸入以下內容
[client]
no-beep
socket =/tmp/mysql.sock
# pipe
# socket=0.0
port=3306
default-character-set=UTF8MB4
[mysql]
default-character-set=UTF8MB4
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
pid-file=/usr/local/mysql/mysqld.pid
#skip-grant-tables
skip-name-resolve
socket = /tmp/mysql.sock
character-set-server=utf8
init_connect='SET NAMES utf8'
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
init_connect='SET NAMES utf8'
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#
# include all files from the config directory
#
[mysqld_safe]
log-error=/usr/local/mysql/error.log
pid-file=/usr/local/mysql/data/mysql.pid
1.5 初始化mysql
進入bin目錄
cd /usr/local/mysql
切換用戶
su mysql
初始化命令
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
記住生成的臨時密碼,在最后一句日志結尾處
root@localhost: ,a,qHoChp8Hu
如果忘記密碼或者想重新初始化,可以先將mysql/data目錄中檔案洗掉,然后再執行初始化命令
1.6 啟動mysql
cd /usr/local/mysql
./bin/mysqld_safe --user=mysql &(回車回傳命令列狀態)
1.7 設為開機啟動
切回root賬號
su
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
vim /etc/init.d/mysql
在檔案中找到basedir=、datadir=、mysqld_pid_file_path=,改為
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/
mysqld_pid_file_path=/usr/local/mysql/data/mysql.pid
授權
chmod +x /etc/init.d/mysql
設為開機啟動
chkconfig --add mysql
mysql啟動
service mysql restart # 重啟服務
service mysql stop # 停止服務
service mysql start # 開啟服務
service mysql status # 查看服務狀態
注意:如果啟動程序中報ERROR! The server quit without updating PID file
(/usr/local/mysql/mysqld.pid).錯誤
請使用
ps aux |grep mysql*
查找/usr/local/mysql/bin/mysqld
使用kill 行程號 洗掉,再啟動即可
多次kill不掉,重新啟動虛擬機
1.8 登錄mysql修改密碼授權遠程登錄
切換mysql賬號,登陸
su mysql
cd /usr/local/mysql
./bin/mysql -u root -p
注意:啟動程序中,如果報
./bin/mysql: error while loading shared libraries: libtinfo.so.5: cannot open
shared object file: No such file or directory錯誤
說明libtinfo.so.5未找到
執行以下陳述句:
sudo ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5
輸入臨時密碼登陸
進入mysql后,修改密碼
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
查看結果中host一行中是否有%,如果有%,此行用戶名允許遠程登錄,
# 查看賬號用戶名密碼
select host, user, authentication_string from user;
如果沒有%相關資料,就給賬戶授權:
update user set host = '%' where user = 'root' and host='localhost';
如需root也可以通過本地訪問資料庫,執行如下陳述句
insert user (user, host, ssl_cipher, x509_issuer, x509_subject) values('root',
'localhost', '', '', '');
1.9 在mysql中為hive設定賬戶
登陸mysql
# 為hive設定賬戶創建用戶
create user 'hive'@'%' identified by 'hive';
# 授權
grant all privileges on *.* to 'hive'@'%' with grant option;
# 重繪權限
flush privileges;
1.10 測驗遠程連接
遠程連接如如拒絕:
解決方法:
1、開放防火墻埠
2、在mysql中查看埠是否為3306
show global variables like 'port';
3、添加需要監聽的埠,開啟3306埠監聽
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
1.11 忘記密碼的處理
首先確認服務器出于安全的狀態,也就是沒有人能夠任意地連接MySQL資料庫,
因為在重新設定 MySQL的root密碼的期間,MySQL資料庫完全出于沒有密碼保護的狀態下,其他的用戶也可以任意地登錄和修改MySQL的資訊,
可以采用將MySQL對 外的埠封閉,并且停止Apache以及所有的用戶行程 的方法實作服務器的準安全狀態,
最安全的狀態是到服務器的Console上面操作,并且拔掉網線,
vi /etc/my.cnf
把 skip-grant-tables 前的#洗掉,保存退出
重啟mysql
service mysql restart
用戶無密碼登錄
mysql -u root -p (直接點擊回車,密碼為空)
選擇資料庫,修改密碼,重繪權限,退出
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
flush privileges;
exit;
將剛才在 /etc/my.cnf 中的 skip-grant-tables 重新注釋
重啟mysql
systemctl restart mysqld
2. Hive配置
2.1 Hive下載安裝
確認在root賬戶下運行
su
解壓hive安裝包到hive目錄下
tar -zxf /usr/local/apache-hive-3.1.2-bin.tar.gz
更名為hive
mv apache-hive-3.1.2-bin hive
2.2 加載mysql驅動包
根據mysql版本下載對應的驅動包上傳到/usr/local/hive/lib下,完畢后,可在 lib 目錄下,看到上傳的 mysql-connector-java-8.0.21.jar 包
2.3 配置Hive環境變數
進入/etc/profile檔案,配置環境變數
vi /etc/profile
輸入 insert 鍵進入編輯模式,添加
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
/usr/local/hive 路徑是hive安裝的目錄路徑
輸入 Esc 鍵,輸入: wq 保存并退出
重新執行 profile 檔案使其生效
source /etc/profile
2.4 修改Hive的hive-env.sh、hive-site.xml和hive-log4j.proprties組態檔
進入到hive安裝目錄的 /conf 目錄下
cd /usr/local/hive/conf
問題:/conf 目錄下沒有hive-env.sh 、 hive-site.xml 和 hive-log4j2.proprties,但是看到 hive
env.sh.template 、 hive-default.xml.template 和 hive-log4j2.properties.template 檔案
解決方法:可直接復制,并分別重命名為 hive-env.sh 、 hive-site.xml 和 hive-log4j2.properties
分別執行以下三條命令
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
cp hive-log4j2.properties.template hive-log4j2.properties
2.5 修改組態檔
編輯 hive-env.sh檔案
export JAVA_HOME=/usr/local/jdk
export HADOOP_HOME=/usr/local/hadoop
export HIVE_HOME=/usr/local/hive
export HIVE_CONF_DIR=/usr/local/hive/conf
保存退出后使檔案生效
source hive-env.sh
在修改 hive-site.xml 前,先創建warehouse、tmp、log目錄
cd /usr/local/hive
mkdir warehouse
mkdir tmp
mkdir logs
warehouse 存盤表資料 tmp 存盤臨時檔案 logs 存盤日志檔案
修改 hive-site.xml 檔案
cd /usr/local/hive/conf
建議下載該檔案,在windows中進行編輯,再上傳
<!--Hive作業的HDFS根目錄位置 -->
<property>
<name>hive.exec.scratchdir</name>
<value>/usr/local/hive/tmp</value>
</property>
<!--Hive作業的HDFS根目錄創建寫權限 -->
<property>
<name>hive.scratch.dir.permission</name>
<value>733</value>
</property>
<!--hdfs上hive元資料存放位置,默認 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/usr/local/hive/warehouse</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/usr/local/hive/logs</value>
</property>
<!--連接資料庫地址,slave1記得修改為自己虛擬機的名稱 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://slave1:3306/hive?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true</value>
</property>
<!--連接資料庫驅動 -->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<!--連接資料庫用戶名稱 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<!--連接資料庫用戶密碼 -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
</property>
<!--客戶端顯示當前查詢表的頭資訊 -->
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<!--客戶端顯示當前資料庫名稱資訊 -->
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
修改 system:java.io.tmpdir的路徑
搜索 ${system:java.io.tmpdir},定位到多處含有 ${system:java.io.tmpdir} 的地方
全部替換成 /usr/local/hive/tmp(這個是存放臨時檔案的路徑)
搜索 ${system:user.name}
全部替換成 hive(這個是登錄hive的用戶名)
修改完以上全部內容后,輸入 Esc 鍵,輸入 :wq 保存并退出
修改 hive-log4j2.properties 檔案
cd /usr/local/hive/conf
vim hive-log4j2.properties
修改 log.dir 屬性,配置存放log檔案路徑,其他屬性默認即可
property.hive.log.dir = /usr/local/hive/logs
2.6 Hive啟動
首先啟動hadoop
cd /usr/local/hadoop
sbin/start-all.sh
jps # 查看是否啟動
啟動 mysql(在mysql賬戶下)
service mysql start
service mysql status # 查看狀態
切換回hadoop啟動hive
hive
Hive啟動報錯1:java.lang.NoSuchMethodError:
com.google.common.base.Preconditions.checkArgument
錯誤原因:系統找不到這個類所在的jar包或者jar包的版本不一樣系統不知道使用哪個,hive啟動報錯的原
因是后者
解決辦法:
1、com.google.common.base.Preconditions.checkArgument這個類所在的jar包為:guava.jar
2、hadoop-3.2.1(路徑:hadoop\share\hadoop\common\lib)中該jar包為 guava-27.0-
jre.jar;而hive-3.1.2(路徑:hive/lib)中該jar包為guava-19.0.1.jar
3、將jar包變成一致的版本:洗掉hive中低版本jar包,將hadoop中高版本的復制到hive的lib中,
再次啟動問題得到解決!
Hive啟動報錯2:提示
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key
Retrieval is not allowed
最簡單的解決方法是在連接后面添加 allowPublicKeyRetrieval=true
并且通過客戶端工具在git、cmd中或Navicat登錄一次mysql即可
如果使用root賬號操作,在訪問HDFS資源時,報Permission denied: user=root, access=WRITE,
inode="/user" 這類Hadoop權限問題問題,
用hadoop賬號開放權限,/usr/local/hadoop/bin/hadoop fs -chmod 777 /
2.7 Hive初始化
初始化前退出hive
exit;
hive操作命令基本與mysql一致,需要先初始化,
cd /usr/local/hive
./bin/schematool -initSchema -dbType mysql
2.8 Hive Web服務開啟
修改hadoop集群的hdfs-site.xml檔案,表示啟用webhdfs
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
修改hadoop集群的core-site.xml檔案,加入如下配置,
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
hadoop.proxyuser.hadoop.hosts 配置成*的意義,表示任意節點使用 hadoop 集群的代理用戶 hadoop 都能訪問 hdfs 集群,hadoop.proxyuser.hadoop.groups 表示代理用戶的組所屬,
修改hive-site.xml檔案,建議在windows修改再上傳,
注意里面部分的value值,master1要改為你安裝hive的主機名,
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>master1</value>
</property>
<property>
<name>hive.server2.webui.port</name>
<value>10002</value>
</property>
<property>
<name>hive.server2.webui.host</name>
<value>master1</value>
</property>
<!-- 默認為false,改為true -->
<property>
<name>hive.server2.active.passive.ha.enable</name>
<value>true</value>
</property>
最后在root用戶下執行hive的tmp權限設定
chmod -R 755 /usr/local/hive/tmp
重新開啟HDFS和hive,需要再打開一個終端視窗,啟動hive服務
hive --service hiveserver2 &
啟動后,可以通過10000埠號連接訪問jdbc:hive2,也可以通過web頁面訪問10002埠號 http://192.168.1.100:10002 其中192.168.1.100修改為你安裝Hive的linux主機的ip地址
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/293122.html
標籤:其他
上一篇:sqoop安裝配置以及報錯修改
