Topik ini menjelaskan cara melakukan migrasi alur kerja penjadwalan dari Azure Data Factory (ADF) ke DataWorks menggunakan tool migrasi LHM. Prosesnya mencakup tiga langkah: mengekspor tugas dari ADF, mengonversi tugas penjadwalan, dan mengimpor tugas ke DataWorks.
1. Siapkan lingkungan
1.1. Siapkan lingkungan runtime
No. | Item | Spesifikasi | Jumlah | Catatan |
1 | ECS | 4-core 16 GB atau lebih tinggi | 1 | Citra OS CentOS atau AliyunOS didukung. |
2 | JDK 17 | |||
3 | Paket runtime |
1.2. Siapkan jaringan
VPC yang berisi instance ECS harus memiliki akses jaringan publik.
1.3. Siapkan akun dan izin
1.3.1. Gunakan autentikasi pendaftaran layanan
Daftarkan sebuah aplikasi.
Dapatkan rahasia klien (client secret).
1.3.2. Konfigurasikan izin Azure Data Factory
1.3.3. Konfigurasikan izin blob
Langkah ini bersifat opsional. Untuk membaca konten file dari blob dalam suatu node, Anda harus memberikan izin ke blob tersebut. Anda dapat menggunakan metode yang sama seperti saat memberikan izin untuk pendaftaran layanan ADF.
1.3.4. Konfigurasikan izin Databricks
Langkah ini bersifat opsional. Hanya diperlukan untuk membaca file skrip eksternal untuk node Databricks di ADF.
Buka workbench Databricks.
Klik User Settings.
Di sebelah kiri, buka halaman Developer.
Klik Generate new token.
2. Ekspor tugas dari Azure Data Factory
Anda dapat mengekspor tugas menggunakan software development kit (SDK). Dependensinya sebagai berikut:
<dependency>
<groupId>com.azure.resourcemanager</groupId>
<artifactId>azure-resourcemanager-datafactory</artifactId>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-blob</artifactId>
</dependency>
<dependency>
<groupId>com.databricks</groupId>
<artifactId>databricks-sdk-java</artifactId>
</dependency>2.1. File konfigurasi
{
"schedule_datasource": {
"name": "name",
"type": "adf",
"properties": {
"isUseProxy": false,
"proxyHost": "proxy.msl.cn",
"proxyPort": "8080",
"AzureCloud": "AZURE_CHINA_CLOUD",
"apiMode": "sdk"
"endpoint": "https://management.azure.com",
"subscriptionId": "xxx",
"factory": "bigdata-adf-jiman",
"project": "bigdata-adf-jiman",
"resourceGroupName": "biadata",
"tenantId": "xxx",
"clientId": "xxx",
"clientSecretValue": "xxxx",
"dbr_endpoint": "https://adb-xxxxx.16.azuredatabricks.net",
"dbr_token": "xxxxx",
"pipelineNameWhite": "dbr-demo"
},
"operaterType": "AUTO"
}
}2.2. Deskripsi parameter
No. | Parameter | Wajib | Contoh | Catatan |
1 | isUseProxy | Tidak | false | Diperlukan untuk mengakses Azure dalam modus proxy. |
2 | proxyHost | Tidak | proxy.msl.cn | Diperlukan untuk mengakses Azure dalam modus proxy. |
3 | proxyPort | Tidak | 8080 | Diperlukan untuk mengakses Azure dalam modus proxy. |
4 | AzureCloud | Tidak | AZURE_CHINA_CLOUD | Nilai valid: Nilai valid tercantum di bawah ini. Nilai-nilai tersebut sesuai dengan wilayah yang berbeda. Nilai default adalah AZURE_CHINA_CLOUD.
|
5 | endpoint | Tidak | https://portal.azure.com | Parameter ini terkait dengan AzureCloud dan bersifat opsional. |
6 | subscriptionId | Ya | xxxxx | ID langganan. Anda dapat memperolehnya dari ikhtisar di halaman utama ADF. |
7 | resourceGroupName | Ya | xxxxx | Nama kelompok sumber daya. Anda dapat memperolehnya dari ikhtisar di halaman utama ADF. |
8 | factory | Ya | bigdata-adf-jiman | Digunakan sebagai pengenal. |
9 | project | Tidak | bigdata-adf-jiman | Pertahankan parameter ini konsisten dengan parameter factory. |
10 | tenantId | Ya | xxxxx | Anda dapat memperolehnya selama langkah pendaftaran layanan. |
11 | clientId | Ya | xxxxx | Anda dapat memperolehnya selama langkah pendaftaran layanan. |
12 | clientSecretValue | Ya | xxxxx | Anda dapat memperolehnya selama langkah pendaftaran layanan. |
13 | dbr_endpoint | Tidak | xxxxx | Peroleh dari halaman utama Databricks. |
14 | dbr_token | Tidak | xxxxx | Peroleh dari halaman utama Databricks. |
15 | pipelineNameWhite | Tidak | dbr-demo | Daftar putih. Untuk menentukan beberapa nama pipeline, pisahkan dengan koma (,). |
2.3. Jalankan perintah ekspor
mkdir result
sh ./bin/run.sh read \
-c ./conf/<your_config_file>.json \
-o ./data/1_ReaderOutput/<source_export_package>.zip \
-t adf-readerDeskripsi parameter
No. | Parameter | Wajib | Contoh | Catatan |
1 | -c | Ya | ./conf/<your_config_file>.json | Jalur file konfigurasi. |
2 | -o | Ya | ./data/1_ReaderOutput/<source_export_package>.zip | Jalur output. |
3 | -t | Ya | adf-reader | Jenis plugin. Ini adalah bidang statis. |
Contoh perintah lengkap
mkdir result
sh ./bin/run.sh read -c ./conf/read.json -f ./result/temp.zip -o ./result/read_out.zip -t adf-reader2.4. Lihat hasil ekspor
Anda dapat membuka paket ReaderOutput.zip yang dihasilkan di direktori ./data/1_ReaderOutput/ untuk melihat pratinjau hasil ekspor. Laporan statistik menyediakan ringkasan informasi dasar tentang alur kerja, node, sumber daya, fungsi, dan sumber data. Folder data/project berisi struktur data terstandarisasi untuk informasi penjadwalan.
Laporan statistik menyediakan dua fitur khusus:
1. Anda dapat mengubah properti alur kerja dan node dalam laporan. Bidang yang dapat diedit ditandai dengan font biru. Saat Anda mengimpor tugas ke DataWorks, tool akan menerapkan perubahan properti tersebut.
2. Anda dapat melewati alur kerja tertentu selama impor ke DataWorks dengan menghapus baris yang sesuai di tabel anak alur kerja. Fitur ini berfungsi sebagai blacklist alur kerja. Catatan: Jika alur kerja saling bergantung, mereka harus diimpor dalam batch yang sama. Jangan gunakan blacklist untuk memisahkan mereka, karena hal ini menyebabkan error.
Untuk informasi selengkapnya, lihat Gunakan laporan ikhtisar dalam migrasi penjadwalan untuk menambah atau mengubah properti penjadwalan.
3. Konversi tugas penjadwalan
3.1. File konfigurasi
{
"conf": {
"locale": "zh_CN"
},
"self": {
"if.use.default.convert": false,
"if.use.migrationx.before": false,
"if.use.dataworks.newidea": true,
"filter.rule": []
},
"schedule_datasource": {
"name": "adf",
"type": "Adf"
},
"target_schedule_datasource": {
"name": "name",
"type": "DataWorks"
}
}3.2. Deskripsi parameter
Pengaturan default sudah cukup.
No. | Parameter | Wajib | Contoh | Catatan |
1 | filter.rule | Tidak | [ { "type": "black", "element": "node", "field": "name", "value": "DataXNode" } ] | Aturan filter. Parameter ini bersifat opsional. type menentukan daftar hitam atau daftar putih. Nilai valid: BLACK dan WHITE. element menentukan jenis elemen yang difilter. Jenis yang didukung: NODE dan WORKFLOW. field menentukan apakah akan difilter berdasarkan nama atau ID. Nilai valid: ID dan NAME. value menentukan nilainya. Untuk menentukan beberapa nilai, pisahkan dengan koma (,). |
schedule_datasource.name mengidentifikasi sumber data, yang sesuai dengan direktori root semua alur kerja.
3.3. Logika konversi dan pemetaan node bawaan
3.3.1. Logika pemetaan node umum
Jenis node ADF | Jenis node DataWorks | Catatan |
Copy | DI | Saat ini, hanya skrip JSON asli yang tersedia. Konten spesifik node Data Integration (DI) bergantung pada jenis sumber data. Untuk melakukan konversi, Anda harus memiliki informasi tentang semua jenis sumber data terkait DI. |
Delete | DIDE_SHELL | Skrip shell yang menggabungkan jalur file untuk penghapusan. |
SqlServerStoredProcedure | ODPS-SQL | Default-nya adalah node ODPS. Jika logika menentukan bahwa ini adalah SQL Server, jenis nodenya adalah Sql Server. |
DatabricksSparkJar | ODPS-SPARK | Node ODPS Spark dikonversi menggunakan parameter yang ada. Beberapa informasi mungkin hilang. |
DatabricksSparkPython | ODPS-SPARK | Node ODPS Spark dikonversi menggunakan parameter yang ada. Beberapa informasi mungkin hilang. |
DatabricksNotebook | NOTEBOOK | Sel yang terkait Scala tidak diproses. |
SynapseNotebook | NOTEBOOK | Sel yang terkait Scala tidak diproses. |
SparkJob | ODPS-SPARK | Sementara dikonversi menjadi node virtual. |
AppendVariable | CONTROLLER_ASSIGNMENT | Node assignment. |
ExecutePipeline | SUB_PROCESS | |
Script | ODPS_SQL | |
Wait | DIDE_SHELL | |
WebActivity | DIDE_SHELL | |
IfCondition | CONTROLLER_BRANCH | Dikonversi menjadi node cabang, subproses, dan node gabungan. |
FOREACH | CONTROLLER_TRAVERSE | Foreach |
Switch | CONTROLLER_BRANCH | Dikonversi menjadi node cabang, subproses, dan node gabungan. |
Until | CONTROLLER_CYCLE | Node do-while. |
Lookup | CONTROLLER_ASSIGNMENT | |
Filter | CONTROLLER_ASSIGNMENT | |
GetMeta | CONTROLLER_ASSIGNMENT | |
SetVariable | CONTROLLER_ASSIGNMENT | |
HDInsightHive | ODPS-SQL | |
HDInsightSpark | ODPS_Spark | |
HDInsightMapReduce | ODPS_MR | |
Lainnya | VIRTUAL |
Catatan: Anda harus mengunggah file sumber daya secara manual.
3.3.2. Logika pemetaan node logis
ifcondition
foreach
switch
3.3.3. Jalankan perintah konversi
sh ./bin/run.sh convert \
-c ./conf/<your_config_file>.json \
-f ./data/1_ReaderOutput/<source_export_package>.zip \
-o ./data/2_ConverterOutput/<conversion_output_package>.zip \
-t wedata-dw-converterNo. | Parameter | Wajib | Contoh | Catatan |
1 | -c | Ya | ./conf/<your_config_file>.json | Jalur file konfigurasi. |
2 | -f | Ya | ./data/1_ReaderOutput/<source_export_package>.zip | Paket yang diekspor dari sumber. |
3 | -o | Ya | ./result/convert_out.zip | Jalur untuk paket output. |
4 | -t | Ya | adf-dw-converter | Jenis plugin. Ini adalah bidang statis. |
3.3.4. Lihat hasil konversi
Anda dapat membuka paket ConverterOutput.zip yang dihasilkan di direktori ./data/2_ConverterOutput/ untuk melihat pratinjau hasil konversi.
Laporan statistik menyediakan ringkasan informasi dasar tentang alur kerja, node, sumber daya, fungsi, dan sumber data yang telah dikonversi.
Folder data/project berisi paket migrasi penjadwalan utama yang telah dikonversi.
Laporan statistik menyediakan dua fitur khusus:
1. Anda dapat mengubah properti alur kerja dan node dalam laporan. Bidang yang dapat diedit ditandai dengan font biru. Saat Anda mengimpor tugas ke DataWorks, tool akan menerapkan perubahan properti tersebut.
2. Anda dapat melewati alur kerja tertentu selama impor ke DataWorks dengan menghapus baris yang sesuai di tabel anak alur kerja. Fitur ini berfungsi sebagai blacklist alur kerja. Catatan: Jika alur kerja saling bergantung, mereka harus diimpor dalam batch yang sama. Jangan gunakan blacklist untuk memisahkan mereka, karena hal ini menyebabkan error.
Untuk informasi selengkapnya, lihat Gunakan laporan ikhtisar dalam migrasi penjadwalan untuk menambah atau mengubah properti penjadwalan.
4. Impor tugas ke DataWorks
Tool migrasi LHM mengonversi elemen penjadwalan dari sumber ke format penjadwalan DataWorks. Tool ini menyediakan titik masuk unggah terpadu yang memungkinkan Anda mengimpor alur kerja ke DataWorks untuk berbagai skenario migrasi.
Tool impor mendukung beberapa operasi tulis dan secara otomatis membuat atau memperbarui alur kerja dalam mode overwrite.
1. Prasyarat
1.1. Konversi berhasil
Tool konversi harus berjalan dengan sukses, mengonversi informasi penjadwalan sumber ke format penjadwalan DataWorks, dan menghasilkan paket ConverterOutput.zip.
(Opsional, direkomendasikan) Anda dapat membuka paket output konversi dan melihat laporan statistik untuk memverifikasi bahwa cakupan migrasi telah dikonversi dengan sukses.
1.2. Konfigurasi DataWorks
Di DataWorks, Anda harus melakukan tindakan berikut:
1. Buat ruang kerja.
2. Buat pasangan Kunci Akses (ID AccessKey dan Rahasia AccessKey) dan pastikan memiliki izin administrator untuk ruang kerja tersebut. (Kami sangat menyarankan Anda membuat pasangan Kunci Akses yang terikat ke akun Anda untuk mempermudah troubleshooting.)
3. Di ruang kerja, buat sumber data, sambungkan sumber daya komputasi, dan buat kelompok sumber daya.
4. Di ruang kerja, unggah file sumber daya dan buat user-defined function (UDF).
1.3. Pemeriksaan konektivitas jaringan
Anda harus memverifikasi koneksi ke titik akhir DataWorks.
Untuk daftar titik akhir, lihat:
ping dataworks.aliyuncs.com2. Impor item konfigurasi
Anda dapat membuat file konfigurasi ekspor JSON, seperti writer.json, di folder conf proyek.
Sebelum menggunakan file tersebut, Anda harus menghapus komentar dari JSON.
{
"schedule_datasource": {
"name": "YourDataWorks", // Beri nama sumber data DataWorks Anda.
"type": "DataWorks",
"properties": {
"endpoint": "dataworks.cn-hangzhou.aliyuncs.com", // Titik akhir
"project_id": "YourProjectId", // ID ruang kerja
"project_name": "YourProject", // Nama ruang kerja
"ak": "************", // ID AccessKey
"sk": "************" // Rahasia AccessKey
},
"operaterType": "MANUAL"
},
"conf": {
"di.resource.group.identifier": "Serverless_res_group_***_***", // Kelompok sumber daya penjadwalan
"resource.group.identifier": "Serverless_res_group_***_***", // Kelompok sumber daya integrasi data
"dataworks.node.type.xls": "/Software/bwm-client/conf/CodeProgramType.xls", // Jalur tabel jenis node DataWorks
"qps.limit": 5 // Batas atas permintaan per detik (QPS) untuk permintaan API yang dikirim ke DataWorks
}
}2.1. Titik akhir
Anda dapat memilih titik akhir berdasarkan wilayah ruang kerja DataWorks Anda. Untuk informasi selengkapnya, lihat:
2.2. ID dan nama ruang kerja
Anda dapat membuka Konsol DataWorks dan menuju ke halaman detail ruang kerja. Anda dapat memperoleh ID dan nama ruang kerja dari informasi dasar di sebelah kanan.
2.3. Buat dan otorisasi pasangan AccessKey
Di halaman pengguna, Anda dapat membuat pasangan AccessKey yang memiliki izin baca dan tulis administrator untuk ruang kerja DataWorks target.
Manajemen izin melibatkan dua lokasi. Jika Anda menggunakan pengguna Resource Access Management (RAM), Anda harus terlebih dahulu memberikan izin kepada pengguna RAM tersebut untuk mengoperasikan DataWorks.
Halaman Kebijakan: https://ram.console.alibabacloud.com/policies
Kemudian, di ruang kerja DataWorks, Anda dapat menetapkan izin ruang kerja ke akun tersebut.
Catatan: Anda dapat menetapkan kebijakan kontrol akses jaringan untuk AccessKey. Pastikan alamat IP mesin tempat tool migrasi berada diizinkan untuk mengakses jaringan.
2.4. Kelompok sumber daya
Dari bilah menu di sebelah kiri halaman detail ruang kerja DataWorks, buka halaman kelompok sumber daya. Anda dapat menyambungkan kelompok sumber daya dan memperoleh ID-nya.
Kelompok sumber daya serbaguna dapat digunakan untuk penjadwalan node dan integrasi data. Anda dapat menetapkan kelompok sumber daya penjadwalan (resource.group.identifier) dan kelompok sumber daya integrasi data (di.resource.group.identifier) ke kelompok sumber daya serbaguna yang sama.
2.5. Pengaturan QPS
Tool melakukan impor data dengan memanggil API DataWorks. Edisi DataWorks yang berbeda memiliki batas permintaan per detik (QPS) dan batas panggilan harian yang berbeda untuk operasi OpenAPI baca dan tulis. Untuk informasi selengkapnya, lihat Batasan.
Untuk edisi DataWorks Basic, Standard, dan Professional, Anda dapat menetapkan "qps.limit" ke 5. Untuk Edisi Perusahaan, Anda dapat menetapkan "qps.limit" ke 20.
Catatan: Hindari menjalankan beberapa tool impor secara bersamaan.
2.6. Pengaturan ID jenis node DataWorks
Di DataWorks, beberapa jenis node diberi TypeId yang berbeda di wilayah yang berbeda. TypeID spesifik ditentukan oleh antarmuka Pengembangan Data di DataWorks. Karakteristik ini terutama berlaku untuk node database. Untuk informasi selengkapnya, lihat Node database.
Misalnya, NodeTypeId untuk node MySQL adalah 1000039 di wilayah Hangzhou dan 1000041 di wilayah Shenzhen.
Untuk menyesuaikan perbedaan regional ini di DataWorks, tool menyediakan metode konfigurasi yang memungkinkan Anda mengonfigurasi tabel TypeId node yang digunakan oleh tool.
Tabel tersebut diimpor menggunakan item konfigurasi di tool impor:
"conf": {
"dataworks.node.type.xls": "/Software/bwm-client/conf/CodeProgramType.xls" // Jalur tabel jenis node DataWorks
}Untuk memperoleh ID jenis node dari antarmuka Pengembangan Data DataWorks, Anda dapat membuat alur kerja baru, menambahkan node baru ke alur kerja tersebut, menyimpan alur kerja, lalu melihat Spec alur kerja tersebut.
Jika jenis node dikonfigurasi salah, error berikut dilaporkan saat alur kerja dipublikasikan.
3. Jalankan tool impor DataWorks
Tool impor dipanggil dari command line. Perintahnya sebagai berikut:
sh ./bin/run.sh write \
-c ./conf/<your_config_file>.json \
-f ./data/2_ConverterOutput/<conversion_output_package>.zip \
-o ./data/4_WriterOutput/<import_result_package>.zip \
-t dw-newide-writerDalam perintah tersebut, -c adalah jalur file konfigurasi, -f adalah jalur penyimpanan paket ConverterOutput, -o adalah jalur penyimpanan paket WriterOutput, dan -t adalah nama plugin pengiriman.
Misalnya, untuk mengimpor Proyek A ke DataWorks:
sh ./bin/run.sh write \
-c ./conf/projectA_write.json \
-f ./data/2_ConverterOutput/projectA_ConverterOutput.zip \
-o ./data/4_WriterOutput/projectA_WriterOutput.zip \
-t dw-newide-writerTool impor mencetak informasi proses selama runtime. Anda dapat memeriksa adanya error selama proses berlangsung. Setelah impor selesai, statistik impor yang berhasil dan gagal dicetak di command line. Catatan: Kegagalan impor beberapa node tidak menghentikan keseluruhan proses impor. Jika sejumlah kecil node gagal diimpor, Anda dapat memodifikasinya secara manual di DataWorks.
4. Lihat hasil impor
Setelah impor selesai, Anda dapat melihat hasilnya di DataWorks. Anda juga dapat memantau proses impor alur kerja. Jika Anda menemukan masalah dan perlu menghentikan impor, Anda dapat menjalankan perintah jps untuk menemukan BwmClientApp lalu menjalankan perintah kill -9 untuk menghentikan proses tersebut.
5. Tanya Jawab
5.1. Sumber berada dalam pengembangan berkelanjutan. Bagaimana increment dan perubahan ini dikirimkan ke DataWorks?
Tool migrasi beroperasi dalam mode overwrite. Anda dapat menjalankan ulang proses ekspor, konversi, dan impor untuk mengirimkan perubahan inkremental dari sumber ke DataWorks. Catatan: Tool mencocokkan alur kerja berdasarkan jalur lengkapnya untuk memutuskan apakah akan membuat atau memperbarui. Untuk memastikan perubahan dimigrasikan dengan benar, jangan memindahkan alur kerja tersebut.
5.2. Sumber berada dalam pengembangan berkelanjutan, dan alur kerja di DataWorks sedang ditransformasi dan dikelola. Apakah migrasi inkremental akan menimpa perubahan di DataWorks?
Ya, demikian. Tool migrasi beroperasi dalam mode overwrite. Kami menyarankan agar Anda melakukan transformasi lanjutan di DataWorks hanya setelah migrasi selesai. Atau, Anda dapat menggunakan pendekatan migrasi bertahap. Setelah sekelompok alur kerja dimigrasikan dan Anda memastikan bahwa mereka tidak akan ditimpa lagi, Anda dapat mulai mentransformasikannya di DataWorks. Batch yang berbeda tidak saling memengaruhi.
5.3. Seluruh paket membutuhkan waktu terlalu lama untuk diimpor. Bisakah saya hanya mengimpor sebagian saja?
Ya, bisa. Anda dapat memangkas paket secara manual untuk melakukan impor parsial. Di folder data/project/workflow, simpan alur kerja yang ingin Anda impor dan hapus yang lainnya. Kemudian, Anda dapat mengompres ulang folder tersebut menjadi paket dan menjalankan tool impor. Catatan: Alur kerja yang saling bergantung harus diimpor bersama. Jika tidak, lineage node di antara mereka akan hilang.