/usr/share/cmf/schema/scm_prepare_database.sh mysql -h -u -p --scm-host
其中
, 是需要创建的 scm 库所在的 mysql 位置,对应的 mysql 的主机名,用户名和登录密码;
,,,分别对应 cloudera-scm-server 部署在的主机名,scm 库的登录用户,scm 库的库名,scm 库的登录密码。
但是,当在使用云服务器的 rds 实例作为远程 mysql 时,执行以上脚本会报权限不够的错误。而在本地部署的 mysql 实例执行以上脚本则不会报错,主要原因是是通过 grant all 命令来授权的,而使用 rds 实例时 grant all 命名是无法执行的,也就是使用 rds 时只能 grant 指定权限给用户,这样可能会导致一部分权限丢失,执行上面的自动建库脚本就会报权限错误。
解决方法:
由于 cloudera-scm-server 服务在启动时会初始化 scm 库,自动创建需要的表,因此,可以考虑将已经建好表的 sql 语句 dump 到本地,然后导入到 rds 实例中。
步骤一:在本地一台机器部署mysql,安装 clouder-scm-server 服务,将初始的 scm 表 sql 导出。
mysqldump -uroot -p > A_dump.sql
步骤二:将备份的 sql 语句导入到线上 scm 库所在的地址。
mysql -h -u -p < A_dump.sql
至此,scm 库的初始表已手到导入,配置 cloudera-scm-server 的 db 地址并启动服务即可。
二、配置服务的db地址并启动服务
1. 配置 cloudera-scm-server 的 db 地址
通过 ‘ yum install cloudera-manager-daemons cloudera-manager-server‘ 安装好 cloudera-scm-server 服务后,会生成一个 db 配置文件 /etc/cloudera-scm-server/db.properties ,修改配置文件的内容,执行 mysql 所在地址。
# Copyright (c) 2012Cloudera, Inc. All rights reserved.
#
# Thisfiledescribes 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 thenit is set to EMBEDDED
# If scm-server uses External DB thenit is set to EXTERNAL
#com.cloudera.cmf.db.setupType=INIT
com.cloudera.cmf.db.type=mysql
com.cloudera.cmf.db.host=com.cloudera.cmf.db.name=
com.cloudera.cmf.db.user=
com.cloudera.cmf.db.setupType=EXTERNAL
com.cloudera.cmf.db.password=
2. 启动 cloudera-scm-server 服务
/etc/init.d/cloudera-scm-server start
观察 cloudera-scm-server 服务是否正常运行,正常则表示手动导入的 scm 库没问题,登录 http://:7180/ 访问访问,初始账号 admin/admin。
【参考资料】