目录
Hive 安装
Hive 安装地址
Hive 安装部署
安装 Hive
启动并使用 Hive
Hive 安装
Hive 安装地址
1)Hive 官网地址
Apache Hivehttp://hive.apache.org/
2)文档查看地址
GettingStarted - Apache Hive - Apache Software Foundationhttps://cwiki.apache.org/confluence/display/Hive/GettingStarted
3)下载地址
Index of /dist/hivehttp://archive.apache.org/dist/hive/
4)GitHub 地址
https://github.com/apache/hivehttps://github.com/apache/hive
Hive 安装部署
安装 Hive
-
把
apache-hive-3.1.3-bin.tar.gz
上传到 Linux 的/opt/software
目录下 -
解压
apache-hive-3.1.3-bin.tar.gz
到/opt/module/
目录下面[lzl@hadoop12 software]$ tar -zxvf /opt/software/apache-hive-3.1.3-bin.tar.gz -C /opt/module/
-
修改
apache-hive-3.1.3-bin.tar.gz
的名称为hive
[lzl@hadoop12 software]$ mv /opt/module/apache-hive-3.1.3-bin/ /opt/module/hive
-
修改
/etc/profile.d/my_env.sh
,添加环境变量[lzl@hadoop12 software]$ sudo vim /etc/profile.d/my_env.sh
(1)添加内容
# HIVE_HOME export HIVE_HOME=/opt/module/hive export PATH=$PATH:$HIVE_HOME/bin
(2)source 一下
[lzl@hadoop12 hive]$ source /etc/profile.d/my_env.sh
-
初始化元数据库(默认是 Derby 数据库)
[lzl@hadoop12 hive]$ bin/schematool -dbType derby -initSchema
启动并使用 Hive
-
启动 Hive
[lzl@hadoop12 hive]$ bin/hive
-
使用 Hive
hive> show databases; hive> show tables; hive> create table stu(id int, name string); hive> insert into stu values(1,"ss"); hive> select * from stu;
观察 HDFS 的路径
/user/hive/warehouse/stu
,体会 Hive 与 Hadoop 之间的关系。- Hive 中的表在 Hadoop 中是目录;
- Hive 中的数据在 Hadoop 中是文件。
-
在 XShell 窗口中开启另一个窗口开启 Hive,在
/tmp/lzl
目录下监控hive.log
文件[lzl@hadoop12 lzl]$ tail -f hive.log
Caused by: ERROR XSDB6: Another instance of Derby may have already booted the database /opt/module/hive/metastore_db.at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) at org.apache.derby.impl.store.raw.data.BaseDataFileFactory.privGetJBMSLockOnDB(Unknown Source) at org.apache.derby.impl.store.raw.data.BaseDataFileFactory.run(Unknown Source) ...
原因在于 Hive 默认使用的元数据库为 Derby。Derby 数据库的特点是同一时间只允许一个客户端访问。如果多个 Hive 客户端同时访问,就会报错。由于在企业开发中,都是多人协作开发,需要多客户端同时访问 Hive,怎么解决呢?我们可以将 Hive 的元数据改为用 MySQL 存储,MySQL 支持多客户端同时访问。
-
首先退出 Hive 客户端。然后在 Hive 的安装目录下将
derby.log
和metastore_db
删除,顺便将 HDFS 上目录删除hive> quit;
[lzl@hadoop12 hive]$ rm -rf derby.log metastore_db [lzl@hadoop12 hive]$ hadoop fs -rm -r /user
-
删除 HDFS 中
/user/hive/warehouse/stu
中的数据