一、手動導入 scm 庫
背景:正常安裝 cloudera-scm-server 時,安裝 scm 庫是通過腳本 /usr/share/cmf/schema/scm_prepare_database.sh 來自動建庫的。
/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-dbname> > 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 地址
通過 ‘ yum install cloudera-manager-daemons cloudera-manager-server‘ 安裝好 cloudera-scm-server 服務后,會生成一個 db 配置文件 /etc/cloudera-scm-server/db.properties ,修改配置文件的內容,執行 mysql 所在地址。
# 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 庫沒問題,登錄 http://<scm-host>:7180/ 訪問訪問,初始賬號 admin/admin。
【參考資料】
