MRS支持使用 obs:// 的方式對接OBS服務,當前主要支持的組件為Hadoop、Hive、Spark、Presto、Flink。其中HBase組件使用 obs:// 的方式對接OBS服務暫不支持。
MRS提供如下訪問OBS的配置方式,請選擇其中一種配置即可(推薦使用委托方式):
- 通過為MRS集群綁定ECS委托方式訪問OBS,避免了AK/SK直接暴露在配置文件中的風險,具體請參考配置存算分離集群(委托方式)。
- 在MRS集群中配置AK/SK,AK/SK會明文暴露在配置文件中,請謹慎使用,具體請參考本章節。
說明
為了提高數據寫入性能,可以修改對應服務的配置參數fs.obs.buffer.dir的值為數據盤目錄。
大數據存算分離場景,請務必使用OBS并行文件系統,使用普通對象桶會對集群性能產生較大影響。
Hadoop訪問OBS
- 在MRS客戶端的HDFS目錄($client_home/
HDFS/hadoop/etc/hadoop)中修改core-site.xml文件,增加如下內容。
<property>
<name>fs.obs.access.key</name>
<value>ak</value>
</property>
<property>
<name>fs.obs.secret.key</name>
<value>sk</value>
</property>
<property>
<name>fs.obs.endpoint</name>
<value>obs endpoint</value>
</property>
須知
在文件中設置AK/SK會明文暴露在配置文件中,請謹慎使用。
添加配置后無需手動添加AK/SK、endpoint就可以直接訪問OBS上的數據。例如執行如下命令查看文件系統obs-test下面的文件夾test_obs_orc的文件列表。
hadoop fs -ls "obs://obs-test/test_obs_orc"
- 每次在命令行中手動添加AK/SK、endpoint訪問OBS上的數據。
hadoop fs -Dfs.obs.endpoint=xxx -Dfs.obs.access.key=xx -Dfs.obs.secret.key=xx -ls"obs://obs-test/ test_obs_orc"
Hive訪問OBS
1.登錄服務配置頁面。
- 針對MRS 3.x之前版本,登錄集群詳情頁面,選擇“組件管理 > Hive > 服務配置”。
- 針對MRS 3.x及之后版本,登錄FusionInsight Manager頁面,具體請參見訪問FusionInsight Manager(MRS 3.x及之后版本),選擇“集群 > 服務 > Hive > 配置”。
2.將“基礎配置”切換為“全部配置”。
3.搜索“fs.obs.access.key”和“fs.obs.secret.key”參數,并分別配置為OBS的AK和SK。
若當前集群中搜索不到如上兩個參數,請在左側導航選擇“Hive > 自定義”,在自定義參數“core.site.customized.configs”中增加如上兩個參數。
4.單擊“保存配置”,并勾選“重新啟動受影響的服務或實例。”重啟Hive服務。
5.在beeline中直接使用obs的目錄進行訪問。例如,執行如下命令創建Hive表并指定數據存儲在test-bucket文件系統的test_obs目錄中。
createtable test_obs(a int, b string) row format delimited fields terminated by "," stored as textfile location"obs://test-bucket/test_obs";
Spark訪問OBS
說明由于SparkSQL依賴Hive,所以在Spark上配置OBS時,需要同時修改Hive訪問OBS的OBS配置。
- spark-beeline和spark-sql
可以通過在shell中增加如下OBS的屬性實現訪問OBS。
set fs.obs.endpoint=xxx
set fs.obs.access.key=xxx
set fs.obs.secret.key=xxx
- spark-beeline
spark-beeline也可以通過在Manager中配置服務參數實現訪問OBS。操作如下:
1.登錄服務配置頁面。
- 針對MRS 3.x之前版本,登錄集群詳情頁面,選擇“組件管理 > Spark服務配置”。
- 針對MRS 3.x及之后版本,登錄FusionInsight Manager頁面,具體請參見訪問FusionInsightManager(MRS3.x及之后版本),選擇“集群 > 服務 > Spark2x > 配置”。
2.將“基礎配置”切換為“全部配置”。
3.選擇“JDBCServer > OBS”配置fs.obs.access.key、fs.obs.secret.key參數。
若當前集群中沒有如上兩個參數,請在左側導航選擇“JDBCServer > 自定義”,在自定義參數“spark.core-site.customized.configs”中增加如上兩個參數。
詳見下圖: 自定義添加OBS參數


4.單擊“保存配置”,并勾選“重新啟動受影響的服務或實例。”重啟Spark服務。
5.在spark-beeline中訪問OBS,例如訪問obs://obs-demo-input/table/目錄:
create table test(id int) location 'obs://obs-demo-input/table/';
- spark-sql和spark-submit
spark-sql也可以通過修改core-site.xml配置文件實現訪問OBS。
使用spark-sql和使用spark-submit提交任務訪問OBS時,配置文件修改方法一致。
修改MRS客戶端中Spark配置文件夾($client_home/Spark/spark/conf)中的core-site.xml,增加如下內容:
<property>
<name>fs.obs.access.key</name>
<value>ak</value>
</property>
<property>
<name>fs.obs.secret.key</name>
<value>sk</value>
</property>
<property>
<name>fs.obs.endpoint</name>
<value>obs endpoint</value>
</property>
Presto訪問OBS
1.登錄集群詳情頁面,選擇“組件管理 > Presto > 服務配置”。
2.將“基礎配置”切換為“全部配置”。
3.搜索并配置如下參數。
- fs.obs.access.key配置為用戶AK
- fs.obs.secret.key配置為用戶SK
若當前集群中搜索不到如上兩個參數,請在左側導航選擇“Presto > Hive”,在自定義參數“core.site.customized.configs”中增加如上兩個參數。
4.單擊“保存配置”,并勾選“重新啟動受影響的服務或實例。”重啟Presto服務。
5.選擇“組件管理 > Hive > 服務配置”。
6..將“基礎配置”切換為“全部配置”。
7.搜索并配置如下參數。
- fs.obs.access.key配置為用戶AK
- fs.obs.secret.key配置為用戶SK
8.單擊“保存配置”,并勾選“重新啟動受影響的服務或實例。”重啟Hive服務。
9.在Presto客戶端中執行語句創建schema,指定location為OBS路徑,例如:
CREATE SCHEMA hive.demo WITH (location = 'obs://obs-demo/presto-demo/');
- 在該schema中建表,該表的數據即存儲在OBS文件系統內,例如:
CREATE TABLE hive.demo.demo_table WITH (format = 'ORC') AS SELECT * FROM tpch.sf1.customer;
Flink訪問OBS
在MRS客戶端的Flink配置文件“客戶端安裝路徑/Flink/flink/conf/flink-conf.yaml”中,增加如下內容。
fs.obs.access.key:ak
fs.obs.secret.key: sk
fs.obs.endpoint: obs endpoint
須知
在文件中設置AK/SK會明文暴露在配置文件中,請謹慎使用。
添加配置后無需手動添加AK/SK、endpoint就可以直接訪問OBS上的數據。