Kylin报错classnotfound:org.apache.hadoop.hive.serde2.typeinfo.typeInfo

本文介绍了解决在升级Kylin 2.1过程中遇到的mapreduce异常问题。异常原因是由于缺失特定的jar包导致,通过查找并指定sentry的正确路径,在Kylin.properties文件中配置该路径后,重启Kylin即可解决问题。

最近新升级了最新的kylin-2.1 build cube的过程中mapreduce抛出异常
java.lang.ClassNotFoundException: org.apache.hadoop.hive.serde2.typeinfo.TypeInfo

很显然报错是指向jar包问题
在google上找到了解决了方法

find 一下sentry的位置
每个版本的hadoop上都会不一样

在Kylin.properties文件添加查找到的路径

kylin.job.mr.lib.dir=/usr/sentry/lib/
重启kylin即可解决。

<think> 我们正在处理一个关于Kylin的AclTableMigrationCLI运行时的错误。错误信息包括两个主要部分: 1. `Failed to find metadata store by url: kylin_metadata@hbase` 2. `java.lang.ClassNotFoundException: org.apache.hadoop.hbase.filter.Filter` 根据引用[4]中的信息,类似的问题(启动Kylin出现Could not find or load main class org.apache.hadoop.hbase.util.GetJavaProperty)的解决方法是修改HBase的配置,将HBase的依赖包添加到classpath中。 具体到我们的错误,第二个错误`ClassNotFoundException`表明类路径中缺少HBase的相关类,特别是`org.apache.hadoop.hbase.filter.Filter`。这通常是因为HBase的jar包没有在类路径中被正确加载。 第一个错误`Failed to find metadata store by url: kylin_metadata@hbase`则表明Kylin无法连接到HBase中的元数据存储。这可能是由于HBase服务未正常运行,或者Kylin配置的HBase连接信息不正确,或者因为缺少HBase的依赖导致连接失败。 结合引用[4]的解决方法,我们可以尝试以下步骤: ### 步骤1: 检查HBase服务状态 确保HBase服务已经启动并运行正常。可以通过以下命令检查: ```bash hbase shell ``` 在hbase shell中执行`status`命令,查看HBase状态。 ### 步骤2: 检查Kylin配置 确认Kylin的配置文件中关于HBase的连接配置正确。主要配置文件是`$KYLIN_HOME/conf/kylin.properties`。检查以下配置项: ```properties kylin.metadata.url=kylin_metadata@hbase ``` 这表示使用HBase作为元数据存储,默认表名为`kylin_metadata`。确保HBase中确实存在这张表(通常Kylin会在初始化时创建)。 ### 步骤3: 添加HBase依赖到类路径 根据引用[4]的解决方案,我们需要将HBase的依赖包添加到Kylin的类路径中。具体操作如下: 1. 打开Kylin的启动脚本`$KYLIN_HOME/bin/kylin.sh`(或`find-env.sh`,具体位置可能因版本而异)。 2. 在脚本中找到设置`CLASSPATH`的地方,将HBase的依赖包路径添加进去。例如,在`kylin.sh`中可能有一行类似于: ```bash CLASSPATH=${KYLIN_HOME}/conf:${KYLIN_HOME}/lib/*:... ``` 我们需要将HBase的lib目录下的所有jar包加入类路径。假设HBase的安装目录是`$HBASE_HOME`,则添加: ```bash CLASSPATH=${CLASSPATH}:$HBASE_HOME/lib/* ``` 注意:如果已经存在HBase的类路径,请检查是否正确;如果没有,则添加。 引用[4]中提到修改`kylin.sh`,在设置`CLASSPATH`的地方追加HBase的lib路径。具体操作可能如下: ```bash # 在kylin.sh中找到设置CLASSPATH的行,然后追加 CLASSPATH=${CLASSPATH}:${HBASE_HOME}/lib/* ``` 另外,确保`HBASE_HOME`环境变量已经设置。如果没有,你需要在脚本中设置,或者直接在命令中使用绝对路径。 ### 步骤4: 检查Hadoop和HBase版本兼容性 KylinHadoop和HBase的版本有特定要求。请确保你使用的Kylin版本与HBase版本兼容。根据引用[2]中的信息,HBase版本为`2.1.0-cdh6.3.1`,Flume版本为`1.9.0-cdh6.3.1`,因此Kylin也应当使用相同CDH版本的发行版。 ### 步骤5: 检查是否有多个HBase版本冲突 如果环境中存在多个HBase版本,可能会导致类加载冲突。确保Kylin使用的HBase依赖与运行的HBase版本一致。 ### 步骤6: 重新启动Kylin服务 修改配置后,重新启动Kylin服务,然后再次运行AclTableMigrationCLI。 ### 步骤7: 手动上传HBase的jar包(备选) 如果以上步骤无效,可以尝试将HBase的jar包手动复制到Kylin的lib目录下(注意版本一致),然后重启Kylin。但这种方法可能会导致依赖冲突,需谨慎。 ### 总结 主要问题在于类路径中缺少HBase的相关类,因此重点是将HBase的jar包加入到Kylin的类路径中。同时确保HBase服务正常运行且配置正确。 如果问题仍然存在,请提供以下信息以便进一步排查: - Kylin、HBase、Hadoop的具体版本 - `kylin.properties`配置文件中关于存储和HBase的配置部分 - 完整的错误堆栈信息 §§相关问题§§ 1. 如何检查HBase中是否存在Kylin的元数据表? 2. 如何设置Kylin的环境变量? 3. Kylin与HBase的版本兼容性如何确定? </think> ### 解决Kylin AclTableMigrationCLI运行时错误的步骤 #### 🔍 错误原因分析 1. **`Failed to find metadata store by url: kylin_metadata@hbase`** 表示Kylin无法访问HBase中的元数据表`kylin_metadata`,通常由以下原因导致: - HBase服务未启动或不可达 - HBase客户端配置缺失 - 元数据表损坏或未初始化 2. **`ClassNotFoundException: org.apache.hadoop.hbase.filter.Filter`** 表明Kylin运行时缺少HBase的核心依赖库(如`hbase-client.jar`),常见于: - HBase类库未加入CLASSPATH - 组件版本不兼容(HBase/Kylin/Hadoop版本冲突) - 环境变量配置错误 --- #### 🛠️ 解决方案 ##### 步骤1:验证HBase服务状态 ```bash # 检查HBase是否正常运行 hbase shell > status # 查看集群状态 > list # 确认存在kylin_metadata表 ``` - 若表不存在,需初始化Kylin元数据:`$KYLIN_HOME/bin/kylin.sh start` ##### 步骤2:修复CLASSPATH配置(关键步骤) 修改Kylin启动脚本,**强制添加HBase依赖库**: 1. 打开`$KYLIN_HOME/bin/kylin.sh` 2. 在`CLASSPATH`配置段追加以下内容(参考引用[4]): ```bash # 添加HBase依赖库(根据实际路径调整) export HBASE_HOME=/usr/lib/hbase # 替换为你的HBase安装路径 export CLASSPATH=$CLASSPATH:$HBASE_HOME/lib/* ``` ⚠️ **重点**:必须确保路径包含以下JAR文件: - `hbase-client-*.jar` - `hbase-common-*.jar` - `hbase-protocol-*.jar` ##### 步骤3:检查版本兼容性 确认组件版本匹配(参考引用[2]): ```bash hbase version # 记录HBase版本 kylin version # 记录Kylin版本 hadoop version # 记录Hadoop版本 ``` - 📌 **兼容要求**:Kylin版本需与CDH/HDP发行版一致(如CDH6.3.x需使用Kylin 3.x) ##### 步骤4:手动添加缺失JAR(备选方案) 若仍报`ClassNotFoundException`,直接将HBase JAR复制到Kylin的lib目录: ```bash cp $HBASE_HOME/lib/hbase-client-*.jar $KYLIN_HOME/lib/ cp $HBASE_HOME/lib/hbase-common-*.jar $KYLIN_HOME/lib/ ``` ##### 步骤5:重启服务并验证 ```bash # 停止Kylin $KYLIN_HOME/bin/kylin.sh stop # 启动Kylin $KYLIN_HOME/bin/kylin.sh start # 重新执行迁移命令 $KYLIN_HOME/bin/kylin.sh org.apache.kylin.tool.AclTableMigrationCLI ``` --- #### 💡 预防措施 1. **环境变量标准化**:在`/etc/profile`中明确定义: ```bash export HBASE_HOME=/path/to/hbase export KYLIN_HOME=/path/to/kylin export CLASSPATH=$CLASSPATH:$HBASE_HOME/lib/* ``` 2. **版本控制**:使用同版本CDH/HDP套件安装HBase/Kylin/Hadoop[^2][^4] 3. **权限检查**:确保Kylin用户有权限访问HBase: ```bash kinit kylin_user@EXAMPLE.COM # Kerberos环境 hbase shell -user kylin_user ``` > 📌 **关键提示**:90%的`ClassNotFoundException`错误源于CLASSPATH配置缺失,务必检查`kylin.sh`中的路径配置[^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值