1 下载并安装
1.1 Hadoop安装
参考另一篇博客:Hadoop 部署
1.2 安装包下载
可通过下面网站下载:
- 官网:https://dlcdn.apache.org/hive/。
- 清华源:https://mirrors.tuna.tsinghua.edu.cn/apache/hive/。
比如下载apache-hive-4.0.1-bin.tar.gz
,将其上传到服务器上。
1.3 安装
解压安装包:
tar -zxvf apache-hive-4.0.1-bin.tar.gz -C /opt/hive/
1.4 配置文件
在conf目录下需要存在hive-site.xml
文件,可以创建或复制hive-default.xml.template
。
- 创建
并添加内容:touch conf/hive-site.xml
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <!-- Hive默认在HDFS的工作目录 --> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> </property> </configuration>
- 复制
hive-default.xml.template
cp conf/hive-default.xml.template conf/hive-site.xml
2 元数据库
元数据可以存储在Derby(安装包中自带的)或MySQL中,推荐使用MySQL。
2.1 Derby
直接初始化就可以:
bin/schematool -dbType derby -initSchema
在Hive目录下看到生成metastore_db
就是成功了。
2.2 MySQL
2.2.1 Mysql安装
如果安装了Mariadb
,可以先将其卸载,以防止和MySql产生冲突。
可以使用在线安装:
sudo apt-get install mysql-server-8.0
关于MySQL部署与配置这里不做详细说明。
2.2.2 驱动
将驱动jar包复制到Hive根目录下的lib文件夹中。下载驱动jar包,有以下方式:
-
官网:https://downloads.mysql.com/archives/c-j/。下载后解压缩,只要jar包即可。
-
Maven仓库:https://mvnrepository.com/artifact/com.mysql/mysql-connector-j。
2.2.3 配置
在conf文件夹下的hive-site.xml
文件的<configuration>...</configuration>
中添加以下内容:
<!-- jdbc连接的URL -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node1:3306/metastore?createDatabaseIfNotExist=true</value>
</property>
<!-- jdbc连接的Driver-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- jdbc连接的username-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>cluster</value>
</property>
<!-- jdbc连接的password -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
2.2.4 初始化
bin/schematool -dbType mysql -initSchema
3 HiveServer2 配置
HiveServer2是Apache Hive的服务器端组件,提供远程SQL查询和交互式数据分析的支持。它通过Thrift服务和JDBC/ODBC接口,允许用户从多种客户端工具访问Hive数据仓库。
3.1 Hadoop配置
HiveServer2提供用户模拟功能,使得它能够模拟客户端用户的身份去访问Hadoop集群。这一功能依赖于Hadoop的代理用户(proxy user)机制。在配置HiveServer2时,需要将其启动用户设置为Hadoop的代理用户,并在Hadoop的配置文件core-site.xml
的<configuration>...</configuration>
中添加相应的代理用户配置:
<!-- 配置Hadoop代理用户cluster可以代理的主机 -->
<property>
<name>hadoop.proxyuser.cluster.hosts</name>
<value>*</value> <!-- * 表示所有主机 -->
</property>
<!-- 配置Hadoop代理用户cluster可以代理的主机 -->
<property>
<name>hadoop.proxyuser.cluster.hosts</name>
<value>*</value> <!-- * 表示所有主机 -->
</property>
<!-- 配置Hadoop代理用户cluster可以代理的用户 -->
<property>
<name>hadoop.proxyuser.cluster.users</name>
<value>*</value> <!-- * 表示所有用户 -->
</property>
当用户在客户端提交SQL语句时,HiveServer2会模拟该用户的身份去请求HDFS或者提交计算任务到Yarn上,然后将结果返回给客户端。这一功能确保了用户权限的隔离,使得每个用户只能访问自己有权限的数据,从而提高了数据的安全性。
3.2 Hive 配置
在conf文件夹下的hive-site.xml
文件的<configuration>...</configuration>
中添加以下内容:
<!-- 指定hiveserver2连接的host -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>node1</value>
</property>
<!-- 指定hiveserver2连接的端口号 -->
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
3.3 启动
nohup bin/hive --service hiveserver2 >/dev/null 2>&1 &
4 测试
bin/beeline -n cluster -u jdbc:hive2://node1:10000
进入如下界面:
然后就可以使用SQL语句操作数据库了。