• CentOS6.5 安装Kafka集群


    1、安装zookeeper

    参考文档:http://www.cnblogs.com/hunttown/p/5452138.html

    2、下载:https://www.apache.org/dyn/closer.cgi?path=/kafka/0.9.0.1/kafka_2.10-0.9.0.1.tgz

    kafka_2.10-0.9.0.1.tgz       #2.10指的中Scala版本,0.9.0.1批的是Kafka版本。

    3、安装与配置

    解压:tar xzf kafka_2.10-0.9.0.1.tgz

    配置config/server.properties

    [root@Hadoop-NN-01 config]# vim server.properties
    
    broker.id=1         #唯一,填数字
    port=9092           #端口
    host.name=Hadoop-NN-01      #唯一,填服务器IP
    socket.send.buffer.bytes=1048576
    socket.receive.buffer.bytes=1048576
    socket.request.max.bytes=104857600
    log.dir=/home/hadoopuser/kafka-logs         #设置日志的硬盘路径
    num.partitions=1            #分区数 关于分区数:1天有1亿行可以分8个分区,如果每天几十万行就一个分区。
    num.io.threads=8            #为机器的核数
    zookeeper.connect=Zookeeper-01:2181,Zookeeper-02:2181,Zookeeper-03:2181    # zookeeper Servers列表,各节点以逗号分开。

    4、配置环境变量(如果单节点多个Broker请不要配置)

    [root@Hadoop-NN-01 ~]# vim /etc/profile
    export KAFKA_HOME=/home/hadoopuser/kafka_2.10-0.9.0.1
    export PATH=$PATH:$KAFKA_HOME/bin
    
    [root@Hadoop-NN-01 ~]# source /etc/profile    #使环境变量生效

    5、启动kafka

    [root@Hadoop-NN-01 kafka_2.10-0.9.0.1]$ bin/kafka-server-start.sh config/server.properties &

    6、验证

    jps查看一下kafka是否已经启动

    7、创建topic:

    [root@Hadoop-NN-01 kafka_2.10-0.9.0.1]$ bin/kafka-topics.sh --create --zookeeper Zookeeper-01:2181, Zookeeper-02:2181, Zookeeper-03:2181 --replication-factor 3 --partitions 1 --topic mykafka

    8、查看Topic:

    [root@Hadoop-NN-01 kafka_2.10-0.9.0.1]$ bin/kafka-topics.sh --list --zookeeper Zookeeper-01:2181, Zookeeper-02:2181, Zookeeper-03:2181
    
    Topic:mykafka

    查看详细信息:

    [root@Hadoop-NN-01 kafka_2.10-0.9.0.1]$ bin/kafka-topics.sh --describe --zookeeper Zookeeper-01:2181, Zookeeper-02:2181, Zookeeper-03:2181
    
    Topic: mykafka   PartitionCount:1 ReplicationFactor:3   Configs:
    Topic: mykafka   Partition: 0   Leader: 3      Replicas: 3,1,2     Isr: 3,1,2

    9、发送消息:

    [root@Hadoop-NN-01 kafka_2.10-0.9.0.1]$ bin/kafka-console-producer.sh --broker-list Hadoop-NN-01:9092 --topic mykafka

    10、接收消息:

    [root@Hadoop-NN-01 kafka_2.10-0.9.0.1]$ bin/kafka-console-consumer.sh --zookeeper Zookeeper-01:2181 --topic mykafka --from-beginning

    注:如果要最新的数据,不带--from-beginning参数即可。

     

    11、可能出现的错误

    ERROR:Failed to load class "org.slf4j.impl.StaticLoggerBinder"

    解决方法:

    下载slf4j-1.7.6.zip wget http://www.slf4j.org/dist/slf4j-1.7.6.zip

    把slf4j-nop-1.7.6.jar 包复制到kafka libs目录下面

     

    12、关于Kafka:

    在kafka的核心思路中,不需要在内存里缓存数据,因为操作系统的文件缓存已经足够完善和强大,只要不做随机写,顺序读写的性能是非常高效的。kafka的数据只会顺序append,数据的删除策略是累积到一定程度或者超过一定时间再删除。

    Kafka另一个独特的地方是将消费者信息保存在客户端而不是MQ服务器,这样服务器就不用记录消息的投递过程,每个客户端都自己知道自己下一次应该从什么地方什么位置读取消息,消息的投递过程也是采用客户端主动pull的模型,这样大大减轻了服务器的负担。

    Kafka还强调减少数据的序列化和拷贝开销,它会将一些消息组织成Message Set做批量存储和发送,并且客户端在pull数据的时候,尽量以zero-copy的方式传输,利用sendfile(对应java里的FileChannel.transferTo/transferFrom)这样的高级IO函数来减少拷贝开销。可见,kafka是一个精心设计,特定于某些应用的MQ系统,这种偏向特定领域的MQ系统我估计会越来越多,垂直化的产品策略值的考虑。

     

    附:推荐几个实时监控数据

    zookeeper -> zooinspector

    kafka-> kafkaoffsetmonitor

    storm-> storm ui

     

  • 相关阅读:
    说说事务的概念,在JDBC编程中处理事务的步骤
    java.util.Date和java.sql.Date有什么区别?
    什么是JDBC的最佳实践?
    数据库连接池的原理。为什么要使用连接池。
    说说事务的概念,在JDBC编程中处理事务的步骤。
    JDBC的ResultSet是什么?
    Android 可以输入的下拉框
    centos 命令行 连接无线网卡
    命令下启动网卡/开机启动
    开机启动 sh
  • 原文地址:https://www.cnblogs.com/hunttown/p/5500895.html
Copyright © 2020-2023  润新知