HBase从0.94.x升级至1.4.2后mapreduce包缺失技术问询
解决HBase 1.x版本中找不到org.apache.hadoop.hbase.mapreduce包的问题
我之前帮团队处理过从HBase 0.94升级到1.x版本的迁移工作,刚好碰到过和你一样的问题,给你梳理下解决思路:
为什么旧依赖找不到这个包?
HBase从0.98版本开始做了模块拆分重构,把原本放在核心包中的MapReduce相关功能单独抽成了独立的hbase-mapreduce模块。所以你在1.4.2版本中用hbase-client或者旧的hbase核心依赖,自然找不到这个包。
正确的依赖配置
你只需要在项目中添加专门的hbase-mapreduce依赖即可,以Maven为例:
<dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-mapreduce</artifactId> <version>1.4.2</version> </dependency>
如果你的项目是基于Hadoop 2.x的,这个模块默认已经适配Hadoop 2,不需要额外引入hbase-hadoop2-compat(除非你有特殊的兼容性需求)。
额外的迁移注意点
- 清理旧依赖:建议把原本的
org.apache.hbase:hbase依赖替换成拆分后的独立模块(比如hbase-client、hbase-mapreduce等),避免新旧依赖的冲突问题。 - 代码导入无需修改:你之前代码中用的
import org.apache.hadoop.hbase.mapreduce.*;路径在1.x版本中依然保留,不需要改动导入语句,只要依赖正确就能正常引用。 - Hadoop版本兼容:HBase 1.4.2要求搭配Hadoop 2.6及以上版本,确保你的项目Hadoop依赖版本符合要求,否则可能出现其他兼容性问题。
内容的提问来源于stack exchange,提问作者Ivan
相关产品推荐
相关产品推荐

