Kaldığı yerden devam ederek yazma özelliği, verilerin EXACTLY_ONCE semantiği kullanılarak depolama ortamına yazılmasını sağlar. Bu konuda, bir E-MapReduce (EMR) kümesinde Apache Flink kullanarak verilerin OSS-HDFS hizmetine kaldığı yerden devam ederek nasıl yazılacağı açıklanmaktadır.
Örnek
-
Genel yapılandırmalar
EXACTLY_ONCE semantiğini kullanarak verileri OSS-HDFS hizmetine yazmak için aşağıdaki yapılandırmaları tamamlamanız gerekir:
-
Flink için kontrol noktalarını etkinleştirin.
Örnek:
-
Aşağıdaki gibi bir StreamExecutionEnvironment nesnesi oluşturun.
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); -
Kontrol noktalarını etkinleştirmek için aşağıdaki komutu çalıştırın.
env.enableCheckpointing(<userDefinedCheckpointInterval>, CheckpointingMode.EXACTLY_ONCE);
-
Kafka gibi yeniden oynatılabilen bir veri kaynağı kullanın.
-
-
Basit kullanım
Ek bağımlılıklar gerekmez. Veri yazmak için oss:// önekiyle başlayan ve OSS-HDFS hizmetinin paketi ile uç noktasını belirten bir yol kullanın.
-
Bir havuz ekleyin.
Aşağıdaki örnek, bir DataStream<String> nesnesinin OSS-HDFS hizmetine nasıl yazılacağını göstermektedir.
String outputPath = "oss://{user-defined-oss-hdfs-bucket.oss-hdfs-endpoint}/{user-defined-dir}"; StreamingFileSink<String> sink = StreamingFileSink.forRowFormat( new Path(outputPath), new SimpleStringEncoder<String>("UTF-8") ).build(); outputStream.addSink(sink);ÖnemliYoldaki
.{oss-hdfs-endpoint}bölümü isteğe bağlıdır. Bu bölümü atlarsanız, Flink veya Hadoop bileşeninde OSS-HDFS hizmetinin uç noktasını doğru şekilde yapılandırmanız gerekir. Flink işini yürütmek için
env.execute()kullanın.
-
(İsteğe bağlı) Özel ayarları yapılandırın
Belirli özellikleri etkinleştirmek amacıyla Flink işlerini gönderirken özel parametreler yapılandırabilirsiniz.
YARN tabanlı Flink iş gönderimlerini yapılandırmak için -yD kullanın:
<flink_home>/bin/flink run -m yarn-cluster -yD key1=value1 -yD key2=value2 ...
Entropi enjeksiyonu, hedef yoldaki belirtilen bir dizeyi rastgele bir dizeyle değiştirerek yazmaları bölümler arasında dağıtır ve performansı artırır.
OSS-HDFS yazmaları için aşağıdaki parametreleri yapılandırın:
oss.entropy.key=<user-defined-key>
oss.entropy.length=<user-defined-length>
Yazma işlemi sırasında, yoldaki <user-defined-key> dizesi, uzunluğu <user-defined-length> değerine eşit olan rastgele bir dizeyle değiştirilir. <user-defined-length> değeri 0'dan büyük olmalıdır.