07-Hive环境搭建

星期一, 4月 7, 2025 | 8分钟阅读

MyraZ
07-Hive环境搭建

关于Linux系统大数据环境搭建——07-Hive环境搭建。

07-Hive环境搭建

Hive版本:Hive 3.1.2

单节点环境搭建

目标环境

image-20250407203124382

注意:安装前请确认当前集群已安装了 MySQL 数据库和 Hadoop 的 HA + YARN。

安装

解压

​ 将准备好的安装包上传至 node01,然后解压:

[root@node01 ~]# tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/yjx/
[root@node01 ~]# rm apache-hive-3.1.2-bin.tar.gz -rf

修改配置文件

​ 修改环境配置脚本文件 hive-env.sh

[root@node01 ~]# cd /opt/yjx/apache-hive-3.1.2-bin/conf/
[root@node01 conf]# cp hive-env.sh.template hive-env.sh
[root@node01 conf]# vim hive-env.sh

​ 在文件末尾添加以下内容:

HADOOP_HOME=/opt/yjx/hadoop-3.3.4/
export HIVE_CONF_DIR=/opt/yjx/apache-hive-3.1.2-bin/conf
export HIVE_AUX_JARS_PATH=/opt/yjx/apache-hive-3.1.2-bin/lib

​ 修改配置文件 hive-site.xml

[root@node01 conf]# cp hive-default.xml.template hive-site.xml
[root@node01 conf]# vim hive-site.xml

​ 首先删除 configuration 节点中的所有内容,然后再在 configuration 节点中添加以下内容:

<!-- 数据库相关配置 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node01:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.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>
<!-- 自动创建表 -->
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
</property>
<!-- 强制 MetaStore 的 schema 一致性,开启的话会校验在 MetaStore 中存储的信息的版本和 Hive 的 jar 包中的版
本一致性,并且关闭自动 schema 迁移,用户必须手动的升级 Hive 并且迁移 schema。关闭的话只会在版本不一致时给出警
告,默认是 false 不开启 -->
<!-- 元数据校验 -->
<property>
<name>hive.metastore.schema.verification</name>
<!-- MySQL8 这里一定要设置为 true,不然后面 DROP TABLE 可能会出现卡住的情况 -->
<value>true</value>
</property>
<!-- 美化打印数据 -->
<!-- 是否显示表名与列名,默认值为 false -->
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<!-- 是否显示数据库名,默认值为 false -->
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
<!-- Hive 数据仓库的位置(HDFS 中的位置) -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/hive/warehouse</value>
</property>
<!-- HiveServer2 通过 Thrift 访问 MetaStore -->
<!-- 配置 Thrift 服务绑定的服务器地址,默认为 127.0.0.1 -->
<!--
<property>
<name>hive.server2.thrift.bind.host</name>
<value>127.0.0.1</value>
</property>
-->
<!-- 配置 Thrift 服务监听的端口,默认为 10000 -->
<!--
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
-->
<!-- HiveServer2 的 WEBUI -->
<!-- 页面中会显示当前链接的会话,包括IP、用户名、当前执行的操作(查询)数量、链接总时长、空闲时长等 -->
<property>
<name>hive.server2.webui.host</name>
<value>node01</value>
</property>
<property>
<name>hive.server2.webui.port</name>
<value>10002</value>
</property>
<!-- 指定 hive.metastore.uris 的 port,为了启动 MetaStore 服务的时候不用指定端口 -->
<!-- hive ==service metastore -p 9083 & | hive ==service metastore -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://node01:9083</value>
</property>
<!-- 客户端连接 Hive 元数据的超时时间,默认为 600s -->
<!-- 需要一个时间单位(d/day, h/hour, m/min, s/sec, ms/msec, us/usec, ns/nsec),如果未指定,默认为秒 -->
<property>
<name>hive.metastore.client.socket.timeout</name>
<value>600s</value>
</property>

注意:防止 xml 解析注释出问题,用 == 表示 –。实际为:hive –service metastore -p 9083 & | hive –service metastore

​ 前面提到 Hive 实际上底层跑的仍然是 MapReduce 程序,那么我们需要让它拥有在 Hadoop 上运行的权限,修改Hadoop 的配置文件 core-site.xml

[root@node01 conf]# vim /opt/yjx/hadoop-3.3.4/etc/hadoop/core-site.xml

​ 在 configuration 节点中末尾处添加以下内容:

<!-- 该参数表示可以通过 httpfs 接口访问 HDFS 的 IP 地址限制 -->
<!-- 配置 root(超级用户) 允许通过 httpfs 方式访问 HDFS 的主机名、域名 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<!-- 通过 httpfs 接口访问的用户获得的群组身份 -->
<!-- 配置允许通过 httpfs 方式访问的客户端的用户组 -->
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>

提示:这里的 root 表示安装 Hive 时的用户,实际上是为 Hive 在 Hadoop 上创建了一个代理用户。

配置日志组件

​ 首先创建日志目录:

[root@node01 conf]# mkdir /opt/yjx/apache-hive-3.1.2-bin/logs
[root@node01 conf]# cp hive-log4j2.properties.template hive-log4j2.properties
[root@node01 conf]# vim hive-log4j2.properties

​ 将 property.hive.log.dir = ${sys:java.io.tmpdir}/${sys:user.name} 替换为:

property.hive.log.dir = /opt/yjx/apache-hive-3.1.2-bin/logs

添加驱动包

​ 将 MySQL 驱动包(注意自己的 MySQL 版本)添加到 Hive 的 lib 目录下:

[root@node01 ~]# mv mysql-connector-java-8.0.18.jar /opt/yjx/apache-hive-3.1.2-bin/lib/

拷贝至其他节点

​ 将 node01 已配置好的 Hive 拷贝至 node02 和 node03。

[root@node02 ~]# scp -r root@node01:/opt/yjx/apache-hive-3.1.2-bin /opt/yjx/
[root@node03 ~]# scp -r root@node01:/opt/yjx/apache-hive-3.1.2-bin /opt/yjx/
# 或者使用分发脚本
[root@node01 ~]# yjxrsync /opt/yjx/apache-hive-3.1.2-bin

​ 将 node01 修改后的 Hadoop 的 core-stie.xml 配置文件拷贝至 node02 和 node03。

[root@node01 ~]# scp /opt/yjx/hadoop-3.3.4/etc/hadoop/core-site.xml root@node02:/opt/yjx/hadoop-
3.3.4/etc/hadoop/
[root@node01 ~]# scp /opt/yjx/hadoop-3.3.4/etc/hadoop/core-site.xml root@node03:/opt/yjx/hadoop-
3.3.4/etc/hadoop/
# 或者使用分发脚本
[root@node01 ~]# yjxrsync /opt/yjx/hadoop-3.3.4/etc/hadoop/core-site.xml

配置环境变量

​ 三个节点修改环境变量 vim /etc/profile ,在文件末尾添加以下内容:

export HIVE_HOME=/opt/yjx/apache-hive-3.1.2-bin
export PATH=$HIVE_HOME/bin:$PATH

​ 修改完成后 source /etc/profile 重新加载环境变量。

启动

​ 检查 MySQL 服务是否启动。

[root@node01 ~]# systemctl status mysqld

​ 启动 ZooKeeper(三台机器都需要执行)。

zkServer.sh start
zkServer.sh status

​ 启动 HDFS + YARN。

[root@node01 ~]# start-all.sh

​ 启动 JobHistory。

[root@node01 ~]# mapred --daemon start historyserver

​ 初始化 hive 数据库(第一次启动时执行)。

[root@node01 ~]# schematool -dbType mysql -initSchema

​ 初始化数据库结果如下:

image-20250407204232382

​ 启动 MetaStore 服务。

# 前台启动,学习期间推荐使用这种方式
[root@node01 ~]# hive --service metastore
# 后台启动
[root@node01 ~]# nohup hive --service metastore > /dev/null 2>&1 &

​ 启动 HiveServer2 服务。

# 前台启动,学习期间推荐使用这种方式
[root@node01 ~]# hiveserver2
# 后台启动
[root@node01 ~]# nohup hiveserver2 > /dev/null 2>&1 &

客户端连接

​ 客户端连接方式一。

[root@node03 ~]# hive
# 退出命令行命令:exit;

​ 客户端连接方式二。

[root@node03 ~]# beeline -u jdbc:hive2://node01:10000 -n root
# 退出命令行命令:!exit 或者 !quit

​ 客户端连接方式三。

  • 方法一:直接执行 beeline -u jdbc:hive2://node01:10000 -n root
  • 方法二:先执行 beeline ,再执行 !connect jdbc:hive2://node01:10000 ,然后输入用户名,这个用户名就是安装 Hadoop 集群的用户名,无密码的话直接回车即可

10000 为 hive.server2.thrift.port 的默认值(Thrift Server 的 TCP 端口默认为 10000)。

关闭

​ 先关闭 HiveServer2 服务和 MetaStore 服务(前台启动的话直接 Ctrl + C 即可)。

​ 再关闭 JobHistory 和 Hadoop。

[root@node01 ~]# mapred --daemon stop historyserver
[root@node01 ~]# stop-all.sh

​ 再关闭 ZooKeeper(三台机器都需要执行)。

zkServer.sh stop

​ 环境搭建成功后删除安装包, shutdown -h now 关机拍摄快照。

高可用环境搭建

目标环境

image-20250407204803709

注意:安装前请确认当前集群已安装了 MySQL 数据库和 Hadoop 的 HA + YARN。

安装

解压

​ 将准备好的安装包上传至 node01,然后解压:

[root@node01 ~]# tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/yjx/
[root@node01 ~]# rm apache-hive-3.1.2-bin.tar.gz -rf

修改配置文件

​ 修改环境配置脚本文件 hive-env.sh

[root@node01 ~]# cd /opt/yjx/apache-hive-3.1.2-bin/conf/
[root@node01 conf]# cp hive-env.sh.template hive-env.sh
[root@node01 conf]# vim hive-env.sh

​ 在文件末尾添加以下内容:

HADOOP_HOME=/opt/yjx/hadoop-3.3.4/
export HIVE_CONF_DIR=/opt/yjx/apache-hive-3.1.2-bin/conf
export HIVE_AUX_JARS_PATH=/opt/yjx/apache-hive-3.1.2-bin/lib

​ 修改配置文件 hive-site.xml

[root@node01 conf]# cp hive-default.xml.template hive-site.xml
[root@node01 conf]# vim hive-site.xml

​ 首先删除 configuration 节点中的所有内容,然后再在 configuration 节点中添加以下内容:

<!-- 数据库相关配置 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node01:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.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>
<!-- 自动创建表 -->
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
</property>
<!-- 强制 MetaStore 的 schema 一致性,开启的话会校验在 MetaStore 中存储的信息的版本和 Hive 的 jar 包中的版
本一致性,并且关闭自动 schema 迁移,用户必须手动的升级 Hive 并且迁移 schema。关闭的话只会在版本不一致时给出警
告,默认是 false 不开启 -->
<!-- 元数据校验 -->
<property>
<name>hive.metastore.schema.verification</name>
<!-- MySQL8 这里一定要设置为 true,不然后面 DROP TABLE 可能会出现卡住的情况 -->
<value>true</value>
</property>
<!-- 美化打印数据 -->
<!-- 是否显示表名与列名,默认值为 false -->
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<!-- 是否显示数据库名,默认值为 false -->
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
<!-- Hive 数据仓库的位置(HDFS 中的位置) -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/hive/warehouse</value>
</property>
<!-- 是否启用 HiveServer2 的动态服务发现功能(是否开启高可用) -->
<property>
<name>hive.server2.support.dynamic.service.discovery</name>
<value>true</value>
</property>
<!-- HiveServer2 在支持动态服务发现时使用的 ZooKeeper 中的父节点 -->
<property>
<name>hive.server2.zookeeper.namespace</name>
<value>hiveserver2-ha</value>
</property>
<!-- ZooKeeper 服务器地址 -->
<property>
<name>hive.zookeeper.quorum</name>
<value>node01:2181,node02:2181,node03:2181</value>
</property>
<!-- ZooKeeper 服务器端口 -->
<!-- 如果在 hive.zookeeper.quorum 中指定的 ZooKeeper 服务器列表不包含端口号,则使用此值 -->
<property>
<name>hive.zookeeper.client.port</name>
<value>2181</value>
</property>
<!-- HiveServer2 通过 Thrift 访问 MetaStore -->
<!-- 配置 Thrift 服务绑定的服务器地址,默认为 127.0.0.1 -->
<!--
<property>
<name>hive.server2.thrift.bind.host</name>
<value>127.0.0.1</value>
</property>
-->
<!-- 配置 Thrift 服务监听的端口,默认为 10000 -->
<!--
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
-->
<!-- HiveServer2 的 WEBUI -->
<!-- 页面中会显示当前链接的会话,包括IP、用户名、当前执行的操作(查询)数量、链接总时长、空闲时长等 -->
<property>
<name>hive.server2.webui.host</name>
<value>node01</value>
</property>
<property>
<name>hive.server2.webui.port</name>
<value>10002</value>
</property>
<!-- 指定 hive.metastore.uris 的 port,为了启动 MetaStore 服务的时候不用指定端口 -->
<!-- hive ==service metastore -p 9083 & | hive ==service metastore -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://node01:9083,thrift://node02:9083</value>
</property>
<!-- 客户端连接 Hive 元数据的超时时间,默认为 600s -->
<!-- 需要一个时间单位(d/day, h/hour, m/min, s/sec, ms/msec, us/usec, ns/nsec),如果未指定,默认为秒 -->
<property>
<name>hive.metastore.client.socket.timeout</name>
<value>600s</value>
</property>    

注意:防止 xml 解析注释出问题,用 == 表示 –。实际为:hive –service metastore -p 9083 & | hive –service metastore

​ 前面提到 Hive 实际上底层跑的仍然是 MapReduce 程序,那么我们需要让它拥有在 Hadoop 上运行的权限,修改Hadoop 的配置文件 core-site.xml

[root@node01 conf]# vim /opt/yjx/hadoop-3.3.4/etc/hadoop/core-site.xml

​ 在 configuration 节点中末尾处添加以下内容:

<!-- 该参数表示可以通过 httpfs 接口访问 HDFS 的 IP 地址限制 -->
<!-- 配置 root(超级用户) 允许通过 httpfs 方式访问 HDFS 的主机名、域名 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<!-- 通过 httpfs 接口访问的用户获得的群组身份 -->
<!-- 配置允许通过 httpfs 方式访问的客户端的用户组 -->
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>

提示:这里的 root 表示安装 Hive 时的用户,实际上是为 Hive 在 Hadoop 上创建了一个代理用户。

配置日志组件

​ 首先创建日志目录:

[root@node01 conf]# mkdir /opt/yjx/apache-hive-3.1.2-bin/logs
[root@node01 conf]# cp hive-log4j2.properties.template hive-log4j2.properties
[root@node01 conf]# vim hive-log4j2.properties

​ 将 property.hive.log.dir = ${sys:java.io.tmpdir}/${sys:user.name} 替换为:

property.hive.log.dir = /opt/yjx/apache-hive-3.1.2-bin/logs

添加驱动包

​ 将 MySQL 驱动包(注意自己的 MySQL 版本)添加到 Hive 的 lib 目录下:

[root@node01 ~]# mv mysql-connector-java-8.0.18.jar /opt/yjx/apache-hive-3.1.2-bin/lib/

拷贝至其他节点

​ 将 node01 已配置好的 Hive 拷贝至 node02 和 node03。

[root@node02 ~]# scp -r root@node01:/opt/yjx/apache-hive-3.1.2-bin /opt/yjx/
[root@node03 ~]# scp -r root@node01:/opt/yjx/apache-hive-3.1.2-bin /opt/yjx/

# 或者使用分发脚本
[root@node01 ~]# yjxrsync /opt/yjx/apache-hive-3.1.2-bin

提示:node02 服务器需要修改 hive-site.xml 配置文件中 hive.server2.webui.host 属性的值为 node02

​ 将 node01 修改后的 Hadoop 的 core-stie.xml 配置文件拷贝至 node02 和 node03。

[root@node01 ~]# scp /opt/yjx/hadoop-3.3.4/etc/hadoop/core-site.xml root@node02:/opt/yjx/hadoop-
3.3.4/etc/hadoop/
[root@node01 ~]# scp /opt/yjx/hadoop-3.3.4/etc/hadoop/core-site.xml root@node03:/opt/yjx/hadoop-
3.3.4/etc/hadoop/

# 或者使用分发脚本
[root@node01 ~]# yjxrsync /opt/yjx/hadoop-3.3.4/etc/hadoop/core-site.xml

配置环境变量

​ 三个节点修改环境变量 vim /etc/profile ,在文件末尾添加以下内容:

export HIVE_HOME=/opt/yjx/apache-hive-3.1.2-bin
export PATH=$HIVE_HOME/bin:$PATH

​ 修改完成后 source /etc/profile 重新加载环境变量。

启动

​ 检查 MySQL 服务是否启动。

[root@node01 ~]# systemctl status mysqld

​ 启动 ZooKeeper(三台机器都需要执行)。

zkServer.sh start
zkServer.sh status

​ 启动 HDFS + YARN。

[root@node01 ~]# start-all.sh

​ 启动 JobHistory。

[root@node01 ~]# mapred --daemon start historyserver

​ 初始化 hive 数据库(第一次启动时执行)。

[root@node01 ~]# schematool -dbType mysql -initSchema

​ 初始化数据库结果如下:

image-20250407204232382

​ 启动 MetaStore 服务。

# 前台启动,学习期间推荐使用这种方式
[root@node01 ~]# hive --service metastore
[root@node02 ~]# hive --service metastore
# 后台启动
[root@node01 ~]# nohup hive --service metastore > /dev/null 2>&1 &
[root@node02 ~]# nohup hive --service metastore > /dev/null 2>&1 &

​ 启动 HiveServer2 服务。

# 前台启动,学习期间推荐使用这种方式
[root@node01 ~]# hiveserver2
[root@node02 ~]# hiveserver2
# 后台启动
[root@node01 ~]# nohup hiveserver2 > /dev/null 2>&1 &
[root@node02 ~]# nohup hiveserver2 > /dev/null 2>&1 &

客户端连接

​ 客户端连接方式一。

[root@node03 ~]# hive
# 退出命令行命令:exit;

​ 客户端连接方式二。

​ 当 HiveServer2 注册至 ZooKeeper 以后,JDBC 连接的 URL 格式需要为:

jdbc:hive2://<zookeeper quorum>/<db>;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2-ha
  • <zookeeper quorum> :ZooKeper 服务器列表,例如 node01:2181,node02:2181,node03:2181
  • <db> :要连接至 Hive 的哪个数据库,默认为 default;
  • serviceDiscoveryMode :指定模式为 zooKeeper;
  • zooKeeperNamespace :指定 ZooKeper 中的 Namespace,即参数hive.server2.zookeeper.namespace 所定义的值。 其他参数请参考官网:https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients#HiveServer2Clients-ConnectionURLWhenZooKeeperServiceDiscoveryIsEnabled 完整连接方式如下:
  • 方法一:直接执行 beeline -u "jdbc:hive2://node01:2181,node02:2181,node03:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2-ha" -n root
  • 方法二:先执行 beeline ,再执行 !connect jdbc:hive2://node01:2181,node02:2181,node03:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2-ha ,然后输入用户名,这个用户名就是安装 Hadoop 集群的用户名,无密码的话直接回车即可
[root@node03 ~]# beeline -u
"jdbc:hive2://node01:2181,node02:2181,node03:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=h
iveserver2-ha" -n root
...
Connecting to
jdbc:hive2://node01:2181,node02:2181,node03:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hi
veserver2-ha
# 注意下面这行:连接至 node01:10000
[main]: INFO jdbc.HiveConnection: Connected to node01:10000
Connected to: Apache Hive (version 3.1.3)
Driver: Hive JDBC (version 3.1.3)
Transaction isolation: TRANSACTION_REPEATABLE_READ
Beeline version 3.1.3 by Apache Hive
0: jdbc:hive2://node01:2181,node02:2181,node03:2181>

​ 关闭其中一个 Hiveserver2 服务,例如 node01,重新使用 beeline 进行连接结果如下。

# 先执行 beeline
[root@node03 ~]# beeline
...
Beeline version 3.1.3 by Apache Hive
# 再执行 !connect
beeline> !connect
jdbc:hive2://node01:2181,node02:2181,node03:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hi
veserver2-ha
Connecting to
jdbc:hive2://node01:2181,node02:2181,node03:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hi
veserver2-ha
# 然后输入用户名,这个用户名就是安装 Hadoop 集群的用户名,无密码的话直接回车即可
Enter username for jdbc:hive2://node01:2181,node02:2181,node03:2181/: root
Enter password for jdbc:hive2://node01:2181,node02:2181,node03:2181/:
# 注意下面这行:连接至 node02:10000
[main]: INFO jdbc.HiveConnection: Connected to node02:10000
Connected to: Apache Hive (version 3.1.3)
Driver: Hive JDBC (version 3.1.3)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://node01:2181,node02:2181,node03:2181>

关闭

​ 先关闭 HiveServer2 服务和 MetaStore 服务(前台启动的话直接 Ctrl + C 即可)。 ​ 再关闭 JobHistory 和 Hadoop。

[root@node01 ~]# mapred --daemon stop historyserver
[root@node01 ~]# stop-all.sh

​ 再关闭 ZooKeeper(三台机器都需要执行)。

zkServer.sh stop

​ 环境搭建成功后删除安装包, shutdown -h now 关机拍摄快照。

© 2024 - 2025 雪中烛

 

在线工具资源网站

在线工具官网

ProcessOn:👉ProcessOn在线作图

腾讯文档:👉腾讯文档

FlowUs 息流:👉FlowUs 息流

Mermaid Live Editor:👉在线流程图和图表编辑器 - 美人鱼实时编辑器

ME2在线工具(加密工具):👉ME2在线工具-在线开发学习生活工具箱

Textln:👉Textln文本智能云平台-通用文本解析

MinerU:👉MinerU数据提取工具

Crontab:👉Cron Expression Examples - Crontab.guru

正则表达式测试网站:👉regex101: build, test, and debug regex

技术资源网站

技术资源官网

Spring:👉Spring官网

MyBatis中文网 :👉MyBatis 中文网

Redis中文网:👉Redis中文网

Zookeeper:👉Apache ZooKeeper官网

Raft算法:👉Raft Consensus Algorithm官网

Hadoop:👉Apache Hadoop官网

Hive:👉Apache Hive官网

Phoenix:👉Apache Phoenix官网

Bootstrap中文网:👉Bootstrap中文网

Element:👉组件 | Element

Layui :👉Layui - 极简模块化前端 UI 组件库(官方文档)

FreeMarker :👉FreeMarker 中文官方参考手册

ztree树插件: 👉zTree – jQuery 树插件官网

x File Storage:👉x File Storage官网