作者:高元_G·Marshal于 2017年07月13日 发布在分类 / 开发技术 / BigData 下,并于 2017年07月13日 编辑
    Kafka安装和测试

       554

       0


    比较完全的参考地址:http://www.cnblogs.com/zlslch/p/5966004.html

    1. 简介


    kafka (官网地址:http://kafka.apache.org)是一款分布式消息发布和订阅的系统,具有高性能和高吞吐率。



    i. 消息的发布(publish)称作producer,消息的订阅(subscribe)称作consumer,中间的存储阵列称作broker。

    ii. 多个broker协同合作,producer、consumer和broker三者之间通过zookeeper来协调请求和转发。

    iii. producer产生和推送(push)数据到broker,consumer从broker拉取(pull)数据并进行处理。

    iv. broker端不维护数据的消费状态,提升了性能。

    v. 直接使用磁盘进行存储,线性读写,速度快:避免了数据在JVM内存和系统内存之间的复制,减少耗性能的创建对象和垃圾回收。

    vi. Kafka使用scala编写,可以运行在JVM上。

    2. 安装:


    a. 首先安装JRE/JDK

    Linux安装JDK

    b. 下载kafka

    进入下载页面:http://kafka.apache.org/downloads.html

    选择Binary downloads下载 (Source download需要编译才能使用)

    也可以直接在linux终端下载:
    Shell代码
    1. wget -q http://apache.fayea.com/kafka/0.11.0.0/kafka_2.12-0.11.0.0.tgz


    c. 解压
    Shell代码
    1. tar -xzvf kafka_2.12-0.11.0.0.tgz
    2. mv kafka_2.12-0.11.0.0/  kafka
    3. cd kafka

    目录:


    /bin 启动和停止命令等。
    /config 配置文件
    /libs 类库

    d. 修改配置

    Kafka默认开启JVM压缩指针,但只是在64位的HotSpot VM受支持,如果安装了32位的HotSpot VM,需要修改/bin/kafka-run-class.sh文件


    Shell代码
    1. vi bin/kafka-run-class.sh


    找到如下行:
    Sh代码
    1. KAFKA_JVM_PERFORMANCE_OPTS="-server -XX:+UseCompressedOops -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:+DisableExplicitGC -Djava.awt.headless=true"

    去除-XX:+UseCompressedOops参数

    3. 启动和停止


    启动Zookeeper server:
    Shell代码
    1. bin/zookeeper-server-start.sh config/zookeeper.properties &

    &是为了能退出命令行

    启动Kafka server:
    Shell代码
    1. bin/kafka-server-start.sh config/server.properties &


    停止Kafka server
    Shell代码
    1. bin/kafka-server-stop.sh


    停止Zookeeper server:
    Shell代码
    1. bin/zookeeper-server-stop.sh


    4. 单机连通性测试


    运行producer:
    Shell代码
    1. bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

    早版本的Kafka,--broker-list localhost:9092需改为--zookeeper localhost:2181

    运行consumer:
    Shell代码
    1. bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning

    在producer端输入字符串并回车,查看consumer端是否显示。

    5. 分布式连通性测试

    Zookeeper Server, Kafka Server, Producer都放在服务器server1上,ip地址为192.168.1.10
    Consumer放在服务器server2上,ip地址为192.168.1.12。

    分别运行server1的producer和server2的consumer,
    Shell代码
    1. bin/kafka-console-producer.sh --broker-list 192.168.1.10:9092 --topic test


    Shell代码
    1. bin/kafka-console-consumer.sh --zookeeper 192.168.1.10:2181 --topic test --from-beginning


    在producer的console端输入字符串,consumer报Connection refused错误:


    broker, producer和consumer都注册到zookeeper上,producer和consumer的参数明确指定。问题出在broker的配置文件server.properties上:
    Properties代码
    1. # Hostname the broker will bind to. If not set, the server will bind to all interfaces
    2. #host.name=localhost

    host名称没有指定,就是127.0.0.1,consumer去broker拿数据就有问题。设置为192.168.1.10,重启服务就好了。
    访问权限

    创建人 高元_G·Marshal
    文档编辑权限 创建者私有
    文档阅读权限 来自分类
    分类阅读权限 所有人
    分类编辑权限 所有人
    分类审核权限
    标签

    kafka linux
    历史版本

    修改日期 修改人 备注
    2017-07-13 09:54:17[当前版本] 高元_G·Marshal 添加参考地址
    2017-07-13 08:17:06 高元_G·Marshal CREAT
    同类知识
    相关知识

    睿恒知识库-V3.2.0