MRS支持用戶將數據存儲在OBS服務中,使用MRS集群僅做數據計算處理的存算模式。MRS通過IAM服務的“委托”機制進行簡單配置,實現使用ECS自動獲取的臨時AK/SK訪問OBS。避免了AK/SK直接暴露在配置文件中的風險。
通過綁定委托,ECS或BMS云服務將有權限來管理您的部分資源,請根據實際業務場景需求確認是否需要配置委托。
MRS提供如下訪問OBS的配置方式,請選擇其中一種配置即可(推薦使用委托方式):
- 通過為MRS集群綁定ECS委托方式訪問OBS,避免了AK/SK直接暴露在配置文件中的風險,具體請參考本章節。
- 在MRS集群中配置AK/SK,AK/SK會明文暴露在配置文件中,請謹慎使用,具體請參考配置存算分離集群(AKSK方式)。
集群的Hadoop、Hive、Spark、Presto、Flink組件支持該功能。
1.創建具有訪問OBS權限的ECS委托
說明
MRS在IAM的委托列表中預置了MRS_ECS_DEFAULT_AGENCY委托,可在集群創建過程中可以選擇該委托,該委托擁有對象存儲服務的OBS OperateAccess權限和在集群所在區域擁有CESFullAccess(對開啟細粒度策略的用戶)、CES Administrator和KMS Administrator權限。同時請勿在IAM修改MRS_ECS_DEFAULT_AGENCY委托。
如需使用預置的委托,請跳過創建委托步驟。如需使用自定義委托,請參考如下步驟進行創建委托(創建或修改委托需要用戶具有Security Administrator權限)。
- 登錄管理控制臺。
- 在服務列表中選擇“管理與監管 > 統一身份認證服務”。
- 選擇“委托 > 創建委托”。
- 設置“委托名稱”。例如:mrs_ecs_obs。
- “委托類型”選擇“云服務”,在“云服務”中選擇“彈性云主機ECS 裸金屬服務器BMS”,授權ECS或BMS調用OBS服務。
- “持續時間”選擇“永久”并單擊“下一步”。
- 在彈出授權頁面的搜索框內,搜索“OBS OperateAccess”策略,勾選“OBS OperateAccess”策略。
- 單擊“下一步”,選擇權限范圍方案,默認選擇“所有資源”,單擊“展開其他方案”,選擇“全局服務資源”。
- 在彈出的提示框中單擊“知道了”,開始授權。界面提示“授權成功。”,單擊“完成”,委托成功創建。
2.創建存算分離集群
配置存算分離支持在新建集群中配置委托實現,也可以通過為已有集群綁定委托實現。本示例以開啟Kerberos認證的集群為例介紹。
新創建存算分離集群 :
- 登錄MRS服務控制臺。
- 單擊“創建集群”,進入“創建集群”頁面。
- 在創建集群頁面,選擇“自定義創建”頁簽。
- 在“自定義創建”頁簽,填寫“軟件配置”參數。
- 區域:請根據需要選擇。
- 集群名稱:可以設置為系統默認名稱,但為了區分和記憶,建議帶上項目拼音縮寫或者日期等。
- 集群版本:請選擇集群版本。
- 集群類型:選擇“分析集群”或“混合集群”并勾選所有組件。
- 元數據:選擇“本地元數據”。
- 單擊“下一步”,并配置硬件相關參數。
- 可用區:默認即可。
- 虛擬私有云:默認即可。
- 子網:默認即可。
- 安全組:默認即可。
- 彈性公網IP:默認即可。
- 集群節點:請根據自身需求選擇節點規格和數量。
- 單擊“下一步”,并配置相關參數。
- Kerberos認證:默認開啟,請根據自身需要選擇。
- 用戶名:默認為“admin”,用于登錄集群管理頁面。
- 密碼:設置admin用戶密碼。
- 確認密碼:再次輸入設置的admin用戶密碼。
- 登錄方式:選擇登錄ECS節點的登錄方式,本例選擇密碼方式。
- 用戶名:默認為“root”,用于遠程登錄ECS機器。
- 密碼:設置root用戶密碼。
- 確認密碼:再次輸入設置的root用戶密碼。
- 本例以配置委托為例介紹,其他參數暫不配置,如需配置請參考創建自定義集群中的高級配置(可選)。
委托:選擇1:創建具有訪問OBS權限的ECS委托所創建的委托或MRS在IAM服務中預置的委托MRS_ECS_DEFAULT_AGENCY。
- 通信安全授權請勾選“確認授權”,詳細信息請參見授權安全通信。
- 單擊“立即申請”。等待集群創建成功。
當集群開啟Kerberos認證時,需要確認是否需要開啟Kerberos認證,若確認開啟請單擊“繼續”,若無需開啟Kerberos認證請單擊“返回”關閉Kerberos認證后再創建集群。
為已有集群配置存算分離功能 :
- 登錄MRS控制臺,在導航欄選擇“集群列表 > 現有集群”。
- 單擊集群名稱,進入集群詳情頁面。
- 在集群詳情頁的“概覽”頁簽,單擊“IAM用戶同步”右側的“同步”進行IAM用戶同步。
- 在集群詳情頁的“概覽”頁簽,單擊委托右側的“管理委托”選擇需要綁定的委托并單擊“確定”進行綁定,或單擊“新建委托”進入IAM控制臺進行創建后再在此處進行綁定。
3.創建OBS文件系統用于存放數據

說明大數據存算分離場景,請務必使用OBS并行文件系統,使用普通對象桶會對集群性能產生較大影響。
- 登錄OBS控制臺。
- 單擊“并行文件系統 > 創建并行文件系統”。
- 填寫文件系統名稱,例如“mrs-word001”。
其他參數請根據需要填寫。
- 單擊“立即創建”。
- 在OBS控制臺并行文件系統列表中,單擊文件系統名稱進入詳情頁面。
- 在左側導航欄選擇“文件”,新建program、input文件夾。
- program:請上傳程序包到該文件夾。
- input:請上傳輸入數據到該文件夾。
4.訪問OBS文件系統
- 用root用戶登錄集群Master節點,具體請參見登錄集群節點。
- 配置環境變量。
MRS 3.x之前版本請執行:source /opt/client/bigdata_env
MRS 3.x及之后版本請執行:source /opt/Bigdata/client/bigdata_env
- 驗證Hadoop訪問OBS。
a. 查看文件系統mrs-word001下面的文件列表。
hadoop fs -ls obs://mrs-word001/
b. 返回文件列表即表示訪問OBS成功。
詳見下圖: Hadoop驗證返回文件列表


- 驗證Hive訪問OBS。
a. 如果當前集群已啟用Kerberos認證,執行以下命令認證當前用戶,當前用戶需要具有創建Hive表的權限,具體請參見創建角色配置擁有對應權限的角色,參考創建用戶創建用戶并為用戶綁定對應角色。如果當前集群未啟用Kerberos認證,則無需執行此命令。
kinit MR集群用戶
例如,kinit hiveuser
b. 執行Hive組件的客戶端命令。
beeline
c. 在beeline中直接使用obs的目錄進行訪問。例如,執行如下命令創建Hive表并指定數據存儲在mrs-word001文件系統的test_obs目錄中。
create table test_obs(a int, b string) row format delimited fieldsterminated by "," stored as textfile location
"obs://mrs-word001/test_obs";
d. 執行如下命令查詢所有表,返回結果中存在表test_obs,即表示訪問OBS成功。
show tables;
詳見下圖: Hive驗證返回已創建的表名


e. 使用“Ctrl + C”退出hive beeline。
- 驗證Spark訪問OBS。
a. 執行Spark組件的客戶端命令。
spark-beeline
b. 在spark-beeline中訪問OBS,例如在obs://mrs-word001/table/目錄中創建表test。
create table test(id int) location 'obs://mrs-word001/table/';
c. 執行如下命令查詢所有表,返回結果中存在表test,即表示訪問OBS成功。
show tables;
詳見下圖: Spark驗證返回已創建的表名


d. 使用“Ctrl + C”退出退出spark beeline。
- 驗證Presto訪問OBS。
?未開啟Kerberos認證的普通集群
i.執行如下命令連接客戶端。
presto_cli.sh
ii. 在Presto客戶端中執行語句創建schema,指定location為OBS路徑,例如:
CREATE SCHEMA hive.demo01 WITH (location =
'obs://mrs-word001/presto-demo002/');
iii. 在該schema中建表,該表的數據即存儲在OBS文件系統內,例如:
CREATE TABLE hive.demo.demo_table WITH (format = 'ORC') AS SELECT *
FROM tpch.sf1.customer;
詳見下圖:普通集群Presto驗證返回結果


iv. 執行exit退出客戶端。
?開啟Kerberos認證的安全集群
i.登錄MRS Manager創建一個擁有“Hive Admin Privilege”權限的角色,例如prestorole,創建角色請參考創建角色。
ii.創建一個屬于“Presto”和“Hive”組的用戶,同時為該用戶綁定中創建的角色,例如presto001,創建用戶請參考創建用戶。
iii. 認證當前用戶。
kinit presto001
iv. 下載用戶憑證。
1)針對MRS 3.x之前版本集群,在MRS Manager頁面,選擇“系統設置 > 用戶管理 ”,單擊新增用戶所在行的“更多 > 下載認證憑據”。
詳見下圖: 下載Presto用戶認證憑據


2)針對MRS 3.x及之后版本,在FusionInsight Manager頁面,選擇“系統 > 權限 > 用戶”,單擊新增用戶所在行的“更多 > 下載認證憑據”。
詳見下圖:下載Presto用戶認證憑據


v. 解壓下載的用戶憑證文件,得到“krb5.conf”和“user.keytab”兩個文件并放入客戶端目錄,例如“/opt/Bigdata/client/Presto/”。
vi.執行如下命令獲取用戶principal。
klist -kt /opt/Bigdata/client/Presto/user.keytab
vii. 啟用Kerberos認證的集群,執行以下命令連接本集群的Presto Server。
presto_cli.sh --krb5-config-path {krb5.conf 文件路徑} --krb5-principal { 用戶principal} --krb5-keytab-path {user.keytab文件路徑} --user {presto用戶名}
- krb5.conf文件路徑:請替換為6.v中設置的文件存放路徑,例如“/opt/Bigdata/client/Presto/krb5.conf”
- user.keytab文件路徑:請替換為6.v中設置的文件存放路徑,例如“/opt/Bigdata/client/Presto/user.keytab”
- 用戶principal:請替換為6.vi中返回的結果
- presto用戶名:請替換為6.ii中創建的用戶名,例如“presto001”
例如:presto_cli.sh --krb5-config-path /opt/Bigdata/client/Presto/krb5.conf --krb5-principal prest001@xxx_xxx_xxx_xxx.1COM --krb5-keytab-path /opt/Bigdata/client/Presto/user.keytab --user presto001
viii. 在Presto客戶端中執行語句創建schema,指定location為OBS路徑,例如:
CREATE SCHEMA hive.demo01 WITH (location ='obs://mrs-word001/presto-demo002/');
ix. 在該schema中建表,該表的數據即存儲在OBS文件系統內,例如:
CREATE TABLE hive.demo01.demo_table WITH (format = 'ORC') AS SELECT *FROM tpch.sf1.customer;
詳見下圖:安全集群Presto驗證返回結果


x. 執行exit退出客戶端。
- 驗證Flink訪問OBS。
a. 在集群詳情頁的“概覽”頁簽,單擊“IAM用戶同步”右側的“同步”進行IAM用戶同步。
b. 用戶同步完成后,在集群詳情頁選擇“作業管理 > 添加”提交Flink作業,在“執行程序參數”中按照“--input <作業輸入路徑> --output <作業輸出路徑>”格式填寫,其中作業輸入路徑選擇OBS,輸出路徑請手動輸入一個不存在的目錄,例如obs://mrs-word001/output/,如下圖所示。
詳見下圖: 添加Flink作業


c. 在OBS控制臺,進入提交作業時選擇的輸出路徑,即可查看到輸出目錄已經自動創建并存放著作業執行結果,表示訪問OBS成功。
詳見下圖:Flink作業執行結果


相關參考
如需對訪問OBS的權限進行控制,請參考配置MRS多用戶訪問OBS細粒度權限。