在Ubuntu 20.04上安装和配置Apache Kafka

时间:2020-02-23 14:31:30  来源:igfitidea点击:

在我们之前的教程中,我们看到如何在CentOS 8上安装Apache Kafka并继续在同一个车道上,我们将看到如何在Ubuntu 20.04上安装它(焦点FOSEA)。
我们涵盖了很多定义,但我们让我们再次为他们提供刚刚节省时间并增加一点方便。

Apache Kafka是一个开源分布式事件流平台,由数千家用于高性能数据管道,流分析,数据集成以及关键任务应用程序.Source:Apache Kafka。

事件流是从事件源(制作人)的实时捕获数据的实践,如数据库,传感器,移动设备,云服务和事件流形式的软件应用程序;持续地存储这些事件流以稍后检索;在实时以及回顾性地操纵,处理和对事件流反应;并根据需要将事件流路由到不同的目的地技术(消费者)。
资料来源:Apache Kafka。
生产者是将数据发送到Kafka集群的程序/应用程序或者实体。
消费者位于另一边,并从Kafka集群接收数据。
Kafka集群可以包括一个或者多个Kafka经纪人,坐在不同的服务器上。
"一切都有美,但不是每个人都看到它。
" -confucius(孔子)

定义其他术语

主题:主题是用于存储和发布特定数据流的通用名称。
例如,如果我们希望存储有关正在单击的页面的所有数据,则可以给出主题一个名称,例如"添加的客户".Partition:每个主题都分成分区("Baskets")。
创建主题时,需要指定分区的数量,但可以根据需要稍后提高。
每个消息都存储到具有称为其偏移量值的增量ID的分区中.Kafka代理:其中包含Kafka的每个服务器都称为代理。
它是一个包含若干主题的容器.zookeeper:zookeeper管理Kafka的群集状态和配置。

Apache Kafka用例

以下是我们可以利用Apache Kafka的一些应用程序:消息经纪:与大多数消息传递系统相比,Kafka具有更好的吞吐量,内置划分,复制和容错,这使其成为大规模的良好解决方案消息处理Applicationswebite活动跟踪Log聚合:Kafka摘要删除文件的详细信息,并将日志或者事件数据的清洁抽象作为消息流.Stream处理:从事件源实时捕获数据;持续地存储这些事件流以稍后检索;并将事件流路由到不同的目标技术,如需要采购:这是一种应用程序设计的风格,其中,状态更改被记录为Records.commit日志的时间顺序序列:Kafka可以作为一种外部提交日志分布式系统。
该日志有助于在节点之间复制数据,并作为失败节点的重新同步机制,以恢复其数据。
这涉及从分布式应用程序聚合统计,以产生集中的操作数据馈送。

在Ubuntu 20.04上安装Apache Kafka

Apache Kafka需要Java才能运行,所以我们将准备我们的服务器并获得每个先前的准备工作

第1步:准备Ubuntu服务器

更新Fresh Ubuntu 20.04服务器并按照如下所示安装Java。

sudo apt update && sudo apt upgrade
sudo apt install default-jre wget git unzip -y
sudo apt install default-jdk -y

第2步:在Ubuntu 20.04上获取Kafka

java安装得很好,让我们现在获取Kafka来源。
终止下载并查找最新版本并在二进制下载下获取来源。
点击Kafka推荐的那个,我们将被重定向到有一个链接的页面,我们可以用来获取它。

cd ~
wget https://downloads.apache.org/kafka/2.6.0/kafka_2.13-2.6.0.tgz
sudo mkdir /usr/local/kafka-server && cd /usr/local/kafka-server
sudo tar -xvzf ~/kafka_2.13-2.6.0.tgz --strip 1

存档的内容将被提取到/usr/local/kafka-server /由于-sstrip 1标志集。

第3步:创建Kafka和Zookeeper Systemd单元文件

Kafka和Zookeeper的Systemd单元文件几乎可以帮助执行常见的服务动作,例如启动,停止和重新启动Kafka。
这使得它适应其他服务的启动,停止,并重新启动,这是有益的且一致性。
我们从zookeeper服务开始:

$sudo vim /etc/systemd/system/zookeeper.service
[Unit]
Description=Apache Zookeeper Server
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=simple
ExecStart=/usr/local/kafka-server/bin/zookeeper-server-start.sh /usr/local/kafka-server/config/zookeeper.properties
ExecStop=/usr/local/kafka-server/bin/zookeeper-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target

然后用于Kafka服务。
确保java_home配置完全良好,或者Kafka不会启动。

$sudo vim /etc/systemd/system/kafka.service
[Unit]
Description=Apache Kafka Server
Documentation=http://kafka.apache.org/documentation.html
Requires=zookeeper.service
After=zookeeper.service
[Service]
Type=simple
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64"
ExecStart=/usr/local/kafka-server/bin/kafka-server-start.sh /usr/local/kafka-server/config/server.properties
ExecStop=/usr/local/kafka-server/bin/kafka-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target

完成添加配置后,重新加载SystemD守护程序使更改生效,然后启动服务。
我们也可以查看其状态。

sudo systemctl daemon-reload
sudo systemctl enable --now zookeeper
sudo systemctl enable --now kafka
sudo systemctl status kafka zookeeper

第4步:为Apache Kafka安装Cluster Manager(CMAK)

CMAK(以前称为Kafka Manager)是由雅虎开发的Apache Kafka集群管理的OpenSource工具。

cd ~
git clone https://github.com/yahoo/CMAK.git

第5步:在Ubuntu 20.04上配置CMAK

最小配置是要用于CMAK(PKA Kafka Manager)状态的ZookeEper主机。
这可以在conf目录中的应用程序分类文件中找到。
更改cmak.zkhosts ="my.zookeeper.host.com:2181",我们也可以通过逗号划定它们来指定多个zookeeper主机,如:cmak.zkhosts ="my.zookeeper.host.com:2181,其他.zookeeper .host.com:2181"。
主机名也可以是IP地址。

$vim ~/CMAK/conf/application.conf
cmak.zkhosts="localhost:2181

完成添加zookeeper主机后,下面的命令将创建一个zip文件,可用于部署应用程序。
我们应该在下载和编译的文件中看到终端上的大量输出。
让它完成和编译,因为需要一段时间。

cd ~/CMAK/
./sbt clean dist

完成后,我们应该看到如下所示的消息:

[info] Your package is ready in /home/tech/CMAK/target/universal/cmak-3.0.0.5.zip

更改为zip文件所在的目录并解压缩它:

$cd ~/CMAK/target/universal
$unzip cmak-3.0.0.5.zip
$cd cmak-3.0.0.5

第5步:启动服务并访问它

在提取生成的ZipFile后,并将工作目录更改为步骤4中的完成后,我们可以像这样运行服务:

$cd ~/CMAK/target/universal/cmak-3.0.0.5
$bin/cmak

默认情况下,它将选择端口9000,因此打开我们喜欢的浏览器并将其指向HTTP://IP-OR-Domain-Name-Server:9000。
如果防火墙正在运行,请允许在外部访问端口。

sudo ufw allow 9000

我们应该看到一个界面,如下所示,一切正常:

我们将立即注意到,当我们第一次进入界面时,没有群集,如上所示。
因此,我们将继续创建一个新群集。
单击"群集"下拉列表,然后选择"添加群集"。

我们将在页面上呈现,如下所示。
使用所请求的详细信息(群集名称,zookeeper hosts等)填写表单。
如果我们有几个ZooKeeper主机,请将其分隔由逗号分隔。
我们可以根据需求填写其他详细信息。

滚动并击中"保存"。

第6步:添加示例主题

Apache Kafka提供多个shell脚本来使用。
让我们首先创建一个名为"onidoOptopic"的示例主题,其中单个分区具有单个副本。
打开一个新的终端离开CMAK运行并发出以下命令:

cd /usr/local/kafka-server
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic theitroadTopic
Created topic theitroadTopic.

确认主题是否在CMAK接口中更新。
要执行此操作,请在群集中,单击主题>列表

第7步:CMAK接口中创建主题

另一个更简单的创建主题的方式是通过CMAK Web界面。
只需单击"主题"下拉列表,然后单击"创建"。
这是下面说明的。
我们将被要求输入我们对新主题(复制因子,分区和其他)所需的所有详细信息。
填写表单,然后单击它下面的"创建"。

我们将被要求输入我们对新主题(复制因子,分区和其他)所需的所有详细信息。
填写表单,然后单击页面下方的"创建",如下图所示:

我们将看到一条消息,主题是如下所示的。
查看它的链接也将被利用。
单击它以查看新主题