Kafka快速上手教程 2
来源:互联网 发布:mysql front 注释乱码 编辑:程序博客网 时间:2024/06/06 04:48
使用 Java 操作 Kafka
1.1 实验内容
前面一个课程讲解了 Kafka 的一些入门知识,本节课将介绍如何使用 Java 语言进行 Kafka 生产者和消费者代码的编写,毕竟大家使用 Kafka 集群是想发送消息到 Kafka ,然后从 Kafka 取出消息。学习完本课程,你将对 kafka 有深入的了解,很快上手。
1.2 课程来源
参考资料:http://blog.sina.com.cn/s/blog_67196ddc0102w80o.html
1.3. 实验知识点
- 生产者
- 消费者
- java代码编写
1.4 实验环境
- hadoop 2.6.1
- kafka_2.10-0.8.1.1
- Xfce 终端
1.5 适合人群
本课程属于中等难度级别,适合对大数据开发有兴趣,需要进行大量日志传输,并且有 Kafka 基础的人群。
二、实验步骤
2.1 准备工作
我们已经在实验楼环境里下载并配置启动 hadoop-2.6.1 所需的文件,免除您配置文件的麻烦,您可以在 /opt
找到,只需格式化并启动 hadoop 进程即可。
双击打开桌面上的 Xfce 终端,用 sudo
命令切换到 hadoop 用户,hadoop 用户密码为 hadoop,用 cd
命令进入 /opt
目录。
$ su hadoop$ cd /opt/
在 /opt
目录下格式化 hadoop。
$ hadoop-2.6.1/bin/hdfs namenode -format
在 /opt
目录下启动 hadoop 进程。
$ hadoop-2.6.1/sbin/start-all.sh
用 jps
查看 hadoop 进程是否启动。
在 /opt/ 目录下,用 wget
命令下载 slf4j-1.7.22.zip
并解压。
$ sudo wget http://labfile.oss.aliyuncs.com/courses/785/slf4j-1.7.22.zip$ sudo unzip slf4j-1.7.22.zip
复制 slf4j-nop-1.7.22.jar
到Kafka 解压包的 lib
目录下。
$ sudo cp slf4j-1.7.22/slf4j-nop-1.7.22.jar kafka_2.10-0.8.1.1/libs
双击打开 eclipse -> file -> New -> Java Project
输入 Project name -> 选择 javaSe-1.7-> Finish
右键 src -> New -> Package
输入包名 -> Finish
添加 kafka jar
点击 Libraries->Add External JARs...->选中已经下载的 kafka libs目录下的jar->确定
点击 OK
2.2 编写 Produce
右键 sys.kafka -> New -> Class
输入类名 -> 确认
ProducerDemo.java
如下。
package syl.kafka;import java.util.Properties;import kafka.javaapi.producer.Producer;import kafka.producer.KeyedMessage;import kafka.producer.ProducerConfig;public class ProducerDemo { public static void main(String[] args) throws Exception { Properties props = new Properties(); //zk props.put("zk.connect", "localhost:2181"); //kafka broker props.put("metadata.broker.list","localhost:9092"); //serialize props.put("serializer.class", "kafka.serializer.StringEncoder"); ProducerConfig config = new ProducerConfig(props); Producer<String, String> producer = new Producer<String, String>(config); // read socket for (int i = 1; i <= 100000; i++) { //Thread.sleep(50); producer.send(new KeyedMessage<String, String>("test", "message: " + i )); } }}
2.3 编写 Consumer
右键点击 syl.kafka -> New -> Class
输入类名 -> 确认
ConsumerDemo.java
如下。
package syl.kafka;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Properties;import kafka.consumer.Consumer;import kafka.consumer.ConsumerConfig;import kafka.consumer.ConsumerIterator;import kafka.consumer.KafkaStream;import kafka.javaapi.consumer.ConsumerConnector;import kafka.message.MessageAndMetadata;public class ConsumerDemo { private static final String topic = "test"; private static final Integer threads = 1; public static void main(String[] args) { Properties props = new Properties(); //zk props.put("zookeeper.connect", "localhost:2181"); //group props.put("group.id", "group1"); //offset props.put("auto.offset.reset", "smallest"); ConsumerConfig config = new ConsumerConfig(props); ConsumerConnector consumer = Consumer.createJavaConsumerConnector(config); Map<String, Integer> topicCountMap = new HashMap<String, Integer>(); topicCountMap.put(topic, 1); Map<String, List<KafkaStream<byte[], byte[]>>> consumerMap = consumer.createMessageStreams(topicCountMap); List<KafkaStream<byte[], byte[]>> streams = consumerMap.get(topic); for(final KafkaStream<byte[], byte[]> kafkaStream : streams){ new Thread(new Runnable() { @Override public void run() { for(MessageAndMetadata<byte[], byte[]> mm : kafkaStream){ String msg = new String(mm.message()); System.out.println(msg); } } }).start(); } }}
启动 ZooKeeper 服务器。
$ /bin/zookeeper-server-start.sh config/zookeeper.properties &
接下来,启动 kafka 服务器。
$bin/kafka-server-start.sh config/server.properties &
上节课我们创建了 test 主题,并且 ProducerDemo.java
里指定了主题 test,所以可以直接使用。
若没有 test 主题,可以使用以下方式创建(若存在主题,跳过此步)。
$ bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
2.4 测试
用一个 comsumer 从 test 主题中读取信息
$ bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic test
运行写好的 ProducerDemo.java
,同时观察消费者端的变化。
消费者 Xfce 终端不断消费消息。
停掉ProducerDemo.java
,先运行ConsumerDemo.java
。
等待接收信息。
查看 Eclipse 的 ConsumerDemo 的 Console 及消费者 Xfce 终端
再次运行 ProducerDemo.java
。
观察结果。
三、实验总结
本节课程介绍了如何使用 java 编写生产者消费者并实践操作,对深入学习 kafka 有很大帮助。
四、参考文献
- http://kafka.apache.org/documentation.html。
- Kafka快速上手教程 2
- Kafka快速上手教程 1
- Kafka快速上手教程 3
- Kafka快速上手教程 4
- Kafka快速上手教程 5
- Kafka快速上手
- Kafka快速上手
- kafka快速上手
- PGP快速上手教程
- Git教程 快速上手
- 信息技术快速上手教程
- webpack快速上手教程
- git快速上手教程
- Kafka基本概念介绍及快速上手资料
- Kafka快速上手(2017.9官方翻译)
- Spring MVC快速上手教程
- Spring MVC快速上手教程
- Spring MVC快速上手教程
- 京东笔试题3
- 附件打包 一键下载
- sql获取单月天数,当年天数
- numpy 使用技巧
- java匿名内部类
- Kafka快速上手教程 2
- java.lang.NoSuchMethodError: org.springframework.beans.factory.xml...setEnviro问题解决方法
- 线性表学习(3)
- Failed global initialization: BadValue Invalid or no user locale set. Please ensure LANG and/or LC_*
- JS、JQ判断变量是否为数组的方法(Array)
- 微信小程序开发模拟下拉菜单
- 安卓开发技术总结一
- JS与PHP通过RSA加密传输密码
- FreeSWITCH落地的配置总结