当前位置: 首页 > 知识库问答 >
问题:

Amazon为Kafka-MSK特性和性能管理流媒体

东门文斌
2023-03-14

我正在评估AWS Managed Service Kafka(MSK),我知道目前它处于预览模式,因此可能没有所有功能或适当的文档。我试图建立msk集群,并验证msk是否能满足我们公司的所有用例/需求,但目前,它缺乏文档和示例。

https://docs.aws.amazon.com/msk/latest/developerguide/what-is-msk.html

vi)如何对流经MSK的数据进行实时预测分析

vii)与Azure/Confluent的其他基于云的kafka集群相比,MSK的可靠性有多高,与vanilla kafka相比,MSK的性能基准有多高?集群中最大的经纪人数量是多少?

共有1个答案

岳谦
2023-03-14

MSK基本上是由aws定制和管理的普通apache kafka集群(根据集群实例类型、代理数量等预定义配置设置),并针对云环境进行了优化。

理想情况下,它应该能够执行开源Kafka支持的所有/大多数事情。另外,如果您有未记录的特定用例或需求,我建议您联系AWS支持部门,以进一步澄清kafka集群的托管部分(允许的最大代理数量、可靠性、成本)。

我将根据我的个人经历尝试回答您的问题:

sudo yum install confluent-kafka-rest 
bootstrap.servers=PLAINTEXT://10.0.10.106:9092,PLAINTEXT://10.0.20.27:9092,PLAINTEXT://10.0.0.119:9092
zookeeper.connect=10.0.10.83:2181,10.0.20.22:2181,10.0.0.218:2181
schema.registry.url=http://localhost:8081
kafka-rest-start kafka-rest.properties &

通过rest API使用curl或rest客户机/浏览器访问MSK。

获取主题列表

curl "http://localhost:8082/topics"

curl "http://<ec2 instance public ip>:8082/topics"

为了从内部机器或本地机器进行访问,必须在rest服务器运行的ec2实例上附加公共ip或弹性ip。

sudo yum install confluent-schema-registry
listeners=http://0.0.0.0:8081
kafkastore.connection.url=10.0.10.83:2181,10.0.20.22:2181,10.0.0.218:2181
kafkastore.bootstrap.servers=PLAINTEXT://10.0.10.106:9092,PLAINTEXT://10.0.20.27:9092,PLAINTEXT://10.0.0.119:9092
kafkastore.topic=_schemas
debug=false
schema-registry-start schema-registry.properties &

有关详细信息,请参阅:https://github.com/confluentinc/schema-registry

https://docs.confluent.io/current/schema-registry/docs/schema_registry_tutorial.html

语义是apache kafka的特性,虽然我没有在msk上测试过它,但我相信它应该支持这个特性,因为它只是开源apache kafka的一部分。

kafka-configs.sh --zookeeper 10.0.10.83:2181,10.0.20.22:2181,10.0.0.218:2181  --entity-type topics --entity-name jsontest --alter --add-config retention.ms=128000
curl "http://localhost:8082/topics/jsontest"

也是MSK Kafka的默认配置:

https://docs.aws.amazon.com/msk/latest/developerguide/msk-default-configuration.html

iv)是否有可能将MSK与其他AWS业务(如红移、EMR等)集成?

在MSK集群的vpc中启动EMR集群,在MSK集群安全组的入站规则中允许EMR主从安全组用于端口9092

启动火花壳

spark-shell --packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.4.0

从spark结构流连接到MSK集群

val kafka = spark.readStream.format("kafka").option("kafka.bootstrap.servers", "10.0.10.106:9092,10.0.20.27:9092,10.0.0.119:9092").option("subscribe", "jsontest") .load()
val df=kafka.selectExpr("CAST(key AS STRING)", "CAST(value AS STRING)").writeStream.format("console").start()
val df=kafka.selectExpr("CAST(value AS STRING)").writeStream.format("console").start()
sudo yum install confluent-ksql 
bootstrap.servers=10.0.10.106:9092,10.0.20.27:9092,10.0.0.119:9092
listeners=http://localhost:8088

**修改引导服务器IPS/URL。

启动ksql服务器

ksql-server-start ksql-server.properties &

之后,启动ksql cli

ksql http://localhost:8088

最后运行命令获取主题列表

ksql> SHOW TOPICS;

 Kafka Topic | Registered | Partitions | Partition Replicas | Consumers | ConsumerGroups 
-----------------------------------------------------------------------------------------
 _schemas    | false      | 1          | 3                  | 0         | 0              
 jsontest    | false      | 1          | 3                  | 1         | 1              
----------------------------- --------------------------------------------------

有关更多信息,请参阅https://github.com/confluentinc/ksql

vi)如何对流经MSK的数据进行实时预测分析

vii)与Azure/Confluent的其他基于云的kafka集群相比,MSK的可靠性有多高,与vanilla kafka相比,MSK的性能基准有多高?集群中最大的经纪人数量是多少?

MSK正在预览中,你已经知道了,所以现在说它的可靠性还为时过早。但总的来说,像所有其他AWS服务一样,随着时间的推移,它应该会变得更加可靠,并希望有新的特性和更好的文档。

我不认为AWS或任何云供应商azure,google cloud提供了他们服务的性能基准,所以你必须从你的角度尝试性能测试。和kafka客户机/工具(kafka-productor-perf-test.sh,kafka-consumer-perf-test.sh)提供了一个性能基准测试脚本,可以执行该脚本来了解集群的性能。同样,在实际生产场景中对服务的性能测试会因各种因素而有很大差异,例如(消息大小、到达kafka的数据量、sync或async生产者、多少消费者等),性能将取决于特定的用途,而不是一般的基准测试。

sudo yum install curl which
  sudo rpm --import https://packages.confluent.io/rpm/5.1/archive.key
[Confluent.dist]
name=Confluent repository (dist)
baseurl=https://packages.confluent.io/rpm/5.1/7
gpgcheck=1
gpgkey=https://packages.confluent.io/rpm/5.1/archive.key
enabled=1

[Confluent]
name=Confluent repository
baseurl=https://packages.confluent.io/rpm/5.1
gpgcheck=1
gpgkey=https://packages.confluent.io/rpm/5.1/archive.key
enabled=1 
sudo yum clean all 

在MSK集群安全组的入站规则中允许ec2实例的安全组用于端口9092(连接代理)和2081(连接zookeeper)。

第2节:获取MSK集群代理和zookeeper URL/IP信息的命令

Zookeeper连接url端口

aws kafka describe-cluster --region us-east-1 --cluster-arn <cluster arn>
aws kafka get-bootstrap-brokers --region us-east-1 --cluster-arn <cluster arn>

希望您发现以上信息有用!!

 类似资料:
  • 我正在读这篇博文: http://blog.jaceklaskowski.pl/2015/07/20/real-time-data-processing-using-apache-kafka-and-spark-streaming.html 它讨论了如何使用Spark Streaming和Apache Kafka进行一些近实时处理。我完全理解这篇文章。它确实展示了我如何使用Spark Stream

  • 之前我们介绍过,响应式网站设计主要包括三部分:弹性布局、媒体查询和弹性媒介。我们分别了解下这几个。 弹性布局 所谓的弹性布局,说的是在创建网站的时候,采用流体网格布局方式,动态地调整网站布局宽度以此来适应各种设备屏幕大小。 弹性布局不使用固定的测量单位,比如像素或者英寸。原因显而易见,视窗( viewport )的高度和宽度在不同设备之间是不断变化的,那么弹性网站布局为了适应这种变化,所以就不可能

  • 我使用的是1.5.4 spring boot,Java8和kafka 2.2.0版本。我有5个代理和4个不同的主题,每个50个分区。 我有一个这样的系统: 因为使用相同的键,我所有内部主题的消息都在同一个分区,对吗?并且只有1个线程可以从该分区使用 如果我分发到50个分区,我会像50个分区那样做批处理工作,并分发到50个分区,我的代码性能是否会像x2x3x4倍那样增加?我能知道点什么吗

  • 问题内容: 我正在考虑响应式网页设计和“移动优先”方法来重新设计我的博客-简而言之,我正在尝试使用最小宽度来避免任何形式的复制或CSS。 我的问题是,当我确实需要覆盖CSS值时,较低的最小宽度优先。例: 我希望当我在600px及更高的分辨率下会得到2.2em h2,而我会得到1.7em。这没有道理! 我可以继续使用最小宽度并在不使用更强大的选择器或最大宽度的情况下有效地覆盖更高分辨率的声明吗? 问

  • 什么是上下文?其实我们可以简单地把它理解成环境。从一篇文章中抽出一句话,让你来理解,我们会说这是断章取义。为什么?因为我们压根就没考虑到这句话的上下文是什么。编程中的上下文也与此类似,比如『进程上下文』,指的是一个进程在执行的时候,CPU 的所有寄存器中的值、进程的状态以及堆栈上的内容等,当系统需要切换到其他进程时,系统会保留当前进程的上下文,也就是运行时的环境,以便再次执行该进程。 迭代器有迭代

  • Linux是一个开放的、高可配置的操作系统,一个合格的Linux系统管理员应该可支持不同应用环境的要求。下面介绍一些管理工具,可帮助我们了解系统状态和优化系统。 top top命令可实时地显示Linux系统的进程、CPU、内存、负载等的信息。它是我们了解系统整体状态最好的工具。 top - 10:06:09 up 31 days, 2:14, 1 user, load average: 0