CDH集群手动导入scm库

匿名 (未验证) 提交于 2019-12-02 23:51:01

一、手动导入 scm 库

/usr/share/cmf/schema/scm_prepare_database.sh mysql -h<mysql-host> -u<mysql-user> -p<mysql-pwd> --scm-host <scm-host> <scm-user> <scm-dbname> <scm-pwd>

其中

  • <mysql-host>,<mysql-user> <mysql-pwd> 是需要创建的 scm 库所在的 mysql 位置,对应的 mysql 的主机名,用户名和登录密码;
  • <scm-host>,<scm_user>,<scm-dbname>,<scm-pwd>分别对应 cloudera-scm-server 部署在的主机名,scm 库的登录用户,scm 库的库名,scm 库的登录密码。

但是,当在使用云服务器的 rds 实例作为远程 mysql 时,执行以上脚本会报权限不够的错误。而在本地部署的 mysql 实例执行以上脚本则不会报错,主要原因是<mysql-user>是通过 grant all 命令来授权的,而使用 rds 实例时 grant all 命名是无法执行的,也就是使用 rds 时只能 grant 指定权限给用户,这样可能会导致一部分权限丢失,执行上面的自动建库脚本就会报权限错误。

解决方法:

由于 cloudera-scm-server 服务在启动时会初始化 scm 库,自动创建需要的表,因此,可以考虑将已经建好表的 sql 语句 dump 到本地,然后导入到 rds 实例中。

步骤一:在本地一台机器部署mysql,安装 clouder-scm-server 服务,将初始的 scm 表 sql 导出。

mysqldump -uroot -p scm_india > A_dump.sql

步骤二:将备份的 sql 语句导入到线上 scm 库所在的地址。

mysql -h<mysql-host> -u<mysql-user> -p<mysql-pwd> <scm-dbname> < A_dump.sql

至此,scm 库的初始表已手到导入,配置 cloudera-scm-server 的 db 地址并启动服务即可。

二、配置服务的db地址并启动服务

1. 配置 cloudera-scm-server 的 db 地址

# Copyright (c) 2012 Cloudera, Inc. All rights reserved. # # This file describes the database connection. #  # The database type # Currently 'mysql', 'postgresql' and 'oracle' are valid databases. #com.cloudera.cmf.db.type=mysql  # The database host # If a non standard port is needed, use 'hostname:port' #com.cloudera.cmf.db.host=localhost  # The database name #com.cloudera.cmf.db.name=cmf  # The database user #com.cloudera.cmf.db.user=cmf  # The database user's password #com.cloudera.cmf.db.password=  # The db setup type # By default, it is set to INIT # If scm-server uses Embedded DB then it is set to EMBEDDED # If scm-server uses External DB then it is set to EXTERNAL #com.cloudera.cmf.db.setupType=INIT  com.cloudera.cmf.db.type=mysql com.cloudera.cmf.db.host=<mysql-host> com.cloudera.cmf.db.name=<scm-dbname> com.cloudera.cmf.db.user=<scm-user> com.cloudera.cmf.db.setupType=EXTERNAL com.cloudera.cmf.db.password=<scm-pwd>

2. 启动 cloudera-scm-server 服务

/etc/init.d/cloudera-scm-server start

观察 cloudera-scm-server 服务是否正常运行,正常则表示手动导入的 scm 库没问题。

三、通用 scm 库 sql 语句

前提是先建好 scm 库 <scm-dbname>,然后通过下面的 A_dump.sql 文件导入 <scm-dbname> 库依赖的表。

A_dump.sql 语句:

【参考资料】

[1]. scm 建库

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!