模板建站配云服务器施工,ui设计好就业吗,濮阳免费网站制作,jsp获取网站域名这篇文章将介绍如何搭建kafka环境#xff0c;我们会从单机版开始#xff0c;然后逐渐往分布式扩展。单机版的搭建官网上就有#xff0c;比较容易实现#xff0c;这里我就简单介绍下即可#xff0c;而分布式的搭建官网却没有描述#xff0c;我们最终的目的还是用分布式来解…这篇文章将介绍如何搭建kafka环境我们会从单机版开始然后逐渐往分布式扩展。单机版的搭建官网上就有比较容易实现这里我就简单介绍下即可而分布式的搭建官网却没有描述我们最终的目的还是用分布式来解决问题所以这部分会是重点。 Kafka的中文文档并不多所以我们尽量详细点儿写。要交会你搭建分布式其实很简单手把手的教程大不了我录个视频就好了可我觉得那不是走这条 路的方 式。只有真正了解原理并且理解的透彻了才能最大限度的发挥一个框架的作用。所以如果你不了解什么事kafka请先看《kafka初步》 我们从搭建单机版的环境开始说起,如果你喜欢看英文版这里有官方的《quick start》 单机版的部署很简单我就讲几点比较重要的首先kafka是用scala编写的可以跑在JVM上所以我们并不需要单独去搭建scala的环境后面会涉及到编程的时候我们再说如何去配置scala的问题这里用不到当然你要知道这个是跑在linux上的。第二我用的是最新版0.7.2的版本你下载完kafka你可以打开它的目录浏览一下 我就不介绍每个包里的内容是干嘛的我就着重说一点你在这个文件夹里只能找到3个jar包并且这3个还不能用于后面的编程而且你也没法在里面找到pom这样用于构建的xml。也别急也别满世界找这些依赖库得等你把它放到linux上才会出现当然需要命令。 搭建单机版环境简单的说有那么几步 1. 安装java环境我用的是最新的版本jdk7的 2. 将下载下来的kafka扔到linux上并解压。我用的red het server的linux。 3. 接下来就是下载kafka的依赖包和构建kafka的环境。注意这一步需要电脑联网。具体命令就是官网介绍的./sbt update 和 ./sbt package。 4. 执行完上面这步大概会花个10多分钟吧我在自己家里ubuntu没有成功报了下载不到jline的错。单位里用虚拟机ubuntu成功了我深刻怀疑是网的问题。上面这不执行完了有两点要注意一是sbt帮你下载完了所有依赖库但是这些jar都是分散在各个目录下的注意区分。二是这些jar一部分是kafka的编程包一部分是scala的环境包上面说了没必要自己去搭scala的环境道理就在这边你自己去下一个2.9的scala但人家kafka只支持2.8、2.7。所以编程的时候就用sbt给你下好的包即可。后面讲到编程的时候会写怎么搭编程环境很简单的。 上面的步骤都执行完了环境算是好了下面我们要测试下是否能成功运行kafka 1. 启动zookeeper server bin/zookeeper-server-start.sh ../config/zookeeper.properties (用是为了能退出命令行) 2. 启动kafka server: bin/kafka-server-start.sh ../config/server.properties 3. Kafka为我们提供了一个console来做连通性测试下面我们先运行producerbin/kafka-console-producer.sh --zookeeper localhost:2181 --topic test 这是相当于开启了一个producer的命令行。命令行的参数我们一会儿再解释。 4. 接下来运行consumer新启一个terminalbin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning 5. 执行完consumer的命令后你可以在producer的terminal中输入信息马上在consumer的terminal中就会出现你输的信息。有点儿像一个通信客户端。 具体可看《quick start》 如果你能看到5执行了说明你单机版部署成功了。下面解释下两条命令中参数的意思。--zookeeper localhost:2181 这个说明了去连本机2181端口的zookeeper server--topic test在kafka里消息按topic来区分我们这里的topic叫test所以不管是consumer还是producer都指向了test。其他的参数我就截图了首先是producer的参数 Consumer的参数: 这些参数你可以先看个大概之后会在编程中使用到都可以动态的配置。 好了单机版就部署完了那是不是我把consumer的放到另一台机器上就算分布式了呢。是的前提是你还能运行到上面的第5步。在讲配置之前,我们还是将上篇写的分布式来回顾一下当然我们简化一下情况按照实际部署的分析 假设我只有两台机器server1和server2。我现在想把zookeeper server和kafka server 和producer都放在一台机器上server1把consumer放在server2上。这当然也叫分布式了虽然机子不多但是这个部署成功了扩展是相当的容易。 我们还是按照那5个步骤来做当然你肯定能知道3、4两步的参数要改了我们假设server1的IP是192.168.10.11 server2的IP是192.168.10.10 1. 启动zookeeper server bin/zookeeper-server-start.sh ../config/zookeeper.properties (用是为了能退出命令行) 2. 启动kafka server: bin/kafka-server-start.sh ../config/server.properties 3. Kafka为我们提供了一个console来做连通性测试下面我们先运行producerbin/kafka-console-producer.sh --zookeeper 192.168.10.11:2181 --topic test 这是相当于开启了一个producer的命令行。 4. 接下来运行consumer新启一个terminalbin/kafka-console-consumer.sh --zookeeper 192.168.10.11:2181 --topic test --from-beginning 5. 执行完consumer的命令后你可以在producer的terminal中输入信息马上在consumer的terminal中就会出现你输的信息。 这个时候你能执行出第5步的效果么是不是报了下面的错了 我来说原因在这之前想请你再回去看看《kafka初步》看看里面讲分布式的内容 这里的kafka server就是brokerbroker是存数据的producer把数据给brokerconsumer从broker取数据。那zookeeper是干嘛的说的肤浅点儿zookeeper就是他们之间的选择分发器所有的连接都要先注册到zookeeper上。你可以把它想象成NIOzookeeper就是selectorproducer、consumer和broker都要注册到selector上并且留下了相应的key。 所以问题就出在了kafka server的配置server.properties上。Kafka注册到zookeeper上的信息不对才导致了上面的错误。我们看config中server.properties的配置就可以知道 # Hostname the broker will advertise to consumers. If not set, kafka will use the value returned
# from InetAddress.getLocalHost(). If there are multiple interfaces getLocalHost
# may not be what you want.
#hostname 默认的hostname如果你不设置就是127.0.0.1所以你把这个hostname设置成192.168.10.11即可这样你重启下kafka server端就能执行第5步了。 成功配置的话你能看到下面的效果左边的是producer右边的是consumer看最下面两行好了前面的是我之前测试用过的 如果你还是云里雾里的建议你回头去看看上篇文章将kafka分布式基本原理的kafka实际操作是要建立在对原理熟悉的情况下的。 搭建完了环境后面就要开始写程序去处理实际问题了。当然再写程序之前下一篇我会先写一点 kafka为什么会有如此高的性能它是怎么保障这些性能的。