问题导读
1.Kafka有哪几种配制方法?
2.如何启动一个Consumer实例来消费消息?

Kafka集群配置比较简单,为了更好的让大家理解,在这里要分别介绍下面三种配置

  • 单节点:一个broker的集群
  • 单节点:多个broker的集群
  • 多节点:多broker集群

一、单节点单broker实例的配置

1. 首先启动zookeeper服务     Kafka本身提供了启动zookeeper的脚本(在kafka/bin/目录下)和zookeeper配置文件(在kafka/config/目录下),首先进入Kafka的主目录(可通过 whereis kafka命令查找到):
     [root@localhost kafka-0.8]# bin/zookeeper-server-start.sh config/zookeeper.properties
     zookeeper配置文件的一些重要属性:
     # Data directory where the zookeeper snapshot is stored.
     dataDir=/tmp/zookeeper
     # The port listening for client request
     clientPort=2181     默认情况下,zookeeper服务器会监听 2181端口,更详细的信息可去zookeeper官网查阅。

2. 启动Kafka broker     运行kafka提供的启动kafka服务脚本即可:
     [root@localhost kafka-0.8]# bin/kafka-server-start.sh config/server.properties
     broker配置文件中的重要属性:
     # broker的id. 每个broker的id必须是唯一的.
     Broker.id=0
     # 存放log的目录
     log.dir=/tmp/kafka8-logs
     # Zookeeper 连接串
     zookeeper.connect=localhost:2181
3. 创建一个仅有一个Partition的topic      [root@localhost kafka-0.8]# bin/kafka-create-topic.sh --zookeeper localhost:2181 --replica 1 --partition 1 --topic kafkatopic

4. 用Kafka提供的生产者客户端启动一个生产者进程来发送消息     [root@localhost kafka-0.8]# bin/kafka-console-producer.sh --broker-list localhost:9092 --topic kafkatopic
     其中有两个参数需要注意:

  • broker-list:定义了生产者要推送消息的broker地址,以<IP地址:端口>形式
  • topic:生产者发送给哪个topic

然后你就可以输入一些消息了,如下图:

5. 启动一个Consumer实例来消费消息     [root@localhost kafka-0.8]# bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic kafkatopic --from-beginning
      当你执行这个命令之后,你便可以看到控制台上打印出的生产者生产的消息:

和消费者相关的属性配置存放在Consumer.properties文件中,重要的属性有:
     # consumer的group id (A string that uniquely identifies a set of consumers
     # within the same consumer group) 
     groupid=test-consumer-group
     # zookeeper 连接串
     zookeeper.connect=localhost:2181

二、单节点运行多broker实例

1.启动zookeeper    和上面的一样

2.启动Kafka的broker   要想在一台机器上启动多个broker实例,只需要准备多个server.properties文件即可,比如我们要在一台机器上启动两个broker:
     首先我们要准备两个server.properties配置文件

  • server-1

    • brokerid=1
    • port=9092
    • log.dir=/temp/kafka8-logs/broker1
  • server-2
    • brokerid=2
    • port=9093
    • log.dir=/temp/kafka8-logs/broker2

然后我们再用这两个配置文件分别启动一个broker

[root@localhost kafka-0.8]# env JMX_PORT=9999 bin/kafka-server-start.sh config/server-1.properties
     [root@localhost kafka-0.8]# env JMX_PORT=10000 bin/kafka-server-start.sh config/server-2.properties

可以看到我们启动是为每个broker都指定了不同的JMX Port,JMX Port主要用来利用jconsole等工具进行监控和排错

3.创建一个topic     现在我们要创建一个含有两个Partition分区和2个备份的broker:
     [root@localhost kafka-0.8]# bin/kafka-create-topic.sh --zookeeper localhost:2181 --replica 2 --partition 2 --topic othertopic

4.启动Producer发送消息     如果我们要用一个Producer发送给多个broker,唯一需要改变的就是在broker-list属性中指定要连接的broker:
     [root@localhost kafka-0.8]# bin/kafka-console-producer.sh --broker-list localhost:9092,localhost:9093 --topic othertopic
     如果我们要让不同的Producer发送给不同的broker,我们也仅仅需要为每个Producer配置响应的broker-list属性即可。

5.启动一个消费者来消费消息     和之前的命令一样
     [root@localhost kafka-0.8]# bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic othertopic --from-beginning

三、集群模式(多节点多实例)     介绍了上面两种配置方法,再理解集群配置就简单了,比如我们要配置如下图所示集群:
      zookeeper配置文件(zookeeper.properties):不变
      broker的配置配置文件(server.properties):按照单节点多实例配置方法在一个节点上启动两个实例,不同的地方是zookeeper的连接串需要把所有节点的zookeeper都连接起来
        # Zookeeper 连接串
        zookeeper.connect=node1:2181,node2:2181

转自:http://www.aboutyun.com/thread-11114-1-1.html

Kafka详解二:如何配置Kafka集群的更多相关文章

  1. HUE配置文件hue.ini 的hdfs_clusters模块详解(图文详解)(分HA集群和非HA集群)

    不多说,直接上干货! 我的集群机器情况是 bigdatamaster(192.168.80.10).bigdataslave1(192.168.80.11)和bigdataslave2(192.168 ...

  2. HUE配置文件hue.ini 的hive和beeswax模块详解(图文详解)(分HA集群和非HA集群)

    不多说,直接上干货! 我的集群机器情况是 bigdatamaster(192.168.80.10).bigdataslave1(192.168.80.11)和bigdataslave2(192.168 ...

  3. HUE配置文件hue.ini 的yarn_clusters模块详解(图文详解)(分HA集群和非HA集群)

    不多说,直接上干货! 我的集群机器情况是 bigdatamaster(192.168.80.10).bigdataslave1(192.168.80.11)和bigdataslave2(192.168 ...

  4. HUE配置文件hue.ini 的hbase模块详解(图文详解)(分HA集群和非HA集群)

    不多说,直接上干货! 我的集群机器情况是 bigdatamaster(192.168.80.10).bigdataslave1(192.168.80.11)和bigdataslave2(192.168 ...

  5. HUE配置文件hue.ini 的zookeeper模块详解(图文详解)(分HA集群)

    不多说,直接上干货! 我的集群机器情况是 bigdatamaster(192.168.80.10).bigdataslave1(192.168.80.11)和bigdataslave2(192.168 ...

  6. HUE配置文件hue.ini 的Spark模块详解(图文详解)(分HA集群和HA集群)

    不多说,直接上干货! 我的集群机器情况是 bigdatamaster(192.168.80.10).bigdataslave1(192.168.80.11)和bigdataslave2(192.168 ...

  7. HUE配置文件hue.ini 的impala模块详解(图文详解)(分HA集群)

    不多说,直接上干货! 我的集群机器情况是 bigdatamaster(192.168.80.10).bigdataslave1(192.168.80.11)和bigdataslave2(192.168 ...

  8. HUE配置文件hue.ini 的liboozie和oozie模块详解(图文详解)(分HA集群)

    不多说,直接上干货! 我的集群机器情况是 bigdatamaster(192.168.80.10).bigdataslave1(192.168.80.11)和bigdataslave2(192.168 ...

  9. HUE配置文件hue.ini 的sqoop模块详解(图文详解)(分HA集群和非HA集群)

    不多说,直接上干货! 我的集群机器情况是 bigdatamaster(192.168.80.10).bigdataslave1(192.168.80.11)和bigdataslave2(192.168 ...

随机推荐

  1. 如何在MySQL客户端Navicat 上创建存储过程返回结果集

    下述引用自<MySQL 必知必会> MySQL命令行客户机的分隔符 如果你使用的是MySQL命令行实用程序,应该仔细阅读此说明.默认的MySQL语句分隔符为;(正如你已经在迄今为止所使用的 ...

  2. SQL Server 2008 收缩日志 清空删除大日志文件

    SQL2008 的收缩日志 由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消: (SQL2005) BackupLog DNName ...

  3. Vue中获取dom元素

    Vue.js虽然说是数据驱动页面的,但是有时候我们也要获取dom对象进行一些操作. vue的不同版本获取dom对象的方法不一样 Vue.js  1.0版本中,通过v-el绑定,然后通过this.els ...

  4. Springboot整合thymeleaf模板

    Thymeleaf是个XML/XHTML/HTML5模板引擎,可以用于Web与非Web应用. Thymeleaf的主要目标在于提供一种可被浏览器正确显示的.格式良好的模板创建方式,因此也可以用作静态建 ...

  5. 如何用Python输出一个斐波那契Fibonacci数列

    a,b = 0, 1 while b<100: print (b), a, b = b, a+b

  6. 前端框架之jQuery

    一 iQuery是什么 jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多 javascript高手加入其team jQuery是继prototype之后又一个优秀的Java ...

  7. 部署samba

    1.首先需要关闭防火墙 2,创建用户名 3.IP地址配置ping下能不能成功 4.yum install samba -y 进行软件包的安装 5,vim修改.etc/samba/smb.conf/的配 ...

  8. Java基础—多态

    1.什么是多态 多态是同一个行为具有多个不同表现形式或形态的能力. 多态性是对象多种表现形式的体现. 现实中,比如我们按下 F1 键这个动作: 如果当前在 Flash 界面下弹出的就是 AS 3 的帮 ...

  9. boost之内存池

    讲到内存池我们会想到对对象进行动态分配的过程new包含三个过程 1.使用operator new分配内存 2.使用placement new 初始化 3.返回内存地址. 分配内存可以分解成分配内存和获 ...

  10. seaborn(matplotlib)画图,linux系统中文乱码等问题解决

    data = pd.read_json(json.dumps(issue_dpl)) # set pic size plt.figure(figsize=(13, 5)) sns.set_style( ...