[
https://issues.apache.org/jira/browse/HIVE-29052?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17987311#comment-17987311
]
Butao Zhang commented on HIVE-29052:
------------------------------------
Paste my reply in the email here:
https://lists.apache.org/thread/916pjwz96l866sy97f48g4bxqzrpy5w6
{code:java}
First of all, thank you very much to Stamatis for pointing out the work [1] the
Hive community has done in decoupling HMS from Hive, such as ticket HIVE-17159
[2]. Personally, I believe that maintaining the decoupling of HMS and Hive code
is absolutely the right approach. Therefore, without considering other
community factors, directly bundling hive-exec.jar and hive-iceberg-handler.jar
into the HMS package would seem entirely unreasonable—I might even give it a -1.
The main reason for my +1 is due to the current state of community development.
As we all know, next-generation table formats like Iceberg have brought
significant challenges to traditional Hive table formats. Meanwhile, HMS, as
the de facto standard catalog component, is also facing major competition from
new systems like Unity Catalog and various Iceberg REST catalogs. Fortunately,
the Hive community has recognized this. We have begun fully embracing the
Iceberg table format, reconsidering how HMS can interface with different
metadata services compatible with the HMS API (HIVE-27473)[3], integrating the
Iceberg REST catalog into HMS (HIVE-28059)[4], and even planning to implement
cool features like Federated Catalog in HMS (HIVE-28879)[5]. Personally, I
believe there are many valuable things we can do around HMS in the future.
Since many current and future efforts will focus on HMS, now is an excellent
time for the community to release Standalone HMS. This would send a positive
signal to both the Hive community and beyond: the Hive community is committed
to strengthening HMS Catalog as the de facto standard for metadata management.
I believe this will attract more community users to participate and contribute
to the growth of the Hive community, creating a win-win situation for both
users and the Hive ecosystem.
If we wait until the code decoupling work is thoroughly completed before
releasing Standalone HMS, it would be difficult for me to estimate the
timeline. I’m also unsure whether the community has sufficient resources in the
short term to undertake such significant decoupling efforts. If this
refactoring takes a year or even two, I fear we might miss the best window for
the release of Standalone HMS.
In summary, I believe now is the right time to release Standalone HMS. When
weighing the future development of the Hive community against code-level
decoupling, I would prioritize the former. But I also think we can continue the
code decoupling work in parallel after releasing Standalone HMS—the two efforts
can, to some extent, proceed simultaneously.
[1]
https://issues.apache.org/jira/browse/HIVE-29052?focusedCommentId=17987181&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-17987181
[2] https://issues.apache.org/jira/browse/HIVE-17159
[3] https://issues.apache.org/jira/browse/HIVE-27473
[4] https://issues.apache.org/jira/browse/HIVE-28059
[5] https://issues.apache.org/jira/browse/HIVE-28879
{code}
> Error starting standalone HMS: "IcebergHouseKeeperService class not found"
> --------------------------------------------------------------------------
>
> Key: HIVE-29052
> URL: https://issues.apache.org/jira/browse/HIVE-29052
> Project: Hive
> Issue Type: Task
> Components: Standalone Metastore
> Affects Versions: 4.1.0, 4.2.0
> Reporter: Butao Zhang
> Priority: Major
> Labels: pull-request-available
>
> During local standalone HMS deployment testing, the following exception log
> was observed:
>
> {code:java}
> 2025-06-28T17:19:28,840 ERROR [Metastore threads starter thread]
> leader.LeaseLeaderElection: Error notifying the listener:
> org.apache.hadoop.hive.metastore.leader.CompactorTasks@61e0c33d, leader: true
> java.lang.ClassNotFoundException:
> org.apache.hadoop.hive.ql.txn.compactor.Initiator
> at
> java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
> ~[?:?]
> at
> java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
> ~[?:?]
> at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
> ~[?:?]
> at java.base/java.lang.Class.forName0(Native Method) ~[?:?]
> at java.base/java.lang.Class.forName(Class.java:375) ~[?:?]
> at
> org.apache.hadoop.hive.metastore.leader.CompactorTasks.instantiateThread(CompactorTasks.java:53)
> ~[hive-standalone-metastore-server-4.1.0.jar:4.1.0]
> at
> org.apache.hadoop.hive.metastore.leader.CompactorTasks.getCompactorThreads(CompactorTasks.java:67)
> ~[hive-standalone-metastore-server-4.1.0.jar:4.1.0]
> at
> org.apache.hadoop.hive.metastore.leader.CompactorTasks.takeLeadership(CompactorTasks.java:136)
> ~[hive-standalone-metastore-server-4.1.0.jar:4.1.0]
> at
> org.apache.hadoop.hive.metastore.leader.LeaseLeaderElection.lambda$notifyListener$0(LeaseLeaderElection.java:141)
> ~[hive-standalone-metastore-server-4.1.0.jar:4.1.0]
> at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?]
> at
> org.apache.hadoop.hive.metastore.leader.LeaseLeaderElection.notifyListener(LeaseLeaderElection.java:138)
> ~[hive-standalone-metastore-server-4.1.0.jar:4.1.0]
> at
> org.apache.hadoop.hive.metastore.leader.LeaseLeaderElection.doWork(LeaseLeaderElection.java:120)
> ~[hive-standalone-metastore-server-4.1.0.jar:4.1.0]
> at
> org.apache.hadoop.hive.metastore.leader.LeaseLeaderElection.tryBeLeader(LeaseLeaderElection.java:181)
> ~[hive-standalone-metastore-server-4.1.0.jar:4.1.0]
> at
> org.apache.hadoop.hive.metastore.leader.LeaseLeaderElection.tryBeLeader(LeaseLeaderElection.java:63)
> ~[hive-standalone-metastore-server-4.1.0.jar:4.1.0]
> at
> org.apache.hadoop.hive.metastore.leader.LeaderElectionContext.lambda$start$2(LeaderElectionContext.java:125)
> ~[hive-standalone-metastore-server-4.1.0.jar:4.1.0]
> at java.base/java.lang.Thread.run(Thread.java:833) [?:?]
> at
> org.apache.hadoop.hive.metastore.leader.LeaderElectionContext.start(LeaderElectionContext.java:136)
> [hive-standalone-metastore-server-4.1.0.jar:4.1.0]
> at
> org.apache.hadoop.hive.metastore.HiveMetaStore$8.run(HiveMetaStore.java:855)
> [hive-standalone-metastore-server-4.1.0.jar:4.1.0]
> 2025-06-28T17:19:28,847 ERROR [Metastore threads starter thread]
> leader.LeaseLeaderElection: Error notifying the listener:
> org.apache.hadoop.hive.metastore.leader.HouseKeepingTasks@33d3660, leader:
> true
> org.apache.hadoop.hive.metastore.api.MetaException:
> org.apache.iceberg.mr.hive.metastore.task.IcebergHouseKeeperService class not
> found
> at
> org.apache.hadoop.hive.metastore.utils.JavaUtils.getClass(JavaUtils.java:56)
> ~[hive-standalone-metastore-common-4.1.0.jar:4.1.0]
> at
> org.apache.hadoop.hive.metastore.leader.HouseKeepingTasks.getRemoteOnlyTasks(HouseKeepingTasks.java:72)
> ~[hive-standalone-metastore-server-4.1.0.jar:4.1.0]
> at
> org.apache.hadoop.hive.metastore.leader.HouseKeepingTasks.takeLeadership(HouseKeepingTasks.java:112)
> ~[hive-standalone-metastore-server-4.1.0.jar:4.1.0]
> at
> org.apache.hadoop.hive.metastore.leader.LeaseLeaderElection.lambda$notifyListener$0(LeaseLeaderElection.java:141)
> ~[hive-standalone-metastore-server-4.1.0.jar:4.1.0]
> at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?]
> at
> org.apache.hadoop.hive.metastore.leader.LeaseLeaderElection.notifyListener(LeaseLeaderElection.java:138)
> ~[hive-standalone-metastore-server-4.1.0.jar:4.1.0]
> at
> org.apache.hadoop.hive.metastore.leader.LeaseLeaderElection.doWork(LeaseLeaderElection.java:120)
> ~[hive-standalone-metastore-server-4.1.0.jar:4.1.0]
> at
> org.apache.hadoop.hive.metastore.leader.LeaseLeaderElection.tryBeLeader(LeaseLeaderElection.java:181)
> ~[hive-standalone-metastore-server-4.1.0.jar:4.1.0]
> at
> org.apache.hadoop.hive.metastore.leader.LeaseLeaderElection.tryBeLeader(LeaseLeaderElection.java:63)
> ~[hive-standalone-metastore-server-4.1.0.jar:4.1.0]
> at
> org.apache.hadoop.hive.metastore.leader.LeaderElectionContext.lambda$start$2(LeaderElectionContext.java:125)
> ~[hive-standalone-metastore-server-4.1.0.jar:4.1.0]
> at java.base/java.lang.Thread.run(Thread.java:833) [?:?]
> at
> org.apache.hadoop.hive.metastore.leader.LeaderElectionContext.start(LeaderElectionContext.java:136)
> [hive-standalone-metastore-server-4.1.0.jar:4.1.0]
> at
> org.apache.hadoop.hive.metastore.HiveMetaStore$8.run(HiveMetaStore.java:855)
> [hive-standalone-metastore-server-4.1.0.jar:4.1.0]
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)