Kinesis Streams, Firehose ve Gerçek Zamanlı Analiz
Kinesis Data Streams ile akış verilerini alın, Firehose ile S3 veya Redshift'e teslim edin ve Managed Service for Apache Flink ile gerçek zamanlı analiz yapın.
Kinesis Streams, Firehose ve Gerçek Zamanlı Analiz, CoddyKit'te ücretsiz bir Cloud & IT Cert Prep dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cloud & IT Cert Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.
Kinesis Ailesine Genel Bakış
Amazon Kinesis, gerçek zamanlı akış verilerini toplamak, işlemek ve analiz etmek için kullanılan bir hizmet ailesidir. Üç temel hizmet şunlardır: Kinesis Data Streams (düşük gecikmeli, özel işleme), Kinesis Data Firehose (S3/Redshift/OpenSearch'e tamamen yönetilen teslimat) ve gerçek zamanlı SQL ile Flink işleme için Managed Service for Apache Flink (eski adıyla Kinesis Data Analytics). Her hizmet, akış hattının farklı bir bölümünü hedefler.
Kinesis Data Streams Mimarisi
Bir Kinesis Data Stream, shard'lara ayrılmış, kalıcı ve sıralı bir günlük kaydıdır. Her shard, 1 MB/sn yazma ve 2 MB/sn okuma aktarım hızı sağlar. Veri kayıtları varsayılan olarak 24 saat saklanır (7 güne veya 365 güne çıkarılabilir). Üreticiler bir stream'e kayıt yazar; tüketiciler — Lambda, KCL uygulamaları, Firehose veya Flink — bir ya da daha fazla shard'dan paralel olarak okur. Kayıtlar yazıldıktan sonra değiştirilemez.
# Create a Kinesis Data Stream with 4 shards
aws kinesis create-stream \
--stream-name clickstream \
--shard-count 4
# Put a record into the stream
aws kinesis put-record \
--stream-name clickstream \
--partition-key 'user-123' \
--data 'eyJldmVudCI6ICJjbGljayJ9'Shard'lar, Aktarım Hızı ve Ölçeklendirme
Shard sayısı, bir stream'in toplam aktarım hızını belirler. Aktarım hızını iki katına çıkarmak için bir shard'ı bölebilir veya maliyeti azaltmak için iki shard'ı birleştirebilirsiniz. Her kayıtlı tüketiciye diğer tüketicilerden bağımsız olarak kendi 2 MB/sn okuma aktarım hızını vermek için Enhanced Fan-Out kullanın; böylece birden fazla uygulama aynı stream'i tüketirken okuma kısıtlaması ortadan kalkar. Tüketici gecikmesini algılamak için GetRecords.IteratorAgeMilliseconds değerini izleyin.
# Split shard to increase throughput
aws kinesis split-shard \
--stream-name clickstream \
--shard-to-split shardId-000000000001 \
--new-starting-hash-key 170141183460469231731687303715884105728
# Register an enhanced fan-out consumer
aws kinesis register-stream-consumer \
--stream-arn arn:aws:kinesis:us-east-1:123456789012:stream/clickstream \
--consumer-name analytics-appKinesis Data Firehose: Yönetilen Teslimat
Kinesis Data Firehose, akış verilerini yakalayan, dönüştüren ve S3, Amazon Redshift, Amazon OpenSearch Service, Splunk ile HTTP uç noktaları dahil olmak üzere çeşitli hedeflere teslim eden, tamamen yönetilen bir hizmettir. Yönetilecek shard yoktur; Firehose otomatik olarak ölçeklenir. Bir buffer boyutu (1–128 MB) ve buffer aralığı (60–900 saniye) yapılandırırsınız; Firehose, iki sınırdan hangisine önce ulaşılırsa o zaman teslimat yapar.
# Create a Firehose delivery stream to S3
aws firehose create-delivery-stream \
--delivery-stream-name clickstream-to-s3 \
--s3-destination-configuration '{
"RoleARN": "arn:aws:iam::123456789012:role/FirehoseRole",
"BucketARN": "arn:aws:s3:::my-data-lake-123",
"Prefix": "landing/clickstream/year=!{timestamp:yyyy}/month=!{timestamp:MM}/",
"BufferingHints": {"SizeInMBs": 64, "IntervalInSeconds": 300},
"CompressionFormat": "GZIP"
}'Lambda ile Firehose Veri Dönüştürme
Firehose, verileri aktarım sırasında dönüştürmek, zenginleştirmek veya filtrelemek için teslimattan önce her kayıt grubunda bir Lambda function çağırabilir. Yaygın kullanım alanları arasında JSON'u Parquet'e dönüştürme (Glue şeması aracılığıyla), PII alanlarını maskeleme veya düşük değerli olayları atma bulunur. Dönüştürme sırasında başarısız olan kayıtlar, yeniden işlenmek üzere isteğe bağlı olarak ayrı bir S3 hata prefix'ine gönderilir; böylece hiçbir veri kaybolmaz.
# Lambda transform function signature for Firehose
def lambda_handler(event, context):
output = []
for record in event['records']:
import base64, json
payload = json.loads(base64.b64decode(record['data']))
# Drop events with no user_id
if not payload.get('user_id'):
output.append({'recordId': record['recordId'], 'result': 'Dropped', 'data': record['data']})
else:
output.append({'recordId': record['recordId'], 'result': 'Ok', 'data': record['data']})
return {'records': output}Apache Flink için Managed Service
Amazon Managed Service for Apache Flink (eski adıyla Kinesis Data Analytics), Apache Flink uygulamalarını tamamen yönetilen altyapıda çalıştırır. Durum bilgisi kullanan gerçek zamanlı analizler için kullanın: kayan pencere toplamaları, anomali algılama, olay dizilerinde örüntü eşleştirme ve akış verilerini referans tablolarıyla birleştirme. Flink kodunu Java, Python veya Scala ile yazarsınız; Flink ise kontrol noktalarını ve tam olarak bir kez durum işlenmesini yönetir.
# Flink SQL-style tumbling window (conceptual)
# Count page views per URL every 5 minutes
CREATE TABLE clickstream (
url STRING,
event_time TIMESTAMP(3),
WATERMARK FOR event_time AS event_time - INTERVAL '5' SECOND
) WITH ('connector' = 'kinesis', 'stream' = 'clickstream', ...);
SELECT
url,
COUNT(*) AS views,
TUMBLE_START(event_time, INTERVAL '5' MINUTE) AS window_start
FROM clickstream
GROUP BY url, TUMBLE(event_time, INTERVAL '5' MINUTE);Streams ve Firehose Arasında Seçim Yapma
SAA-C03 sınavı için karar ölçütlerini bilin. Saniyenin altında gecikmeye, aynı anda okuma yapan birden fazla tüketiciye veya saklama ve yeniden oynatma üzerinde tam denetim sağlayan özel işleme mantığına ihtiyacınız olduğunda Kinesis Data Streams kullanın. Akış verilerini minimum kodla, isteğe bağlı aktarım sırasında dönüştürmeyle ve daha yüksek gecikmede (60+ saniye) otomatik ölçeklendirmeyle S3, Redshift veya OpenSearch'e güvenilir biçimde teslim etmeniz yeterliyse Firehose kullanın.
Kinesis ve SQS: Klasik Sınav Seçimi
Yaygın bir SAA-C03 sorusu sizden Kinesis ile SQS arasında seçim yapmanızı ister. Temel farklar şunlardır: Kinesis, bir shard içindeki ileti sırasını korur, birden fazla tüketicinin aynı veriyi eşzamanlı olarak okumasını destekler ve kayıtları yeniden oynatmak üzere saklar. SQS, iletiler tüketildikten sonra onları kaldırır (yeniden oynatma yoktur), FIFO modu kesin sıralama garantisi verir ve mikro hizmetlerin ayrıştırılması için daha uygundur. Senaryoda gerçek zamanlı analiz veya yeniden oynatma geçiyorsa Kinesis'i seçin.
Kinesis Üreticileri: SDK ve KPL
Kinesis Producer Library (KPL), uygulamalardan Kinesis Data Streams'e yazmak için kullanılan, yüksek aktarım hızlı bir istemcidir. KPL, birden fazla küçük kaydı otomatik olarak tek bir API çağrısında toplar (en fazla 1 MB) ve yeniden denemeleri geri çekilmeyle yönetir. Bu, kayıt başına PUT maliyetini önemli ölçüde azaltır ve shard başına aktarım hızını artırır. Web clickstream'leri, IoT sensörleri veya günlük işlem hatları gibi yüksek hacimli üreticiler için KPL kullanın.
# Basic KPL usage (Java pseudocode, no backticks)
KinesisProducer producer = new KinesisProducer();
byte[] data = 'hello world'.getBytes();
ByteBuffer buf = ByteBuffer.wrap(data);
// addUserRecord handles aggregation and retry internally
ListenableFuture future = producer.addUserRecord('clickstream', 'partitionKey', buf);
Futures.addCallback(future, new FutureCallback() { ... });Firehose'tan Redshift'e Model
Yaygın bir mimari, Kinesis stream'lerinden veya doğrudan üreticilerden data warehousing için Amazon Redshift'e giden yönetilen bir pipeline olarak Firehose kullanmaktır. Firehose önce verileri ara bir S3 hazırlama bucket'ına yazar, ardından verileri Redshift'e yüklemek için bir COPY komutu çalıştırır. Bu, akış verilerini Redshift'e toplu olarak yüklemenin en verimli yoludur; Redshift'e satır satır doğrudan ekleme yapmak, satır başına ek yük nedeniyle son derece yavaş olur.
# Firehose Redshift destination (CLI snippet)
--redshift-destination-configuration '{
"RoleARN": "arn:aws:iam::123456789012:role/FirehoseRole",
"ClusterJDBCURL": "jdbc:redshift://cluster.xyz.us-east-1.redshift.amazonaws.com:5439/sales",
"CopyCommand": {
"DataTableName": "clickevents",
"CopyOptions": "JSON 'auto'"
},
"Username": "firehose_user",
"Password": "{{resolve:secretsmanager:redshift-pw}}",
"S3Configuration": {
"RoleARN": "...",
"BucketARN": "arn:aws:s3:::firehose-staging"
}
}'CloudWatch ile Kinesis'i İzleme
Kinesis için temel CloudWatch ölçümleri: üretici aktarım hızını ölçmek için IncomingBytes ve IncomingRecords, tüketici gecikmesini ölçmek için GetRecords.IteratorAgeMilliseconds (yüksek değer, tüketicilerin ayak uyduramadığı anlamına gelir) ve üreticilerin shard sınırlarına ulaştığını algılamak için WriteProvisionedThroughputExceeded değerleridir. Shard'ların Application Auto Scaling aracılığıyla otomatik ölçeklendirilmesini tetiklemek için iterator yaşında ve sağlanan aktarım hızının aşılmasında CloudWatch alarmları ayarlayın.
# CloudWatch alarm on high consumer lag
aws cloudwatch put-metric-alarm \
--alarm-name kinesis-high-lag \
--metric-name GetRecords.IteratorAgeMilliseconds \
--namespace AWS/Kinesis \
--dimensions Name=StreamName,Value=clickstream \
--statistic Maximum \
--period 60 \
--threshold 60000 \
--comparison-operator GreaterThanThreshold \
--evaluation-periods 3 \
--alarm-actions arn:aws:sns:us-east-1:123456789012:ops-alertsHızlı Kontrol
Bu derste ele alınan AWS Solutions Architect (SAA-C03) kavramlarını anlayıp anlamadığınızı test edin.
Ders Özeti
Bu derste şunları öğrendiniz: Kinesis Data Streams, birden fazla tüketici ve yeniden oynatma özelliğiyle kalıcı, sıralı ve shard'lara ayrılmış akış sağlar, Kinesis Data Firehose, S3, Redshift ve OpenSearch'e tamamen yönetilen, kod gerektirmeyen teslimat sunar ve Managed Service for Apache Flink, akışlar üzerinde durum bilgisi kullanan gerçek zamanlı analizler sağlar. Sırada, bulut geçişi stratejisinin 7 R'sini inceleyeceğiz.
Sıkça Sorulan Sorular
“Kinesis Streams, Firehose ve Gerçek Zamanlı Analiz” dersi ücretsiz mi?
Evet — “Kinesis Streams, Firehose ve Gerçek Zamanlı Analiz” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cloud & IT Cert Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.
“Kinesis Streams, Firehose ve Gerçek Zamanlı Analiz” dersinde ne öğreneceğim?
Kinesis Data Streams ile akış verilerini alın, Firehose ile S3 veya Redshift'e teslim edin ve Managed Service for Apache Flink ile gerçek zamanlı analiz yapın. Cloud & IT Cert Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Cloud & IT Cert Prep öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Cloud & IT Cert Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Kinesis Streams, Firehose ve Gerçek Zamanlı Analiz” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Cloud & IT Cert Prep dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Cloud & IT Cert Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- S3 Üzerinde Veri Gölü Oluşturma
- AWS Glue: ETL ve Veri Kataloğu
- Amazon Athena: S3 Üzerinde Sunucusuz SQL
- Kinesis Streams, Firehose ve Gerçek Zamanlı Analiz