Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengkonfigurasi Flink di Amazon EMR
Konfigurasikan Flink dengan Hive Metastore dan Glue Catalog
Amazon EMR merilis 6.9.0 dan lebih tinggi mendukung Hive Metastore dan AWS Glue Catalog dengan konektor Apache Flink ke Hive. Bagian ini menguraikan langkah-langkah yang diperlukan untuk mengkonfigurasi AWS Glue Catalog dan Hive Metastore dengan Flink.
Gunakan Metastore Hive
-
Buat EMR cluster dengan rilis 6.9.0 atau lebih tinggi dan setidaknya dua aplikasi: Hive dan Flink.
-
Gunakan script runner untuk menjalankan script berikut sebagai fungsi langkah:
hive-metastore-setup.sh
sudo cp /usr/lib/hive/lib/antlr-runtime-3.5.2.jar /usr/lib/flink/lib sudo cp /usr/lib/hive/lib/hive-exec-3.1.3*.jar /lib/flink/lib sudo cp /usr/lib/hive/lib/libfb303-0.9.3.jar /lib/flink/lib sudo cp /usr/lib/flink/opt/flink-connector-hive_2.12-1.15.2.jar /lib/flink/lib sudo chmod 755 /usr/lib/flink/lib/antlr-runtime-3.5.2.jar sudo chmod 755 /usr/lib/flink/lib/hive-exec-3.1.3*.jar sudo chmod 755 /usr/lib/flink/lib/libfb303-0.9.3.jar sudo chmod 755 /usr/lib/flink/lib/flink-connector-hive_2.12-1.15.2.jar
Gunakan Katalog Data AWS Glue
-
Buat EMR cluster dengan rilis 6.9.0 atau lebih tinggi dan setidaknya dua aplikasi: Hive dan Flink.
-
Pilih Gunakan untuk metadata tabel Hive di pengaturan AWS Glue Data Catalog untuk mengaktifkan Data Catalog di cluster.
-
Gunakan script runner untuk menjalankan skrip berikut sebagai fungsi langkah: Jalankan perintah dan skrip di klaster Amazon EMR:
glue-catalog-setup.sh
sudo cp /usr/lib/hive/auxlib/aws-glue-datacatalog-hive3-client.jar /usr/lib/flink/lib sudo cp /usr/lib/hive/lib/antlr-runtime-3.5.2.jar /usr/lib/flink/lib sudo cp /usr/lib/hive/lib/hive-exec-3.1.3*.jar /lib/flink/lib sudo cp /usr/lib/hive/lib/libfb303-0.9.3.jar /lib/flink/lib sudo cp /usr/lib/flink/opt/flink-connector-hive_2.12-1.15.2.jar /lib/flink/lib sudo chmod 755 /usr/lib/flink/lib/aws-glue-datacatalog-hive3-client.jar sudo chmod 755 /usr/lib/flink/lib/antlr-runtime-3.5.2.jar sudo chmod 755 /usr/lib/flink/lib/hive-exec-3.1.3*.jar sudo chmod 755 /usr/lib/flink/lib/libfb303-0.9.3.jar sudo chmod 755 /usr/lib/flink/lib/flink-connector-hive_2.12-1.15.2.jar
Konfigurasikan Flink dengan file konfigurasi
Anda dapat menggunakan EMR konfigurasi Amazon API untuk mengonfigurasi Flink dengan file konfigurasi. File yang dapat dikonfigurasi di dalamnya API adalah:
-
flink-conf.yaml
-
log4j.properties
-
flink-log4j-session
-
log4j-cli.properties
File konfigurasi utama untuk Flink adalahflink-conf.yaml
.
Untuk mengkonfigurasi jumlah slot tugas yang digunakan untuk Flink dari AWS CLI
-
Buat file,
configurations.json
, dengan konten berikut:[ { "Classification": "flink-conf", "Properties": { "taskmanager.numberOfTaskSlots":"2" } } ]
-
Berikutnya, buat sebuah klaster dengan konfigurasi berikut:
aws emr create-cluster --release-label
emr-7.2.0
\ --applications Name=Flink \ --configurations file://./configurations.json \ --regionus-east-1
\ --log-uri s3://myLogUri
\ --instance-type m5.xlarge \ --instance-count2
\ --service-role EMR_DefaultRole_V2 \ --ec2-attributes KeyName=YourKeyName
,InstanceProfile=EMR_EC2_DefaultRole
catatan
Anda juga dapat mengubah beberapa konfigurasi dengan API Flink. Untuk informasi lebih lanjut, lihat Konsep
Dengan Amazon EMR versi 5.21.0 dan yang lebih baru, Anda dapat mengganti konfigurasi klaster dan menentukan klasifikasi konfigurasi tambahan untuk setiap grup instans dalam klaster yang sedang berjalan. Anda melakukan ini dengan menggunakan EMR konsol Amazon, AWS Command Line Interface (AWS CLI), atau AWS SDK. Untuk informasi selengkapnya, lihat Menyediakan Konfigurasi untuk Grup Instans dalam Klaster Berjalan.
Pilihan paralelisme
Sebagai pemilik aplikasi Anda, Anda paling tahu sumber daya apa yang harus ditetapkan ke tugas dalam Flink. Untuk contoh dalam dokumentasi ini, gunakan jumlah tugas yang sama dengan instance tugas yang Anda gunakan untuk aplikasi. Kami biasanya merekomendasikan ini untuk tingkat awal paralelisme, tetapi Anda juga dapat meningkatkan granularitas paralelisme dengan slot tugas, yang umumnya tidak boleh melebihi jumlah inti virtual per instance.
Mengkonfigurasi Flink pada sebuah EMR cluster dengan beberapa node primer
Flink tetap tersedia selama proses failover node primer di EMR cluster Amazon dengan beberapa node primer. JobManager Dimulai dengan Amazon EMR 5.28.0, ketersediaan JobManager tinggi juga diaktifkan secara otomatis. Tidak ada konfigurasi manual yang diperlukan.
Dengan Amazon EMR versi 5.27.0 atau sebelumnya, JobManager ini adalah satu titik kegagalan. Ketika JobManager gagal, ia kehilangan semua status pekerjaan dan tidak akan melanjutkan pekerjaan yang sedang berjalan. Anda dapat mengaktifkan ketersediaan JobManager tinggi dengan mengonfigurasi jumlah upaya aplikasi, pos pemeriksaan, dan mengaktifkan ZooKeeper sebagai penyimpanan status untuk Flink, seperti yang ditunjukkan contoh berikut:
[ { "Classification": "yarn-site", "Properties": { "yarn.resourcemanager.am.max-attempts": "10" } }, { "Classification": "flink-conf", "Properties": { "yarn.application-attempts": "10", "high-availability": "zookeeper", "high-availability.zookeeper.quorum": "%{hiera('hadoop::zk')}", "high-availability.storageDir": "hdfs:///user/flink/recovery", "high-availability.zookeeper.path.root": "/flink" } } ]
Anda harus mengonfigurasi upaya master aplikasi maksimum YARN dan upaya aplikasi untuk Flink. Untuk informasi selengkapnya, lihat Konfigurasi ketersediaan tinggi YARN klaster
Mengonfigurasi ukuran proses memori
Untuk EMR versi Amazon yang menggunakan Flink 1.11.x, Anda harus mengonfigurasi ukuran proses memori total untuk JobManager (jobmanager.memory.process.size
) dan TaskManager (taskmanager.memory.process.size
) di. flink-conf.yaml
Anda dapat mengatur nilai-nilai ini dengan mengkonfigurasi cluster dengan konfigurasi API atau secara manual menghapus komentar bidang ini melalui. SSH Flink memberikan nilai default berikut.
-
jobmanager.memory.process.size
: 1600m -
taskmanager.memory.process.size
: 1728m
Untuk mengecualikan JVM metaspace dan overhead, gunakan total ukuran memori Flink () taskmanager.memory.flink.size
alih-alih. taskmanager.memory.process.size
Nilai default untuk taskmanager.memory.process.size
adalah 1280m. Ini tidak direkomendasikan untuk mengatur taskmanager.memory.process.size
dan taskmanager.memory.process.size
.
Semua EMR versi Amazon yang menggunakan Flink 1.12.0 dan yang lebih baru memiliki nilai default yang tercantum dalam kumpulan sumber terbuka untuk Flink sebagai nilai default di AmazonEMR, jadi Anda tidak perlu mengonfigurasinya sendiri.
Mengonfigurasi ukuran file keluaran log
Kontainer aplikasi Flink membuat dan menulis hingga tiga jenis file log: .out
file, .log
file, dan .err
file. Hanya .err
file yang dimampatkan dan dikeluarkan dari sistem fail, sementara .log
dan .out
file log tetap di sistem file. Untuk memastikan file keluaran ini tetap dapat dikelola dan cluster tetap stabil, Anda dapat mengonfigurasi rotasi log log4j.properties
untuk mengatur jumlah file maksimum dan membatasi ukurannya.
Amazon EMR versi 5.30.0 dan yang lebih baru
Dimulai dengan Amazon EMR 5.30.0, Flink menggunakan log4j2 logging framework dengan nama flink-log4j.
klasifikasi konfigurasi Contoh konfigurasi Konfigurasi berikut menunjukkan format log4j2.
[ { "Classification": "flink-log4j", "Properties": { "appender.main.name": "MainAppender", "appender.main.type": "RollingFile", "appender.main.append" : "false", "appender.main.fileName" : "${sys:log.file}", "appender.main.filePattern" : "${sys:log.file}.%i", "appender.main.layout.type" : "PatternLayout", "appender.main.layout.pattern" : "%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n", "appender.main.policies.type" : "Policies", "appender.main.policies.size.type" : "SizeBasedTriggeringPolicy", "appender.main.policies.size.size" : "100MB", "appender.main.strategy.type" : "DefaultRolloverStrategy", "appender.main.strategy.max" : "10" }, } ]
Amazon EMR versi 5.29.0 dan sebelumnya
Dengan Amazon EMR versi 5.29.0 dan yang lebih lama, Flink menggunakan kerangka log4j logging. Contoh konfigurasi berikut menunjukkan format log4j.
[ { "Classification": "flink-log4j", "Properties": { "log4j.appender.file": "org.apache.log4j.RollingFileAppender", "log4j.appender.file.append":"true", # keep up to 4 files and each file size is limited to 100MB "log4j.appender.file.MaxFileSize":"100MB", "log4j.appender.file.MaxBackupIndex":4, "log4j.appender.file.layout":"org.apache.log4j.PatternLayout", "log4j.appender.file.layout.ConversionPattern":"%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n" }, } ]
Konfigurasikan Flink untuk dijalankan dengan Java 11
Amazon EMR merilis 6.12.0 dan yang lebih tinggi memberikan dukungan runtime Java 11 untuk Flink. Bagian berikut menjelaskan cara mengkonfigurasi cluster untuk menyediakan dukungan runtime Java 11 untuk Flink.
Topik
Konfigurasikan Flink untuk Java 11 saat Anda membuat cluster
Gunakan langkah-langkah berikut untuk membuat EMR cluster dengan runtime Flink dan Java 11. File konfigurasi tempat Anda menambahkan dukungan runtime Java 11 adalahflink-conf.yaml
.
Konfigurasikan Flink untuk Java 11 pada cluster yang sedang berjalan
Gunakan langkah-langkah berikut untuk memperbarui EMR cluster yang sedang berjalan dengan runtime Flink dan Java 11. File konfigurasi tempat Anda menambahkan dukungan runtime Java 11 adalahflink-conf.yaml
.
Konfirmasikan runtime Java untuk Flink di cluster yang sedang berjalan
Untuk menentukan runtime Java untuk cluster yang sedang berjalan, masuk ke node utama dengan SSH seperti yang dijelaskan dalam Connect to the primary node with SSH. Kemudian jalankan perintah berikut:
ps -ef | grep flink
ps
Perintah dengan -ef
opsi mencantumkan semua proses yang berjalan pada sistem. Anda dapat memfilter output itu grep
untuk menemukan sebutan stringflink
. Tinjau output untuk nilai Java Runtime Environment (JRE),jre-XX
. Dalam output berikut, jre-11
menunjukkan bahwa Java 11 diambil saat runtime untuk Flink.
flink 19130 1 0 09:17 ? 00:00:15 /usr/lib/jvm/jre-11/bin/java -Djava.io.tmpdir=/mnt/tmp -Dlog.file=/usr/lib/flink/log/flink-flink-historyserver-0-ip-172-31-32-127.log -Dlog4j.configuration=file:/usr/lib/flink/conf/log4j.properties -Dlog4j.configurationFile=file:/usr/lib/flink/conf/log4j.properties -Dlogback.configurationFile=file:/usr/lib/flink/conf/logback.xml -classpath /usr/lib/flink/lib/flink-cep-1.17.0.jar:/usr/lib/flink/lib/flink-connector-files-1.17.0.jar:/usr/lib/flink/lib/flink-csv-1.17.0.jar:/usr/lib/flink/lib/flink-json-1.17.0.jar:/usr/lib/flink/lib/flink-scala_2.12-1.17.0.jar:/usr/lib/flink/lib/flink-table-api-java-uber-1.17.0.jar:/usr/lib/flink/lib/flink-table-api-scala-bridge_2.12-1.17.0.
Atau, masuk ke node utama dengan SSH dan mulai YARN sesi Flink dengan perintahflink-yarn-session -d
. Output menunjukkan Java Virtual Machine (JVM) untuk Flink, java-11-amazon-corretto
dalam contoh berikut:
2023-05-29 10:38:14,129 INFO org.apache.flink.configuration.GlobalConfiguration [] - Loading configuration property: containerized.master.env.JAVA_HOME, /usr/lib/jvm/java-11-amazon-corretto.x86_64