You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hive LLAP Daemon部署故障求助及配置优化咨询

Hive LLAP启动失败问题排查与解决方案

核心问题定位

从提供的日志和配置分析,存在两个致命问题:

  1. ZooKeeper客户端与服务端Jar包版本不兼容:日志中出现ClassNotFoundException: org.apache.zookeeper.proto.GetAllChildrenNumberResponse,该类在ZK 3.7.x中存在,但Hive/Tez依赖的旧版本ZK客户端Jar包中没有,导致LLAP Daemon无法在ZK注册服务,查询时触发No running LLAP daemons错误。
  2. YARN ResourceManager地址配置缺失:run.sh脚本执行时无法获取RM Web地址,导致YARN服务启动失败。

解决方案

1. 修复ZK Jar包兼容性

  • 清理Hive和Tez依赖中的旧ZK Jar包:删除$HIVE_HOME/lib/和$TEZ_HOME/lib/中所有版本低于3.7.1的zookeeper-*.jar文件。
  • 复制集群ZK安装目录下的zookeeper-3.7.1.jar和zookeeper-jute-3.7.1.jar到上述两个lib目录。
  • 重启Hive Metastore、HiveServer2服务,清除服务缓存。

2. 补充YARN RM配置

在hive-site.xml中添加以下配置:

<property>
  <name>yarn.resourcemanager.address</name>
  <value>你的RM主机名:8032</value>
</property>
<property>
  <name>yarn.resourcemanager.webapp.address</name>
  <value>你的RM主机名:8088</value>
</property>
<property>
  <name>hive.zookeeper.quorum</name>
  <value>ZK节点1:2181,ZK节点2:2181,ZK节点3:2181</value>
</property>

3. 调整LLAP启动命令

将启动命令修改为(适配10节点集群,添加ZK地址):

hive --service llap --name llap0 --instances 10 --loglevel info --cache 41984m --executors 8 --iothreads 2 --size 419840m --xmx 41984m --zk 你的ZK集群地址:2181 --startImmediately --javaHome $JAVA_HOME

启用Hive LLAP详细步骤

前置条件

  • 确认Hadoop 3.3.6、Hive 3.1.2、Tez 0.10.2版本兼容。
  • ZooKeeper集群正常运行,所有节点可访问ZK服务。
  • YARN公平调度器已配置llap队列(现有配置满足需求)。

1. 配置文件修改

hive-site.xml关键配置

<!-- 启用LLAP执行模式 -->
<property>
  <name>hive.execution.mode</name>
  <value>llap</value>
</property>
<property>
  <name>hive.llap.execution.mode</name>
  <value>all</value>
</property>
<!-- LLAP服务注册配置 -->
<property>
  <name>hive.llap.daemon.service.hosts</name>
  <value>@llap0</value>
</property>
<property>
  <name>hive.llap.zk.registry.user</name>
  <value>llap</value>
</property>
<property>
  <name>hive.zookeeper.quorum</name>
  <value>ZK节点1:2181,ZK节点2:2181,ZK节点3:2181</value>
</property>
<!-- 资源配置(匹配单节点96核/1TB内存) -->
<property>
  <name>hive.llap.daemon.yarn.container.mb</name>
  <value>419840</value>
</property>
<property>
  <name>hive.llap.io.memory.size</name>
  <value>41984</value>
</property>
<property>
  <name>hive.llap.daemon.num.executors</name>
  <value>8</value>
</property>
<property>
  <name>hive.llap.daemon.queue.name</name>
  <value>llap</value>
</property>
<!-- YARN RM地址配置 -->
<property>
  <name>yarn.resourcemanager.address</name>
  <value>你的RM主机名:8032</value>
</property>
<property>
  <name>yarn.resourcemanager.webapp.address</name>
  <value>你的RM主机名:8088</value>
</property>

fair-scheduler.xml配置(保持现有)

<?xml version="1.0"?>
<allocations>
  <pool name="hadoop">
    <minResources>8192mb,1vcores</minResources>
    <maxResources>8396800mb,960vcores</maxResources>
    <maxRunningApps>1000</maxRunningApps>
    <weight>1.0</weight>
    <fairSharePreemptionThreshold>0.7</fairSharePreemptionThreshold>
    <fairSharePreemptionTimeout>5</fairSharePreemptionTimeout>
  </pool>
  <pool name="llap">
    <minResources>8192mb,1vcores</minResources>
    <maxResources>4198400mb,480vcores</maxResources>
    <maxRunningApps>1000</maxRunningApps>
    <weight>2.0</weight>
    <fairSharePreemptionThreshold>0.5</fairSharePreemptionThreshold>
    <fairSharePreemptionTimeout>5</fairSharePreemptionTimeout>
  </pool>
</allocations>

2. Jar包替换

  • 替换Hive和Tez的ZK依赖Jar包为集群ZK 3.7.1版本的Jar包。
  • 确保所有节点的Hive和Tez lib目录Jar包一致。

3. 启动LLAP服务

执行调整后的启动命令,等待YARN服务启动完成,通过YARN UI确认所有LLAP实例处于RUNNING状态。

4. 验证LLAP功能

执行Hive查询验证:

SET hive.execution.mode=llap;
SELECT COUNT(*) FROM 你的测试表;

原问题信息

集群配置

  • Hadoop版本:3.3.6
  • Hive版本:3.1.2
  • Tez版本:0.10.2
  • ZooKeeper版本:3.7.1

原启动命令

hive --service llap --name llap0 --instances 1 --loglevel debug --cache 41984m --executors 8 --iothreads 2 --size 419840m --xmx 41984m --startImmediately --javaHome $JAVA_HOME

关键错误日志

查询失败错误

killed/failed due to:INIT_FAILURE, Fail to create InputInitializerManager, org.apache.tez.dag.api.TezReflectionException: Unable to instantiate class with 1 arguments: org.apache.hadoop.hive.ql.exec.tez.HiveSplitGenerator
...
Caused by: java.lang.IllegalArgumentException: No running LLAP daemons! Please check LLAP service status and zookeeper configuration

ZK相关错误

java.lang.NoClassDefFoundError: org/apache/zookeeper/proto/GetAllChildrenNumberResponse
Caused by: java.lang.ClassNotFoundException: org.apache.zookeeper.proto.GetAllChildrenNumberResponse

内容的提问来源于stack exchange,提问作者Noah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 01:09:50