• 1.将 /usr/lib/impala/lib 中的 hive-metastore更换成 hive-metastore-1.1.0-cdh5.16.2.jar
    • 存在报错
      • (由于 更换jar包之前,可以正常连接,所以怀疑是jar包版本问题 )
        • ln -fs /usr/lib/impala/lib/hive-metastore-3.1.3000.7.1.5.6-2.jar /usr/lib/impala/lib/hive-metastore.jar 这个不行
        • 最后,hive-metastore还是1.2.0jar包版本
          • 也许需要替换hdfs的jar包
          • 查一下catalog的报错
            • 查一下51296到底是谁的服务
              • 55主机上,啥都不变的情况下
                • 1.查询表数据报错
                  • hadoop-aws的jar包 需要修改(根据补充的几个hadoop-xx包,它们的版本都是2.7.2版本,试一下)
                • 2.建表报错
                  • hive-metastore的jar包 需要修改
                    • 2022年4月29日 周五 应急解决方案
                      • 1.尝试在55主机上重装impala看看是否还有报错
                        • 在55上重装2.11版本报和2.12一样的错误(2.11建表不报错。看一下2.11的hive-metadata的jar包版本和2.12的jar包版本,都是1.2.0版的hive-meta-store但2.11不报错)
                          • 解决方案:
                            • 1.查找对应的包,解决这个问题
                            • 2.重装3.1版本看看,貌似没有state-store服务也可以(重装过了,不行,甚至连接不上hdfs)
                            • 3.优先考虑以2.11版本为主来解决jar包冲突问题(将hadoop-aws-2.7.2.jar放进impala的lib内没问题了)
                              • 外部表建表语句报错(路径错误:排查一下是否写错路径)
                                • 建表没问题,查看表结构没问题,
                                • 建表没问题
                                • 出现问题 :数据写入报错,写入后,查询报错 。删除hive中 warehouse下的数据库,在impala中未实时更新。考虑是因为state-store服务未启动导致。
                                  • 解决方案:卸载56.57上的impala服务,重装为2.11版本,启动state-store服务看看是否可行
                      • 2.五一国庆期间学习ambari集成方案,尝试直接集成impala的方法
  • 发现云创测试环境 的 表oms_sale_order建表语句中有 insert_only限制,尝试重新在impala建表试试
  • 建表语句中无insert only限定时,可以正常使用impala访问数据
  • 对 无数据的 表执行 查询 和desc不报错
  • 对有数据的 表执行 查询和desc报错
    • 解决方案
    • 1.也许是 jar包版本冲突 删除ant-1.5.jar试试
    • 2.发现/usr/lib/impala/lib 无mysql包
      • 将$HIVE_HOME/lib/mysql-connector-java-5.1.40-bin.jar 复制到 /usr/lib/impala/lib下,
      • 并且修改/usr/bin/catalogd中修改CLASSPATH,添加MySQL驱动包:
      • export CLASSPATH=”${IMPALA_HOME}/lib/mysql-connector-java-5.1.40-bin.jar:……”
    • 3. 补充hadoop-annotations-2.7.2.jar
    • ln -sf hadoop-annotations-2.7.2.jar /usr/lib/impala/lib/hadoop-annotations.jar
    • 补充hadoop-archives-2.7.2.jar
    • ln -sf /usr/lib/impala/lib/hadoop-archives-2.7.2.jar /usr/lib/impala/lib/hadoop-archives.jar
    • 原本的报错是ERROR Finalizing DML: NoSuchMethodError: org.apache.hadoop.fs.BlockLocation.getStorageIds()[Ljava/lang/String; 找到了这个类在hadoop-common中。
    • 从hadoop-common-3.2.1.jar的fs中拿到 了BlockLocation.class,替换掉hadoop-common-2.7.2.jar的BlockLocation.class
    • 再次执行查询操作时,报错已改变。说明方案正确,继续找新的class
    • 1.确认报错的 类所在的jar包
    • 2.找到该类的方法
    • 3.替换原本版本里的class
    • 从hadoop-common-3.2.1.jar的util中拿到 了StringInterner.class,替换掉hadoop-common-2.7.2.jar的StringInterner.class
  • impala安装好之后 使用的问题
    • 1.不支持建表语句中的insert only定义 。报这个错的表原因在于ambari参数设置。
    • 重新建表即可重新运行工作流 即可
    • 2.impala2.xxx不支持orc格式的文件
      • 试一下impala3.xxx的安装
      • 3.2.0新增了支持orc格式的功能

作者 admin

张宴银,大数据开发工程师

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注