hive(一)hive的安装与基本配置
目錄
一、前提:
二、安裝步驟:
1、上傳jar包至/usr/local/soft
2、解壓并重命名
3、配置環境變量
?三、配置HIVE文件
1、配置hive-env.sh
2、配置hive-site.xml
?3、配置日志
4、修改默認配置文件
?5、上傳MySQL連接jar包
四、修改MySQL編碼
1、?編輯配置文件
2、加入以下內容:
3、 重啟mysql
五、初始化HIVE
?六、進入hive
七、后續配置?
八、測試hive
hive中的幾種存儲格式
TextFile格式:文本格式
RCFile:
ORCFile:
Parquet:
其他格式:
九、配置JDBC連接
報錯:
連接到JDBC
一、前提:
安裝hive所需要的虛擬機環境為虛擬機安裝有Hadoop并且集群成功,同時Hadoop需要在啟動狀態下,同時需要安裝有mysql。不需要有zookeeper和HA,由于HA中含有大量進程,啟動會占用很多資源,建議不要有HA
二、安裝步驟:
1、上傳jar包至/usr/local/soft
將hive-3.1.2上傳到虛擬機中的/usr/local/soft目錄下
2、解壓并重命名
tar -zxvf apache-hive-3.1.2-bin.tar.gz
# 重命名
mv apache-hive-3.1.2-bin ?hive-3.1.2/
3、配置環境變量
vim /etc/profile
#增加以下內容:
# HIVE_HOME
export HIVE_HOME=/usr/local/soft/hive-3.1.2/
export PATH=$PATH:$HIVE_HOME/bin
#保存退出 source 使其生效
source /etc/profile
?三、配置HIVE文件
1、配置hive-env.sh
cd $HIVE_HOME/conf
# 復制命令
cp hive-env.sh.template hive-env.sh
# 編輯
vim hive-env.sh
# 增加如下內容
# Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME=/usr/local/soft/hadoop-2.7.6
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/usr/local/soft/hive-3.1.2/conf
2、配置hive-site.xml
上傳hive-site.xml到conf目錄:
hive-site.xml文件內容:
<configuration><property><!-- 查詢數據時 顯示出列的名字 --><name>hive.cli.print.header</name><value>true</value></property><property><!-- 在命令行中顯示當前所使用的數據庫 --><name>hive.cli.print.current.db</name><value>true</value></property><property><!-- 默認數據倉庫存儲的位置,該位置為HDFS上的路徑 --><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value></property><!-- 8.x --><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&useSSL=false&serverTimezone=GMT</value></property><!-- 8.x --><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>123456</value></property><!-- hiveserver2服務的端口號以及綁定的主機名 --><property><name>hive.server2.thrift.port</name> <value>10000</value> </property><property><name>hive.server2.thrift.bind.host</name><value>master</value></property> </configuration>?3、配置日志
# 創建日志目錄
cd $HIVE_HOME
mkdir log
# 設置日志配置
cd conf
cp hive-log4j2.properties.template hive-log4j2.properties
vim hive-log4j2.properties
# 修改以下內容:
property.hive.log.dir = /usr/local/soft/hive-3.1.2/log
4、修改默認配置文件
cp hive-default.xml.template hive-default.xml
?5、上傳MySQL連接jar包
上傳 mysql-connector-java-5.1.37.jar 至 /usr/local/soft/hive/lib目錄中
四、修改MySQL編碼
修改mysql編碼為UTF-8:
1、?編輯配置文件
vim /etc/my.cnf
2、加入以下內容:
[client]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
3、 重啟mysql
systemctl restart mysqld
五、初始化HIVE
schematool -dbType mysql -initSchema
?六、進入hive
輸入命令:hive
七、后續配置?
修改mysql元數據庫hive,讓其hive支持utf-8編碼以支持中文
登錄mysql:
mysql -u root -p123456
切換到hive數據庫:
use hive;
1).修改字段注釋字符集
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
2).修改表注釋字符集
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
3).修改分區表參數,以支持分區鍵能夠用中文表示
alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
4).修改索引注解(可選)
alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
5).修改庫注釋字符集
alter table DBS modify column DESC varchar(4000) character set utf8;
八、測試hive
啟動hive,直接輸入命令:hive
在hive中創建filetest數據庫
命令: create database filetest;
切換filetest數據庫:use filetest;
hive中的幾種存儲格式
TextFile格式:文本格式
以TextFile格式創建students表:
使用命令:desc students查看students表的各個字段:
?在hive根目錄下創建一個文件夾data用于存放本地文件,將本地中的一個文本文件上傳到hive根目錄下的data中
向表中插入數據:
1、通過input命令將該data中的文本文件上傳到hdfs中所創建的該表中,實現向該表中插入數據
在hive中可以使用hdfs中的命令:
查詢結果:
?2、通過普通的格式對表中進行插入數據
創建一個新的表stduents2,使用普通格式進行插入數據:
load data local inpath "/usr/local/soft/hive-3.1.2/data/students.txt" into table students2;
結果:
進入到hdfs中查看:發現兩種插入方式對數據大小沒有變化,都是37M:
?
RCFile:
Hadoop中第一個列文件格式
?RCFile通常寫操作較慢,具有很好的壓縮和快速查詢功能。
創建RCFile格式的表:
插入數據:
使用命令:
insert into table students_rcFile select * from students;
插入完成后,查看數據大小:為26.44M
?
ORCFile:
Hadoop0.11版本就存在的格式,不僅是一個列文件格式,而且有著很高的壓縮比
創建ORCFile格式的表:
向表中插入數據:
?
查看數據大小:被壓縮為220.38KB
?
同時觀察插入數據所用時間,ORCFile格式與RCFile格式插入數據相差時間不大
Parquet:
這是一種嵌套結構的存儲格式,他與語言、平臺無關
創建Parquet格式的表:
向表中插入數據:
insert into table students_parquet select * from students;
查看數據大小:為3M
?
同時發現該格式在插入數據時所花費的時間比ORC格式所花費的時間更少。
其他格式:
SEQUENCEFILE格式:這是一個Hadoop API提供的一種二進制文件格式,實際生產中不使用
AVRO:是一種支持數據密集型的二進制文件格式,他的格式更為緊湊
九、配置JDBC連接
Hive中有兩種命令模式:CLi模式和JDBC模式
Cli模式就是Shell命令行
JDBC模式就是Hive中的Java,與使用傳統數據庫JDBC的方式類似
開啟JDBC連接:
進入到/usr/local/soft/hive-3.1.2/bin目錄下,在bin目錄下有一個hiveserver2文件,通過該文件開啟JDBC連接:
?輸入命令:hive --service hiveserver2開啟JDBC連接
一般情況下當出現四個Hive Session時就說明JDBC連接被開啟了,也可以通過命令查看是否開啟:
進入到 /usr/local/soft/hive-3.1.2/bin目錄下:
輸入:netstat -nplt | grep 10000
該輸入的端口號為hive-site.xml中的hiveserver2服務的端口號
?
報錯:
若輸入該命令報錯:
Error: Could not open client transport with JDBC Uri: jdbc:hive2://master:10000:?
? ? ? ? Failed to open new session: java.lang.RuntimeException:?
? ? ? ? org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException):?
? ? ? ? User: root is not allowed to impersonate root (state=08S01,code=0)
解決辦法:
先關閉Hadoop集群:stop-all.sh
再進入到Hadoop 中的core-site.xml中添加如下內容:
<property> <name>fs.trash.interval</name> <value>1440</value> </property>#以下是添加的內容: <property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property><property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property> </configuration>注意:這些內容需要添在加<configuration>...</configuration>中,否則無法生效
重新啟動集群:start-all.sh
再次啟動hiveserver2
hive --service hiveserver2
該過程較慢,需要等待
連接到JDBC
當啟動JDBC連接后,會開啟一個進程RunJar,使用jps命令就可查看
Hive 將元數據存儲在數據庫中(metastore),目前只支持 mysql、derby
連接到JDBC命令:
進入到?/usr/local/soft/hive-3.1.2/bin下,輸入命令:
beeline -u jdbc:hive2://master:10000 -n root連接JDBC:
?在JDBC中輸入命令可以查看當前hive中的數據庫:show databases;
可以發現他與hive的區別在于他使用了一個表格式將databases顯示出來?
Hive中metastore是hive元數據的集中存放地,這里使用的是MySQL
總結
以上是生活随笔為你收集整理的hive(一)hive的安装与基本配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何彻底卸载MySQL
- 下一篇: 计算机图形学-第一八分象限的DDA算法