安装
kafka
kafka
的安装只需要下载
、解压
、启动
即可
1 | wget http://mirror.its.dal.ca/apache/kafka/1.0.0/kafka_2.11-1.0.0.tgz |
kafka
需要依赖于zk
,zk
可以直接使用kafka
安装包里自带的zk
。
1 | bin/zookeeper-server-start.sh config/zookeeper.properties & |
但是在启动之前,我们可能需要先修改一下配置文件config/server.properties
一般需要修改的几个参数有
1 | kafka broker的id |
启动broker
1 | bin/kafka-server-start.sh config/server.properties & |
查看kafka是否启动了
1 | jps |
上面的QuorumPeerMain
就是zk
,Kafka
就是我们刚才启动的broker
我们还可以在启动两个新broker,但是需要先复制配置文件并修改里面的broker.id
、listeners
、log.dirs
值,使之不冲突
1 | bin/kafka-server-start.sh config/server-1.properties & |
然后我们可以测试一些简单的操作
创建名为test
的topic
,只有一个分区,一个副本
1 | bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --partitons 1 --topic test |
查看topic
1 | bin/kafka-topics.sh --list --zookeeper 127.0.0.1:2181 |
查看test的分区和副本状态
1 | bin/kafka-topics.sh --describe --zookeeper 127.0.0.1:2181 --topic test |
使用生产者推送消息
1 | bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test |
然后打开另一个窗口,使用消费者从开始获取消息
1 | bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning |
Maxwell
关于Maxwell
的相关资料可以直接查看官网
下载并解压maxwell
1 | wget https://github.com/zendesk/maxwell/releases/download/v1.13.2/maxwell-1.13.2.tar.gz |
在mysqlg中创建一个maxwell账户
1 | GRANT ALL on maxwell.* to 'maxwell'@'%' identified by 'XXXXXX'; |
拷贝一份配置文件的模板config.properties.example
1 | cp config.properties.example config.properties |
然后编辑配置文件,并将ddl操作
发送给单独的topic
1 | tl;dr config |
为maxwell
创建topic
1 | bin/kafka-topics.sh --zookeeper 127.0.0.1:2181 --create --topic maxwell --partitions 20 --replication-factor 1 |
使用配置文件启动maxwell
1 | bin/maxwell --config=config.properties & |
现在我们可以修改数据库的数据,然后在kafka目录下观察队列中的数据
1 | 在kafka中查看binlog的变化 |
clickhouse
官方文档直接提供了使用apt-get
安装的方法
但是官方并没有提供yum
的安装方法,我这里使用了第三方提供的仓库,
1 | 安装yum-config-manager程序 |
修改配置文件vim /etc/clickhouse-server/config.xml
1 | ... |
启动服务
1 | service clickhouse-server start |
进入clickhouse
1 | clickhouse-client -mn |
创建
1 | CREATE TABLE data_record.row_record ( |
使用Python从kafka导入数据到clickhouse
下面是一个简单的例子
1 | # -*- coding: utf-8 -*- |