Bu konu, MaxCompute üzerindeki Spark'ın Object Storage Service (OSS) kaynaklarına nasıl erişeceğini açıklar.
OSS Uç Noktasını Yapılandırma
Özellikleri hata ayıklarken OSS'in bulunduğu bölgenin genel uç noktasını kullanın. Üretim ortamında bir iş gönderirken ise OSS'in bulunduğu bölgenin dahili uç noktasını kullanın. Daha fazla bilgi için bkz. Bölgeler ve uç noktalar.
OSS Erişim Yöntemini Yapılandırma
-
Bir hesabın AccessKey ID ve AccessKey Secret değerlerini kullanarak OSS'e erişin.
spark.hadoop.fs.oss.accessKeyId = xxxxxx spark.hadoop.fs.oss.accessKeySecret = xxxxxx spark.hadoop.fs.oss.endpoint = oss-xxxxxx-internal.aliyuncs.com -
Security Token Service (STS) belirteci kullanarak OSS'e erişin.
Bir hesabın AccessKey ID ve AccessKey Secret değerlerini kullanarak OSS'e erişirseniz düz metin AccessKey ID ve AccessKey Secret değerlerini yapılandırmanız gerekir. Bu durum güvenlik riskleri oluşturur. OSS'e erişmek için bir STS belirteci kullanmanızı öneririz.
-
RAM Hızlı Yetkilendirme sayfasına gidin ve Authorize seçeneğine tıklayın. Böylece MaxCompute projesi, geçerli Alibaba Cloud hesabının OSS kaynaklarına bir STS belirteci kullanarak erişebilir.
NotYalnızca MaxCompute projesinin sahibi, erişilecek OSS kaynaklarına sahip olan bir Alibaba Cloud hesabı olduğunda bu yöntemi kullanarak bir MaxCompute projesine OSS kaynaklarına erişim yetkisi verebilirsiniz.
-
MaxCompute üzerindeki Spark'ın üstlendiği rolün Alibaba Cloud Resource Name (ARN) değerini alın.
Resource Access Management (RAM) konsolu nda oturum açın.
Sol gezinme bölmesinde Identities > Roles seçeneğini seçin.
Roles sayfasında AliyunODPSDefaultRole öğesini arayın.
Arama sonucunda Rol Adı sütunundaki AliyunODPSDefaultRole bağlantısına tıklayın. Görüntülenen sayfada Basic Information bölümündeki ARN değerini alın. Değer,
acs:ram::xxxxxxxxxxxxxxx:role/aliyunodpsdefaultrolebiçimindedir.
-
Aşağıdaki içeriği MaxCompute üzerindeki Spark yapılandırmalarına ekleyin:
# Configure Spark on MaxCompute to access OSS resources by using an STS token. spark.hadoop.fs.oss.credentials.provider=org.apache.hadoop.fs.aliyun.oss.AliyunStsTokenCredentialsProvider # Configure the ARN of the role that Spark on MaxCompute assumes. spark.hadoop.fs.oss.ststoken.roleArn=acs:ram::xxxxxxxxxxxxxxx:role/aliyunodpsdefaultrole # Configure the internal endpoint that is used to access OSS resources over a VPC. spark.hadoop.fs.oss.endpoint=oss-cn-hangzhou-internal.aliyuncs.com
-
İzin Listesi Yapılandırma
Çoğu durumda, MaxCompute üzerindeki Spark'ın OSS kaynaklarına erişmesi için izin listesi yapılandırmasına gerek yoktur.
Özel durumlarda (örneğin, OSS paketlerinden büyük miktarda veri okunduğunda veya yazıldığında) MaxCompute üzerindeki Spark, OSS kaynaklarına erişemeyebilir. Bu durumda aşağıdaki yapılandırmayı ekleyin:
spark.hadoop.odps.cupid.trusted.services.access.list=[your_bucket_name].oss-xxxxxx-internal.aliyuncs.com
Bu yapılandırmayı yalnızca yarn-cluster modunda bir iş gönderdiğinizde kullanabilirsiniz. Yapılandırmayı yapılandırma dosyasına veya CLI aracının komutuna eklemeniz gerekir.
OSS Erişimi İçin JindoSDK Kullanma
SparkConf nesnesine spark.hadoop.fs.AbstractFileSystem.oss.impl ve spark.hadoop.fs.oss.impl parametrelerini ekleyin. Örnek kod:
val conf = new SparkConf()
.setAppName("jindo-sdk-demo")
.set("spark.hadoop.fs.AbstractFileSystem.oss.impl", "com.aliyun.emr.fs.oss.OSS")
.set("spark.hadoop.fs.oss.impl", "com.aliyun.emr.fs.oss.JindoOssFileSystem")
spark.hadoop.fs.oss.impl parametresini yapılandırmanız gerekir. Aksi takdirde "No FileSystem for scheme: oss" hata iletisi döndürülür.