Hızlı Başlangıç: Apache Kafka kullanarak Azure HDInsight küme Azure portal
Apache Kafka açık kaynak, dağıtılmış bir akış platformudur. Yayımla-abone ol ileti kuyruğuna benzer işlevler sağladığı için genellikle ileti aracısı olarak kullanılır.
Bu Hızlı Başlangıçta, kümeyi kullanarak bir Apache Kafka kümesi Azure portal. Ayrıca Apache Kafka kullanarak ileti göndermek ve almak için verilen yardımcı programları kullanmayı da öğrenirsiniz. Kullanılabilir yapılandırmaların ayrıntılı açıklamaları için bkz. HDInsight'ta kümeleri ayarlama. Portalın küme oluşturmak için kullanımıyla ilgili ek bilgi için bkz. Portalda küme oluşturma.
Uyarı
HDInsight kümeleri için faturalandırma, bunları kullanıp kullanmayacağınızı, dakika başına eşit olarak dağıtılır. Kullanmayı bitirdikten sonra kümenizi sildiğinizden emin olun. Bkz. HDInsight kümesini silme.
Apache Kafka API'sine yalnızca aynı sanal ağ içindeki kaynaklar tarafından erişilebilir. Bu Hızlı Başlangıçta, SSH kullanarak kümeye doğrudan erişebilirsiniz. Diğer hizmetleri, ağları veya sanal makineleri Apache Kafka'ya bağlamak için önce bir sanal ağ oluşturmanız e sonra ağ içinde kaynakları oluşturmanız gerekir. Daha fazla bilgi için Sanal ağ kullanarak Apache Kafka'ya bağlanma belgesine bakın. HDInsight için sanal ağları planlama hakkında daha fazla genel bilgi için bkz. Azure HDInsight.
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Önkoşullar
Bir SSH istemcisi. Daha fazla bilgi için bkz. SSH kullanarak HDInsight'a (Apache Hadoop) bağlanma.
Apache Kafka kümesi oluşturma
HDInsight'Apache Kafka bir küme oluşturmak için aşağıdaki adımları kullanın:
Azure Portal oturum açın.
Üst menüden + Kaynak oluştur'a tıklayın.
-
HDInsight Azure HDInsight oluştur sayfasına gitmek için Analytics Azure HDInsight'yi seçin.
Temel Bilgiler sekmesinde aşağıdaki bilgileri ekleyin:
Özellik Açıklama Abonelik Açılan listeden küme için kullanılan Azure aboneliğini seçin. Kaynak grubu Bir kaynak grubu oluşturun veya mevcut bir kaynak grubunu seçin. Kaynak grubu, Azure bileşenleri için bir kapsayıcıdır. Bu durumda, kaynak grubu HDInsight kümesini ve bağımlı Azure Depolama hesabını içermektedir. Küme adı Genel olarak benzersiz bir ad girin. Ad harf, sayı ve kısa çizgi dahil olmak üzere en fazla 59 karakterden oluşur. Adın ilk ve son karakterleri, kısa çizgi olamaz. Region Açılan listeden kümenin oluşturulacak bölgeyi seçin. Daha iyi performans için size daha yakın bir bölge seçin. Küme türü Bir liste açmak için Küme türünü seçin'i seçin. Listeden, küme türü olarak Kafka'yı seçin. Sürüm Küme türü için varsayılan sürüm belirtilir. Farklı bir sürüm belirtmek isterseniz açılan listeden seçin. Küme oturum açma kullanıcı adı ve parolası Varsayılan oturum açma adı admin 'tir. Parola en az 10 karakter uzunluğunda olmalı ve en az bir rakam, bir büyük harf ve bir küçük harf, bir alfasayısal olmayan karakter içermelidir (' " ' karakterleri ) hariç). "Pass@word1" gibi genel parolalar sağlamadığınızdan emin olun. Secure Shell (SSH) kullanıcı adı Varsayılan kullanıcı adı sshuser şeklindedir. SSH kullanıcı adı için başka bir ad sağlayabilirsiniz. SSH için küme oturum açma parolasını kullanma SSH kullanıcısı için küme oturum açma kullanıcısı için sağladığınız parolanın aynısını kullanmak üzere bu onay kutusunu işaretleyin.
Her Azure bölgesi (konum) hata etki alanları sağlar. Hata etki alanı, bir Azure veri merkezinde temel donanımlardan oluşan mantıksal bir gruplandırmadır. Her hata etki alanı ortak bir güç kaynağı ve ağ anahtarına sahiptir. Bir HDInsight kümesi içindeki düğümleri uygulayan sanal makineler ve yönetilen diskler, bu hata etki alanlarına dağıtılır. Bu mimari, fiziksel donanım hatalarının olası etkisini sınırlar.
Verilerin yüksek kullanılabilirliği için, üç hata etki alanı içeren bir bölge (konum) seçin. Bir bölgedeki hata etki alanlarının sayısı hakkında bilgi almak için Linux sanal makinelerinin kullanılabilirliği belgesine bakın.
Depolama ayarlarına Depolama >> için Sonraki: Yeni sekmeyi seçin.
Depolama sekmesinden aşağıdaki değerleri ekleyin:
Özellik Açıklama Birincil depolama türü Azure Depolama. Seçim yöntemi Listeden seç varsayılan değerini kullanın. Birincil depolama hesabı Var olan bir depolama hesabını seçmek için açılan listeyi kullanın veya Yeni oluştur'a tıklayın. Yeni bir hesap sanız, ad 3 ile 24 karakter uzunluğunda olmalıdır ve yalnızca sayı ve küçük harf içerebilir Kapsayıcı Otomatik olarak doldurulan değeri kullanın.
Güvenlik + ağ sekmesini seçin.
Bu Hızlı Başlangıç için varsayılan güvenlik ayarlarını değiştirmeden bırakın. Kurumsal Güvenlik paketi hakkında daha fazla bilgi edinmek için Azure Active Directory Domain Services'i kullanarak bir HDInsight kümesi ile Kurumsal Güvenlik Paketi yapılandırma sayfasını ziyaret edin. Disk Şifrelemesi için kendi anahtarınızı kullanmayı öğrenmek Apache Kafka müşteri tarafından yönetilen anahtar disk şifrelemesi'ne ziyaret edin
Kümenizi bir sanal ağa bağlamak istiyorsanız, aşağı açılan Sanal ağ listesinden bir sanal ağ seçin.
Yapılandırma + fiyatlandırma sekmesini seçin.
HDInsight'Apache Kafka kullanılabilirliğini garanti etmek için Çalışan düğümü için düğüm girdisinin 3 veya daha büyük bir sayıya ayarlanmış olması gerekir. Varsayılan değer 4'tür.
Çalışan düğümü başına Standart diskler girişi, HDInsight üzerinde Apache Kafka ölçeklenebilirliğini yapılandırıyor. HDInsight üzerinde Apache Kafka, veri depolamak için kümedeki sanal makinelerin yerel diskini kullanır. Apache Kafka yoğun G/Ç kullandığından yüksek aktarım hızı ve düğüm başına daha fazla depolama alanı sağlamak için Azure Yönetilen Diskler kullanılır. Yönetilen diskin türü Standart (HDD) veya Premium (SSD) olabilir. Disk türü, çalışan düğümler (Apache Kafka aracıları) tarafından kullanılan sanal makine boyutuna bağlıdır. Premium diskler otomatik olarak DS ve GS serisi sanal makinelerle kullanılır. Diğer tüm VM türleri standart disk kullanır.
Gözden geçir ve oluştur sekmesini seçin.
Kümenin yapılandırmasını gözden geçirme. Yanlış olan tüm ayarları değiştirin. Son olarak, kümeyi oluşturmak için Oluştur'a seçin.
Kümenin oluşturulması 20 dakika sürebilir.
Kümeye bağlanma
Kümenize bağlanmak için SSH komutunu kullanın. CLUSTERNAME öğesini kümenizin adıyla değiştirerek aşağıdaki komutu düzenleyin ve ardından şu komutu girin:
ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.netİstendiğinde, SSH kullanıcısının parolasını girin.
Bağlandığında, aşağıdaki metne benzer bilgiler görürsünüz:
Authorized uses only. All activity may be monitored and reported. Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.13.0-1011-azure x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage Get cloud support with Ubuntu Advantage Cloud Guest: https://www.ubuntu.com/business/services/cloud 83 packages can be updated. 37 updates are security updates. Welcome to Apache Kafka on HDInsight. Last login: Thu Mar 29 13:25:27 2018 from 108.252.109.241
Apache Zookeeper ve aracı ana bilgisayar bilgilerini al
Kafka ile çalışırken Apache Zookeeper ve Aracı konaklarınızı bilmeniz gerekir. Bu konaklar Apache Kafka API'si ve Kafka ile gönderilen yardımcı programların birçoğu ile birlikte kullanılır.
Bu bölümde, küme üzerindeki Apache ambarı REST API ana bilgisayar bilgilerini alırsınız.
Komut satırı JSON işlemcisi olan JQ'yi yükler. Bu yardımcı program JSON belgelerini ayrıştırmak için kullanılır ve ana bilgisayar bilgilerini Ayrıştırmada faydalıdır. Açık SSH bağlantısından yüklemek için aşağıdaki komutu girin
jq:sudo apt -y install jqParola değişkenini ayarlayın.
PASSWORDKüme oturum açma parolasıyla değiştirin, ardından şu komutu girin:export password='PASSWORD'Doğru şekilde oluşturulmuş küme adını ayıklayın. Kümenin nasıl oluşturulduğuna bağlı olarak, küme adının gerçek büyük küçük harfleri beklediğinizden farklı olabilir. Bu komut gerçek büyük küçük harf elde eder ve bir değişkende depolar. Aşağıdaki komutu girin:
export clusterName=$(curl -u admin:$password -sS -G "http://headnodehost:8080/api/v1/clusters" | jq -r '.items[].Clusters.cluster_name')Not
Bu işlemi küme dışından yapıyorsanız, küme adını depolamak için farklı bir yordam vardır. Azure portal küme adını küçük harf olarak alın. Ardından, aşağıdaki komutta için küme adını değiştirin
<clustername>ve yürütün:export clusterName='<clustername>'.Bir ortam değişkenini Zookeeper ana bilgisayar bilgileriyle ayarlamak için aşağıdaki komutu kullanın. Komut tüm Zookeeper Konakları alır, ardından yalnızca ilk iki girişi döndürür. Bunun nedeni, bir ana bilgisayarın ulaşılamaz olması durumunda yedeklilik istemenizdir.
export KAFKAZKHOSTS=$(curl -sS -u admin:$password -G https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/services/ZOOKEEPER/components/ZOOKEEPER_SERVER | jq -r '["\(.host_components[].HostRoles.host_name):2181"] | join(",")' | cut -d',' -f1,2);Not
Bu komut, ambarı erişimi gerektirir. Kümeniz bir NSG 'nin arkasındaysa, bu komutu ambarı erişebilen bir makineden çalıştırın.
Ortam değişkeninin düzgün şekilde ayarlandığını doğrulamak için aşağıdaki komutu kullanın:
echo $KAFKAZKHOSTSBu komutun aşağıdaki metne benzer bilgiler döndürmesi gerekir:
<zookeepername1>.eahjefxxp1netdbyklgqj5y1ud.ex.internal.cloudapp.net:2181,<zookeepername2>.eahjefxxp1netdbyklgqj5y1ud.ex.internal.cloudapp.net:2181Bir ortam değişkenini Apache Kafka aracı konak bilgileriyle ayarlamak için aşağıdaki komutu kullanın:
export KAFKABROKERS=$(curl -sS -u admin:$password -G https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/services/KAFKA/components/KAFKA_BROKER | jq -r '["\(.host_components[].HostRoles.host_name):9092"] | join(",")' | cut -d',' -f1,2);Not
Bu komut, ambarı erişimi gerektirir. Kümeniz bir NSG 'nin arkasındaysa, bu komutu ambarı erişebilen bir makineden çalıştırın.
Ortam değişkeninin düzgün şekilde ayarlandığını doğrulamak için aşağıdaki komutu kullanın:
echo $KAFKABROKERSBu komutun aşağıdaki metne benzer bilgiler döndürmesi gerekir:
<brokername1>.eahjefxxp1netdbyklgqj5y1ud.cx.internal.cloudapp.net:9092,<brokername2>.eahjefxxp1netdbyklgqj5y1ud.cx.internal.cloudapp.net:9092
Apache Kafka konularını yönetme
Kafka, veri akışlarını konular içinde depolar. Konuları yönetmek için kafka-topics.sh yardımcı programını kullanabilirsiniz.
Bir konu oluşturmak için, SSH bağlantısında aşağıdaki komutu kullanın:
/usr/hdp/current/kafka-broker/bin/kafka-topics.sh --create --replication-factor 3 --partitions 8 --topic test --zookeeper $KAFKAZKHOSTSBu komut,
$KAFKAZKHOSTSiçinde depolanan konak bilgilerini kullanarak Zookeeper’a bağlanır. Daha sonra test adlı bir Apache Kafka konusu oluşturur.Bu konuda depolanan veriler, sekiz bölüm halinde bölümlenir.
Her bölüm, kümedeki üç çalışan düğümü arasında çoğaltılır.
Üç hata etki alanı sağlayan bir Azure bölgesinde kümeyi oluşturduysanız, 3 çoğaltma katsayısını kullanın. Aksi takdirde 4 çoğaltma katsayısını kullanın.
Üç hata etki alanı içeren bölgelerde 3 çoğaltma katsayısı, çoğaltmaların hata etki alanları arasında yayılmasına olanak sağlar. İki hata etki alanı içeren bölgelerde dört çoğaltma katsayısı, çoğaltmaların etki alanları arasında eşit şekilde yayılmasına olanak sağlar.
Bir bölgedeki hata etki alanlarının sayısı hakkında bilgi almak için Linux sanal makinelerinin kullanılabilirliği belgesine bakın.
Apache Kafka, Azure hata etki alanları ile uyumlu değildir. Konular için bölüm çoğaltmaları oluşturulurken, çoğaltmalar yüksek kullanılabilirlik için düzgün şekilde dağıtılmayabilir.
Yüksek kullanılabilirlik sağlamak için Apache Kafka bölüm yeniden dengeleme aracınıkullanın. Bu araç, Apache Kafka kümenizin baş düğümüyle kurulan bir SSH bağlantısından çalıştırılmalıdır.
Apache Kafka verilerinizin en yüksek kullanılabilirliğe sahip olması için aşağıdaki durumlarda konunuz için bölüm çoğaltmalarını yeniden dengelemeniz gerekir:
Yeni bir konu veya bölüm oluşturduğunuzda
Bir kümenin ölçeğini artırdığınızda
Konuları listelemek için aşağıdaki komutu kullanın:
/usr/hdp/current/kafka-broker/bin/kafka-topics.sh --list --zookeeper $KAFKAZKHOSTSBu komut, Apache Kafka kümesinde bulunan konuları listeler.
Bir konuyu silmek için aşağıdaki komutu kullanın:
/usr/hdp/current/kafka-broker/bin/kafka-topics.sh --delete --topic topicname --zookeeper $KAFKAZKHOSTSBu komut,
topicnameadlı konuyu siler.Uyarı
Daha önce oluşturulan
testkonusunu silerseniz, yeniden oluşturmanız gerekir. Bu belgenin ilerleyen kısmındaki adımlarda kullanılacaktır.
kafka-topics.sh yardımcı programı ile kullanılabilen komutlar hakkında daha fazla bilgi için aşağıdaki komutu kullanın:
/usr/hdp/current/kafka-broker/bin/kafka-topics.sh
Kayıt oluşturma ve kullanma
Kafka, konu başlıklarında records (kayıtlar) depolar. Kayıtlar, Üreticiler tarafından oluşturulur ve tüketiciler tarafından kullanılır. Üreticiler ve tüketiciler, Kafka aracısı hizmetiyle iletişim kurar. HDInsight kümenizdeki her çalışan düğümü bir Apache Kafka aracı konağıdır.
Daha önce oluşturduğunuz test konu başlığında kayıtları depolamak ve ardından bir tüketici kullanarak bunları okumak için aşağıdaki adımları kullanın:
Konuya kayıtlar yazmak için SSH bağlantısından
kafka-console-producer.shyardımcı programını kullanın:/usr/hdp/current/kafka-broker/bin/kafka-console-producer.sh --broker-list $KAFKABROKERS --topic testBu komuttan sonra boş bir satıra ulaşırsınız.
Boş satıra bir metin iletisi yazın ve Enter tuşuna basın. Bu şekilde birkaç ileti girin ve sonra normal isteme geri dönmek için Ctrl + C tuşlarını kullanın. Her satır, Apache Kafka konusuna ayrı bir kayıt olarak gönderilir.
Konudan kayıtları okumak için SSH bağlantısından
kafka-console-consumer.shyardımcı programını kullanın:/usr/hdp/current/kafka-broker/bin/kafka-console-consumer.sh --bootstrap-server $KAFKABROKERS --topic test --from-beginningBu komutla, kayıtlar konu başlığından alınır ve görüntülenir.
--from-beginningkullanılması, tüketiciye akışın başından başlamasını söyler, böylece tüm kayıtlar alınır.Kafka’nın eski bir sürümünü kullanıyorsanız
--bootstrap-server $KAFKABROKERSdeğerini--zookeeper $KAFKAZKHOSTSile değiştirin.Tüketiciyi durdurmak için Ctrl + C tuşlarını kullanın.
Ayrıca programlı olarak üretici ve tüketici de oluşturabilirsiniz. Bu API 'nin kullanımıyla ilgili bir örnek için bkz. HDInsight Ile tüketici API 'si Apache Kafka üreticisi belgesi.
Kaynakları temizleme
Bu hızlı başlangıç tarafından oluşturulan kaynakları temizlemek için kaynak grubunu silebilirsiniz. Kaynak grubunun silinmesi, ilişkili HDInsight kümesini ve kaynak grubuyla ilişkili diğer tüm kaynakları da siler.
Azure portalını kullanarak kaynak grubunu kaldırmak için:
- Azure portalında sol taraftaki menüyü genişleterek hizmet menüsünü açın ve sonra Kaynak Grupları'nı seçerek kaynak gruplarınızın listesini görüntüleyin.
- Silinecek kaynak grubunu bulun ve sonra listenin sağ tarafındaki Daha fazla düğmesine (...) sağ tıklayın.
- Kaynak grubunu sil'i seçip onaylayın.
Uyarı
HDInsight üzerinde Apache Kafka kümesi silindiğinde, Kafka içinde depolanan tüm veriler silinir.