Pekerjaan sarang - Amazon EMR

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Pekerjaan sarang

Anda dapat menjalankan pekerjaan Hive pada aplikasi dengan type parameter yang disetel keHIVE. Jobs harus kompatibel dengan versi Hive yang kompatibel dengan versi EMR rilis Amazon. Misalnya, ketika Anda menjalankan pekerjaan pada aplikasi dengan Amazon EMR rilis 6.6.0, pekerjaan Anda harus kompatibel dengan Apache Hive 3.1.2. Untuk informasi tentang versi aplikasi untuk setiap rilis, lihatEMRVersi rilis Amazon Tanpa Server.

Parameter pekerjaan sarang

Bila Anda menggunakan StartJobRunAPIuntuk menjalankan pekerjaan Hive, Anda harus menentukan parameter berikut.

Peran runtime pekerjaan sarang

Gunakan executionRoleArnARNuntuk menentukan IAM peran yang digunakan aplikasi Anda untuk menjalankan pekerjaan Hive. Peran ini harus berisi izin berikut:

  • Baca dari bucket S3 atau sumber data lain di mana data Anda berada

  • Baca dari bucket atau awalan S3 tempat file kueri Hive dan file kueri init Anda berada

  • Baca dan tulis ke bucket S3 tempat direktori Hive Scratch dan direktori gudang Hive Metastore Anda berada

  • Menulis ke ember S3 di mana Anda ingin menulis hasil akhir Anda

  • Menulis log ke bucket S3 atau awalan yang menentukan S3MonitoringConfiguration

  • Akses ke KMS kunci jika Anda menggunakan KMS kunci untuk mengenkripsi data di bucket S3 Anda

  • Akses ke Katalog Data AWS Glue

Jika pekerjaan Hive Anda membaca atau menulis data ke atau dari sumber data lain, tentukan izin yang sesuai dalam peran iniIAM. Jika Anda tidak memberikan izin ini untuk IAM peran tersebut, pekerjaan Anda mungkin gagal. Untuk informasi selengkapnya, lihat Peran runtime Job untuk Amazon Serverless EMR.

Parameter pengemudi pekerjaan sarang

Gunakan jobDriveruntuk memberikan masukan pada pekerjaan. Parameter driver pekerjaan hanya menerima satu nilai untuk jenis pekerjaan yang ingin Anda jalankan. Saat Anda menentukan hive sebagai jenis pekerjaan, EMR Tanpa Server meneruskan kueri Hive ke parameter. jobDriver Pekerjaan sarang memiliki parameter berikut:

  • query— Ini adalah referensi di Amazon S3 ke file kueri Hive yang ingin Anda jalankan.

  • parameters— Ini adalah properti konfigurasi Hive tambahan yang ingin Anda timpa. Untuk mengganti properti, teruskan ke parameter ini sebagai--hiveconf property=value. Untuk mengganti variabel, berikan mereka ke parameter ini sebagai--hivevar key=value.

  • initQueryFile- Ini adalah file query init Hive. Hive menjalankan file ini sebelum kueri Anda dan dapat menggunakannya untuk menginisialisasi tabel.

Parameter penggantian konfigurasi sarang

Gunakan configurationOverridesuntuk mengganti properti konfigurasi tingkat pemantauan dan tingkat aplikasi. Parameter ini menerima JSON objek dengan dua bidang berikut:

  • monitoringConfiguration— Gunakan bidang ini untuk menentukan Amazon S3 URL (s3MonitoringConfiguration) tempat Anda ingin pekerjaan EMR Tanpa Server menyimpan log pekerjaan Hive Anda. Pastikan Anda membuat bucket ini dengan yang sama Akun AWS yang meng-host aplikasi Anda, dan di tempat yang sama Wilayah AWS di mana pekerjaan Anda berjalan.

  • applicationConfiguration— Anda dapat memberikan objek konfigurasi di bidang ini untuk mengganti konfigurasi default untuk aplikasi. Anda dapat menggunakan sintaks singkatan untuk menyediakan konfigurasi, atau Anda dapat mereferensikan objek konfigurasi dalam file. JSON Objek konfigurasi terdiri dari klasifikasi, properti, dan konfigurasi bersarang opsional. Properti terdiri dari pengaturan yang ingin Anda timpa dalam file itu. Anda dapat menentukan beberapa klasifikasi untuk beberapa aplikasi dalam satu JSON objek.

    catatan

    Klasifikasi konfigurasi yang tersedia bervariasi menurut rilis Tanpa EMR Server tertentu. Misalnya, klasifikasi untuk Log4j kustom spark-driver-log4j2 dan hanya spark-executor-log4j2 tersedia dengan rilis 6.8.0 dan yang lebih tinggi.

Jika Anda melewati konfigurasi yang sama dalam penggantian aplikasi dan dalam parameter Hive, parameter Hive akan diprioritaskan. Daftar berikut memberi peringkat konfigurasi dari prioritas tertinggi hingga prioritas terendah.

  • Konfigurasi yang Anda berikan sebagai bagian dari parameter Hive. --hiveconf property=value

  • Konfigurasi yang Anda berikan sebagai bagian dari penggantian aplikasi Anda ketika Anda memulai pekerjaan.

  • Konfigurasi yang Anda berikan sebagai bagian dari runtimeConfiguration saat Anda membuat aplikasi.

  • Konfigurasi yang dioptimalkan yang EMR ditetapkan Amazon untuk rilis.

  • Konfigurasi sumber terbuka default untuk aplikasi.

Untuk informasi selengkapnya tentang mendeklarasikan konfigurasi di tingkat aplikasi, dan mengganti konfigurasi selama menjalankan pekerjaan, lihat. Konfigurasi aplikasi default untuk Tanpa EMR Server

Properti pekerjaan sarang

Tabel berikut mencantumkan properti wajib yang harus Anda konfigurasikan saat mengirimkan pekerjaan Hive.

Pengaturan Deskripsi
hive.exec.scratchdir Lokasi Amazon S3 tempat EMR Tanpa Server membuat file sementara selama eksekusi pekerjaan Hive.
hive.metastore.warehouse.dir Lokasi Amazon S3 database untuk tabel terkelola di Hive.

Tabel berikut mencantumkan properti Hive opsional dan nilai defaultnya yang dapat Anda ganti saat mengirimkan pekerjaan Hive.

Pengaturan Deskripsi Nilai default
fs.s3.customAWSCredentialsProvider Penyedia AWS Credentials yang ingin Anda gunakan. com.amazonaws.auth.d efaultAWSCredentials ProviderChain
fs.s3a.aws.credentials.provider Penyedia AWS Credentials yang ingin Anda gunakan dengan sistem file S3A. com.amazonaws.auth.d efaultAWSCredentials ProviderChain
hive.auto.convert.join Opsi yang mengaktifkan konversi otomatis gabungan umum menjadi mapjoins, berdasarkan ukuran file input. TRUE
hive.auto.convert.join.noconditionaltask Opsi yang mengaktifkan pengoptimalan saat Hive mengonversi gabungan umum menjadi mapjoin berdasarkan ukuran file input. TRUE
hive.auto.convert.join.noconditionaltask.size Gabungan mengonversi langsung ke mapjoin di bawah ukuran ini. Nilai optimal dihitung berdasarkan memori tugas Tez
hive.cbo.enable Opsi yang mengaktifkan pengoptimalan berbasis biaya dengan kerangka Calcite. TRUE
hive.cli.tez.session.async Opsi untuk memulai sesi Tez latar belakang saat kueri Hive Anda dikompilasi. Saat disetel kefalse, Tez AM diluncurkan setelah kueri Hive Anda dikompilasi. TRUE
hive.compute.query.using.stats Opsi yang mengaktifkan Hive untuk menjawab pertanyaan tertentu dengan statistik yang disimpan di metastore. Untuk statistik dasar, atur hive.stats.autogather keTRUE. Untuk koleksi kueri yang lebih canggih, jalankananalyze table queries. TRUE
hive.default.fileformat Format file default untuk CREATE TABLE pernyataan. Anda dapat secara eksplisit mengganti ini jika Anda menentukan STORED AS [FORMAT] dalam perintah Anda. CREATE TABLE TEXTFILE
hive.driver.cores Jumlah core yang digunakan untuk proses driver Hive. 2
hive.driver.disk Ukuran disk untuk driver Hive. 20G
hive.driver.disk.type Jenis disk untuk driver Hive. Standar
hive.tez.disk.type Ukuran disk untuk pekerja tez. Standar
hive.driver.memory Jumlah memori yang digunakan per proses driver Hive. Master Aplikasi Hive CLI dan Tez berbagi memori ini secara setara dengan 20% ruang kepala. 6G
hive.emr-serverless.launch.env.[KEY] Opsi untuk mengatur variabel KEY lingkungan di semua proses khusus HIVE, seperti driver Hive Anda, Tez AM, dan tugas Tez.
hive.exec.dynamic.partition Opsi yang mengaktifkan partisi dinamis diDML/DDL. TRUE
hive.exec.dynamic.partition.mode Opsi yang menentukan apakah Anda ingin menggunakan modus ketat atau modus non-ketat. Dalam mode ketat, Anda harus menentukan setidaknya satu partisi statis jika Anda secara tidak sengaja menimpa semua partisi. Dalam mode non-ketat, semua partisi dibiarkan dinamis. strict
hive.exec.max.dynamic.partitions Jumlah maksimum partisi dinamis yang dibuat Hive secara total. 1000
hive.exec.max.dynamic.partitions.pernode Jumlah maksimum partisi dinamis yang dibuat Hive di setiap node mapper dan reducer. 100
hive.exec.orc.split.strategy Mengharapkan salah satu nilai berikut:BI,ETL, atauHYBRID. Ini bukan konfigurasi tingkat pengguna. BImenentukan bahwa Anda ingin menghabiskan lebih sedikit waktu dalam pembuatan terpisah dibandingkan dengan eksekusi kueri. ETLmenentukan bahwa Anda ingin menghabiskan lebih banyak waktu dalam generasi terpisah. HYBRIDmenentukan pilihan strategi di atas berdasarkan heuristik. HYBRID
hive.exec.reducers.bytes.per.reducer Ukuran per peredam. Defaultnya adalah 256 MB. Jika ukuran input 1G, pekerjaan menggunakan 4 reduksi. 256000000
hive.exec.reducers.max Jumlah maksimum reduksi. 256
hive.exec.stagingdir Nama direktori yang menyimpan file sementara yang Hive buat di dalam lokasi tabel dan di lokasi direktori awal yang ditentukan dalam hive.exec.scratchdir properti. .hive-staging
hive.fetch.task.conversion Mengharapkan salah satu nilai berikut:NONE,MINIMAL, atauMORE. Hive dapat mengonversi kueri pilih menjadi satu FETCH tugas. Ini meminimalkan latensi. MORE
hive.groupby.position.alias Opsi yang menyebabkan Hive menggunakan alias posisi kolom dalam GROUP BY pernyataan. FALSE
hive.input.format Format input default. Atur ke HiveInputFormat jika Anda mengalami masalah denganCombineHiveInputFormat. org.apache.hadoop.hive.ql.io.CombineHiveInputFormat
hive.log.explain.output Opsi yang mengaktifkan penjelasan output diperpanjang untuk kueri apa pun di log Hive Anda. FALSE
hive.log.level Level penebangan sarang. INFO
hive.mapred.reduce.tasks.speculative.execution Opsi yang mengaktifkan peluncuran spekulatif untuk reduksi. Hanya didukung dengan Amazon EMR 6.10.x dan yang lebih rendah. TRUE
hive.max-task-containers Jumlah maksimum kontainer bersamaan. Memori mapper yang dikonfigurasi dikalikan dengan nilai ini untuk menentukan memori yang tersedia yang membagi komputasi dan penggunaan preemption tugas. 1000
hive.merge.mapfiles Opsi yang menyebabkan file kecil bergabung di akhir pekerjaan khusus peta. TRUE
hive.merge.size.per.task Ukuran file gabungan di akhir pekerjaan. 256000000
hive.merge.tezfiles Opsi yang mengaktifkan penggabungan file kecil di akhir DAG Tez. FALSE
hive.metastore.client.factory.class Nama kelas pabrik yang menghasilkan objek yang mengimplementasikan IMetaStoreClient antarmuka. com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory
hive.metastore.glue.catalogid Jika Katalog Data AWS Glue bertindak sebagai metastore tetapi berjalan di tempat yang berbeda Akun AWS dari pekerjaan, ID Akun AWS tempat pekerjaan berjalan. NULL
hive.metastore.uris Penghematan URI yang digunakan klien metastore untuk terhubung ke metastore jarak jauh. NULL
hive.optimize.ppd Opsi yang menyalakan predikat pushdown. TRUE
hive.optimize.ppd.storage Opsi yang mengaktifkan predikat pushdown ke penangan penyimpanan. TRUE
hive.orderby.position.alias Opsi yang menyebabkan Hive menggunakan alias posisi kolom dalam ORDER BY pernyataan. TRUE
hive.prewarm.enabled Opsi yang menyalakan wadah prewarm untuk Tez. FALSE
hive.prewarm.numcontainers Jumlah wadah untuk pra-hangat untuk Tez. 10
hive.stats.autogather Opsi yang menyebabkan Hive mengumpulkan statistik dasar secara otomatis selama INSERT OVERWRITE perintah. TRUE
hive.stats.fetch.column.stats Opsi yang mematikan pengambilan statistik kolom dari metastore. Pengambilan statistik kolom bisa mahal ketika jumlah kolom tinggi. FALSE
hive.stats.gather.num.threads Jumlah utas yang digunakan partialscan dan noscan menganalisis perintah untuk tabel yang dipartisi. Ini hanya berlaku untuk format file yang mengimplementasikan StatsProvidingRecordReader (likeORC). 10
hive.strict.checks.cartesian.product Opsi yang mengaktifkan pemeriksaan gabungan Cartesian yang ketat. Pemeriksaan ini melarang produk Cartesian (gabungan silang). FALSE
hive.strict.checks.type.safety Opsi yang mengaktifkan pemeriksaan keamanan tipe ketat dan mematikan perbandingan bigint dengan keduanya string dandouble. TRUE
hive.support.quoted.identifiers Mengharapkan nilai NONE atauCOLUMN. NONEmenyiratkan hanya karakter alfanumerik dan garis bawah yang valid dalam pengidentifikasi. COLUMNmenyiratkan nama kolom dapat berisi karakter apa pun. COLUMN
hive.tez.auto.reducer.parallelism Opsi yang mengaktifkan fitur paralelisme peredam otomatis Tez. Hive masih memperkirakan ukuran data dan menetapkan perkiraan paralelisme. Tez mengambil sampel ukuran keluaran simpul sumber dan menyesuaikan perkiraan saat runtime seperlunya. TRUE
hive.tez.container.size Jumlah memori yang digunakan per proses tugas Tez. 6144
hive.tez.cpu.vcores Jumlah core yang digunakan untuk setiap tugas Tez. 2
hive.tez.disk.size Ukuran disk untuk setiap wadah tugas. 20G
hive.tez.input.format Format input untuk generasi split di Tez AM. org.apache.hadoop.hive.ql.io.HiveInputFormat
hive.tez.min.partition.factor Batas bawah reduksi yang ditentukan Tez saat Anda mengaktifkan paralelisme peredam otomatis. 0,25
hive.vectorized.execution.enabled Opsi yang mengaktifkan mode vektor eksekusi kueri. TRUE
hive.vectorized.execution.reduce.enabled Opsi yang mengaktifkan mode vektor dari sisi pengurangan eksekusi kueri. TRUE
javax.jdo.option.ConnectionDriverName Nama kelas pengemudi untuk JDBC metastore. org.apache.derby.jdbc.EmbeddedDriver
javax.jdo.option.ConnectionPassword Kata sandi yang terkait dengan database metastore. NULL
javax.jdo.option.ConnectionURL String JDBC penghubung untuk JDBC metastore. jdbc:derby:;databaseName=metastore_db;create=true
javax.jdo.option.ConnectionUserName Nama pengguna yang terkait dengan database metastore. NULL
mapreduce.input.fileinputformat.split.maxsize Ukuran maksimum split selama komputasi split saat format input Anda. org.apache.hadoop.hive.ql.io.CombineHiveInputFormat Nilai 0 menunjukkan tidak ada batas. 0
tez.am.dag.cleanup.on.completion Opsi yang mengaktifkan pembersihan data acak saat DAG selesai. TRUE
tez.am.emr-serverless.launch.env.[KEY] Pilihan untuk mengatur variabel KEY lingkungan dalam proses Tez AM. Untuk Tez AM, nilai ini mengesampingkan nilainya. hive.emr-serverless.launch.env.[KEY]
tez.am.log.level Level pencatatan root yang diteruskan EMR Tanpa Server ke master aplikasi Tez. INFO
tez.am.sleep.time.before.exit.millis EMRTanpa server harus mendorong ATS peristiwa setelah periode waktu ini setelah permintaan shutdown AM. 0
tez.am.speculation.enabled Opsi yang menyebabkan peluncuran spekulatif tugas yang lebih lambat. Ini dapat membantu mengurangi latensi pekerjaan ketika beberapa tugas berjalan lebih lambat karena mesin yang buruk atau lambat. Hanya didukung dengan Amazon EMR 6.10.x dan yang lebih rendah. FALSE
tez.am.task.max.failed.attempts Jumlah maksimum upaya yang dapat gagal untuk tugas tertentu sebelum tugas gagal. Nomor ini tidak menghitung upaya yang dihentikan secara manual. 3
tez.am.vertex.cleanup.height Jarak di mana, jika semua simpul dependen selesai, Tez AM akan menghapus data vertex shuffle. Fitur ini dimatikan ketika nilainya 0. Amazon EMR versi 6.8.0 dan yang lebih baru mendukung fitur ini. 0
tez.client.asynchronous-stop Opsi yang menyebabkan EMR Serverless mendorong ATS peristiwa sebelum mengakhiri driver Hive. FALSE
tez.grouping.max-size Batas ukuran atas (dalam byte) dari pemisahan yang dikelompokkan. Batas ini mencegah perpecahan yang terlalu besar. 1073741824
tez.grouping.min-size Batas ukuran yang lebih rendah (dalam byte) dari pemisahan yang dikelompokkan. Batas ini mencegah terlalu banyak perpecahan kecil. 16777216
tez.runtime.io.sort.mb Ukuran buffer lunak saat Tez mengurutkan output diurutkan. Nilai optimal dihitung berdasarkan memori tugas Tez
tez.runtime.unordered.output.buffer.size-mb Ukuran buffer yang akan digunakan jika Tez tidak menulis langsung ke disk. Nilai optimal dihitung berdasarkan memori tugas Tez
tez.shuffle-vertex-manager.max-src-fraction Fraksi tugas sumber yang harus diselesaikan sebelum EMR Tanpa Server menjadwalkan semua tugas untuk simpul saat ini (dalam kasus koneksi). ScatterGather Jumlah tugas yang siap untuk penjadwalan pada skala simpul saat ini secara linier antara dan. min-fraction max-fraction Ini default nilai default atautez.shuffle-vertex-manager.min-src-fraction, mana yang lebih besar. 0,75
tez.shuffle-vertex-manager.min-src-fraction Fraksi tugas sumber yang harus diselesaikan sebelum EMR Serverless menjadwalkan tugas untuk simpul saat ini (dalam kasus koneksi). ScatterGather 0,25
tez.task.emr-serverless.launch.env.[KEY] Opsi untuk mengatur variabel KEY lingkungan dalam proses tugas Tez. Untuk tugas Tez, nilai ini mengesampingkan nilainya. hive.emr-serverless.launch.env.[KEY]
tez.task.log.level Level logging root yang EMR diserahkan Tanpa Server ke tugas Tez. INFO
tez.yarn.ats.event.flush.timeout.millis Jumlah maksimum waktu AM harus menunggu acara dibilas sebelum dimatikan. 300000

Contoh pekerjaan sarang

Contoh kode berikut menunjukkan bagaimana menjalankan query Hive dengan. StartJobRun API

aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "hive": { "query": "s3://amzn-s3-demo-bucket/emr-serverless-hive/query/hive-query.ql", "parameters": "--hiveconf hive.log.explain.output=false" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "hive-site", "properties": { "hive.exec.scratchdir": "s3://amzn-s3-demo-bucket/emr-serverless-hive/hive/scratch", "hive.metastore.warehouse.dir": "s3://amzn-s3-demo-bucket/emr-serverless-hive/hive/warehouse", "hive.driver.cores": "2", "hive.driver.memory": "4g", "hive.tez.container.size": "4096", "hive.tez.cpu.vcores": "1" } }] }'

Anda dapat menemukan contoh tambahan tentang cara menjalankan pekerjaan Hive di repositori Sampel EMRTanpa Server. GitHub