centos7(2009)安装kafka(kafka_2.12-2.4.1集群)单节点可类比

centos7(2009)安装kafka(kafka_2.12-2.4.1单节点)

下载解压kafka

cd /export/software/
tar -xvzf kafka_2.12-2.4.1.tgz -C ../server/
cd /export/server/kafka_2.12-2.4.1/

修改 server.properties

cd /export/server/kafka_2.12-2.4.1/config
vim server.properties
# 指定broker的id(集群下该id每个节点不可相同)
broker.id=0
# 指定Kafka数据的位置
log.dirs=/export/server/kafka_2.12-2.4.1/data
# 配置zk的三个节点 (单节点不用修改)
zookeeper.connect=192.168.10.101:2181,192.168.10.102:2181,192.168.10.103:2181

4.配置KAFKA_HOME环境变量

vim /etc/profile
export KAFKA_HOME=/export/server/kafka_2.12-2.4.1
export PATH=:$PATH:${KAFKA_HOME}

加载配置

source /etc/profile

5.启动服务器(需jdk环境)

# 启动ZooKeeper
nohup bin/zookeeper-server-start.sh config/zookeeper.properties &
# 启动Kafka
cd /export/server/kafka_2.12-2.4.1
nohup bin/kafka-server-start.sh config/server.properties &
# 测试Kafka集群是否启动成功
bin/kafka-topics.sh --bootstrap-server localhost:9092 --list

测试

[root@localhost kafka_2.11-2.4.1]# lsof -i:9092
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    1727 root  123u  IPv6  24027      0t0  TCP *:XmlIpcRegSvc (LISTEN)
java    1727 root  139u  IPv6  24040      0t0  TCP localhost:44520->localhost:XmlIpcRegSvc (ESTABLISHED)
java    1727 root  140u  IPv6  24041      0t0  TCP localhost:XmlIpcRegSvc->localhost:44520 (ESTABLISHED)
[root@localhost kafka_2.11-2.4.1]# jps
1360 QuorumPeerMain
2160 Jps
1727 Kafka
[root@localhost kafka_2.11-2.4.1]# 

遇到的问题记录

使用kafka tool慢或者是java进行连接的时间报127.0.0.1错误,加上如下配置。vim config/server.properties

############################# Zookeeper #############################

# Zookeeper connection string (see zookeeper docs for details).
# This is a comma separated host:port pairs, each corresponding to a zk
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".
# You can also append an optional chroot string to the urls to specify the
# root directory for all kafka znodes.
advertised.listeners=PLAINTEXT://192.168.10.100:9092
zookeeper.connect=192.168.10.100:2181

java 生产者代码

package com.test;

import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.clients.producer.RecordMetadata;

import java.util.Properties;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;

public class KafkaTestMain {
    public static void main(String[] args) {
        Properties properties = new Properties();
        properties.put("bootstrap.servers","192.168.10.100:9092");
        properties.put("acks","all");
        properties.put("key.serializer","org.apache.kafka.common.serialization.StringSerializer");
        properties.put("value.serializer","org.apache.kafka.common.serialization.StringSerializer");

        KafkaProducer<String, String> producer = new KafkaProducer<String, String>(properties);

        for (int i = 0; i < 100; i++) {
            Future<RecordMetadata> test = producer.send(new ProducerRecord<String, String>("test", i + "你好"));

            try {
                Thread.sleep(500);
                test.get();
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (ExecutionException e) {
                e.printStackTrace();
            }
        }

        producer.close();

    }
}

java消费者代码

package com.test;

import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.common.serialization.StringDeserializer;

import java.time.Duration;
import java.util.Arrays;
import java.util.Properties;

public class KafkaConsumerTestMain {
    public static void main(String[] args) {
        // 1.创建Kafka消费者配置
        Properties props = new Properties();
        props.setProperty("bootstrap.servers", "192.168.10.100:9092");
        // 消费者组(可以使用消费者组将若干个消费者组织到一起),共同消费Kafka中topic的数据
        // 每一个消费者需要指定一个消费者组,如果消费者的组名是一样的,表示这几个消费者是一个组中的
        props.setProperty("group.id", "aaa");
        // 自动提交offset
        props.setProperty("enable.auto.commit", "true");
        // 自动提交offset的时间间隔
        props.setProperty("auto.commit.interval.ms", "1000");
        // 拉取的key、value数据的
        props.setProperty("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
        props.setProperty("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");

        KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);

        consumer.subscribe(Arrays.asList("test"));

        while (true) {
            ConsumerRecords<String, String> poll = consumer.poll(Duration.ofSeconds(50));

            for (ConsumerRecord<String, String> record : poll) {
                String topic = record.topic();
                long offset = record.offset();
                String key = record.key();
                String value = record.value();
                System.out.println("topic: " + topic + " offset:" + offset + " key:" + key + " value:" + value);
            }

        }
    }
}

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>kafka-test</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <repositories><!-- 代码库 -->
        <repository>
            <id>central</id>
            <url>http://maven.aliyun.com/nexus/content/groups/public//</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
                <checksumPolicy>fail</checksumPolicy>
            </snapshots>
        </repository>
    </repositories>

    <dependencies>
        <!-- kafka客户端工具 -->
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-clients</artifactId>
            <version>2.4.1</version>
        </dependency>

        <!-- 工具类 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-io</artifactId>
            <version>1.3.2</version>
        </dependency>

        <!-- SLF桥接LOG4J日志 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.6</version>
        </dependency>

        <!-- SLOG4J日志 -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

添加日志记录log4j.properties

log4j.rootLogger=INFO,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%5p - %m%n
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: CentOS-7-x86_64-dvd-2009是CentOS 7的一个安装镜像文件,可以用于安装CentOS 7操作系统。安装CentOS 7可以通过光盘、U盘等方式进行。安装过程中需要注意选择合适的分区、安装软件包等设置,以确保系统能够正常运行。安装完成后,还需要进行一些基本的配置,如设置网络、安装驱动程序等,以满足实际需求。 ### 回答2: CentOS-7-x86_64-dvd-2009是一个免费的Linux操作系统,它基于Red Hat Enterprise Linux源代码,是一款优秀的服务器操作系统。在安装CentOS-7-x86_64-dvd-2009之前,需要进行以下几个步骤: 1. 下载CentOS-7-x86_64-dvd-2009镜像文件并进行安装介质的准备。 2. 进入计算机的BIOS设置,将计算机的启动顺序设定为先从光驱或USB启动,然后保存设置并重启计算机。 3. 在计算机启动后,会进入CentOS-7-x86_64-dvd-2009安装界面。在安装界面中,可以选择安装语言、时区等信息。 4. 进入安装程序,需要进行硬盘分区设置。如果没有特别需求,选择自动分区即可。 5. 分区完成后,选择安装的软件包,包括服务器、web服务器、数据库服务器等。根据实际需求选择相应的软件包即可。 6. 安装完成后,需要设置root密码以及创建其他用户。为了增强系统安全性,建议不使用默认的“root”账户。 7. 安装完成后,可以进行一些基础设置和优化。如安装驱动程序、调整系统启动项等。需要注意的是,在进行任何设置前最好备份系统数据,防止因设置不当导致的数据丢失。 总的来说,安装CentOS-7-x86_64-dvd-2009相对来说比较简,只需要按照安装程序的提示一步一步进行即可。针对一些特殊情况,可能需要进行一些自定义设置,这时需要谨慎操作,确保安装过程中不出现错误。同时,为了保证系统性能和安全性,推荐配置硬件时尽可能采用高质量和高性能的硬件设备,这样有利于提高系统的稳定性和安全性。 ### 回答3: CentOS是一种类UNIX操作系统,它基于Red Hat Enterprise Linux(RHEL)源代码的免费企业级操作系统。 CentOS 7是它的最新版本,它针对服务器和工作站提供了一个稳定且可靠的平台。 在开始CentOS 7安装之前,请确保您的系统符合以下要求: 1. 最小硬件配置要求 - 1GB RAM - 10GB硬盘空间 - DVD-ROM驱动器或USB存储设备(至少4GB) 2. 可引导的CentOS 7 DVD或USB存储设备 安装步骤: 1. 插入CentOS 7 DVD或USB存储设备,然后重启计算机。请确保您的计算机可以从DVD或USB启动。 2. 当计算机重新启动时,按照屏幕上的说明按下对应的按键以进入BIOS设置。 在“启动”选项卡中,将DVD或USB存储设备移动到第一个引导设备。 3. 保存设置并退出BIOS设置。该计算机现在将从CentOS 7 DVD或USB存储设备启动。 4. 当计算机从DVD或USB启动时,您将看到“CentOS 7”启动菜。选择第一个菜项以开始安装。 5. 在CentOS 7安装程序开始时,您将看到“Welcome to CentOS 7”屏幕。 在此屏幕上,您可以选择要安装的语言,然后击“Continue”。 6. 接下来,您将看到“Software Selection”屏幕。 在此屏幕上,您可以选择安装哪些软件包。 如果您希望使用桌面环境,则应选择“GNOME Desktop”软件包。 如果您希望构建服务器,则不需要安装桌面环境。 7. 接下来,您将看到“Installation Destination”屏幕。 在此屏幕上,您可以选择要在哪个磁盘上安装CentOS 7。 如果您有多个硬盘,则可以选择其中一个。 您还可以选择是否创建LVM分区来更好地管理磁盘空间。 8. 在“Network & Hostname”屏幕上,您需要选择是否配置网络和主机名。 如果您要使用网络,则应设置主机名和网络设置。 否则,您可以跳过此屏幕。 9. 在“User Settings”屏幕上,您需要设置管理员和用户帐户。 设置管理员帐户需要设置用户名和密码。 10. 在“Begin Installation”屏幕上,您需要击“Install”按钮以开始安装安装过程可能需要几分钟时间。 11. 安装完成后,您将由CentOS 7启动菜问您是否要重新启动。 击“Reboot”以重新启动计算机。 12. 完成重启后,您将看到CentOS 7登录屏幕。 输入您所创建的管理员用户名和密码即可登录系统。 总结: CentOS 7的安装过程相对简,只要按照屏幕上的指示操作即可。在安装之前,请确保您的系统符合最小硬件要求。一旦安装完成,您就可以享受CentOS 7稳定、可靠的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值