Topik ini menjelaskan perbedaan antara mode lokal dan mode terdistribusi tempat pekerjaan MapReduce dijalankan, serta memberikan contoh pekerjaan MapReduce dalam mode lokal.
Pengenalan mode lokal
Before you run a job in local mode, Anda dapat menentukan opsi -local dalam perintah JAR untuk mensimulasikan pelaksanaan pekerjaan. Dengan cara ini, Anda dapat melakukan debugging lokal pada pekerjaan tersebut.
During job running, klien mengunduh metadata dan data dari tabel input, metadata dari tabel output, serta sumber daya yang diperlukan untuk debugging lokal dari MaxCompute. Data yang diunduh disimpan ke direktori lokal bernama warehouse.
After the job is completed, hasil komputasi disimpan ke file dalam direktori warehouse. Jika tabel input dan sumber daya yang diperlukan telah diunduh ke direktori warehouse, MapReduce secara langsung merujuk data dan file dalam direktori tersebut lain kali, bukan mengunduh data lagi.
Perbedaan antara mode lokal dan mode terdistribusi
Pekerjaan MapReduce yang berjalan dalam mode lokal memulai beberapa tugas map dan reduce untuk memproses data. Tugas-tugas ini berjalan secara berurutan.
- Baris dalam tabel input: Maksimal 100 baris data dapat diunduh dalam mode lokal.
- Penggunaan Sumber Daya: Dalam mode terdistribusi, MaxCompute membatasi ukuran sumber daya yang dapat dirujuk. Untuk informasi lebih lanjut, lihat Batasan MapReduce. Namun, tidak ada batasan yang diberlakukan pada ukuran sumber daya dalam mode lokal.
- Keamanan: MaxCompute MapReduce dan fungsi yang ditentukan pengguna (UDF) dibatasi oleh Java sandbox dalam mode terdistribusi. Namun, tidak ada batasan yang diberlakukan dalam mode lokal.
Contoh
odps:my_project> jar -l com.aliyun.odps.mapred.example.WordCount wc_in wc_out
Summary:
counters: 10
map-reduce framework
combine_input_groups=2
combine_output_records=2
map_input_bytes=4
map_input_records=1
map_output_records=2
map_output_[wc_out]_bytes=0
map_output_[wc_out]_records=0
reduce_input_groups=2
reduce_output_[wc_out]_bytes=8
reduce_output_[wc_out]_records=2
OK
Untuk informasi lebih lanjut tentang kode sampel WordCount, lihat WordCount.
warehouse.
<warehouse>
|____my_project (direktori proyek)
|____ <__tables__>
| |__wc_in (direktori data tabel)
| | |____ data (file)
| | |
| | |____ <__schema__> (file)
| |__wc_out (direktori data tabel)
| |____ data (file)
| |
| |____ <__schema__> (file)
|
|____ <__resources__>
|
|___table_resource_name (sumber daya tabel)
| |____<__ref__>
|
|___ file_resource_name (sumber daya file)
- Direktori di tingkat yang sama dengan
my_projectmenunjukkan proyek. Direktori di tingkat yang sama denganwc_indanwc_outmenunjukkan tabel data. Data tabel yang Anda baca atau tulis menggunakan perintah JAR diunduh ke direktori di tingkat ini. - File <__schema__> menyimpan metadata tabel. Kode berikut mendefinisikan format file:
project=nama_proyek_lokal table=nama_tabel_lokal columns=nama_kolom1:tipe_kolom1,nama_kolom2:tipe_kolom2 partitions=p1:STRING,p2:BIGINT -- Dalam contoh ini, Anda tidak perlu menentukan bidang ini.Pisahkan nama dan tipe data kolom dengan titik dua (:). Pisahkan kolom dengan koma (,). Nama proyek dan tabel,
project_name.table_name, harus dideklarasikan di awal file <__schema__>. Pisahkan deklarasi dan definisi kolom dengan koma (,). Contoh:project_name.table_name,nama_kolom1:tipe_kolom1,nama_kolom2:tipe_kolom2,…… - File data dalam direktori
tablesmenyimpan data tabel. Jumlah kolom dan data kolom harus sesuai dengan definisi dalam file _schema_. Pisahkan kolom dengan koma (,).File _schema_ dalam direktoriwc_inberisi data berikut:my_project.wc_in,key:STRING,value:STRINGFile data berisi data berikut:0,2Klien mengunduh metadata dan sebagian data tabel dari MaxCompute, lalu menyimpan data ke file-file di atas. Lain kali Anda menjalankan program contoh ini, klien langsung menggunakan data dalam direktoriwc_in, bukan mengunduhnya lagi.Catatan Data hanya dapat diunduh dari MaxCompute untuk pekerjaan MapReduce yang berjalan dalam mode lokal.File _schema_ dalam direktoriwc_outberisi data berikut:my_project.wc_out,key:STRING,cnt:BIGINTFile data berisi data berikut:0,1 2,1Klien mengunduh metadata tabelwc_outdari MaxCompute, lalu menyimpan data ke file _schema_. Setelah pekerjaan selesai, hasilnya disimpan ke file data.Catatan- Anda juga dapat mengedit file _schema_ dan data, lalu menyimpan file tersebut dalam direktori tabel.
- Jika Anda menjalankan pekerjaan dalam mode lokal dan klien mendeteksi bahwa direktori tabel ada, klien tidak akan mengunduh informasi tabel ini dari MaxCompute. Direktori tabel lokal dapat mencakup tabel yang tidak ada di MaxCompute.