简介:面向初次部署Hive集群的企业技术人员、个人学习研究者及大数据平台运维人员,资源以docx格式提供,共1个文件,压缩包整体仅44KB。文档内容围绕Hive安装与配置全流程展开,从下载解压、目录重命名、环境变量配置,到hive-env.sh与hive-site.xml的创建修改,并重点说明使用MySQL作为元数据存储的配置方法,步骤清晰、命令具体,便于直接阅读和按需修改。
目前已有704人学习下载。文档基于Linux操作与HDFS基础知识,对hive.metastore.warehouse.dir、hive.metastore.schema.verification、hive.metastore.db.type等关键配置项逐一解释,同时总结了配置过程中常见问题与注意事项。通过学习,读者可独立完成Hive的安装与基础配置,理解各项配置参数的作用与含义,减少环境搭建中的试错成本,适合作为大数据入门与自查的参考资料。
1. BigData 技术里的 Hive 安装配置:解压只是开始,元数据库才是深坑
在大数据技术里,Hive 的安装与配置通常被排在一长串任务清单的中间位置,看起来无非是下载、解压、改几个配置文件。但真正动手时,很多人会栽在 MySQL 元数据库这一环:包解压了、环境变量也加了,hive 命令一执行却报错,日志里全是 metastore 连接失败。
这份资源把 Hive 安装与配置的完整流程拆成了可复现的步骤,覆盖 HDFS 依赖检查、环境变量、hive-env.sh、hive-site.xml、MySQL 元数据库初始化与 HiveServer2 连接验证。我照着里面给的路径和命令走了一遍,又把配置里容易翻车的点整理在对应章节。
适合初次部署 Hive 集群的技术支持人员,也适合在自己机器上搭一套 BigData 学习环境的开发者。如果你已经看过一堆文档却卡在某条连接报错上,这篇会更接近你要的那份“后悔药”。
2. 下载解压与目录规划:Hive 与 HDFS 的第一次握手
Hive 本身不存数据,它只是把 SQL 翻译成 HDFS 上的 MapReduce、Tez 或 Spark 任务。所以安装配置的第一步不是急着解压,而是先确认你的 Hadoop 集群是什么版本,再决定下载哪个 Hive 包。这一步判断错了,后面所有配置都可能白做。
2.1 版本选择:先看 Hadoop,再定 Hive
很多人习惯直接从官网下载最新版 Hive,装完才发现和底层 Hadoop 客户端版本对不上,启动时报各种 unrecognized 异常。Hive 3.1.2 是目前生产环境里比较常见的选择,但你的 Hadoop 版本如果太老,这套配置仍然可能带不动。
我一般会在解压之前先执行一条命令:
hadoop version输出里会显示 Hadoop 的大版本号,比如 2.10.x 或 3.1.x,以你实际安装的集群为准。确认版本后,去 Hive 官网下载页面找对应的二进制包,命名一般是apache-hive-3.1.2-bin.tar.gz。后缀里的-bin表示编译好的二进制发行版,不需要再自己用 Maven 构建;如果你手滑下载了-src.tar.gz,那还要先编译,配置步骤会多出一大截,非必要别碰。
另外,下载完先别急着解压,看一眼 tar 包大小。Hive 安装包一般在 100MB 上下,解压后接近 300MB。如果服务器/export分区快满了,解压到一半会报 write error,这时候再清理磁盘很被动。
2.2 解压、重命名与目录权限
解压命令看起来非常简单,但里面对应几个参数值得说清楚:
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /export/servers/ mv /export/servers/apache-hive-3.1.2-bin /export/servers/hive ls -l /export/servers/hive-z表示用 gzip 解压,-x是解包,-v会在终端打印过程文件,-f指定压缩包文件名。-C指定解压目标目录,这里解压到/export/servers/,然后通过mv把目录重命名为hive。重命名这一步不是强迫症,而是后续环境变量和配置文件里会反复出现这个路径,路径越短越不容易写错。你可以在hive-site.xml里试想一下,如果目录名是apache-hive-3.1.2-bin,每次写 JDBC 和临时目录时手误概率会直线上升。
解压完成后,我习惯先确认目录结构完整:
ls $HIVE_HOME/binbin 目录下应该能看到 hive、beeline、schematool、hiveserver2 等脚本。如果 bin 目录里空荡荡,大概率是解压不完整,或者 tar 包本身损坏,重新下载比排查更省时间。
如果是用专用账户启动 Hive,记得修正目录属主。比如 Hive 服务跑在hive用户下:
chown -R hive:hive /export/servers/hive个人开发机直接用当前用户跑,可以跳过这一步。还有一个建议:解压后先别删 tar 包,至少保留到首次启动成功。后面如果检测到某个 jar 文件丢失,还能从压缩包里恢复,不用重新下载整个安装包。
2.3 环境变量:写 /etc/profile 还是 ~/.bashrc
Hive 需要的是两个环境变量:HIVE_HOME和PATH。编辑/etc/profile是一种常见做法:
vi /etc/profile在文件末尾追加:
export HIVE_HOME=/export/servers/hive export PATH=$PATH:$HIVE_HOME/bin然后执行:
source /etc/profile echo $HIVE_HOME which hivesource会让当前 shell 会话重新加载 profile 文件。如果你开着一个旧的终端窗口,source 之前它读不到新环境变量;新开的终端窗口在登录时会自动读取/etc/profile,不需要再手动 source。
这里有两个容易踩的细节。第一个是 PATH 顺序:我见过有人写成PATH=$HIVE_HOME/bin:$PATH,这会把 Hive 的 bin 目录放在系统目录前面,如果机器上还有其他组件也叫hive或beeline,实际启动的可能不是你想用的那个。我习惯保持系统路径在前,也就是PATH=$PATH:$HIVE_HOME/bin。第二个是验证方式:echo $HIVE_HOME有输出只是第一步,还要看which hive返回的路径是不是/export/servers/hive/bin/hive。如果 which 找不到,说明 PATH 没写对,或者当前会话没有重新加载。
2.4 解压后先认目录:bin、conf、lib 各管什么
Hive 安装目录里几个子目录后续都要打交道:
bin:hive、beeline、schematool、hiveserver2 等命令所在位置。conf:配置文件目录,默认只有模板文件,hive-site.xml需要自己创建。lib:所有依赖 jar,后面 MySQL 的 JDBC 驱动也要放这里。examples:自带的一些 SQL 例子,可以用来做冒烟测试。
特别注意conf目录下默认有hive-env.sh.template、hive-log4j2.properties.template、hive-default.xml.template。实际生效的hive-site.xml不是从hive-default.xml.template直接复制,那份文件有几百个默认参数,直接改非常长。生产上常见做法是新建一个只包含自定义项的hive-site.xml,Hive 启动时会把自定义项和默认值合并。这个机制理解了,后面第 4 章配置时就不会被模板文件干扰。
3. 依赖检查与 hive-env.sh:Hive 启动前的三个前置条件
Hive 运行起来需要三样东西:JDK、Hadoop 客户端、元数据库。JDK 和 Hadoop 决定了 Hive 能不能启动,元数据库决定了 Hive 能不能建库建表。很多人配置完 hive-site.xml 直接启动,结果报错五花八门,根源多半是前置依赖没检查齐全。
3.1 前置依赖清单:先确认 JDK、Hadoop、MySQL 都可用
| 依赖 | 检查命令 | 失败时的影响 |
|---|---|---|
| JDK 1.8 | java -version | 无法启动 JVM,所有命令直接报错 |
| Hadoop 运行时 | hadoop version | HDFS 操作失败,metastore 无法连接 |
| MySQL | mysql --version 或 ss -lntp | 元数据库连接失败,建表查表报错 |
这份配置里的JAVA_HOME是按 JDK 1.8 的安装位置写的。如果你的机器装的是更高版本 JDK,启动时可能报UnsupportedClassVersionError,要么切换默认 java 版本,要么把JAVA_HOME指到 1.8 的实际安装目录。
hadoop命令最好能在 shell 里直接执行。如果不行,先确认HADOOP_HOME/bin在 PATH 里。hive-env.sh里即使写了HADOOP_HOME,命令行里找不到hadoop命令,Hive 启动脚本还是会在初始化阶段中断。
MySQL 不一定部署在同一台机器。如果元数据库在远程主机,确保从 Hive 所在机器能访问 3306 端口。检查命令:
ss -lntp | grep 3306没有输出就说明 MySQL 没启动,或者监听在其他端口,先去把 MySQL 服务拉起来再继续。
3.2 hive-env.sh:从模板复制,别用手写
很多教程让你直接touch hive-env.sh,但我一般会复制模板:
cp $HIVE_HOME/conf/hive-env.sh.template $HIVE_HOME/conf/hive-env.sh模板里有完整的注释和默认参数,直接在上面改不容易漏项。然后编辑:
vi $HIVE_HOME/conf/hive-env.sh写入以下内容:
export JAVA_HOME=/usr/java/jdk1.8 export HADOOP_HOME=/usr/local/hadoop/hadoop export HIVE_HOME=/export/servers/hive export HIVE_CONF_DIR=/export/servers/hive/conf export HADOOP_HEAPSIZE=4096几个关键项说明:
JAVA_HOME:必须指向真实 JDK 安装路径。有些机器上java命令能用,但JAVA_HOME没设置,Hive 启动脚本会找不到 JVM,报一堆类加载错误。HADOOP_HOME:指向 Hadoop 安装目录。如果客户端机器上 Hadoop 装在其他位置,这里要同步修改。HIVE_CONF_DIR:显式指定配置文件目录。默认就是$HIVE_HOME/conf,写出来是为了防止以后调整目录结构时配置文件走丢。HADOOP_HEAPSIZE:Hive 服务启动时给 JVM 分配的堆内存。4096 表示 4GB,开发机内存小的话改成 2048 或 1024 都行。这个值设得太大,会让同一台机器上其他进程互相抢占内存,表现就是动不动 OOM。
如果机器上还部署了 HBase、Spark、Zookeeper,可以在 hive-env.sh 里把HBASE_HOME、SPARK_HOME、ZOO_HOME也写上,后续 Hive 对接这些组件时能自动识别。但要注意,没有部署这些组件就不要写,路径写错反而会干扰 Hive 启动。
3.3 HDFS 上准备 warehouse 目录
Hive 的数据库、表最终都落在 HDFS 上,warehouse 目录是默认存储根。这个目录不会自动创建,需要手动建:
hdfs dfs -mkdir -p /user/hive/warehouse hdfs dfs -chown -R hive:hive /user/hive/warehouse/user/hive/warehouse必须和后续hive-site.xml里的hive.metastore.warehouse.dir保持一致。我见过有人把hive.metastore.warehouse.dir配成本地路径,比如/usr/local/hadoop/hive/warehouse,结果整张表建在了本地磁盘上,分布式集群一跑就找不到数据块,这个坑在第 5 章会再展开。
chown -R hive:hive里的主名是运行 Hive 服务的 Linux 用户。个人开发机如果用 root 跑,可以跳过。验证命令:
hdfs dfs -ls /user/hive/warehouse如果当前用户没有 HDFS 写权限,会报Permission denied。这时要么用 hdfs 超级用户执行建目录,要么修改 HDFS 对应目录的 ACL。
4. hive-site.xml 逐项拆解:MySQL 元数据库与连接参数
前面的步骤只是把 Hive 放到了正确的位置,真正决定这套环境能不能用的,是hive-site.xml里的元数据库配置。这一章把资源里那份配置逐项拆开解释,方便你对照自己的集群修改。
4.1 元数据库选型:为什么生产环境用 MySQL
Hive 的元数据包含库、表、分区、字段等信息。Hive 默认支持内嵌的 Derby 数据库,但 Derby 有两个致命问题:一是同一时间只能有一个进程访问元数据库,多个会话一起打开时会直接报锁冲突;二是数据落在本地目录,换台机器就找不到了。所以生产环境几乎都用 MySQL 或 PostgreSQL 这类独立数据库。
资源里采用的是 MySQL,并在hive-site.xml中配置了远程 metastore 模式。客户端通过hive.metastore.uris访问独立运行的 metastore 服务,再由 metastore 进程连接 MySQL,而不是让每个 Hive 客户端直连数据库。这种架构的好处是:多个 HiveServer2 可以共享同一份元数据,metastore 服务本身也可以独立扩容。
4.2 配置文件的生成方式与完整参数
进入配置目录,创建 hive-site.xml:
cd $HIVE_HOME/conf vi hive-site.xml写入以下内容:
<configuration> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> <description>Location of default database for the warehouse</description> </property> <property> <name>hive.exec.local.scratchdir</name> <value>/usr/local/hadoop/hive/tmp</value> <description>Local scratch space for Hive jobs</description> </property> <property> <name>hive.downloaded.resources.dir</name> <value>/usr/local/hadoop/hive/tmp/resources</value> <description>Temporary local directory for added resources</description> </property> <property> <name>hive.querylog.location</name> <value>/user/hadoop/hive/logs</value> <description>Location of Hive runtime structured log file</description> </property> <property> <name>hive.metastore.schema.verification</name> <value>false</value> <description>Enforce metastore schema version consistency</description> </property> <property> <name>hive.metastore.db.type</name> <value>mysql</value> <description>Type of database used by the metastore</description> </property> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hadoop001:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> <description>Username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hive</value> <description>Password to use against metastore database</description> </property> <property> <name>datanucleus.schema.autoCreateAll</name> <value>true</value> <description>Auto creates necessary schema on startup if one doesn't exist</description> </property> <property> <name>hive.server2.thrift.bind.host</name> <value>hadoop001</value> <description>Bind host on which to run the HiveServer2 Thrift service</description> </property> <property> <name>hive.server2.thrift.port</name> <value>10000</value> <description>Port number of HiveServer2 Thrift interface</description> </property> <property> <name>hive.metastore.uris</name> <value>thrift://hadoop001:9083</value> <description>Thrift URI for the remote metastore</description> </property> <property> <name>hive.server2.logging.operation.log.location</name> <value>/user/hadoop/hive/operation_logs</value> <description>Top level directory where HiveServer2 logs are stored</description> </property> </configuration>注意上面 JDBC URL 里我写的是&而不是&。XML 中&是保留字符,很多资料复制到hive-site.xml时直接写成useSSL=false,解析阶段就会报错。如果你从别处拿到的配置里是裸&,改成&就好。
关键参数表:
| 参数 | 作用 | 常见误设 |
|---|---|---|
| hive.metastore.warehouse.dir | HDFS 上元数据仓库根目录 | 误配成本地路径,导致分布式环境数据落点错乱 |
| javax.jdo.option.ConnectionURL | metastore 连接 MySQL 的 JDBC 地址 | 主机名解析失败、未转义 & 符号 |
| javax.jdo.option.ConnectionDriverName | MySQL JDBC 驱动类名 | MySQL 8 仍写 com.mysql.jdbc.Driver,应改为 com.mysql.cj.jdbc.Driver |
| datanucleus.schema.autoCreateAll | 首次自动建表 | 生产环境长期开着,升级时 schema 冲突 |
| hive.metastore.uris | 客户端访问 metastore 的 Thrift 地址 | 端口写 3306,应该是 9083 |
| hive.server2.thrift.port | HiveServer2 Thrift 端口 | 被占用或和 metastore 端口写反 |
hive.exec.local.scratchdir指向/usr/local/hadoop/hive/tmp,这是本地临时目录,不是 HDFS 路径。这个目录如果不存在,Hive 启动时会报找不到临时目录。通常需要主动创建并保证写权限:
mkdir -p /usr/local/hadoop/hive/tmp chmod -R 777 /usr/local/hadoop/hive/tmphive.metastore.schema.verification设为 false,配合datanucleus.schema.autoCreateAll=true,可以在首次启动时自动创建元数据表。但这只是初始化阶段的配置,初始化完成后,我会把datanucleus.schema.autoCreateAll改成 false,避免每次启动都尝试迁移 schema。
4.3 MySQL 侧的准备:库、用户与 JDBC 驱动
MySQL 的 RPM bundle 安装过程这里不展开,网上教程很多,重点说和 Hive 相关的三步。
第一步,在 MySQL 里创建数据库和专用用户:
CREATE DATABASE hive DEFAULT CHARACTER SET utf8; CREATE USER 'hive'@'%' IDENTIFIED BY 'hive'; GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'%'; FLUSH PRIVILEGES;- 字符集选 utf8,避免中文注释和表名出现乱码。
'hive'@'%'表示允许任意主机连接,生产环境建议收紧到 Hive 服务所在机器的具体 IP。- 用户名密码要和
hive-site.xml里ConnectionUserName、ConnectionPassword保持一致。这里为了演示用简单密码,真实环境务必改复杂密码。
第二步,确认 MySQL 连接可达:
mysql -h hadoop001 -uhive -phive -e "show databases;"能列出库列表,说明网络、主机名解析、用户权限都没问题。如果这里都连不通,后面 Hive 的 metastore 肯定起不来,不需要浪费时间往下走。
第三步,放置 JDBC 驱动:
cp mysql-connector-java-5.1.49.jar $HIVE_HOME/lib/MySQL 5.7 配 5.1.x 驱动是很常见的组合。驱动版本和服务端版本差太多,启动时会出现类似Unknown system variable的怪异报错。放好后确认文件可读:
ls -l $HIVE_HOME/lib/mysql-connector-java*.jar如果 Hive 的 lib 目录里同时存在多个版本的 JDBC 驱动,最好只保留一个,否则驱动类冲突会随机产生奇怪现象。
5. 避坑与排查:Hive 安装配置中的翻车现场与处理办法
按前面四章的步骤走完,大部分环境能正常启动。但总有一些问题只有在真实部署时才会暴露。这一章按“现象 -> 原因 -> 解决”记录五个高频故障,都是我在实际配置中遇到过的。
5.1 hive 命令直接报 NoClassDefFoundError
现象:执行hive或hive --service metastore时,控制台抛出java.lang.NoClassDefFoundError,一堆类找不到,第一反应以为是 Hive 包坏了。
原因:绝大多数情况不是包坏了,而是HADOOP_HOME没有被 Hive 的启动脚本正确引用,或者 Hadoop 客户端版本与 Hive 不匹配。
解决:先检查环境变量:
echo $HADOOP_HOME echo $HIVE_HOME确认hive-env.sh里的HADOOP_HOME写没写对。另一个常见做法是把 Hadoop 的 classpath 补进hive-env.sh:
export HADOOP_CLASSPATH=$(hadoop classpath)手工拼路径容易漏目录,用hadoop classpath命令输出最稳妥。我一般会在hive-env.sh里加这一行,比逐个写share/hadoop/common/*省心。
5.2 MySQL 连接被拒绝:Communications link failure
现象:metastore 启动或执行 schematool 时,日志里出现Communications link failure或Access denied for user。
原因:三类常见原因:3306 端口没开、MySQL 用户 host 段不包含当前主机、密码错误。
解决:先在 Hive 服务器上检查端口:
ss -lntp | grep 3306没有输出,说明 MySQL 没启动或监听在其他端口。如果 MySQL 的bind-address配置绑定的是127.0.0.1,远程连接也会失败。接着登录 MySQL 检查用户:
SELECT user, host FROM mysql.user WHERE user='hive';host 不是%或对应 IP,就重新授权。最后用手工命令验证密码:
mysql -uhive -phive -h hadoop001还有一个隐蔽坑:JDBC URL 里写的主机名hadoop001在 Hive 服务器上无法解析,也会报link failure。临时解决可以把 URL 里的主机名换成 IP,长期建议在/etc/hosts里配好映射。
5.3 schematool 初始化失败:表已存在或 schema 版本不一致
现象:第一次执行schematool -dbType mysql -initSchema时报错,提示表已存在,或者Found schema version X, need version Y。
原因:最常见的是之前用datanucleus.schema.autoCreateAll=true启动过一次 metastore,自动建过表;或者initSchema已经跑过一次,MySQL 里残留了旧的元数据表。
解决:如果确认不需要保留已有元数据,直接把 hive 库删掉重建:
DROP DATABASE hive; CREATE DATABASE hive DEFAULT CHARACTER SET utf8;重新执行初始化:
$HIVE_HOME/bin/schematool -dbType mysql -initSchema看到schemaTool completed字样才算成功。注意,如果集群里已经在 Hive 中建过业务表,不能直接删库,否则元数据全部丢失。那种情况要先备份 MySQL 元数据库,再考虑用schemaTool -upgradeSchema而不是initSchema。
5.4 HiveServer2 连接报错:User is not allowed to impersonate
现象:beeline 连接 HiveServer2 后执行查询,报User: xxx is not allowed to impersonate xxx。
原因:HiveServer2 作为代理服务,会以当前操作系统用户身份去访问 HDFS。Hadoop 的代理用户配置没有允许这个用户发起 impersonation。
解决:在 Hadoop 的core-site.xml里增加代理用户配置:
<property> <name>hadoop.proxyuser.hive.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hive.groups</name> <value>*</value> </property>这里的hive是启动 HiveServer2 的 Linux 用户。修改后需要重启 Hadoop 相关服务,至少 NameNode 要重读配置。如果暂时不方便改 Hadoop,可以用启动 HiveServer2 的同一个用户去连接 beeline:
$HIVE_HOME/bin/beeline -u "jdbc:hive2://hadoop001:10000" -n hive但这种做法改变了 HDFS 权限模型,治标不治本,生产环境还是建议把 core-site.xml 配好。
5.5 HDFS warehouse 目录权限不足
现象:beeline 里建表成功,但插入数据时报Permission denied,或者建表时直接提示找不到/user/hive/warehouse。
原因:warehouse 目录不存在,或者所属用户不是执行查询的用户。
解决:
hdfs dfs -mkdir -p /user/hive/warehouse hdfs dfs -chown -R hive:hive /user/hive/warehouse确认hive-site.xml里的hive.metastore.warehouse.dir配的就是这个路径。另一个常见场景:集群刚启动还处于 HDFS 安全模式,也会出现类似 Permission denied 的假象。执行hdfs dfsadmin -safemode get查看状态,如果确实在安全模式且数据已就绪,用hdfs dfsadmin -safemode leave退出,但这一步在正式生产环境要谨慎,确认没有正在进行的数据恢复操作。
6. 验证与进阶:从 schematool 到 beeline,确认整套配置真正可用
配置文件改完,最后一个动作是验证整套链路是否真的通了。我习惯按下述顺序操作,每一步都有明确结果。
6.1 标准启动顺序
$HIVE_HOME/bin/schematool -dbType mysql -initSchema $HIVE_HOME/bin/hive --service metastore & $HIVE_HOME/bin/hive --service hiveserver2 &initSchema只需要执行一次。初始化完成后,把hive-site.xml里的datanucleus.schema.autoCreateAll改为 false,避免每次重启都触发自动建表逻辑。metastore 默认监听 9083,HiveServer2 默认监听 10000,确认端口都在监听:
ss -lntp | grep 9083 ss -lntp | grep 10000启动顺序必须是 metastore 在前,HiveServer2 在后。反过来启动,HiveServer2 会连不上元数据库,客户端连接时直接报错。
6.2 beeline 连接验证
连接命令:
$HIVE_HOME/bin/beeline -u "jdbc:hive2://hadoop001:10000" -n hive进入 beeline 交互界面后,执行:
show databases; create table test(id int); show tables;能正常返回,说明整条链路已经通了:beeline -> HiveServer2 -> metastore -> MySQL -> HDFS。建表时如果报错,回头看第 5.5 节的 warehouse 权限问题。
后续如果需要批量验证,可以把 beeline 写成非交互模式:
echo "show databases;" | $HIVE_HOME/bin/beeline -u "jdbc:hive2://hadoop001:10000" -n hive输出里能看到数据库列表,就算冒烟通过。我习惯把这个命令存成一个脚本,每次部署完执行一遍,比打开交互式界面手动敲高效得多。
6.3 日志位置与最后检查
配置过程中最常见的错误实际上都在日志里。metastore 的日志默认输出到启动终端,HiveServer2 的日志位置由hive.server2.logging.operation.log.location控制。如果启动画面里看到一串 ERROR,优先搜Caused by,一层层往里看,最里层的异常往往才是根因。
从那以后,我每次部署 Hive 都强制走一遍这套验证脚本:initSchema -> 启动 metastore -> 检查 9083 -> 启动 HiveServer2 -> 检查 10000 -> beeline 执行一条 show databases。全绿才敢说安装配置完成。希望帮到你。
本文还有配套的精品资源,点击获取