本篇博客主要讲解在虚拟机安装之后,从如下五个方面进行讲解kafka的安装过程。

(1)如何配置虚拟机网络

(2)如何安装JDK

(3)如何安装zookeeper

(4)如何安装kafka

(5)kafka功能测试

如何配置虚拟机网


kafka一般安装到linux操作系统,当然windows下面也可以运行,作为程序员,还是在linux下面开发测试为主,因此我们首先安装3台linux虚拟机。

  • 虚拟机软件:vmware workstation 14 pro
  • 操作系统: CentOS-7-x86_64-DVD-1804

我们首先使用虚拟机软件vmware workstation 14 pro安装CentOS系统,相关教程网上很多,在此不必演示,安装之后再克隆两台,之后进行相关配置。

三台服务器IP规划为:

  • 192.168.40.101
  • 192.168.40.102
  • 192.168.40.103

规划依据:和windows下面的VMnet8的IP: 192.168.40.1在同一个网段,下面是宿主机windows下面使用ipconfig查看的内容:

以太网适配器 VMware Network Adapter VMnet8:

连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::3d3c:50d2:c7d:e637%43
IPv4 地址 . . . . . . . . . . . . : 192.168.40.1
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . :

(1)网络配置,需要如下三步:

1 切换root
2 修改文件   vi /etc/sysconfig/network-scripts/ifcfg-ens33 
3 重启网络   service network restart

其中第二步最为复杂:在ifcfg-ens33文件原有基础上:

修改内容为:

BOOTPROTO=static
ONBOOT=yes

增加内容为(注意IPADDR对于其它两台服务器为:192.168.40.102、192.168.40.103):

IPADDR=192.168.40.101
NETMASK=255.255.255.0
GATEWAY=192.168.1.1

(2)主机名配置

a:编辑/etc/sysconfig/network文件,添加如下配置。注意其它两台服务器名称。可以配置为 kafka-102、kafka-103

NETWORKING=yes
HOSTNAME=kafka-101

b:完成主机名映射为IP地址的功能。编辑/etc/hosts文件,增加如下配置,其他两台服务器也做类似配置。
192.168.1.101   kafka-101
c:重启服务器生效。

如何安装JDK


1、查看原有系统的jdk

[root@kafka-101 ~]# java -version
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)

2、删除自带的openjdk(需切换至root用户)

rpm -qa| grep openjdk|xargs rpm -e --nodeps

3、新建jdk安装目录

mkdir /usr/local/java
cd /usr/local/java

4、下载jdk并上传至服务器/usr/local/java目录,并解压

tar -zxvf jdk-8u201-linux-x64.tar.gz

5、配置/etc/profile文件,添加如下内容

export JAVA_HOME=/usr/local/java/jdk1.8.0_201
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

6、使之生效

source /etc/profile

7、再次查看jdk信息,已经显示安装成功

[root@kafka-101 java]# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

8、注意问题:如果切换到普通用户,查看JDK版本不能正常执行命令,则新打开一个连接或者重启服务器再查看即可 。

如何安装zookeeper


kafka依赖zookeeper管理元信息,因此再安装kafka之前必须安装zookeeper。Zookeeper集群中只要有过半的节点是正常的情况下,那么整个集群对外就是可用的。正是基于这个特性,要将ZK集群的节点数量要为奇数(2n+1:如3、5、7个节点)较为合适。

1、端口规划

  • 服务器1:192.168.40.101 端口:2181、2881、3881

  • 服务器2:192.168.40.102 端口:2182、2882、3882
  • 服务器3:192.168.40.103 端口:2183、2883、3883

2、修改操作系统的hosts文件,添加与主机IP的映射,注意每个服务器都要添加下面完整的映射。

  • 192.168.40.101 kafka-101

  • 192.168.40.102 kafka-102
  • 192.168.40.103 kafka-103

3、将zookeeper的压缩包上传至各个服务器(/home/yefengyu/),解压各个服务器上的压缩包。

tar -zxvf zookeeper-3.4.13.tar.gz

4、进入zookeeper目录,创建两个文件夹

cd zookeeper-3.4.13/
mkdir data
mkdir logs

5、将conf下面的zoo_sample.cfg备份一份

cd conf
cp zoo_sample.cfg zoo.cfg

6、修改各个服务器上的zoo.cfg文件,内容如下

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/yefengyu/zookeeper-3.4.13/data
dataLogDir=/home/yefengyu/zookeeper-3.4.13/logs
clientPort=2181
server.1=kafka-101:2888:3888
server.2=kafka-102:2888:3888
server.3=kafka-103:2888:3888

7、在每个服务器的/home/yefengyu/zookeeper-3.4.13/data目录下面创建myid文件,里面只需要添加服务器序号

  • kafka-101 服务器中myid内容为:1

  • kafka-102 服务器中myid内容为:2
  • kafka-103 服务器中myid内容为:3

8、将zookeeper加入到系统环境变量

(1)vim /home/yefengyu/.bash_profile

(2)添加如下信息

#zookeeper env
export ZOOKEEPER_HOME=/home/yefengyu/zookeeper-3.4.13
export PATH=$ZOOKEEPER_HOME/bin:$PATH

(3)为了使得命令生效,需要执行:source /home/yefengyu/.bash_profile

9、启动zookeeper

zkServer.sh start
因为已经配置环境变量,所以可以在任何目录下面启动zookeeper。
[root@kafka-103 data]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/yefengyu/zookeeper-3.4.13/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

10、查看zookeeper是否启动

zkServer.sh status
可以看到结果如下:
[root@kafka-103 data]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/yefengyu/zookeeper-3.4.13/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
启动失败,可能是防火墙需要关闭,关闭防火墙之后再重新启动即可。
判断防火墙开启:systemctl is-enabled firewalld
查看防火墙状态:systemctl status firewalld
临时关闭防火墙:systemctl stop firewalld
永久关闭防火墙:systemctl disable firewalld
打开防火墙:systemctl enable firewalld
重启防火墙:systemctl restart firewalld

11、关闭zookeeper

zkServer.sh stop

12、日志设置

当前终端处于哪个目录,执行完zkServer.sh start命令, zookeeper.out就会写在哪个目录,可以修改日志输出到固定目录,方便问题定位。

修改 /home/yefengyu/zookeeper-3.4.13/bin/zkEnv.sh

if [ "x${ZOO_LOG_DIR}" = "x" ]
then
ZOO_LOG_DIR="."
fi

if [ "x${ZOO_LOG_DIR}" = "x" ]
then
ZOO_LOG_DIR="/home/yefengyu/zklogs/"
fi

如何安装kafka


1、在官网下载kafka安装包,上传至服务器 /home/yefengyu 目录下面
2、解压 tar -zxvf kafka_2.12-2.1.1.tgz
3、修改修改server.properties

(1)kafka连接zookeeper的地址,每个kafka的server.properties里面的这个配置都要一样

zookeeper.connect=192.168.40.101:2181,192.168.40.102:2181,192.168.40.103:2181

(2)kafka存放日志的目录

log.dirs=/home/yefengyu/kafka_2.12-2.1.1/kafka-logs

(3)kafka当前集群的唯一标识,每个机器的kafka服务都不一样

broker.id=1

(4)修改advertised.listeners,每个服务器上面的都不一样

advertised.listeners=PLAINTEXT://192.168.40.101:9092

4、启动kafka

cd /home/yefengyu/kafka_2.12-2.1.1/
./bin/kafka-server-start.sh config/server.properties &

5、查看是否启动成功 jps

[root@kafka-103 kafka_2.12-2.1.1]# jps
4567 Kafka
74476 QuorumPeerMain
9677 Jps

kafka功能测试


1、创建主题

./bin/kafka-topics.sh --create --zookeeper=192.168.40.101:2181,192.168.40.102:2181,192.168.40.103:2181 --replication-factor 3 --partitions 3 --topic ALARM

2、查看主题

./bin/kafka-topics.sh --list  --zookeeper=192.168.40.101:2181,192.168.40.102:2181,192.168.40.103:2181

3、发送消息

./bin/kafka-console-producer.sh --broker-list 192.168.40.101:9092,192.168.40.102:9092,192.168.40.103:9092 --topic ALARM

4、接收消息

./bin/kafka-console-consumer.sh --bootstrap-server 192.168.40.101:9092,192.168.40.102:9092,192.168.40.103:9092 --topic ALARM

5、关闭服务

./bin/kafka-server-stop.sh

kafka安装指导的更多相关文章

  1. Spark踩坑记——Spark Streaming+Kafka

    [TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...

  2. 消息队列 Kafka 的基本知识及 .NET Core 客户端

    前言 最新项目中要用到消息队列来做消息的传输,之所以选着 Kafka 是因为要配合其他 java 项目中,所以就对 Kafka 了解了一下,也算是做个笔记吧. 本篇不谈论 Kafka 和其他的一些消息 ...

  3. kafka学习笔记:知识点整理

    一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险. ...

  4. .net windows Kafka 安装与使用入门(入门笔记)

    完整解决方案请参考: Setting Up and Running Apache Kafka on Windows OS   在环境搭建过程中遇到两个问题,在这里先列出来,以方便查询: 1. \Jav ...

  5. kafka配置与使用实例

    kafka作为消息队列,在与netty.多线程配合使用时,可以达到高效的消息队列

  6. kafka源码分析之一server启动分析

    0. 关键概念 关键概念 Concepts Function Topic 用于划分Message的逻辑概念,一个Topic可以分布在多个Broker上. Partition 是Kafka中横向扩展和一 ...

  7. Kafka副本管理—— 为何去掉replica.lag.max.messages参数

    今天查看Kafka 0.10.0的官方文档,发现了这样一句话:Configuration parameter replica.lag.max.messages was removed. Partiti ...

  8. Kafka:主要参数详解(转)

    原文地址:http://kafka.apache.org/documentation.html ############################# System ############### ...

  9. kafka

    2016-11-13  20:48:43 简单说明什么是kafka? Apache kafka是消息中间件的一种,我发现很多人不知道消息中间件是什么,在开始学习之前,我这边就先简单的解释一下什么是消息 ...

随机推荐

  1. fiddler接口知识

    1. 访问接口时经常会出现乱码的情况,需要fiddler解码操作 2.域名过滤

  2. Linux查看软件安装路径,和文件的位置

    查看软件是否安装:rpm -qa|grep xx 列出软件安装包安装的文件:rpm -ql 直接使用rpm -qal |grep mysql 查看mysql所有安装包的文件存储位置 通过find去查找 ...

  3. HDU 6469 /// 二分

    题目大意: 分裂怪有1到n种等级, 第1级的分裂怪称为原子怪,它不会分裂,被击杀时会产生a[1]点经验: 而第k级的分裂怪死亡时则会分裂成a[k]个第k - 1级的分裂怪. 一个体力可以杀死一个怪物. ...

  4. 数据库并发及锁机制及Hibernate锁实现

    数据库事务的定义 数据库事务(Database Transaction),是指作为单个逻辑工作单元执行的一系列操作.一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性.一致性.隔离性和持久性) ...

  5. 关于C++中的非静态类成员函数指针

    昨天发现了一个问题,就是使用对类中的非静态成员函数使用std::bind时,不能像普通函数一样直接传递函数名,而是必须显式地调用&(取地址),于是引申出我们今天的问题:非静态类成员函数指针和普 ...

  6. services - Internet 网络服务列表

    DESCRIPTION(描述) services 是一个普通的 ASCII 码文件, 它在 internet 服务的友好原文名以及这些服务预先分配的端口和协议类型之间提供了映射. 每个联网程序必须查找 ...

  7. AD中快速按模块摆放器件

    AD中快速按模块摆放器件 在PCB布局的过程中,我们需要将元器件按照功能模块进行放置,如果一个一个去寻找则很麻烦,现在介绍一个快捷的方法: 1.首先在原理图中按照模块选中,然后快捷键 T+S跳转到PC ...

  8. 低门槛彻底理解JavaScript中的深拷贝和浅拷贝

    作者 | 吴胜斌 来源 | https://www.simbawu.com/article/search/9 在说深拷贝与浅拷贝前,我们先看两个简单的案例: //案例1var num1 = 1, nu ...

  9. PCA revisit

    都知道PCA可以做降维,那它为什么可以降维,究竟是怎么降维的呢? 1. 为什么我们要降维? 我们的样本数据好好的,为什么要去做降维,第一个要想清楚这个问题. 也许你是要训练一个分类器,觉得当前特征维度 ...

  10. WebDriverAgent安装

    这次安装WebDriverAgent的过程可谓坎坷呀,最后还是大牛远程解决问题,自己的确差太远,记录一下过程吧 尽量升级Xcode到最新版,保持iPhone的版本大于9.3 终端进入目标文件夹WebD ...