在Ubuntu 14.04上安装Apache Kafka的方法

news2024/9/9 6:51:18

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

简介

Apache Kafka 是一个流行的分布式消息代理,旨在高效处理大量实时数据。Kafka 集群不仅高度可扩展和容错,而且与其他消息代理(如 ActiveMQ 和 RabbitMQ)相比,吞吐量也更高。虽然它通常用作发布/订阅消息系统,但许多组织也将其用于日志聚合,因为它为发布的消息提供了持久存储。

在本教程中,您将学习如何在 Ubuntu 14.04 上安装和使用 Apache Kafka 0.8.2.1。

先决条件

要跟随本教程,您需要:

  • Ubuntu 14.04 Droplet
  • 至少 4GB 的交换空间

步骤 1 —— 为 Kafka 创建用户

由于 Kafka 可以通过网络处理请求,因此您应该为其创建一个专用用户。这样可以最大程度地减少 Kafka 服务器受损对 Ubuntu 机器造成的影响。

以 root 身份使用 useradd 命令创建一个名为 kafka 的用户:

useradd kafka -m

使用 passwd 设置其密码:

passwd kafka

将其添加到 sudo 组,以便具有安装 Kafka 依赖项所需的特权。可以使用 adduser 命令完成此操作:

adduser kafka sudo

现在您的 Kafka 用户已准备就绪。使用 su 登录:

su - kafka

步骤 2 —— 安装 Java

在安装其他软件包之前,更新可用软件包的列表,以便安装存储库中提供的最新版本:

sudo apt-get update

由于 Apache Kafka 需要 Java 运行时环境,使用 apt-get 安装 default-jre 软件包:

sudo apt-get install default-jre

步骤 3 —— 安装 ZooKeeper

Apache ZooKeeper 是一个开源服务,用于协调和同步属于分布式系统的节点的配置信息。Kafka 集群依赖于 ZooKeeper 执行诸如检测失败节点和选举领导者等操作。

由于 ZooKeeper 软件包在 Ubuntu 的默认存储库中可用,因此可以使用 apt-get 安装它。

sudo apt-get install zookeeperd

安装完成后,ZooKeeper 将自动作为守护进程启动。默认情况下,它将侦听端口 2181

为确保它正在工作,通过 Telnet 连接到它:

telnet localhost 2181

在 Telnet 提示符下,输入 ruok 并按 ENTER

如果一切正常,ZooKeeper 将回复 imok 并结束 Telnet 会话。

步骤 4 —— 下载并提取 Kafka 二进制文件

现在 Java 和 ZooKeeper 已安装,是时候下载并提取 Kafka 了。

首先,创建一个名为 Downloads 的目录,用于存储所有下载内容。

mkdir -p ~/Downloads

使用 wget 下载 Kafka 二进制文件。

wget "http://mirror.cc.columbia.edu/pub/software/apache/kafka/0.8.2.1/kafka_2.11-0.8.2.1.tgz" -O ~/Downloads/kafka.tgz

创建一个名为 kafka 的目录并切换到该目录。这将是 Kafka 安装的基本目录。

mkdir -p ~/kafka && cd ~/kafka

使用 tar 命令提取您下载的存档。

tar -xvzf ~/Downloads/kafka.tgz --strip 1

步骤 5 —— 配置 Kafka 服务器

下一步是配置 Kafka 服务器。

使用 vi 打开 server.properties

vi ~/kafka/config/server.properties

默认情况下,Kafka 不允许您删除主题。为了能够删除主题,请在文件末尾添加以下行:

delete.topic.enable = true

保存文件并退出 vi

步骤 6 —— 启动 Kafka 服务器

使用 nohup 运行 kafka-server-start.sh 脚本,以将 Kafka 服务器(也称为 Kafka broker)作为独立于您的 shell 会话的后台进程启动。

nohup ~/kafka/bin/kafka-server-start.sh ~/kafka/config/server.properties > ~/kafka/kafka.log 2>&1 &

等待几秒钟让它启动。当您在 ~/kafka/kafka.log 中看到以下消息时,可以确定服务器已成功启动:

...

[2015-07-29 06:02:41,736] INFO New leader is 0 (kafka.server.ZookeeperLeaderElector$LeaderChangeListener)
[2015-07-29 06:02:41,776] INFO [Kafka Server 0], started (kafka.server.KafkaServer)

现在您有一个监听端口 9092 的 Kafka 服务器。

步骤 7 — 测试安装

现在让我们发布和消费一个**“Hello World”**消息,以确保 Kafka 服务器的行为是否正确。

要发布消息,您应该创建一个 Kafka 生产者。您可以使用kafka-console-producer.sh脚本轻松地从命令行创建一个。它需要 Kafka 服务器的主机名和端口,以及一个主题名称作为参数。

通过输入以下内容将字符串**“Hello, World”发布到名为TutorialTopic**的主题:

echo "Hello, World" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TutorialTopic > /dev/null

由于该主题不存在,Kafka 将自动创建它。

要消费消息,您可以使用kafka-console-consumer.sh脚本创建一个 Kafka 消费者。它需要 ZooKeeper 服务器的主机名和端口,以及一个主题名称作为参数。

以下命令从我们发布的主题中消费消息。请注意使用--from-beginning标志,因为我们希望消费在消费者启动之前发布的消息。

~/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic TutorialTopic --from-beginning

如果没有配置问题,您现在应该在输出中看到Hello, World

该脚本将继续运行,等待更多消息被发布到主题。随时打开一个新的终端并启动一个生产者来发布更多消息。您应该能够立即在消费者的输出中看到它们。

测试完成后,按下CTRL+C停止消费者脚本。

步骤 8 — 安装 KafkaT(可选)

KafkaT 是来自 Airbnb 的一个方便的小工具,它使您可以更轻松地查看 Kafka 集群的详细信息,并且还可以从命令行执行一些管理任务。由于它是一个 Ruby gem,您需要安装 Ruby 才能使用它。您还需要安装build-essential软件包以便能够构建它所依赖的其他 gem。使用apt-get安装它们:

sudo apt-get install ruby ruby-dev build-essential

现在可以使用gem命令安装 KafkaT:

sudo gem install kafkat --source https://rubygems.org --no-ri --no-rdoc

使用vi创建一个名为.kafkatcfg的新文件。

vi ~/.kafkatcfg

这是 KafkaT 使用的配置文件,用于确定您的 Kafka 服务器的安装和日志目录。它还应该将 KafkaT 指向您的 ZooKeeper 实例。因此,请向其中添加以下行:


{
  "kafka_path": "~/kafka",
  "log_path": "/tmp/kafka-logs",
  "zk_path": "localhost:2181"
}

现在您可以使用 KafkaT 了。首先,以下是如何使用它查看所有 Kafka 分区的详细信息:

kafkat partitions

您应该会看到以下输出:


Topic		    Partition	Leader		Replicas		ISRs	
TutorialTopic	0		      0		      [0]			[0]

要了解更多关于 KafkaT 的信息,请参阅其 GitHub 仓库。

步骤 9 — 设置多节点集群(可选)

如果您想要使用更多的 Ubuntu 14.04 机器创建一个多代理集群,您应该在每台新机器上重复执行步骤 1、步骤 3、步骤 4 和步骤 5。此外,您还应该在每台机器的server.properties文件中进行以下更改:

  • broker.id属性的值应更改为在整个集群中是唯一的
  • zookeeper.connect属性的值应更改为所有节点指向同一个 ZooKeeper 实例

如果您想要为您的集群拥有多个 ZooKeeper 实例,每个节点上zookeeper.connect属性的值应该是一个相同的、逗号分隔的字符串,列出所有 ZooKeeper 实例的 IP 地址和端口号。

步骤 10 — 限制 Kafka 用户

现在所有安装都已完成,您可以删除kafka用户的管理员特权。在这样做之前,请注销并以任何其他非根 sudo 用户重新登录。如果您仍在运行开始本教程的同一个 shell 会话,只需输入exit

要删除kafka用户的管理员特权,请将其从sudo组中删除。

sudo deluser kafka sudo

为了进一步提高 Kafka 服务器的安全性,使用passwd命令锁定kafka用户的密码。这样可以确保没有人可以直接登录。

sudo passwd kafka -l

此时,只有 root 用户或一个 sudo 用户可以通过输入以下命令作为kafka用户登录:

sudo su - kafka

将来,如果您想要解锁它,可以使用带有-u选项的passwd

sudo passwd kafka -u

结论

您现在在您的Ubuntu服务器上拥有一个安全的Apache Kafka。您可以通过使用几乎所有编程语言都可用的Kafka客户端,轻松地在您的项目中利用它,创建Kafka生产者和消费者。要了解更多关于Kafka的信息,请阅读其文档。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1962894.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaScript(二)变量

一、两种注释方式 // 这是当行注释/* 这是多行注释 这是多行注释 */二、变量是什么 变量就是一个可以存放“数值”的容器,这个“数值”可以是数字、字符串、函数等。 变量不是数值本身,它是一个用于存储数值的容器,你可以把变量想象成一个个…

解决断点问题导致项目没有完全启动bug

场景: 项目启动正常,启动日志也正常打印,但是无法判断是否启动完毕,访问接口也进不了服务 原因: 启动前调试项目打断点时 不晓得打到了某个层面的断点 具体是哪忘了,导致项目没有完全启动,启…

WIFI7:引领智能驾驶新未来

近年来,智能驾驶技术飞速发展,从最初的初级的辅助驾驶逐步迈向高度自动驾驶,这一变化历程深刻依赖的是高效、稳定且前沿的无线通信技术的支撑。WIFI7,作为无线通信领域的最新里程碑,凭借其前所未有的性能提升与功能拓展…

一级指针和一维数组

文章目录 🍊自我介绍🍊一级指针和一维数组🍊a , &a[0]和&a之间的关系 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞关注评论收藏(一键四连)哦~ 🍊自我介绍 Hello,大家好…

Tugraph的安装部署

文章目录 一、安装Docker二、拉取TuGraph镜像三、访问web端 一、安装Docker http://t.csdnimg.cn/djJYX 二、拉取TuGraph镜像 https://hub.docker.com/search?qtugraph 拉取的时间会有些长 docker pull tugraph/tugraph-compile-ubuntu18.04如docker镜像拉取失败&#xff…

IDEA管理远程仓库Git

1、模拟项目 新建一个文件夹,用来这次演示 用IDEA来打开文件夹 2、创建仓库 在IDEA中给该文件夹创建本地仓库和远程仓库 在菜单栏找到VCS选择Share project on Gitee 在弹窗中输入描述信息 接下来会出现以下弹窗 点击ADD后,在gitee上会创建远程仓库 …

敏捷产品经理实训:助力产品负责人掌握敏捷方法,提升产品开发效率

在当今快节奏的市场环境中,产品经理和产品负责人需要快速响应市场变化,推动产品创新,以满足用户不断变化的需求。敏捷产品经理实训课程专为产品经理和产品负责人设计,旨在帮助他们掌握敏捷方法,提高团队协作和产品开发…

python dash框架

Dash 是一个用于创建数据分析型 web 应用的 Python 框架。它由 Plotly 团队开发,并且可以用来构建交互式的 web 应用程序,这些应用能够包含图表、表格、地图等多种数据可视化组件。 Dash 的特点: 易于使用:Dash 使用 Python 语法…

二叉树的介绍及其顺序结构的实现

Hello, 亲爱的小伙伴们,你们的作者菌又回来了,之前我们学习了链表、顺序表、栈等常见的数据结构,今天我们将紧跟之前的脚步,继续学习二叉树。 好,咱们废话不多说,开始我们今天的正题。 1.树 1.1树的概念和…

Vue3+.NET6前后端分离式管理后台实战(三十二)

1,Vue3.NET6前后端分离式管理后台实战(三十二)

Java上门做饭平台系统小程序源码

🍽️解锁新生活方式!揭秘“上门做饭平台系统”的五大魅力🌟 🏠【懒人福音,美食直达家门】 在这个快节奏的时代,谁不想下班后直接享受热腾腾的家常美味呢?上门做饭平台系统就是你的私人厨师团队…

java基础概念07-switch语句

一、switch定义 二、基本语法 switch (expression) { case value1: // 当expression的值等于value1时执行的代码 break; // 可选 case value2: // 当expression的值等于value2时执行的代码 break; // 可选 // 你可以有任意数量的case语句 default: // 可选 // 当没有…

【Android驱动06】GMS兼容性测试CTS --环境搭建、测试执行、结果分析

CTS即Compatibility Test Suite意为兼容性测试,是Google推出的Android平台兼容性测试机制。其目的是尽早发现不兼容性,并确保软件在整个开发过程中保持兼容性。只有通过CTS认证的设备才能合法的安装并使用Google market等Google应用。 一,搭…

leetcode 二叉树专题——java实现

1. 二叉树中序遍历 给一棵树,输出中序遍历。 树已经给你建好了,按照一下形式: /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* Tree…

花10分钟写个漂亮的后端API接口模板!

你好,我是田哥 在这微服务架构盛行的黄金时段,加上越来越多的前后端分离,导致后端API接口规范变得越来越重要了。 比如:统一返回参数形式、统一返回码、统一异常处理、集成swagger等。 目的主要是规范后端项目代码,以及…

数据恢复大师免费版落伍了吗?2024年4大创新恢复工具对比评测

在这个数字时代,要是突然发现电脑里的珍贵照片、视频或者重要文件不见了,那种感觉就像失去了什么重要的东西,让人焦虑又无助。市面上虽然有很多数据恢复软件,但不是所有软件都能满足我们的需求,尤其是那些既免费又好用…

一键解析:由于找不到xinput1_3.dll,无法继续执行代码的问题,有效修复xinput1_3.dll文件

xinput1_3.dll是一个重要的动态链接库文件,它是DirectX软件包的一部分,主要负责处理游戏和多媒体应用程序中的输入功能。当用户尝试启动某些游戏或应用程序时,可能会遇到一个错误提示,指出“由于找不到xinput1_3.dll,无…

开源AI智能名片拓客小程序在企业品牌快速打造中的应用探索

摘要:在数字化浪潮席卷全球的今天,企业品牌的建设与传播已不再局限于传统的广告与营销手段。开源AI智能名片拓客小程序作为一种创新的数字营销工具,凭借其智能化、个性化及高效化的特点,正逐步成为企业品牌快速打造与提升市场影响…

游戏类型有哪些?游戏分类详细解说(一)

这篇文章是来源于游戏工委牵头制定的团体标准:《网络游戏分类》(音数协 2023年1月,征求意见稿)。 音数协游戏工委是游戏行业自律组织,在其牵头组织下,腾讯、网易、盛趣、索尼、完美世界、巨人网络等单位共…