hive 之start hiveServer2 ,thriftServer失败

本文详细记录了在启动HiveServer2时遇到的错误,具体表现为无法创建ServerSocket于地址0.0.0.0:10000,导致ThriftBinaryCLIService无法启动。通过检查日志,发现端口10000被其他进程占用。解决方案为使用netstat命令查找占用端口的进程,并使用kill命令结束该进程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hive 之start hiveServer2 ,thriftServer失败

报错信息如下:

ERROR org.apache.hive.service.cli.thrift.ThriftCLIService: [Thread-11]: Error starting HiveServer2: could not start ThriftBinaryCLIService

org.apache.thrift.transport.TTransportException: Could not create ServerSocket on address 0.0.0.0/0.0.0.0:10000.

        at org.apache.thrift.transport.TServerSocket.<init>(TServerSocket.java:109)

        at org.apache.thrift.transport.TServerSocket.<init>(TServerSocket.java:91)

        at org.apache.thrift.transport.TServerSocket.<init>(TServerSocket.java:87)

        at org.apache.hive.service.auth.HiveAuthFactory.getServerSocket(HiveAuthFactory.java:271)

        at org.apache.hive.service.cli.thrift.ThriftBinaryCLIService.run(ThriftBinaryCLIService.java:66)

        at java.lang.Thread.run(Thread.java:745)

解决办法:

查看日志发现:Hive.server2.thrift.port 10000端口被占用

[wangshumin@centoshostnameKL2 conf]$ netstat  -ltpn | grep 10000
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 0.0.0.0:10000               0.0.0.0:*                   LISTEN      21725/java          
[wangshumin@centoshostnameKL2 conf]$ kill -9 21725

### 安装配置 HiveHiveServer2 #### 准备环境 为了在 Windows 上成功安装并配置 HiveHiveServer2,需先准备必要的软件包和依赖项。 - **Java Development Kit (JDK)**:确保已安装 JDK 并设置了 `JAVA_HOME` 环境变量。 - **Apache Hadoop**:下载适合 Windows 的二进制分发版,并解压到指定目录。设置 `HADOOP_HOME` 环境变量指向该路径。 - **Apache Hive**:从官方网站获取最新稳定版本的 Hive 压缩文件,在本地解压缩至目标位置。 #### 配置 Hive 完成上述准备工作之后,进入 Hive 解压后的 conf 文件夹内编辑 hive-site.xml 文件来定义一些基本参数: ```xml <configuration> <!-- 设置 Metastore 数据库连接 --> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>password</value> </property> <!-- 启动 HiveServer2 参数 --> <property> <name>hive.server2.thrift.port</name> <value>10000</value> </property> <property> <name>hive.server2.thrift.bind.host</name> <value>localhost</value> </property> ... </configuration> ``` 以上 XML 片段展示了如何通过修改 `hive-site.xml` 来指明 MySQL 作为 metastore 存储以及设定 HiveServer2 运行所需的关键属性[^4]。 #### 初始化 Metastore 首次启动前需要初始化 Hive 的元数据存储(Metastore)。这一步骤可以通过命令行工具实现: ```bash schematool -dbType mysql -initSchema ``` 此操作会依据之前配置好的数据库信息创建所需的表结构。 #### 启动 HiveServer2 对于 Windows 用户来说,可以采用如下方法之一来保持后台服务不因终端关闭而中断: - 使用 nohup 工具配合 PowerShell 或 CMD 执行: ```powershell Start-Process powershell.exe "nohup 'path\to\hive' --service hiveserver2 &" ``` - 编写批处理脚本 `.bat` 实现自动化部署: 创建名为 start_hiveserver2.bat 的批处理文件,内容如下所示: ```batchfile @echo off setlocal enabledelayedexpansion :: 查找是否存在正在运行的服务实例 FOR /F "tokens=5 delims= " %%i IN ('netstat -ano ^| findstr :10000') DO ( IF NOT ERRORLEVEL 1 SET pid=%%i ) IF DEFINED pid ( echo Already running, killing process %pid% taskkill /PID %pid% /T /F > nul ) echo Starting HiveServer2... start "" cmd /c "cd path\to\hive && bin\hive --service hiveserver2" endlocal pause exit ``` 这段代码实现了检测是否有重复进程存在并终止它,随后正常开启新的 HiveServer2 实例[^2]。 #### 测试连接 等待一段时间让服务器完全启动完毕后,可通过 Beeline CLI 登录测试连通性: ```sql beeline -u jdbc:hive2://localhost:10000/default -n username -p password ``` 如果一切顺利,则表示已经可以在 Windows 下正常使用 HiveHiveServer2 了[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值