Veri geliştirme sırasında Shell, Python ve Notebook gibi düğümlerde Object Storage Service (OSS) veya Apsara File Storage NAS (NAS) ile okuma ve yazma işlemleri yapmak için veri kümelerini kullanabilirsiniz. Ayrıca, bir kişisel geliştirme ortamı örneği oluştururken depolama alanı olarak bir veri kümesini bağlayabilirsiniz.
Veri kümesi oluşturma adımları hakkında bilgi edinmek için Veri kümelerini yönetme konusuna bakmanızı öneririz.
Genel Bakış
Veri kümeleri, DataWorks üzerinden doğrudan OSS ve NAS içinde depolanan verileri okumanıza ve yazmanıza olanak tanır. Bir veri kümesinin birden çok sürümünü oluşturabilir, zaman içindeki değişiklikleri izleyebilir ve gerektiğinde önceki bir sürüme geri dönebilirsiniz.
Sınırlamalar
Veri kümeleri yalnızca DataStudio yeni sürümünde desteklenir.
Kaynak grubu: Veri geliştirme düğümlerinden veri kümelerine yalnızca bir Serverless kaynak grubu aracılığıyla erişebilirsiniz.
Desteklenen nesneler: Veri kümeleri yalnızca Shell düğümleri, Python düğümleri, Temel geliştirme için Not Defterleri ve kişisel geliştirme ortamları içinde desteklenir. Her nesneye en fazla 5 veri kümesi bağlayabilirsiniz.
Depolama türü: Veri kümeleri, NFS protokolü kullanan Object Storage Service (OSS) ve Apsara File Storage NAS (NAS) hizmetlerini destekler.
İzinler: Bir veri kümesi bağlama hedefi salt okunur olarak ayarlanmışsa, içindeki klasörleri veya dosyaları değiştiremez ya da silemezsiniz. Bu işlemi denemeniz izin hatasıyla sonuçlanır.
Düğümlerde veri kümelerini kullanma
Bu bölümde, bir düğüme nasıl bir OSS veri kümesi bağlanacağı açıklanmaktadır. Bu örnekte, arka planında OSS bulunan bir DataWorks veri kümesi oluşturacak, OSS yolunu oss://datasets-oss.oss-cn-shanghai.aliyuncs.com/dataset01/v1/ veri kümesi bağlama yolu /mnt/data/dataset01 ile eşleştirecek ve ardından düğüm kodu üzerinden verilere okuma ve yazma işlemleri yapacaksınız.
Önkoşullar: Veri kümesi oluşturma
-
Paket oluşturun veya dosya sistemi oluşturun.
Bu örnekte bir OSS veri kümesi kullanılmaktadır. China (Shanghai) bölgesinde
datasets-ossadlı bir paket oluşturun ve ardından/dataset01/v1dizinini oluşturun. -
Bu örnekte,
datasets-ossadlı bir OSS veri kümesi oluşturun ve OSS yolunuoss://datasets-oss.oss-cn-shanghai.aliyuncs.com/dataset01/v1/şu yola bağlayın:/mnt/data/dataset01.
1. Düğüm için veri kümesini yapılandırma
Bir Shell veya Python düğümünün Debug Configuration bölümünde datasets-oss veri kümesini yapılandırın.
Düğümü yayınlamadan önce, Scheduling Settings bölümüne de veri kümesini eklemeniz gerekir.
Bir veri kümesi kullanmak için düğüme en az 0,5 hesaplama birimi (CU) ayırmanız gerekir.
|
Parametre |
Açıklama |
|
Datasets |
Geçerli düğümün kodunun erişebileceği veri kümesini belirtir.
Bu örnekte, DataWorks'te oluşturulan OSS veri kümesi |
|
Mount Path |
Düğüm kodunun veri kümesine erişmek için kullandığı yol. Bu alan, veri kümesi tanımlanırken yapılandırılan Default Mount Path değeriyle otomatik olarak doldurulur. Önemli
Aynı düğüme birden fazla veri kümesi bağlarsanız, bağlama yolları çakışmamalıdır. |
|
Advanced Settings |
Bu parametre isteğe bağlıdır. OSS verilerine erişmek için kullanılan araçları ve parametreleri veya NAS dosya sistemlerine erişim yapılandırmalarını JSON formatında belirtebilirsiniz.
|
|
Read Only |
Varsayılan olarak, geçerli düğümde veri kümesinden okuma ve yazma yapabilirsiniz. Veri kümesi bu düğüm için salt okunur olarak ayarlanmışsa, düğüm kodundan bağlama dizinine veri yazamazsınız. Yazma girişimi izin hatasıyla sonuçlanır. |
2. Veri kümesini düğümde kullanma
Bu örnekte bir Shell düğümü kullanılmaktadır. Bir OSS veri kümesini Shell düğümüne attıktan sonra, OSS verilerini yerel dosyalar gibi Shell düğümü kodunda yönetebilirsiniz. Aşağıdaki örnekte, varsayılan ossfs 2,0 aracı kullanılarak file01.txt dosyası datasets-oss OSS veri kümesinin /mnt/data/dataset01 bağlama yoluna yazılır.
Örnek kod:
echo "Hello World" > /mnt/data/dataset01/file01.txt
ls -tl /mnt/data/dataset01
Sağ taraftaki Debug Configurations panelinde Dataset sekmesini açın ve özel veri kümesi datasets-oss/V1 öğesini seçin. Kaynak grubu yetkilendirmesinin başarılı olduğunu gösteren mesajı onaylayın ve Read-only anahtarının kapalı olduğundan emin olun. Düğümü çalıştırdıktan sonra günlük, file01.txt dosyasının oluşturulduğunu (12 bayt, izinler: rwxrwxrwx), çıkış kodunun 0 olduğunu, geçen sürenin 0,741 saniye olduğunu ve durumun FINISH olduğunu gösterir.
Çalışma sırasında Job Submit Failed! submit job failed directly! Caused by: execute task failed, exception: [103:ILLEGAL_TASK]:Task with dataset need 0.5cu at least! hata mesajını alırsanız, bu görev için yetersiz CU ayrıldığı anlamına gelir. Kaynak grubu için CU tahsisini en az 0,5 olacak şekilde artırın.
3. OSS'deki verileri doğrulama
2. Veri kümesini düğümde kullanma bölümündeki kod çalıştırıldıktan sonra, dosya veri kümesinin bağlama yoluyla eşleşen OSS depolama yoluna otomatik olarak yazılır. Dosyayı OSS depolama yolunda görüntüleyebilirsiniz. Bu örnekte, datasets-oss OSS veri kümesinin /mnt/data/dataset01 bağlama yolu oss://datasets-oss.oss-cn-shanghai.aliyuncs.com/dataset01/v1/ yoluna eşlenir. Aşağıdaki şekil, OSS yoluna yazılan verilerin bir örneğini göstermektedir.
Bu yolda, yazılan file01.txt dosyasını (0,012 KB, Standart depolama) bulabilirsiniz.
Kişisel geliştirme ortamında veri kümelerini kullanma
Bir veri kümesi tanımlandıktan sonra, örneği oluştururken veya değiştirirken bunu bir kişisel geliştirme ortamı örneğine bağlayabilirsiniz. Ardından, kişisel dizininizdeki terminalde veya bir Not Defteri'nde veri kümesinin verilerine doğrudan erişebilirsiniz.
Önkoşullar: Veri kümesi oluşturma
-
Bu örnekte NAS tabanlı bir veri kümesi kullanılmaktadır. China (Shanghai) bölgesinde
datasets-nasadlı bir NAS veri kümesi oluşturun ve NAS yolununas://****.cn-shanghai.nas.aliyuncs.com/mnt/dataset02/v1/şu yola bağlayın:/mnt/data/dataset02.
1. Kişisel ortam için veri kümesini yapılandırma
Bir kişisel geliştirme ortamı örneği oluşturun ve mevcut NAS veri kümesi datasets-nas öğesini seçin.
Yapılandırma sayfasında, Dataset açılır listesinden datasets-nas öğesini seçin ve ilgili bağlama yolunu belirtin.
|
Parametre |
Açıklama |
|
Datasets |
Örneğin kodunun erişebileceği veri kümesini belirtir. Kişisel geliştirme ortamı örneği için seçilen VPC'nin NAS bağlama hedefine bağlanabildiğinden emin olun. Bu örnekte, DataWorks'te oluşturulan NAS veri kümesi |
|
Mount Path |
Örneğin kodunun veri kümesine erişmek için kullandığı yol. Bu örnekte, NAS veri kümesi yolu Önemli
Aynı kişisel geliştirme ortamı örneğine birden fazla veri kümesi bağlarsanız, bağlama yolları çakışmamalıdır. |
|
Advanced Settings |
Bu parametre isteğe bağlıdır. NFS protokolü kullanan bir Apsara File Storage NAS (NAS) dosya sistemine erişmek için yapılandırmaları (nasOptions parametresi) JSON formatında belirtebilirsiniz. Aşağıdaki kod, varsayılan yapılandırmayı gösterir. Parametre değerlerini özelleştirmek için NFS dosya sistemini manuel olarak bağlama konusuna da bakabilirsiniz. Önemli
|
|
Read Only |
Varsayılan olarak, örnekte veri kümesinden okuma ve yazma yapabilirsiniz. Veri kümesi örnek için salt okunur olarak ayarlanmışsa, örnek içindeki koddan bağlama dizinine veri yazamazsınız. Yazma girişimi izin hatasıyla sonuçlanır. |
2. Veri kümesini Not Defteri'nde kullanma
DataStudio sayfasının üst kısmında kişisel geliştirme ortamı örneğine geçiş yapın ve ardından bir Temel geliştirme için Not Defteri oluşturun.
-
Not Defteri'ne aşağıdaki içeriği ekleyin.
-
Veri kümesindeki belirtilen yola veri yazın.
import os # Define the destination path and file name file_path = "/mnt/data/dataset02/file02.txt" # Make sure that the directory exists. If the directory does not exist, create it. os.makedirs(os.path.dirname(file_path),exist_ok=True) # Write the content content = "Hello World!" try: with open(file_path, "w", encoding="utf-8") as file: file.write(content) print(f"The file is successfully written to {file_path}") except Exception as e: print(f"Failed to write the file: {str(e)}") -
Veri kümesindeki belirtilen yoldan veri okuyun.
file_path = "/mnt/data/dataset02/file02.txt" with open(file_path, "r") as file: content = file.read() content
-
-
İki Python kod parçasını ayrı ayrı çalıştırın.
NotKodu çalıştırmadan önce doğru Python kernel'inin seçildiğinden emin olun. Bu örnekte Python 3.11.9 kullanılmaktadır.
İlk kod parçası: Veri kümesindeki belirtilen yola veri yazma.
import os # Define the destination path and file name file_path = "/mnt/data/dataset02/file02.txt" # Make sure that the directory exists. If the directory does not exist, create it. os.makedirs(os.path.dirname(file_path),exist_ok=True) # Write the content content = "Hello World!" try: with open(file_path, "w", encoding="utf-8") as file: file.write(content) print(f"The file is successfully written to {file_path}") except Exception as e: print(f"Failed to write the file: {str(e)}")Çıktı
The file is successfully written to /mnt/data/dataset02/file02.txtise yazma işlemi başarılı demektir. İkinci kod parçası: Veri kümesindeki belirtilen yoldan veri okuma.file_path = "/mnt/data/dataset02/file02.txt" with open(file_path, "r") as file: content = file.read() contentÇıktı
'Hello World!'ise okuma işlemi başarılı demektir.
3. Zamanlamayı yapılandırma
Not Defteri düğümünün sağ tarafında Scheduling Settings öğesine tıklayın ve veri kümesi seçeneklerini ekleyin. Kişisel geliştirme ortamı örneği için yapılandırılanlarla aynı parametreleri kullanın.
Gelişmiş yapılandırma örnekleri
Bir veri kümesi yapılandırırken, ilgili parametreleri JSON formatında özelleştirmek için gelişmiş yapılandırmalar ayarlayabilirsiniz:
Bir düğüm için veri kümesi yapılandırırken, OSS verilerini okumak ve yazmak için kullanılan araçları ve parametreleri belirtmek veya NAS dosya sistemlerindeki verileri okumak ve yazmak için yapılandırmaları belirlemek amacıyla gelişmiş yapılandırmalar ayarlayabilirsiniz.
Bir kişisel geliştirme ortamı için veri kümesi yapılandırırken, NAS dosya sistemlerindeki verileri okumak ve yazmak için yapılandırmaları belirlemek üzere gelişmiş parametreler ayarlayabilirsiniz.
ossfs 2,0 ile OSS bağlama
ossfs 2,0 yüksek performanslı erişim için OSS'yi bağlayan bir istemcidir. Yüksek sıralı okuma/yazma aktarım hızı sunar ve OSS bant genişliğini tam olarak kullanır. AI eğitimi ve büyük veri işleme gibi yüksek sıralı G/Ç performansı gerektiren yoğun hesaplama uygulamaları için uygundur. Bu iş yükü senaryoları genellikle sıralı ve rastgele okumalar ile sıralı (yalnızca ekleme) yazmalar içerir ve tam POSIX semantiği gerektirmez.
Bir düğüm için Advanced Settings alanında gelişmiş parametreler ayarlayabilirsiniz. Birden fazla seçeneği virgülle (,) ayırın. Gelişmiş parametrelerin nasıl kullanılacağına ilişkin talimatlar ve daha fazla yapılandırma seçeneği için bkz. ossfs 2,0 bağlama seçenekleri. Aşağıdaki örnekler birkaç yaygın senaryoyu göstermektedir:
-
Değişmez veri kaynağı: Okuduğunuz tüm dosyalar bir görev sırasında değiştirilmiyorsa, meta veri isteklerinin sayısını azaltmak için uzun bir önbellek süresi ayarlayabilirsiniz. Tipik bir senaryo, mevcut bir dosya grubunu okumak ve işlemeden sonra yeni bir dosya grubu oluşturmaktır.
{"mountOssType":"ossfs", "attr_timeout": "7200"} -
Hızlı okuma ve yazma işlemleri: Önbellek verimliliği ve veri güncelliği arasında denge kurmak için kısa bir meta veri önbellek süresi kullanın.
{"mountOssType":"ossfs", "attr_timeout": "3", "negative_timeout":"0"} -
Dağıtılmış görevler için tutarlı görünüm: Varsayılan olarak, ossfs dosya verilerini meta veri önbelleğine göre günceller. Birden çok düğümde senkronize bir görünüm elde etmek için aşağıdaki yapılandırmayı kullanın.
{ "mountOssType":"ossfs","negative_timeout": "0", "close_to_open":"false"} -
Çok fazla dosya açılmasından kaynaklanan OOM: Yüksek görev eşzamanlılığı ve aynı anda açık çok sayıda dosya bellek yetersizliği (OOM) sorunlarına neden olabilir. Bellek baskısını hafifletmek için aşağıdaki yapılandırmayı kullanın.
{"mountOssType":"ossfs","readdirplus": "false", "inode_cache_eviction_threshold":"300000"}
ossfs 1,0 ile OSS bağlama
ossfs 1,0 bir Linux sisteminde bir OSS paketini yerel dosya sistemi olarak bağlar. ossfs 2,0'a kıyasla ossfs 1,0, dosya işlemleri için daha kapsamlı destek sağlar. ossfs 2,0 ile dosya işlemi uyumsuzlukları yaşarsanız bunun yerine ossfs 1,0'ı kullanmayı deneyin.
ossfs 1,0 ile bağlama için gereken parametreler hakkında daha fazla bilgi için bkz. ossfs 1,0 bağlama seçenekleri.
JindoFuse ile OSS bağlama
Bir OSS veri kümesini bir konteynerdeki belirtilen yola bağlamak için JindoFuse bileşenini kullanabilirsiniz. Bu araç aşağıdaki senaryolar için uygundur:
OSS verilerini yerel bir veri kümesi gibi okumak istiyorsanız veya veri kümesi JindoFuse'un yerel önbellek hızlandırmadan yararlanacak kadar küçükse.
OSS'ye veri yazmanız gerekiyorsa.
Bir düğüm için Advanced Settings alanında gelişmiş parametreler ayarlayabilirsiniz. Birden fazla seçeneği virgülle (,) ayırın. Aşağıdaki kod yalnızca bir örnek göstermektedir. Parametre açıklamaları ve daha fazla yapılandırma seçeneği için bkz. JindoFuse Kullanıcı Kılavuzu ve Verileri bağlamak ve erişmek için JindoFuse kullanma.
Şu anda DataWorks yalnızca key=value formatındaki parametreleri destekler.
{
"mountOssType":"jindofuse",
"fs.oss.download.thread.concurrency": "2 × number of CPU cores",
"fs.oss.upload.thread.concurrency": "2 × number of CPU cores",
"attr_timeout": 3,
"entry_timeout": 0,
"negative_timeout": 0
}
NAS veri kümesi kullanma
NAS tabanlı veri kümeleri için, NFS tabanlı bir Apsara File Storage NAS (NAS) dosya sistemine erişmek üzere yapılandırmaları (nasOptions parametresi kullanarak) belirtebilirsiniz. Aşağıdaki kod, varsayılan yapılandırmayı gösterir. Parametre değerlerini özelleştirmek için bkz. NFS dosya sistemini manuel olarak bağlama.
Yalnızca NFS protokolü kullanan NAS dosya sistemleri bağlanabilir.
NAS için yalnızca bir gelişmiş yapılandırma parametresi desteklenir:
nasOptions. NAS bağlama parametrelerini özelleştirmek için Gelişmiş Yapılandırma'yı şu şekilde ayarlayabilirsiniz:{"nasOptions":"<ParameterName1=ParameterValue>, <ParameterName2=ParameterValue>,..."}.
{"nasOptions":"vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport"}
SSS
Bir OSS veri kümesinden veri okurken "FileNotFoundError: /etc/oss-secret/AccessKeyId" hatası alırsam ne yapmalıyım?
Bu hata genellikle DataWorks kaynak grubunun OSS'ye erişmek için gerekli kimlik bilgilerini alamadığını gösterir. Sorunu gidermek için aşağıdaki adımları uygulayın:
Veri kümesi yapılandırma panelinde OSS yetkilendirmesini tamamladığınızdan emin olun. Veri kümesini ilk kez kullandığınızda bu yetkilendirme için bir istem görüntülenir.
Serverless kaynak grubunun normal durumda olduğundan ve askıya alınmadığından emin olun.
Yetkilendirme ve kaynak grubu durumu normal olmasına rağmen hata devam ediyorsa, ossfs kimlik bilgisi ekleme sürecini incelemesi için teknik destek ile iletişime geçin.