Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Apache Kafka adalah platform streaming sumber terbuka yang didistribusikan. Platform ini sering digunakan sebagai perantara pesan, karena menyediakan fungsionalitas yang mirip dengan antrian pesan terbitkan-berlangganan.
Dalam panduan cepat ini, Anda mempelajari cara membuat kluster Apache Kafka menggunakan Azure PowerShell. Anda juga akan belajar cara menggunakan utilitas yang disertakan untuk mengirim dan menerima pesan menggunakan Kafka.
Peringatan
Tagihan untuk kluster HDInsight dirata-rata per menit, baik Anda menggunakannya maupun tidak. Pastikan untuk menghapus kluster Anda setelah selesai menggunakannya. Lihat cara menghapus kluster HDInsight.
Hanya sumber daya dalam jaringan virtual yang sama yang memiliki akses ke Kafka API. Dalam panduan cepat ini, Anda mengakses kluster secara langsung menggunakan SSH. Untuk menghubungkan layanan, jaringan, atau komputer virtual lainnya ke Kafka, Anda harus terlebih dahulu membuat jaringan virtual kemudian membuat sumber daya di dalam jaringan. Untuk informasi selengkapnya, lihat dokumen Menyambungkan ke Apache Kafka menggunakan jaringan virtual.
Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.
Prasyarat
Catatan
Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Untuk memulai, lihat Menginstal Azure PowerShell. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.
Modul Az PowerShell sudah diinstal.
Klien SSH. Untuk informasi selengkapnya, lihat Menyambungkan ke HDInsight (Apache Hadoop) menggunakan SSH.
Masuk ke Azure
Masuk ke langganan Azure Anda dengan cmdlet Connect-AzAccount
dan ikuti petunjuk pada layar.
# Login to your Azure subscription
$sub = Get-AzSubscription -ErrorAction SilentlyContinue
if(-not($sub))
{
Connect-AzAccount
}
# If you have multiple subscriptions, set the one to use
# Select-AzSubscription -SubscriptionId "<SUBSCRIPTIONID>"
Buat grup sumber daya
Membuat grup sumber daya Azure menggunakan New-AzResourceGroup. Grup sumber daya adalah kontainer logis tempat sumber daya Azure disebarkan dan dikelola. Contoh berikut ini meminta nama dan lokasi Anda, lalu membuat grup sumber daya baru:
$resourceGroup = Read-Host -Prompt "Enter the resource group name"
$location = Read-Host -Prompt "Enter the Azure region to use"
New-AzResourceGroup -Name $resourceGroup -Location $location
Buat akun penyimpanan
Sementara Kafka di HDInsight menggunakan disk Azure Managed untuk menyimpan data Kafka, kluster ini juga menggunakan Azure Storage untuk menyimpan informasi seperti log. Gunakan New-AzStorageAccount untuk membuat akun penyimpanan baru.
Penting
Jenis akun Storage BlobStorage
hanya dapat digunakan sebagai penyimpanan sekunder untuk kluster HDInsight.
$storageName = Read-Host -Prompt "Enter the storage account name"
New-AzStorageAccount `
-ResourceGroupName $resourceGroup `
-Name $storageName `
-Location $location `
-SkuName Standard_LRS `
-Kind StorageV2 `
-EnableHttpsTrafficOnly 1
HDInsight menyimpan data di akun penyimpanan dalam kontainer blob. Gunakan New-AzStorageContainer untuk membuat kontainer baru.
$containerName = Read-Host -Prompt "Enter the container name"
$storageKey = (Get-AzStorageAccountKey `
-ResourceGroupName $resourceGroup `
-Name $storageName)[0].Value
$storageContext = New-AzStorageContext `
-StorageAccountName $storageName `
-StorageAccountKey $storageKey
New-AzStorageContainer -Name $containerName -Context $storageContext
Membuat kluster Apache Kafka
Buat Apache Kafka pada kluster HDInsight dengan New-AzHDInsightCluster.
# Create a Kafka 2.4.1 cluster
$clusterName = Read-Host -Prompt "Enter the name of the Kafka cluster"
$httpCredential = Get-Credential -Message "Enter the cluster login credentials" -UserName "admin"
$sshCredentials = Get-Credential -Message "Enter the SSH user credentials" -UserName "sshuser"
$numberOfWorkerNodes = "4"
$clusterVersion = "5.0"
$clusterType="Kafka"
$disksPerNode=2
$kafkaConfig = New-Object "System.Collections.Generic.Dictionary``2[System.String,System.String]"
$kafkaConfig.Add("kafka", "2.4.1")
New-AzHDInsightCluster `
-ResourceGroupName $resourceGroup `
-ClusterName $clusterName `
-Location $location `
-ClusterSizeInNodes $numberOfWorkerNodes `
-ClusterType $clusterType `
-OSType "Linux" `
-Version $clusterVersion `
-ComponentVersion $kafkaConfig `
-HttpCredential $httpCredential `
-DefaultStorageAccountName "$storageName.blob.core.windows.net" `
-DefaultStorageAccountKey $storageKey `
-DefaultStorageContainer $clusterName `
-SshCredential $sshCredentials `
-DisksPerWorkerNode $disksPerNode
Pembuatan kluster HDInsight dapat memakan waktu hingga 20 menit.
-DisksPerWorkerNode
Parameter menkonfigurasi skalabilitas Kafka pada HDInsight. Kafka di HDInsight menggunakan disk lokal komputer virtual pada kluster untuk menyimpan data. Kafka memiliki jumlah masukan/keluaran yang sangat banyak, sehingga Azure Managed Disk digunakan untuk menyediakan throughput tinggi dan lebih banyak penyimpanan per simpul.
Jenis disk yang dikelola dapat berupa Standar (HDD) atau Premium (SSD). Jenis disk tergantung pada ukuran komputer virtual yang digunakan oleh node pekerja (broker Kafka). Disk premium digunakan secara otomatis dengan komputer virtual seri DS dan GS. Semua jenis VM lainnya menggunakan standar. Anda dapat mengatur jenis komputer virtual dengan menggunakan -WorkerNodeSize
parameter. Untuk informasi selengkapnya tentang parameter, lihat dokumentasi New-AzHDInsightCluster.
Jika Anda berencana untuk menggunakan lebih dari 32 node pekerja (baik pada pembuatan kluster atau dengan menskalakan kluster setelah pembuatan), Anda harus menggunakan parameter -HeadNodeSize
untuk menentukan ukuran komputer virtual dengan kemampuan setidaknya 8 core dan RAM 14 GB. Untuk informasi selengkapnya tentang ukuran node dan biaya terkait, lihat Harga HDInsight.
Menyambungkan ke kluster
Untuk menyambungkan ke simpul kepala utama kluster Kafka, gunakan perintah berikut. Ganti
sshuser
dengan nama pengguna SSH. Gantimykafka
dengan nama kluster Kafka Andassh sshuser@mykafka-ssh.azurehdinsight.net
Ketika Anda pertama kali tersambung ke kluster, klien SSH Anda dapat menampilkan peringatan bahwa keaslian host tidak dapat dibuktikan. Ketika diminta ketik ya, lalu tekan Masukkan untuk menambahkan host ke daftar server tepercaya klien SSH Anda.
Jika diminta, masukkan kata sandi untuk pengguna SSH.
Setelah tersambung, Anda akan melihat informasi yang mirip dengan teks berikut:
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 Kafka on HDInsight.
Last login: Thu Mar 29 13:25:27 2018 from 108.252.109.241
Dapatkan informasi host Apache Zookeeper dan Broker
Ketika bekerja dengan Kafka, Anda harus tahu host Apache Zookeeper dan Broker. Host ini digunakan dengan API Kafka dan sejumlah besar utilitas yang disertakan dengan Kafka.
Di bagian ini, Anda mendapatkan informasi host dari REST API Apache Ambari pada kluster.
Dari koneksi SSH ke kluster, gunakan perintah berikut untuk memasang
jq
utilitas. Utilitas ini digunakan untuk memilah dokumen JSON, dan berguna dalam mengambil informasi host:sudo apt -y install jq
Untuk mengatur variabel lingkungan ke nama kluster, gunakan perintah berikut:
read -p "Enter the Kafka on HDInsight cluster name: " CLUSTERNAME
Saat diminta, masukkan nama kluster Kafka.
Untuk mengatur variabel lingkungan dengan informasi host Zookeeper, gunakan perintah berikut. Perintah mengambil semua host Zookeeper, lalu hanya mengembalikan dua entri pertama. Hal ini dilakukan karena Anda ingin memiliki beberapa redundansi kalau-kalau satu host tidak dapat dijangkau.
export KAFKAZKHOSTS=`curl -sS -u admin -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`
Saat diminta, masukkan kata sandi untuk akun masuk kluster (bukan akun SSH).
Untuk memverifikasi bahwa variabel lingkungan di set dengan benar, gunakan perintah berikut:
echo '$KAFKAZKHOSTS='$KAFKAZKHOSTS
Perintah ini mengembalikan informasi yang mirip dengan teks berikut:
<zookeepername1>.eahjefxxp1netdbyklgqj5y1ud.ex.internal.cloudapp.net:2181,<zookeepername2>.eahjefxxp1netdbyklgqj5y1ud.ex.internal.cloudapp.net:2181
Untuk mengatur variabel lingkungan dengan informasi host broker Kafka, gunakan perintah berikut:
export KAFKABROKERS=`curl -sS -u admin -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`
Saat diminta, masukkan kata sandi untuk akun masuk kluster (bukan akun SSH).
Untuk memverifikasi bahwa variabel lingkungan di set dengan benar, gunakan perintah berikut:
echo '$KAFKABROKERS='$KAFKABROKERS
Perintah ini mengembalikan informasi yang mirip dengan teks berikut:
<brokername1>.eahjefxxp1netdbyklgqj5y1ud.cx.internal.cloudapp.net:9092,<brokername2>.eahjefxxp1netdbyklgqj5y1ud.cx.internal.cloudapp.net:9092
Kelola topik Apache Kafka
Kafka menyimpan aliran data dalam topik. Anda dapat menggunakan kafka-topics.sh
utilitas untuk mengelola topik.
Untuk membuat topik, gunakan perintah berikut ini di sambungan SSH:
/usr/hdp/current/kafka-broker/bin/kafka-topics.sh --create --replication-factor 3 --partitions 8 --topic test --zookeeper $KAFKAZKHOSTS
Perintah ini terhubung ke Zookeeper menggunakan informasi host yang disimpan di
$KAFKAZKHOSTS
. Kemudian membuat topik Kafka bernama test.Data yang disimpan dalam topik ini dipartisi di delapan partisi.
Setiap partisi direplikasi di tiga simpul pekerja dalam sebuah kluster.
Jika Anda membuat kluster di wilayah Azure yang menyediakan tiga domain kesalahan, gunakan faktor replikasi 3. Jika tidak, gunakan faktor replikasi 4.
Di wilayah dengan tiga domain kesalahan, faktor replikasi 3 memungkinkan replika tersebar di seluruh domain kesalahan. Di wilayah dengan dua domain kesalahan, faktor replikasi empat menyebarkan replika secara merata di seluruh domain.
Untuk informasi tentang jumlah domain kesalahan di suatu wilayah, lihat dokumen Ketersediaan komputer virtual Linux.
Kafka tidak menyadari domain kegagalan Azure. Saat Anda membuat salinan partisi untuk topik, mungkin tidak tersebar dengan benar demi ketersediaan yang tinggi.
Untuk memastikan ketersediaan tinggi, gunakan alat penyeimbangan kembali partisi Apache Kafka. Alat ini harus dijalankan dari koneksi SSH ke simpul kepala kluster Kafka Anda.
Untuk ketersediaan tertinggi data Kafka Anda, Anda harus menyeimbangkan kembali replika partisi untuk topik Anda ketika:
Anda membuat topik atau partisi baru
Anda menaikkan skala kluster
Untuk membuat daftar topik, gunakan perintah berikut:
/usr/hdp/current/kafka-broker/bin/kafka-topics.sh --list --zookeeper $KAFKAZKHOSTS
Perintah ini membuat daftar topik yang tersedia di kluster Kafka.
Untuk menghapus topik, gunakan perintah berikut:
/usr/hdp/current/kafka-broker/bin/kafka-topics.sh --delete --topic topicname --zookeeper $KAFKAZKHOSTS
Perintah ini menghapus topik bernama
topicname
.Peringatan
Jika Anda menghapus
test
topik yang dibuat sebelumnya, maka Anda harus membuatnya kembali. Ini digunakan pada langkah-langkah berikutnya dalam dokumen ini.
Untuk informasi selengkapnya tentang perintah yang tersedia dengan kafka-topics.sh
utilitas, gunakan perintah berikut:
/usr/hdp/current/kafka-broker/bin/kafka-topics.sh
Menghasilkan dan menggunakan rekaman
Kafka menyimpan rekaman dalam topik. Rekaman dibuat oleh produsen, dan digunakan oleh konsumen. Produsen dan konsumen berkomunikasi dengan layanan broker Kafka. Setiap simpul pekerja di kluster HDInsight Anda adalah host broker Kafka.
Untuk menyimpan rekaman ke dalam topik pengujian yang Anda buat sebelumnya, dan kemudian membacanya menggunakan konsumen, gunakan langkah-langkah berikut:
Untuk menulis rekaman ke topik ini, gunakan
kafka-console-producer.sh
utilitas dari sambungan SSH:/usr/hdp/current/kafka-broker/bin/kafka-console-producer.sh --broker-list $KAFKABROKERS --topic test
Setelah perintah ini, Anda tiba di garis kosong.
Ketik pesan teks pada baris kosong dan tekan masukkan. Masukkan beberapa pesan dengan cara ini, lalu gunakan Ctrl + C untuk kembali ke prompt normal. Setiap baris dikirim sebagai rekaman terpisah ke topik Kafka.
Untuk membaca rekaman dari topik, gunakan
kafka-console-consumer.sh
utilitas dari sambungan SSH:/usr/hdp/current/kafka-broker/bin/kafka-console-consumer.sh --bootstrap-server $KAFKABROKERS --topic test --from-beginning
Perintah ini mengambil rekaman dari topik dan menampilkannya. Menggunakan
--from-beginning
akan memberitahu konsumen untuk memulai dari awal aliran, sehingga semua rekaman terambil.Jika Anda menggunakan Kafka versi lama, ganti
--bootstrap-server $KAFKABROKERS
dengan--zookeeper $KAFKAZKHOSTS
.Gunakan Ctrl + C untuk menghentikan konsumen.
Anda juga dapat secara terprogram membuat produsen dan konsumen. Untuk contoh penggunaan API ini, lihat dokumen API Produsen dan Konsumen Apache Kafka dengan HDInsight.
Membersihkan sumber daya
Jika tidak diperlukan lagi, Anda dapat menggunakan perintah Remove-AzResourceGroup untuk menghapus grup sumber daya, HDInsight, dan semua sumber daya terkait.
Remove-AzResourceGroup -Name $resourceGroup
Peringatan
Tagihan klaster HDInsight mulai dihitung setelah klaster dibuat dan akan berhenti saat klaster dihapus. Penagihan dihitung pro-rata per menit, sehingga Anda harus selalu menghapus kluster jika tidak digunakan lagi.
Menghapus Kafka di kluster HDInsight dapat menghapus data apa pun yang disimpan di Kafka.