Cloudera Manager部署CDH到首次运行页面,安装运行Hive时,报错:HiveMetaException: Failed to get schema version, Cause:Table ‘metastore.VERSION’ doesn’t exist。
报错背景:
CM和CDH版本为5.15.2
①初始化CM数据库时执行的命令是:
./scm_prepare_database.sh mysql scm scm
即数据库类型是MySQL,scm数据库,scm数据库用户;
②在“首次运行”页面之前需要对Hive设置数据库,这里也对Hive所用数据库设置为scm数据库,即是Hive数据库和CM初始化时用的是同一个scm库,然后在安装运行Hive报该错误。
③进入MySQL的scm库,发现确实缺少VERSION表。
④通过查阅文章,感觉是Hive用的库和CM用的库冲突;
我是这样解决的:
停掉CM Server,drop掉scm库,在MySQL里重新新建hive库和scm库:
drop database scm;
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE hive DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
新建完两个库之后,执行CM数据库的初始化脚本:
./opt/cloudera-manager/cm-5.15.1/share/cmf/schema/scm_prepare_database.sh mysql scm scm
然后在scm库中执行脚本:
source /opt/cloudera/parcels/CDH-5.15.2-1.cdh5.15.2.p0.3/lib/hive/scripts/metastore/upgrade/mysql/hive-schema-1.1.0.mysql.sql
此脚本是为了解决VERSION表,执行完后发现scm库中有VERSION表了。
再次把CM Server运行起来,CM Agent重启一下,重新回到CM设置组件所用数据库的页面,注意这里Hive需要设置为MySQL的hive库(与CM所用的scm库独立),用户均为scm,继续下一步安装运行,发现全绿!
查看一下此时hive库和scm库的表:
±-------------------------------+
| Tables_in_scm |
±-------------------------------+
| AUDITS |
| BUCKETING_COLS |
| BUNDLE_ACTIONS |
| BUNDLE_JOBS |
| CDS |
| CLIENT_CONFIGS |
| CLIENT_CONFIGS_TO_HOSTS |
| CLUSTERS |
| CLUSTERS_AUD |
| CLUSTER_ACTIVATED_RELEASES |
| CLUSTER_ACTIVATED_RELEASES_AUD |
| CLUSTER_MANAGED_RELEASES |