Project Icon

fast-data-dev

快速部署全功能Kafka开发环境的Docker镜像

fast-data-dev是一个Docker镜像,用于快速部署Kafka开发环境。它集成了完整的Kafka分发版、Kafka Connect、Schema Registry等核心组件,以及Lenses.io开源UI工具和25+个Kafka连接器。开发者可在几秒内搭建功能齐全的Kafka环境,支持自定义配置和扩展功能。适用于本地开发、云端部署等多种场景,简化了Kafka开发环境的搭建过程。

Lenses Box / fast-data-dev

lensesio/box (lensesio/box) docker

lensesio/fast-data-dev docker

加入Slack Lenses.io社区!

Apache Kafka开发人员docker镜像;包含 Lenses (lensesio/box) 或Lenses.io的开源UI工具 (lensesio/fast-data-dev)。只需几秒钟即可拥有一个功能齐全的Kafka安装,并配备现代流平台(仅适用于kafka-lenses-dev)、直观的UI和额外功能。还包括Kafka Connect、Schema Registry、Lenses.io的Stream Reactor 25+连接器等。

获取Lenses Box的免费许可证

介绍

当你需要:

  1. Kafka发行版,包含Apache Kafka、Kafka Connect、Zookeeper、Confluent Schema Registry和REST Proxy
  2. Lenses.io Lenses或kafka-topics-ui、schema-registry-ui、kafka-connect-ui
  3. Lenses.io Stream Reactor,25+个Kafka连接器简化ETL流程
  4. 集成到docker中的集成测试和示例

只需运行:

docker run --rm --net=host lensesio/fast-data-dev

就这样。访问http://localhost:3030进入fast-data-dev环境

fast-data-dev web UI screenshot

所有服务端口都已暴露,可以从localhost或IntelliJ中使用。Kafka broker默认暴露在端口9092,zookeeper在端口2181,schema registry在8081,connect在8083。例如,要访问broker的JMX数据,运行:

jconsole localhost:9581

如果你想远程访问这些服务,你可能需要传入你机器的IP地址或主机名,以便其他机器可以访问:

docker run --rm --net=host -e ADV_HOST=<IP> lensesio/fast-data-dev

control+c停止并删除所有内容

fast-data-dev web UI screenshot

Mac和Windows用户(docker-machine)

使用Docker Machine创建一个4+GB RAM的VM:

docker-machine create --driver virtualbox --virtualbox-memory 4096 lensesio

运行docker-machine ls验证Docker Machine是否正在正确运行。命令输出应类似于:

$ docker-machine ls
NAME        ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORS
lensesio     *        virtualbox   Running   tcp://192.168.99.100:2376           v17.03.1-ce

配置终端以使用名为lensesio的新Docker Machine:

eval $(docker-machine env lensesio)

运行Kafka开发环境。定义端口,公布主机名并使用额外参数:

docker run --rm -p 2181:2181 -p 3030:3030 -p 8081-8083:8081-8083 \
       -p 9581-9585:9581-9585 -p 9092:9092 -e ADV_HOST=192.168.99.100 \
       lensesio/fast-data-dev:latest

就是这样。访问http://192.168.99.100:3030进入fast-data-dev环境

在云端运行

你可能想在GCE或AWS上快速运行Kafka实例,并从本地计算机访问它。Fast-data-dev为你提供了支持。

在相应的云中启动一个VM。你可以使用你选择的操作系统,只要它有docker包。CoreOS是一个不错的选择,因为它自带docker。

接下来你必须打开防火墙,既要为你的机器打开,也要为VM本身打开。 这很重要!

防火墙打开后,尝试:

docker run -d --net=host -e ADV_HOST=[VM_EXTERNAL_IP] \
           -e RUNNING_SAMPLEDATA=1 lensesio/fast-data-dev

或者只导出你需要的端口。例如:

docker run -d -p 2181:2181 -p 3030:3030 -p 8081-8083:8081-8083 \
           -p 9581-9585:9581-9585 -p 9092:9092 -e ADV_HOST=[VM_EXTERNAL_IP] \
           -e RUNNING_SAMPLEDATA=1 lensesio/fast-data-dev

享受Kafka、Schema Registry、Connect、Lensesio UI和Stream Reactor。

自定义执行

Fast-data-dev和kafka-lenses-dev支持通过环境变量进行自定义配置和额外功能。

fast-data-dev / kafka-lenses-dev高级配置

可选参数描述
CONNECT_HEAP=3G配置分配给Kafka Connect的最大(-Xmx)堆大小。在你想启动许多连接器时很有用。
<SERVICE>_PORT=<PORT>服务的自定义端口<PORT>,0将禁用它。<SERVICE>可以是ZKBROKERBROKER_SSLREGISTRYRESTCONNECT之一。
<SERVICE>_JMX_PORT=<PORT>服务的自定义JMX端口<PORT>,0将禁用它。<SERVICE>可以是ZKBROKERBROKER_SSLREGISTRYRESTCONNECT之一。
USER=usernamePASSWORD结合使用,指定要用于基本身份验证的用户名。
PASSWORD=password在公开运行时保护fast-data-dev UI。如果未设置USER,默认用户名为kafka
SAMPLEDATA=0不创建包含示例avro和json记录的主题;(例如不创建主题sea_vessel_position_reportsreddit_posts)。
RUNNING_SAMPLEDATA=1在示例主题中发送连续(但非常低)的消息流,以便你可以针对实时数据进行开发。
RUNTESTS=0禁用容器启动时运行的(coyote)集成测试。
FORWARDLOGS=0禁用运行将broker日志引入Kafka主题的文件源连接器。
RUN_AS_ROOT=1root用户身份运行kafka - 用于测试HDFS连接器等。
DISABLE_JMX=1禁用JMX - 默认在9581 - 9585端口启用。你也可以单独禁用服务的JMX。
ENABLE_SSL=1生成CA、密钥-证书对,并在broker上启用SSL端口。
SSL_EXTRA_HOSTS=IP1,host2如果启用了SSL,要包含在broker证书中的额外主机名和IP地址。
CONNECTORS=<CONNECTOR>[,<CON2>]显式设置将启用哪些连接器*。例如hbaseelastic(Stream Reactor版本)
DISABLE=<CONNECTOR>[,<CON2>]禁用一个或多个连接器*。例如hbaseelastic(Stream Reactor版本)、elasticsearch(Confluent版本)
BROWSECONFIGS=1在UI中公开服务配置。用于查看Kafka的设置方式。
DEBUG=1将所有进程的stdout和stderr打印到容器的stdout。用于调试容器早期退出。
SUPERVISORWEB=1在端口9001(通过SUPERVISORWEB_PORT调整)上启用supervisor web界面,以控制服务、运行tail -f等。

*可用的连接器有:azure-documentdb、blockchain、bloomberg、cassandra、 coap、druid、elastic、elastic5、ftp、hazelcast、hbase、influxdb、jms、kudu、 mongodb、mqtt、pulsar、redis、rethink、voltdb、couchbase、dbvisitreplicate、 debezium-mongodb、debezium-mysql、debezium-postgres、elasticsearch、hdfs、 jdbc、s3、twitter。

要以编程方式获取列表,运行:

docker run --rm -it lensesio/fast-data-dev \
       find /opt/lensesio/connectors -type d -maxdepth 2 -name "kafka-connect-*"
可选参数(不支持)描述
WEB_ONLY=1--net=host结合使用,docker将连接到在本地主机上运行的kafka服务。请改用我们的UI docker镜像。
TOPIC_DELETE=0配置是否可以删除主题。默认情况下可以删除主题。请改用KAFKA_DELETE_TOPIC_ENABLE=false

配置Kafka组件

你可以通过将配置选项转换为大写、用下划线替换点并在前面加上<SERVICE>_来配置任何Kafka组件(broker、schema registry、connect、rest proxy)。

例如:

  • 要为broker设置log.retention.bytes,你需要设置环境变量KAFKA_LOG_RETENTION_BYTES=1073741824
  • 要为schema registry设置kafkastore.topic,你需要设置SCHEMA_REGISTRY_KAFKASTORE_TOPIC=_schemas
  • 要为connect worker设置plugin.path,你需要设置CONNECT_PLUGIN_PATH=/var/run/connect/connectors/stream-reactor,/var/run/connect/connectors/third-party,/connectors
  • 要为rest proxy设置schema.registry.url,你需要设置KAFKA_REST_SCHEMA_REGISTRY_URL=http://localhost:8081

我们还支持设置JVM选项的变量,如KAFKA_OPTSSCHEMA_REGISTRY_JMX_OPTS等。

Lensesio的Kafka发行版(LKD)还支持一些额外的标志。由于在Apache Kafka构建中,broker和connect worker都期望在默认的KAFKA_OPTS中设置JVM选项,LKD支持为broker使用BROKER_OPTS等,为connect worker使用CONNECT_OPTS等。当然,KAFKA_OPTS仍然受支持,并应用于这两个应用程序(和嵌入式zookeeper)。

LKD的另一个补充是Kafka Connect的VANILLA_CONNECTSERDE_TOOLSLENSESIO_COMMON标志。默认情况下,我们在Connect Classpath中加载Confluent的Schema Registry和Serde Tools,以支持avro,以及我们自己的基础jar,以支持avro和我们的连接器。你可以选择运行完全vanilla的kafka connect,与官方发行版相同,不支持avro,方法是设置VANILLA_CONNECT=1。请注意,大多数(如果不是全部)连接器将无法加载,所以最好禁用它们。SERDE_TOOLS=0将禁用Confluent的jar,LENSESIO_COMMON=0将禁用我们的jar。其中任何一个都足以支持avro,但禁用LENSESIO_COMMON将使Stream Reactor无法运行。

版本

此docker镜像的最新版本跟踪我们的最新稳定标签(1.0.1)。我们的镜像包括:

版本Kafka发行版Lensesio工具Apache Kafka连接器
lensesio/fast-data-dev:3.6.1LKD 3.6.1-L03.6.120+连接器
lensesio/fast-data-dev:3.3.1LKD 3.3.1-L03.3.120+连接器
lensesio/fast-data-dev:2.6.2LKD 2.6.2-L02.6.230+连接器
lensesio/fast-data-dev:2.5.1LKD 2.5.1-L02.5.130+连接器
lensesio/fast-data-dev:2.4.1LKD 2.4.1-L02.4.130+连接器
lensesio/fast-data-dev:2.3.2LKD 2.3.2-L02.3.2
当fast-data-dev启动时,它会创建一个自签名的CA。从中它将创建一个信任存储和两对签名的密钥-证书对,一个用于代理,一个用于您的客户端。您可以从我们的Web UI访问信任存储和客户端的密钥存储,位于/certs下(例如http://localhost:3030/certs)。密钥存储和TLS密钥的密码都是`fastdata`。
代理的SSL端口是9093,可以通过BROKER_SSL_PORT变量进行配置。

以下是如何使用SSL功能的简单示例。让我们启动一个fast-data-dev作为服务器:

docker run --rm --net=host -e ENABLE_SSL=1 -e RUNTESTS=0 lensesio/fast-data-dev

在新的控制台上,运行另一个fast-data-dev实例,只是为了访问Kafka命令行实用程序,并使用TLS连接到前一个容器的代理:

docker run --rm -it --net=host --entrypoint bash lensesio/fast-data-dev
root@fast-data-dev / $ wget localhost:3030/certs/truststore.jks
root@fast-data-dev / $ wget localhost:3030/certs/client.jks
root@fast-data-dev / $ kafka-producer-perf-test --topic tls_test \
  --throughput 100000 --record-size 1000 --num-records 2000 \
  --producer-props bootstrap.servers="localhost:9093" security.protocol=SSL \
  ssl.keystore.location=client.jks ssl.keystore.password=fastdata \
  ssl.key.password=fastdata ssl.truststore.location=truststore.jks \
  ssl.truststore.password=fastdata

由于明文端口也可用,您可以测试两者并找出哪个更快以及快多少。;)

高级连接器设置

显式启用连接器

存在的连接器数量显著影响Kafka Connect的启动时间以及内存使用量。您可以使用CONNECTORS环境变量显式启用连接器:

docker run --rm -it --net=host \
           -e CONNECTORS=jdbc,elastic,hbase \
           lensesio/fast-data-dev

请注意,如果您不启用jdbc,一些测试将失败。 这不会影响fast-data-dev的操作。

显式禁用连接器

遵循与上述段落相同的逻辑,您可以选择使用DISABLE环境变量显式禁用某些连接器。它接受一个逗号分隔的连接器名称列表,您想要禁用这些连接器:

docker run --rm -it --net=host \
           -e DISABLE=elastic,hbase \
           lensesio/fast-data-dev

如果您禁用jdbc连接器,一些测试将无法运行。

启用额外的连接器

如果您有想要使用的自定义连接器,可以将其挂载到/connectors文件夹。Kafka Connect的plugin.path变量设置为包含/connectors/,因此它将使用在此目录中找到的任何单jar连接器,以及在此目录的子目录中找到的任何多jar连接器。

docker run --rm -it --net=host \
           -v /path/to/my/connector/connector.jar:/connectors/connector.jar \
           -v /path/to/my/multijar-connector-directory:/connectors/multijar-connector-directory \
           lensesio/fast-data-dev

常见问题

  • Lensesio的Fast Data Web UI工具和集成测试需要一些时间才能完全工作。特别是测试和Kafka Connect UI需要几分钟。

    这是因为服务(Kafka、Schema Registry、Kafka Connect、REST Proxy)必须先启动和初始化,然后UI才能读取数据。

  • 这个容器需要什么资源?

    一个空闲的、新鲜的容器大约需要3GiB的RAM。由于至少有5个JVM应用程序在工作,您的实际使用情况可能会有所不同。根据我们的经验,Kafka Connect通常需要大量内存。它的堆大小默认设置为640MiB,但您可能需要更多。

  • Fast-data-dev无法正常启动,代理失败并显示:

    [2016-08-23 15:54:36,772] FATAL [Kafka Server 0], Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer) java.net.UnknownHostException: [HOSTNAME]: [HOSTNAME]: unknown error

    基于JVM的应用程序往往对主机名问题比较敏感。 要么运行镜像时不使用--net=host,并将所有端口(2181, 3030, 8081, 8082, 8083, 9092)暴露到主机上的相同端口,要么更好的做法是确保您的主机名解析为localhost地址(127.0.0.1)。通常为了实现这一点,您需要将您的主机名(区分大小写)添加到/etc/hosts中,作为127.0.0.1之后的第一个名称。例如:

    127.0.0.1 MyHost localhost
    

详细配置选项

仅Web模式

注意: 仅Web模式将在未来被弃用。

这是一个仅适用于Linux主机的特殊模式,其中启动Lensesio的Web UI,并期望kafka服务在本地机器上运行。它必须使用--net=host标志运行,因此只适用于Linux:

docker run --rm -it --net=host \
           -e WEB_ONLY=true \
           lensesio/fast-data-dev

如果您已经有一个Kafka集群,只想要额外的Lensesio Fast Data web UI,这很有用。 请注意,我们为每个UI组件提供了单独的、轻量级的docker镜像,我们强烈建议使用这些而不是fast-data-dev。

Connect堆大小

您可以通过环境变量CONNECT_HEAP配置Connect的堆大小。默认值为640M:

docker run -e CONNECT_HEAP=3G -d lensesio/fast-data-dev

基本认证(密码)

我们包含了一个Web服务器来提供Lensesio UI并代理schema registry和kafka REST代理服务,以便您可以在网络上共享您的docker。如果您想要一些基本保护,请传递PASSWORD变量,Web服务器将受到用户kafka和您的密码的保护。如果您还想设置用户名,请设置USER变量。

 docker run --rm -it -p 3030:3030 \
            -e PASSWORD=password \
            lensesio/fast-data-dev

禁用测试

默认情况下,这个docker运行一组coyote测试,以确保您的容器和开发环境都设置好了。您可以使用以下标志禁用运行coyote测试:

-e RUNTESTS=0

以root身份运行Kafka

在fast-data-dev的最新版本中,我们将Kafka的运行用户从root切换为nobody,因为使用root是一种不好的做法。旧的行为可能仍然是可取的,例如在我们的HDFS连接器测试中,Connect工作器需要以root用户身份运行,以便能够写入HDFS。要切换到旧的行为,请使用:

-e RUN_AS_ROOT=1

JMX指标

默认情况下启用JMX指标。如果您出于某种原因想要禁用它们(例如,您需要将端口用于其他目的),请使用DISABLE_JMX环境变量:

docker run --rm -it --net=host \
           -e DISABLE_JMX=1 \
           lensesio/fast-data-dev

JMX端口硬编码为代理使用9581,schema registry使用9582,REST代理使用9583,connect distributed使用9584。Zookeeper在9585上暴露。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号