翼MapReduce產品基于JeekeFS組件服務提供存算分離能力,支持用戶將數據存儲在天翼云對象存儲產品中,同時使用翼MR集群做數據計算處理,從而實現更靈活、低成本的數據分析方式。
集群準備
- 開始配置前,請確保購買的翼MR集群中已部署JeekeFS組件服務。目前,翼MapReduce產品主要支持在數據湖、數據服務和實時數據流場景下可選JeekeFS組件服務。
- 請確認已經在相關資源池區域中,購買開通好天翼云對象存儲產品,詳細操作流程請參照天翼云對象存儲產品幫助文檔開通對象存儲服務章節內容
初始化文件系統
-
前往對象存儲產品的獲取基礎信息:Access Key、Security Key。詳細操作流程請參照天翼云對象存儲產品幫助文檔獲取訪問密鑰(AK/SK)中“獲取對象存儲AK/SK”章節內容。
-
在對象存儲產品中創建Bucket。詳細操作流程請參照天翼云對象存儲產品幫助文檔創建桶章節內容。
-
獲取桶名稱和內網地址,以下圖為例,對象存儲完整內網地址是//100.123.136.65/bucket-ce75(注意不要帶上最后面的端口號“:80”)。
-
返回翼MapReduce產品控制臺,進入待配置存算分離能力目標集群的翼MR Manager頁面,并在集群服務-JeekeFS的配置管理中獲取元數據地址信息,將其格式修改成:tikv://【IP1】:7579, 【IP2】:7579, 【IP3】:7579形式,參見下圖:
-
通過參照登錄集群節點章節內容,登錄翼MR集群中部署JeekeFS組件服務元數據實例角色的節點,基于步驟1~4中獲取的信息,手工初始化文件系統。
例:假定文件系統名字,s3上的根目錄名稱都是s3fs。
cd /usr/local/jeekefs/bin./jeekefs format --bucket //100.123.136.65/bucket-ce75 --access-key xxxxxxx --secret-key xxxxxxx tikv://192.168.0.27:7579/s3fs s3fs說明需要根據實際的對象存儲內網地址及Bucket Name拼接上述語句中“--bucket”參數的Value值。另外,“--access-key”、“--secret-key”和“tikv://192.168.0.27:7579”的值需要同樣調整成實際的字符串。
命令執行結果示例:
-
創建成功后,即可在對象存儲平臺看到和文件系統名字一樣的目錄:
驗證方式
HDFS集群配置
非緩存模式且混合存儲的最小配置如下:
<property>
<name>fs.jfs.impl</name>
<value>io.jeekefs.JeekeFileSystem</value>
</property>
<property>
<name>fs.AbstractFileSystem.jfs.impl</name>
<value>io.jeekefs.JeekeFS</value>
</property>
<property>
<name>jeekefs.server-principal</name>
<value>jfs/meta</value>
<description>元數據服務的principle</description>
</property>
<property>
<name>jeekefs.meta</name>
<value>tikv://192.168.0.27:7579/s3fs</value>
</property>
將上述的配置,通過使用翼MR Manager中的配置管理功能增加配置到翼MR集群HDFS服務core-site.xml配置中,并同步到各個節點,如圖所示:
同步成功后,即可登錄機器使用HDFS Shell命令進行測試。
HDFS Shell測試
-
初始化Token
1)獲取principal name:
klist -kt /etc/security/keytabs/hdfs.keytab2)kerberos認證:
kinit -kt /etc/security/keytabs/hdfs.keytab 【上一步獲取的principal name】例如:
kinit -kt /etc/security/keytabs/hdfs.keytab hdfs/bigdata-vm-1739430990-yda3f-0001@BIGDATA.CHINATELECOM.CN -
訪問原生的HDFS
hdfs dfs -ls / -
訪問JeekeFS,并進行文件CRUD操作
hdfs dfs -ls jfs://s3fs/
Spark測試
-
準備工作
kinit -kt /etc/security/keytabs/hdfs.keytab 獲取到的實際principalnameHive Metastore收到元數據請求需要識別JeekeFS,需重啟YARN-ResourceManager 和 Hive-MetaStore服務。
注意翼MR集群默認都開啟kerberos認證。Spark將應用交給YARN之前,應用程序只會初始化defaultFS所指向文件系統的安全認證。如果后續作業需要訪問其他安全文件系統,會拋出認證不通過的異常。因此,我們這里需要將其他文件系統顯式地提供給Spark客戶端側配置參數spark.kerberos.access.hadoopFileSystems=jfs://s3fs。
-
進入YARN的Shell
spark-sql --master yarn --conf spark.yarn.access.hadoopFileSystems=jfs://s3fs -
創建一個數據庫
create database if not exists jfstest location 'jfs://s3fs/jfstest'; -
創建一個數據表
create table jfstest.orcbtb(name string,age int) stored?as?orc; -
執行成功后,查看表詳情,關注是否是內部表,路徑是否在Jeekefs上
-
執行增刪改查操作
insert into jfstest.orcbtb values('tty',3); insert into jfstest.orcbtb values('tty',4); select * from jfstest.orcbtb; -
清空表
TRUNCATE TABLE jfstest.orcbtb; -
刪除表
drop table jfstest.orcbtb;
說明由于路徑是jfs開頭,如果直接創建表,Spark會識別為外部表。這里先創建數據庫,再創建表,才是內部表。只有內部表,刪除數據后,才會最終刪除S3。