kafka安装

jdk安装

  1. 查看centos自带的openjdk安装包:
    rpm -qa | grep openjdk
java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64
java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64
  1. 卸载centos7的openjdk:
    yum -y remove java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64

  2. 下载jdk1.8
    http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

  3. 解压jdk安装包

    tar -xvf jdk-8u201-linux-x64.tar.gz 
    vi /etc/profile
    

    JAVA_HOME=/home/xxx/software/jdk1.8.0_201
    JRE_HOME=/home/xxx/software/jdk1.8.0_201/jre
    PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
    export JAVA_HOME JRE_HOME PATH CLASSPATH

  1. 是profile文件生效
    sourece /etc/profile

  2. 测试Java是否安装成功
    java -version

配置免密登录

  1. 进入到.ssh文件夹中,如果没有就自己创建该文件夹,生成公钥私钥
    ssh-keygen -t rsa 对于提示 一路回车

  2. 将生成的公钥 id_rsa.pub 追加到 authorized_keys文件中,
    cat id_rsa.pub >> authorized_keys
    这里需要注意修改authorized_keys文件的权限:
    chmod 600 authorized_keys

  3. 配置完成后本地测试一下,如果没有提示输入密码则配置成功
    ssh localhost

  4. 对于分布式环境,只需要把对应的公钥放到目标机器的authorized_keys里面即可免密登录

我们要注意,.ssh目录的权限为700,其下文件authorized_keys和私钥的权限为600。否则会因为权限问题导致无法免密码登录。我们可以看到登陆后会有known_hosts文件生成。

Zookeeper安装

  1. 下载zookeeper: https://mirrors.cnnic.cn/apache/zookeeper/

  2. 解压: tar xvf zookeeper-3.4.13.tar.gz

  3. 修改配置文件:

    1. dataDir=/opt/data/zookeeper/data
      存储快照文件的目录,默认情况下, 事务日志也会存储在该目
      dataDir录上。由于事务日志 的写性能直接影响 ZooKeeper 性能,因此 建议同时配置参数 dataLogDir
      dataLogDir=/opt/data/zookeeper/logs

    2. 集群配直。首先在 3 台机器的/etc/hosts 文件中加入 3 台机器 的 IP 与机器域名映射, 域名自定义, 这里分别命名为 server-I、 server-2、 server-3, 3 台机器 IP与机器域名映射关 系如下:

    10.211.55.4 server-1
    10.211.55.5 server-2
    10.211.55.6 server-3

    1. 进入其中一台机器的Zookeeper安装路径conf,添加

    server.1=server-1:2888:3888
    server.2=server-2:2888:3888
    server.3=server-3:2888:3888

    端口号2888表示该服务器与集群中leader交换信息的端口,默认为2888, 3888表示选举时服务器相互通信的端口。

    1. 接着在${dataDir}路径下创建一个myid文件,myid存放的值就是服务器的编号,即对应上面的1、2、3。ZooKeeper在启动时会读取 myid文件 中的值与 zoo.cfg文件中的配置信息进行比较, 以确定是哪台服务器。

    2. 将配置好的zoo.cfg拷贝到其他两台机器,并分别创建对应的myid,为了操作方便,我们可以将Zookeeper相关环境变量添加到/etc/profile文件中,如:
      export ZOOKEEPER_HOME=/home/xxx/software/zookeeper-3.4.13
      PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$ZOOKEEPER_HOME/bin

    3. 验证。 zkServer.sh start
      zkServer.sh status
      输出下面类似结果表示安装成功

       ```
       ZooKeeper JMX enabled by default
       Using config: /home/xxx/software/zookeeper-3.4.13/bin/../conf/zoo.cfg
      

Mode: follower
```

注意: centos7默认使用firewall作为防火墙,并默认开启, 在启动zk时需要关闭防护墙,不然无法通信,查看防火墙状态: firewall-cmd --state 停止防火墙: systemctl stop firewalld.service 禁止防火墙开机启动:systemctl disable firewalld.service

kafka安装

  1. 下载 http://kafka.apache.org/downloads
    当前 Kafka 最新版本为 kafka_2.12-2.1.0.tgz,其中 2.12 代表 Scala 版本, 2.1.0 表示 Kafka 的版本

  2. 解压安装 tar xvf kafka_2.12-2.1.0.tgz, 为了操作方便,这里我们对kafka的环境变量进行设置, 在/etc/profile 文件中加入kafka的安装路径,

export KAFKA_HOME=/home/xxx/software/kafka_2.12-2.1.0
PATH=\$PATH:\$JAVA_HOME/bin:\$JRE_HOME/bin:\$ZOOKEEPER_HOME/bin:\$KAFKA_HOME/bin
  1. 修改配置 。修改$KAFKA_HOME/config 目录下的 server.prope叫es文件,为了便于后 续集群环境搭建的配置, 需要保证同一个集群下 broker.id要唯一,因此这里手动配置 broker.id, 直接保持与ZooKeeper的myid值一致, 同时配置日志存储路径。server.properties修改的配置 如下 :
    broker.id=l #指定代理的 id
    log.dirs=/opt/data/kafka- logs #指定 Log 存储路径
    zookeeper . connect=server-1:2181 , server - 2:2181 , server-3:2181

在三台机器上分别修改配置文件server.properties, 并修改对应的broker.id.

  1. 启动。
    kafka-server-start.sh -daemon ../config/server.properties
    执行 jps命令查看 Java进程,此时进程信息至少包括以下几项:
    15976 Jps
    14999 QuorumPeerMain
    15906 Kafka

  2. 通过 ZooKeeper 客户端登录 ZooKeeper 查看目录结构,执行以下命令:
    zkCli.sh -server server 1:2181 #登录 ZooKeeper
    ls / #查看 ZooKeeper 目录结构
    ls /brokers/ ids 输出 [1, 2, 3]

    由/brokers/ids 节点存储的元数据可知, 3台机器的 Kafka 均已正常己启动。至此, Kafka 分布式环境搭建过程介绍完毕。

kafka实战

  1. 创建一个拥有3个副本的topic:

kafka-topics.sh --create --zookeeper 10.211.55.6:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic

kafka-topics.sh --list --zookeeper 10.211.55.5:2181
my-replicated-topic

现在我们搭建了一个集群,怎么知道每个节点的信息呢?运行“"describe topics”命令就可以了:

kafka-topics.sh --describe --zookeeper server-1:2181 --topic my-replicated-topic

Topic:my-replicated-topic       PartitionCount:1        ReplicationFactor:3     Configs:
        Topic: my-replicated-topic      Partition: 0    Leader: 2       Replicas: 2,3,1 Isr: 2,3,1

第一行是对所有分区的一个描述,然后每个分区都会对应一行,因为我们只有一个分区所以下面就只加了一行。
leader:负责处理消息的读和写,leader是从所有节点中随机选择的.
replicas:列出了所有的副本节点,不管节点是否在服务中.
isr:是正在服务中的节点.

在我们的例子中,节点2是作为leader运行。

修改topic过期时间
默认是7天 修改为3天
kafka-topics.sh --zookeeper server-1:2181 -topic xxxx --alter --config retention.ms=259200000

  1. 往topic发送消息:
    kafka-console-producer.sh --broker-list server-1:9092 --topic my-replicated-topic

  2. 消费这些消息:

kafka-console-consumer.sh --bootstrap-server server-1:9092 --from-beginning --topic my-replicated-topic

  1. 测试一下容错能力:

broker2作为leader运行,现在kill掉:
jps
22839 QuorumPeerMain
22334 Jps
1999 Kafka
[xxx@centos-linux-2 config]$ kill -9 1999

kafka-topics.sh --describe --zookeeper server-1:2181 --topic my-replicated-topic
Topic:my-replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:
Topic: my-replicated-topic Partition: 0 Leader: 3 Replicas: 2,3,1 Isr: 3,1

现在leader为3,

虽然最初负责续写消息的leader down掉了,但之前的消息还是可以消费的:

kafka-console-consumer.sh --bootstrap-server server-1:9092 --from-beginning --topic my-replicated-topic
hello
world
nihao
yes
hello

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容