用kafka构建数据管道

 
把kafka看着是一个数据的端点,怎么把kafka数据移到mysql,elasticSearchs 这里面介绍kafka connect API怎么样帮忙我们把数据移到我们想要的位置。
 

构建数据管道时需要考虑的问题

 
1.及时性,kafka作为一个基于流的数据平台,提供了可靠的伸缩性,多集群高可用的方案。这一点可以保证及时性。如果因为网络延迟,那么数据也不会丢失。
2.可靠性,我们要避免单点故障,和根据自己的业务情况来设置生产者和消费者的一些必要的参数。如生产者的提交方法,不完全选举,等等
3.高吞吐量和动态吞吐量。kafka使用多线程来拆分任务,最大限度利用了cpu,还支持压缩数据传输数据。
 

数据格式

本身支持apache Avro 序列化数据,可以是json格式 自定义序列化方式。
或者转成Parquet 写入HDFS,或转成CSV写入S3

转换,

kafka在这方面只支持类型转换,这方面还是其他etl 解决方案支持比较好
 

安全性

kafka支持加密传输和认证授权,所以不用担心安全问题、
故障处理能力
 
kafka会把数据持久化在磁盘上,一般保存7天,所以不要担心数据丢失问题。
 

如何在connect API和客户端API之间做出选择

 
如果是消息生产的话那么选择客户端,来源数据一般来源用户,connect只能连接一个数据端点,但不可能是用户数据收集的入口。
如果用于传输数据,如mysql 到elasticsearch 这样选用connect API 是个不错的选择
 
 

运行connect

 
connect 不需要安装,本身和kafka一起安装了,所以我们只需要配置我们需要的参数即可,启动和kafka类似
bin/connect-distributed.sh config/connect-distibuted.properties
 
connect进程有几个重要的配置参数
 
bootstrap.servers 可以集群模式或者单点
group.id 具有相同group.id的worker属于同一个集群。
key.converter 和value.converter connect可以处理存储在kafka里的不用格式的数据。
有些key.converter.schema.enable 设置成true或者false来指定JSON消息是否包含schema
对应的key.converter.schema.registry.url 指定schema registry的位置 value同样。
 
 
启动之后如果需要使用mysql 那么下载jdbc和mysql 驱动包 即可使用。elasticsearch也是同样。
都是操作api。
 

深入理解connect

 
连接器插件实现了connector API 负责3件事情
1.决定需要运行多少个任务
2,按照任务来拆分数据复制
3.从worker进程获取任务配置并将其传递下去。
 

任务

负责将数据移入或移除kafka。
 
worker进程
负责处理http请求,还负责保存连接器的配置,启动连接器和连接器任务,并把配置消息传递给任务。如果一个worker崩溃了,集群其他worker进程会感知到,并将原本属于这个worker的任务分配给其他进程。
 

connect之外的选择

 
Hadoop的flume elasticsearch fluentd
 

kafka学习(六)的更多相关文章

  1. Kafka学习之(六)搭建kafka集群

    想要搭建kafka集群,必须具备zookeeper集群,关于zookeeper集群的搭建,在Kafka学习之(五)搭建kafka集群之Zookeeper集群搭建博客有说明.需要具备两台以上装有zook ...

  2. 大数据 -- kafka学习笔记:知识点整理(部分转载)

    一 为什么需要消息系统 1.解耦 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险.许多 ...

  3. kafka学习笔记:知识点整理

    一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险. ...

  4. Hbase深入学习(六) Java操作HBase

    Hbase深入学习(六) ―― Java操作HBase 本文讲述如何用hbase shell命令和hbase java api对hbase服务器进行操作. 先看以下读取一行记录hbase是如何进行工作 ...

  5. TweenMax动画库学习(六)

    目录            TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)            Tw ...

  6. Kafka学习-简介

      Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cloudera.Apache Storm.S ...

  7. Kafka学习-入门

    在上一篇kafka简介的基础之上,本篇主要介绍如何快速的运行kafka. 在进行如下配置前,首先要启动Zookeeper. 配置单机kafka 1.进入kafka解压目录 2.启动kafka bin\ ...

  8. Kafka学习之路

    一直在思考写一些什么东西作为2017年开篇博客.突然看到一篇<Kafka学习之路>的博文,觉得十分应景,于是决定搬来这“他山之石”.虽然对于Kafka博客我一向坚持原创,不过这篇来自Con ...

  9. kafka学习2:kafka集群安装与配置

    在前一篇:kafka学习1:kafka安装 中,我们安装了单机版的Kafka,而在实际应用中,不可能是单机版的应用,必定是以集群的方式出现.本篇介绍Kafka集群的安装过程: 一.准备工作 1.开通Z ...

随机推荐

  1. ubuntu 添加新用户并赋予root权限

    1 sudo adduser wolbo 2 sudo vim /etc/sudoers root ALL=(ALL) ALLwolbo ALL=(ALL) ALL wolbo ALL=(ALL) N ...

  2. C++与C#对于引用外部文件成员使用的区别

    对于C++控制台项目,如果有两个.cpp的文件都想引用同一个类的成员时,我们可以定义一个类,然后在类的头文件中添加extern来修饰. Box.cpp如下: #include "Box.h& ...

  3. 【洛谷P1220】关路灯

    题目有点难描述,内容请直接看原题.. 题解: 可以发现人在关路灯时无论走什么样的路径,从宏观上来看被关的灯总是构成一段包含初始点的连续区间.比如要关掉下标为 l (l < st)的灯,则一定要先 ...

  4. 微信小程序购物车功能

    <view class='shop-mana'> <text class='management'>管理您的购物车</text> <text class='g ...

  5. H5开发获取微信系统的地址列表

    前段时间做了H5开发的项目,需要是要把微信系统自带的地址也给添加进来,意识也就是说用户可以选择项目的地址和微信自带的地址  效果图是这样的: 对就是这个需求 下面给出H5 页面下的微信添加HTML 然 ...

  6. guava中Multimap、Multiset使用

    guava中的Multimap接口 Multimap和java.util.Map接口没有任何继承关系.同Map一样,也是放键值对,但是Multimap的值是一个集合.同样支持泛型,假如键值对的key的 ...

  7. strcat()与strcpy()用法

    1.strcpy (1)原型 extern char *strcpy(char *dest,char *src); (2)用法 #include <cstring> (3)功能 把src所 ...

  8. luogu P1352 没有上司的舞会 x

    P1352 没有上司的舞会 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员 ...

  9. 【python学习之五】自定义函数实现用 Python 发送电子邮件

    前言 之前论坛里有人发过关于发送邮件的帖子,设计器也有关于发送邮件的控件.我这里再次重复,希望能有帮到大家的地方. 信息准备 发送邮件前必须准备好一些基本信息,例如发件人邮箱地址.发件人邮箱密码.收件 ...

  10. sublime text3 - vue修改data,视图无更新

    ubuntu系统使用sublime text3做vue开发的时候遇到了一个问题,就是修改vue文件并保存后视图页面并不会随之修改,只有重新run dev时修改才会生效,原因没找到 猜想应该是subli ...