fast-data-dev

fast-data-dev

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

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

KafkaDockerLensesiofast-data-dev容器化Github开源项目

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环境

<img src="https://yellow-cdn.veclightyear.com/2b54e442/ee7b7d1e-d374-4062-858e-23f2671cff86.png" alt="fast-data-dev web UI screenshot" type="image/png" width="320">

所有服务端口都已暴露,可以从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停止并删除所有内容

<img src="https://yellow-cdn.veclightyear.com/2b54e442/18556b77-0639-4300-93b8-69ed5cc1e9dd.png" alt="fast-data-dev web UI screenshot" type="image/png" width="900">

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上暴露。

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多