hive(一)hive的安装与基本配置
目錄
一、前提:
二、安裝步驟:
1、上傳jar包至/usr/local/soft
2、解壓并重命名
3、配置環(huán)境變量
?三、配置HIVE文件
1、配置hive-env.sh
2、配置hive-site.xml
?3、配置日志
4、修改默認(rèn)配置文件
?5、上傳MySQL連接jar包
四、修改MySQL編碼
1、?編輯配置文件
2、加入以下內(nèi)容:
3、 重啟mysql
五、初始化HIVE
?六、進(jìn)入hive
七、后續(xù)配置?
八、測試hive
hive中的幾種存儲格式
TextFile格式:文本格式
RCFile:
ORCFile:
Parquet:
其他格式:
九、配置JDBC連接
報(bào)錯(cuò):
連接到JDBC
一、前提:
安裝hive所需要的虛擬機(jī)環(huán)境為虛擬機(jī)安裝有Hadoop并且集群成功,同時(shí)Hadoop需要在啟動狀態(tài)下,同時(shí)需要安裝有mysql。不需要有zookeeper和HA,由于HA中含有大量進(jìn)程,啟動會占用很多資源,建議不要有HA
二、安裝步驟:
1、上傳jar包至/usr/local/soft
將hive-3.1.2上傳到虛擬機(jī)中的/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、配置環(huán)境變量
vim /etc/profile
#增加以下內(nèi)容:
# 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
# 復(fù)制命令
cp hive-env.sh.template hive-env.sh
# 編輯
vim hive-env.sh
# 增加如下內(nèi)容
# 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文件內(nèi)容:
<configuration><property><!-- 查詢數(shù)據(jù)時(shí) 顯示出列的名字 --><name>hive.cli.print.header</name><value>true</value></property><property><!-- 在命令行中顯示當(dāng)前所使用的數(shù)據(jù)庫 --><name>hive.cli.print.current.db</name><value>true</value></property><property><!-- 默認(rèn)數(shù)據(jù)倉庫存儲的位置,該位置為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服務(wù)的端口號以及綁定的主機(jī)名 --><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、配置日志
# 創(chuàng)建日志目錄
cd $HIVE_HOME
mkdir log
# 設(shè)置日志配置
cd conf
cp hive-log4j2.properties.template hive-log4j2.properties
vim hive-log4j2.properties
# 修改以下內(nèi)容:
property.hive.log.dir = /usr/local/soft/hive-3.1.2/log
4、修改默認(rèn)配置文件
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、加入以下內(nèi)容:
[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
?六、進(jìn)入hive
輸入命令:hive
七、后續(xù)配置?
修改mysql元數(shù)據(jù)庫hive,讓其hive支持utf-8編碼以支持中文
登錄mysql:
mysql -u root -p123456
切換到hive數(shù)據(jù)庫:
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).修改分區(qū)表參數(shù),以支持分區(qū)鍵能夠用中文表示
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中創(chuàng)建filetest數(shù)據(jù)庫
命令: create database filetest;
切換filetest數(shù)據(jù)庫:use filetest;
hive中的幾種存儲格式
TextFile格式:文本格式
以TextFile格式創(chuàng)建students表:
使用命令:desc students查看students表的各個(gè)字段:
?在hive根目錄下創(chuàng)建一個(gè)文件夾data用于存放本地文件,將本地中的一個(gè)文本文件上傳到hive根目錄下的data中
向表中插入數(shù)據(jù):
1、通過input命令將該data中的文本文件上傳到hdfs中所創(chuàng)建的該表中,實(shí)現(xiàn)向該表中插入數(shù)據(jù)
在hive中可以使用hdfs中的命令:
查詢結(jié)果:
?2、通過普通的格式對表中進(jìn)行插入數(shù)據(jù)
創(chuàng)建一個(gè)新的表stduents2,使用普通格式進(jìn)行插入數(shù)據(jù):
load data local inpath "/usr/local/soft/hive-3.1.2/data/students.txt" into table students2;
結(jié)果:
進(jìn)入到hdfs中查看:發(fā)現(xiàn)兩種插入方式對數(shù)據(jù)大小沒有變化,都是37M:
?
RCFile:
Hadoop中第一個(gè)列文件格式
?RCFile通常寫操作較慢,具有很好的壓縮和快速查詢功能。
創(chuàng)建RCFile格式的表:
插入數(shù)據(jù):
使用命令:
insert into table students_rcFile select * from students;
插入完成后,查看數(shù)據(jù)大小:為26.44M
?
ORCFile:
Hadoop0.11版本就存在的格式,不僅是一個(gè)列文件格式,而且有著很高的壓縮比
創(chuàng)建ORCFile格式的表:
向表中插入數(shù)據(jù):
?
查看數(shù)據(jù)大小:被壓縮為220.38KB
?
同時(shí)觀察插入數(shù)據(jù)所用時(shí)間,ORCFile格式與RCFile格式插入數(shù)據(jù)相差時(shí)間不大
Parquet:
這是一種嵌套結(jié)構(gòu)的存儲格式,他與語言、平臺無關(guān)
創(chuàng)建Parquet格式的表:
向表中插入數(shù)據(jù):
insert into table students_parquet select * from students;
查看數(shù)據(jù)大小:為3M
?
同時(shí)發(fā)現(xiàn)該格式在插入數(shù)據(jù)時(shí)所花費(fèi)的時(shí)間比ORC格式所花費(fèi)的時(shí)間更少。
其他格式:
SEQUENCEFILE格式:這是一個(gè)Hadoop API提供的一種二進(jìn)制文件格式,實(shí)際生產(chǎn)中不使用
AVRO:是一種支持?jǐn)?shù)據(jù)密集型的二進(jìn)制文件格式,他的格式更為緊湊
九、配置JDBC連接
Hive中有兩種命令模式:CLi模式和JDBC模式
Cli模式就是Shell命令行
JDBC模式就是Hive中的Java,與使用傳統(tǒng)數(shù)據(jù)庫JDBC的方式類似
開啟JDBC連接:
進(jìn)入到/usr/local/soft/hive-3.1.2/bin目錄下,在bin目錄下有一個(gè)hiveserver2文件,通過該文件開啟JDBC連接:
?輸入命令:hive --service hiveserver2開啟JDBC連接
一般情況下當(dāng)出現(xiàn)四個(gè)Hive Session時(shí)就說明JDBC連接被開啟了,也可以通過命令查看是否開啟:
進(jìn)入到 /usr/local/soft/hive-3.1.2/bin目錄下:
輸入:netstat -nplt | grep 10000
該輸入的端口號為hive-site.xml中的hiveserver2服務(wù)的端口號
?
報(bào)錯(cuò):
若輸入該命令報(bào)錯(cuò):
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)
解決辦法:
先關(guān)閉Hadoop集群:stop-all.sh
再進(jìn)入到Hadoop 中的core-site.xml中添加如下內(nèi)容:
<property> <name>fs.trash.interval</name> <value>1440</value> </property>#以下是添加的內(nèi)容: <property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property><property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property> </configuration>注意:這些內(nèi)容需要添在加<configuration>...</configuration>中,否則無法生效
重新啟動集群:start-all.sh
再次啟動hiveserver2
hive --service hiveserver2
該過程較慢,需要等待
連接到JDBC
當(dāng)啟動JDBC連接后,會開啟一個(gè)進(jìn)程RunJar,使用jps命令就可查看
Hive 將元數(shù)據(jù)存儲在數(shù)據(jù)庫中(metastore),目前只支持 mysql、derby
連接到JDBC命令:
進(jìn)入到?/usr/local/soft/hive-3.1.2/bin下,輸入命令:
beeline -u jdbc:hive2://master:10000 -n root連接JDBC:
?在JDBC中輸入命令可以查看當(dāng)前hive中的數(shù)據(jù)庫:show databases;
可以發(fā)現(xiàn)他與hive的區(qū)別在于他使用了一個(gè)表格式將databases顯示出來?
Hive中metastore是hive元數(shù)據(jù)的集中存放地,這里使用的是MySQL
總結(jié)
以上是生活随笔為你收集整理的hive(一)hive的安装与基本配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何彻底卸载MySQL
- 下一篇: 招银网络笔试java_春招|招银网络Ja