MirrorMaker kullanarak Apache Kafka konularını HDInsight üzerinde Kafka ile çoğaltma
Konuları ikincil kümeye çoğaltmak için Apache Kafka'nın yansıtma özelliğini kullanmayı öğrenin. Yansıtmayı sürekli bir işlem olarak veya aralıklı olarak çalıştırarak verileri bir kümeden diğerine geçirebilirsiniz.
Bu makalede, iki HDInsight kümesi arasında konuları çoğaltmak için yansıtmayı kullanacaksınız. Bu kümeler farklı veri merkezlerindeki farklı sanal ağlarda yer alır.
Uyarı
Yansıtmayı hataya dayanıklılık elde etmek için bir araç olarak kullanmayın. Bir konu başlığındaki öğelere uzaklık birincil ve ikincil kümeler arasında farklıdır, bu nedenle istemciler ikisini birbirinin yerine kullanamaz. Hataya dayanıklılık konusunda endişeleriniz varsa kümenizdeki konular için çoğaltmayı ayarlamanız gerekir. Daha fazla bilgi için bkz. HDInsight üzerinde Apache Kafka'yı kullanmaya başlama.
Apache Kafka yansıtması nasıl çalışır?
Yansıtma, Apache Kafka'nın parçası olan MirrorMaker aracını kullanarak çalışır. MirrorMaker, birincil kümedeki konulardan kayıtları tüketir ve ardından ikincil kümede yerel bir kopya oluşturur. MirrorMaker, birincil kümeden okuyan bir (veya daha fazla) tüketici ve yerel (ikincil) kümeye yazan bir üretici kullanır.
Olağanüstü durum kurtarma için en kullanışlı yansıtma kurulumu, farklı Azure bölgelerindeki Kafka kümelerini kullanır. Bunu başarmak için, kümelerin bulunduğu sanal ağlar birlikte eşlenir.
Aşağıdaki diyagramda yansıtma işlemi ve iletişimin kümeler arasında nasıl aktığı gösterilmektedir:
Birincil ve ikincil kümeler düğüm ve bölüm sayısında farklı olabilir ve konu başlıkları içindeki uzaklıklar da farklıdır. Yansıtma bölümleme için kullanılan anahtar değerini korur, bu nedenle kayıt sırası anahtar temelinde korunur.
Ağ sınırları arasında yansıtma
Farklı ağlardaki Kafka kümeleri arasında yansıtma yapmanız gerekiyorsa, aşağıdaki ek noktalar vardır:
Ağ geçitleri: Ağların TCP/IP düzeyinde iletişim kurabilmesi gerekir.
Sunucu adresleme: Küme düğümlerinizi IP adreslerini veya tam etki alanı adlarını kullanarak ele almayı seçebilirsiniz.
IP adresleri: Kafka kümelerinizi IP adresi reklamlarını kullanacak şekilde yapılandırıyorsanız, aracı düğümlerinin ve ZooKeeper düğümlerinin IP adreslerini kullanarak yansıtma kurulumuna devam edebilirsiniz.
Etki alanı adları: Kafka kümelerinizi IP adresi reklamları için yapılandırmazsanız, kümelerin tam etki alanı adlarını (FQDN' ler) kullanarak birbirine bağlanabilmesi gerekir. Bu, istekleri diğer ağlara iletmek üzere yapılandırılmış her ağda bir etki alanı adı sistemi (DNS) sunucusu gerektirir. Azure sanal ağı oluştururken, ağ ile sağlanan otomatik DNS'yi kullanmak yerine özel bir DNS sunucusu ve sunucu için IP adresi belirtmeniz gerekir. Sanal ağı oluşturduktan sonra, bu IP adresini kullanan bir Azure sanal makinesi oluşturmanız gerekir. Ardından DNS yazılımını yükleyip yapılandırabilirsiniz.
Önemli
HDInsight'ı sanal ağa yüklemeden önce özel DNS sunucusunu oluşturun ve yapılandırın. HDInsight'ın sanal ağ için yapılandırılmış DNS sunucusunu kullanması için ek yapılandırma gerekmez.
İki Azure sanal ağını bağlama hakkında daha fazla bilgi için bkz. Bağlantı yapılandırma.
Yansıtma mimarisi
Bu mimaride farklı kaynak gruplarında ve sanal ağlarda iki küme bulunur: birincil ve ikincil.
Oluşturma adımları
İki yeni kaynak grubu oluşturun:
Kaynak grubu Konum kafka-primary-rg Central US kafka-secondary-rg Orta Kuzey ABD kafka-primary-rg içinde yeni bir kafka-primary-vnet sanal ağı oluşturun. Varsayılan ayarları değiştirmeyin.
Kafka-secondary-rg içinde, varsayılan ayarlarla yeni bir sanal ağ kafka-secondary-vnet oluşturun.
İki yeni Kafka kümesi oluşturun:
Küme adı Kaynak grubu Sanal ağ Depolama hesabı kafka-primary-cluster kafka-primary-rg kafka-primary-vnet kafkaprimarystorage kafka-secondary-cluster kafka-secondary-rg kafka-secondary-vnet kafkasecondarystorage Sanal ağ eşlemeleri oluşturun. Bu adım iki eşleme oluşturur: biri kafka-primary-vnet'tenkafka-secondary-vnet'e ve diğeri kafka-secondary-vnet'tenkafka-primary-vnet'e geri döner.
kafka-primary-vnet sanal ağını seçin.
Ayarlar'ın altında Eşlemeler'i seçin.
Add (Ekle) seçeneğini belirleyin.
Eşleme ekle ekranında, aşağıdaki ekran görüntüsünde gösterildiği gibi ayrıntıları girin.
IP reklamlarını yapılandırma
İstemcinin etki alanı adları yerine aracı IP adreslerini kullanarak bağlanmasını sağlamak için IP reklamını yapılandırın.
Birincil kümenin Ambari panosuna gidin:
https://PRIMARYCLUSTERNAME.azurehdinsight.net
.Hizmetler>Kafka'ya tıklayın. Yapılandırmalar sekmesini seçin.
Aşağıdaki yapılandırma satırlarını kafka-env şablonunun alt bölümüne ekleyin. Kaydet’i seçin.
# Configure Kafka to advertise IP addresses instead of FQDN IP_ADDRESS=$(hostname -i) echo advertised.listeners=$IP_ADDRESS sed -i.bak -e '/advertised/{/advertised@/!d;}' /usr/hdp/current/kafka-broker/conf/server.properties echo "advertised.listeners=PLAINTEXT://$IP_ADDRESS:9092" >> /usr/hdp/current/kafka-broker/conf/server.properties
Yapılandırmayı Kaydet ekranına bir not girin ve Kaydet'i seçin.
Yapılandırma uyarısı alırsanız Yine de Devam Et'i seçin.
Yapılandırma Değişikliklerini Kaydet'teTamam'ı seçin.
Yeniden Başlat Gerekli bildiriminde Yeniden Başlat>Etkilenen Tümünü Yeniden Başlat'ı seçin. Ardından Tümünü Yeniden Başlat'ı onayla'yı seçin.
Kafka'nın tüm ağ arabirimlerini dinleyecek şekilde yapılandırılması
-
Hizmetler>Kafka'nın altındaki Yapılandırmalar sekmesinde kalın.
Kafka Aracısı bölümünde listeners özelliğini olarak
PLAINTEXT://0.0.0.0:9092
ayarlayın. - Kaydet’i seçin.
- Yeniden Başlat>Tümünü Yeniden Başlat'ı seçin.
Birincil küme için aracı IP adreslerini ve ZooKeeper adreslerini kaydetme
Ambari panosunda Konaklar'ı seçin.
Aracıların ve ZooKeeper'ların IP adreslerini not edin. Aracı düğümleri ana bilgisayar adının ilk iki harfi olarak wn , ZooKeeper düğümleri ise konak adının ilk iki harfi olarak zk'ye sahiptir.
kafka-secondary-cluster adlı ikinci küme için önceki üç adımı yineleyin: IP reklamını yapılandırma, dinleyicileri ayarlama ve aracı ile ZooKeeper IP adreslerini not edin.
Konu oluşturma
SSH kullanarak birincil kümeye bağlanın:
ssh sshuser@PRIMARYCLUSTER-ssh.azurehdinsight.net
değerini, kümeyi oluştururken kullandığınız SSH kullanıcı adıyla değiştirin
sshuser
. değerini, kümeyi oluştururken kullandığınız temel adla değiştirinPRIMARYCLUSTER
.Daha fazla bilgi için bkz. HDInsight ile SSH kullanma.
Birincil küme için Apache ZooKeeper konakları ve aracı konakları ile iki ortam değişkeni oluşturmak için aşağıdaki komutu kullanın. gibi
ZOOKEEPER_IP_ADDRESS1
dizeleri ve10.23.0.7
gibi10.23.0.11
daha önce kaydedilen gerçek IP adresleriyle değiştirin. Aynı durum içinBROKER_IP_ADDRESS1
de geçerli. FQDN çözümlemesini özel bir DNS sunucusuyla kullanıyorsanız aracı ve ZooKeeper adlarını almak için bu adımları izleyin.# get the ZooKeeper hosts for the primary cluster export PRIMARY_ZKHOSTS='ZOOKEEPER_IP_ADDRESS1:2181, ZOOKEEPER_IP_ADDRESS2:2181, ZOOKEEPER_IP_ADDRESS3:2181' # get the broker hosts for the primary cluster export PRIMARY_BROKERHOSTS='BROKER_IP_ADDRESS1:9092,BROKER_IP_ADDRESS2:9092,BROKER_IP_ADDRESS2:9092'
adlı
testtopic
bir konu oluşturmak için aşağıdaki komutu kullanın:/usr/hdp/current/kafka-broker/bin/kafka-topics.sh --create --replication-factor 2 --partitions 8 --topic testtopic --zookeeper $PRIMARY_ZKHOSTS
Konunun oluşturulduğunu doğrulamak için aşağıdaki komutu kullanın:
/usr/hdp/current/kafka-broker/bin/kafka-topics.sh --list --zookeeper $PRIMARY_ZKHOSTS
Yanıt içerir
testtopic
.Bu (birincil) kümenin aracı konak bilgilerini görüntülemek için aşağıdakileri kullanın:
echo $PRIMARY_BROKERHOSTS
Bu, aşağıdaki metne benzer bilgiler döndürür:
10.23.0.11:9092,10.23.0.7:9092,10.23.0.9:9092
Bu bilgileri kaydedin. Bir sonraki bölümde kullanılacaktır.
Yansıtmayı yapılandırma
Farklı bir SSH oturumu kullanarak ikincil kümeye bağlanın:
ssh sshuser@SECONDARYCLUSTER-ssh.azurehdinsight.net
değerini, kümeyi oluştururken kullandığınız SSH kullanıcı adıyla değiştirin
sshuser
. değerini, kümeyi oluştururken kullandığınız adla değiştirinSECONDARYCLUSTER
.Daha fazla bilgi için bkz. HDInsight ile SSH kullanma.
Birincil kümeyle iletişimi yapılandırmak için bir
consumer.properties
dosya kullanın. Dosyayı oluşturmak için aşağıdaki komutu kullanın:nano consumer.properties
Dosyanın içeriği
consumer.properties
olarak aşağıdaki metni kullanın:bootstrap.servers=PRIMARY_BROKERHOSTS group.id=mirrorgroup
değerini birincil kümedeki aracı ana bilgisayar IP adresleriyle değiştirin
PRIMARY_BROKERHOSTS
.Bu dosya, birincil Kafka kümesinden okurken kullanılacak tüketici bilgilerini açıklar. Daha fazla bilgi için adresinden Tüketici Yapılandırmaları bölümüne bakın
kafka.apache.org
.Dosyayı kaydetmek için Ctrl+X tuşlarına basın, Y tuşuna basın ve ardından Enter tuşuna basın.
İkincil kümeyle iletişim kuran üreticiyi yapılandırmadan önce, ikincil kümenin aracı IP adresleri için bir değişken ayarlayın. Bu değişkeni oluşturmak için aşağıdaki komutları kullanın:
export SECONDARY_BROKERHOSTS='BROKER_IP_ADDRESS1:9092,BROKER_IP_ADDRESS2:9092,BROKER_IP_ADDRESS2:9092'
Komut
echo $SECONDARY_BROKERHOSTS
aşağıdaki metne benzer bilgiler döndürmelidir:10.23.0.14:9092,10.23.0.4:9092,10.23.0.12:9092
İkincil kümeyi iletmek için bir
producer.properties
dosya kullanın. Dosyayı oluşturmak için aşağıdaki komutu kullanın:nano producer.properties
Dosyanın içeriği
producer.properties
olarak aşağıdaki metni kullanın:bootstrap.servers=SECONDARY_BROKERHOSTS compression.type=none
değerini önceki adımda kullanılan aracı IP adresleriyle değiştirin
SECONDARY_BROKERHOSTS
.Daha fazla bilgi için bkz. adresinde Üretici Yapılandırmaları
kafka.apache.org
.İkincil küme için ZooKeeper konaklarının IP adresleriyle bir ortam değişkeni oluşturmak için aşağıdaki komutları kullanın:
# get the ZooKeeper hosts for the secondary cluster export SECONDARY_ZKHOSTS='ZOOKEEPER_IP_ADDRESS1:2181,ZOOKEEPER_IP_ADDRESS2:2181,ZOOKEEPER_IP_ADDRESS3:2181'
HDInsight üzerinde Kafka için varsayılan yapılandırma, konuların otomatik olarak oluşturulmasına izin vermez. Yansıtma işlemine başlamadan önce aşağıdaki seçeneklerden birini kullanmanız gerekir:
İkincil kümede konuları oluşturun: Bu seçenek, bölüm sayısını ve çoğaltma faktörünü ayarlamanıza da olanak tanır.
Aşağıdaki komutu kullanarak konuları önceden oluşturabilirsiniz:
/usr/hdp/current/kafka-broker/bin/kafka-topics.sh --create --replication-factor 2 --partitions 8 --topic testtopic --zookeeper $SECONDARY_ZKHOSTS
öğesini, oluşturulacak konunun adıyla değiştirin
testtopic
.Kümeyi otomatik konu oluşturma için yapılandırın: Bu seçenek MirrorMaker'ın konuları otomatik olarak oluşturmasını sağlar. Bunları birincil konu başlığından farklı sayıda bölümle veya farklı bir çoğaltma faktörüyle oluşturabileceğini unutmayın.
İkincil kümeyi konuları otomatik olarak oluşturacak şekilde yapılandırmak için şu adımları uygulayın:
- İkincil kümenin Ambari panosuna gidin:
https://SECONDARYCLUSTERNAME.azurehdinsight.net
. - Hizmetler>Kafka'ya tıklayın. Ardından Yapılandırmalar sekmesini seçin.
-
Filtre alanına değerini
auto.create
girin. Bu, özellik listesini filtreler ve ayarı görüntülerauto.create.topics.enable
. - değerini olarak
auto.create.topics.enable
true
değiştirin ve kaydet'i seçin. Bir not ekleyin ve sonra yeniden Kaydet'i seçin. - Kafka hizmetini seçin, Yeniden Başlat'ı ve ardından Etkilenenlerin tümünü yeniden başlat'ı seçin. İstendiğinde Tümünü yeniden başlatmayı onayla'yı seçin.
- İkincil kümenin Ambari panosuna gidin:
MirrorMaker'ı başlatma
Not
Bu makalede, Microsoft'un artık kullanmadığını belirten bir terime başvurular yer alır. Terim yazılımdan kaldırıldığında, bu makaleden kaldıracağız.
İkincil kümeye SSH bağlantısından MirrorMaker işlemini başlatmak için aşağıdaki komutu kullanın:
/usr/hdp/current/kafka-broker/bin/kafka-run-class.sh kafka.tools.MirrorMaker --consumer.config consumer.properties --producer.config producer.properties --whitelist testtopic --num.streams 4
Bu örnekte kullanılan parametreler şunlardır:
Parametre Açıklama --consumer.config
Tüketici özelliklerini içeren dosyayı belirtir. Bu özellikleri birincil Kafka kümesinden okuyan bir tüketici oluşturmak için kullanırsınız. --producer.config
Üretici özelliklerini içeren dosyayı belirtir. İkincil Kafka kümesine yazan bir üretici oluşturmak için bu özellikleri kullanırsınız. --whitelist
MirrorMaker'ın birincil kümeden ikincil kümeye çoğaltılan konuların listesi. --num.streams
Oluşturulacak tüketici iş parçacığı sayısı. İkincil düğümdeki tüketici artık iletileri almayı bekliyor.
Birincil kümeye SSH bağlantısından bir üretici başlatmak ve konuya ileti göndermek için aşağıdaki komutu kullanın:
/usr/hdp/current/kafka-broker/bin/kafka-console-producer.sh --broker-list $PRIMARY_BROKERHOSTS --topic testtopic
İmleç içeren boş bir satıra geldiğinizde, birkaç kısa mesaj yazın. İletiler birincil kümedeki konuya gönderilir. bitirdiğinizde, üretici işlemini sonlandırmak için Ctrl+C tuşlarına basın.
İkincil kümeye SSH bağlantısından MirrorMaker işlemini sonlandırmak için Ctrl+C tuşlarına basın. İşlemi sonlandırmak birkaç saniye sürebilir. İletilerin ikincil öğeye çoğaltıldığını doğrulamak için aşağıdaki komutu kullanın:
/usr/hdp/current/kafka-broker/bin/kafka-console-consumer.sh --bootstrap-server $SECONDARY_BROKERHOSTS --topic testtopic --from-beginning
Konu listesi artık MirrorMaster konuyu birincil kümeden ikincil kümeye yansıttığında oluşturulan öğesini içerir
testtopic
. Konu başlığından alınan iletiler, birincil kümeye girdiğiniz iletilerle aynıdır.
Küme silme
Uyarı
HDInsight kümeleri için faturalama, kullansanız da kullanmasanız da dakika başına eşit olarak eşit olarak dağıtılır. Kullanmayı bitirdikten sonra kümenizi sildiğinizden emin olun. Bkz. HDInsight kümesini silme.
Bu makaledeki adımlar farklı Azure kaynak gruplarında kümeler oluşturmuştur. Oluşturulan tüm kaynakları silmek için oluşturulan iki kaynak grubunu silebilirsiniz: kafka-primary-rg ve kafka-secondary-rg. Kaynak gruplarının silinmesi, kümeler, sanal ağlar ve depolama hesapları dahil olmak üzere bu makaleyi izleyerek oluşturulan tüm kaynakları kaldırır.
Sonraki adımlar
Bu makalede, Apache Kafka kümesinin çoğaltmasını oluşturmak için MirrorMaker kullanmayı öğrendiniz. Kafka ile çalışmanın diğer yollarını keşfetmek için aşağıdaki bağlantıları kullanın: