在此之前已经搭建好了一个三台机器的hadoop集群:https://blog.csdn.net/QYHuiiQ/article/details/123055389?spm=1001.2014.3001.5501
接下来在此基础上搭建hive。
https://dlcdn.apache.org/hive/
以hadoop02为节点搭建内嵌模式:
[root@hadoop02 wyh]# tar -zxvf apache-hive-2.3.9-bin.tar.gz
#在/etc/profile文件中添加如下配置
HIVE_HOME=/usr/local/wyh/apache-hive-2.3.9-bin
PATH=$PATH:$HIVE_HOME/bin
export HIVE_HOME PATH
#使配置生效
[root@hadoop02 wyh]# source /etc/profile
[root@hadoop02 conf]# pwd
/usr/local/wyh/apache-hive-2.3.9-bin/conf
#拷贝并生成hive-env.sh文件
[root@hadoop02 conf]# cp hive-env.sh.template hive-env.sh
#编辑hive-env.sh,添加如下配置
export HIVE_CONF_DIR=/usr/local/wyh/apache-hive-2.3.9-bin/conf
export JAVA_HOME=/usr/local/wyh/jdk1.8.0_311
export HADOOP_HOME=/usr/local/wyh/hadoop-2.7.5
export HIVE_AUX_JARS_PATH=/usr/local/wyh/apache-hive-2.3.9-bin/lib
#拷贝并生成hive-site.xml
[root@hadoop02 conf]# cp hive-default.xml.template hive-site.xml
[root@hadoop02 conf]# vi hive-site.xml
#将${system:java.io.tmpdir}替换为我们的tmp目录(iotmp,该目录会自动创建)。直接在当前模式下输入以下命令即可替换,不需要切换为insert模式
:%s#${system:java.io.tmpdir}#/usr/local/wyh/apache-hive-2.3.9-bin/iotmp#g
#执行完之后,会提示我们替换了4个地方。
#再将系统用户名替换为root
:%s/${system:user.name}/root/g
#执行完之后提示我们修改了3个地方。
修改完成之后,保存并退出。
内嵌模式默认使用的数据库是derby。
进到家目录下:
[root@hadoop02 conf]# cd
[root@hadoop02 ~]# pwd
/root
初始化hive:
[root@hadoop02 ~]# schematool --initSchema -dbType derby
[root@hadoop02 ~]# hive
启动成功之后就会进入到hive的交互界面:
hive>
>
>
> show databases;
OK
default
Time taken: 7.683 seconds, Fetched: 1 row(s)
hive> show tables;
OK
Time taken: 0.101 seconds
#创建一个数据库test_db
hive> create database test_db;
OK
Time taken: 0.127 seconds
hive> show databases;
OK
default
test_db
Time taken: 0.004 seconds, Fetched: 2 row(s)
hive> quit;
这里要注意的是,在初始化hive时,我们是在家目录下初始化的,所以启动hive后我们所有数据的元数据都是保存在家目录下的,可以看到家目录下已经生成了下面的两个文件:
可以大致看下这两个文件/目录大概保存了哪些内容:
所以,在之后我们再想使用hive时,就必须还在家目录下启动hive才能读到这两个文件,从而读到元数据,在其他目录下启动hive就会报错。
以上就是hive内嵌模式的简单实现。