用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. Linux查看某进程的线程

    首先得知道你要查的进程的PID: 比如我要查看看我unimrcpserver的线程 第二种方法:top top命令可以实时显示各线程情况.就相当于windows的资源管理器.

  2. @ResponseStatus注解作用

    @ResponseStatus注解有两种用法,一种是加载自定义异常类上,一种是加在目标方法中 这里我们说一下加在目标方法上的这种情况,注解中有两个参数,value属性设置异常的状态码,reaseon是 ...

  3. 在HTML页面加载完毕后运行某个js

    js <script type="text/javascript"> window.onload=function(){ //执行} </script> j ...

  4. SQL优化之表连接方式

    1.嵌套循环(DESTED LOOPS) Note:嵌套循环被驱动表必须走索引,而且索引只能走INDEX UNIQUE SCAN或者INDEX RANGE SCAN SQL> select /* ...

  5. Redux 聊聊

    前言 Redux 是 JavaScript 状态容器,提供可预测化的状态管理. 首先明确一点的就是: Redux并不是React必须的,也没有任何依赖,你可以很自由的将他应用到各种前端框架.jQuer ...

  6. Git远程新建分支之后,本地看不到最新分支

    git remote update origin –prune 注意 双- csdn 对于 两个 - 看起来像一个

  7. 【leetcode】Exchange Seats

    Mary is a teacher in a middle school and she has a table seat storing students' names and their corr ...

  8. CF718C Sasha and Array 线段树 + 矩阵乘法

    有两个操作: 将 $[l,r]$所有数 + $x$ 求 $\sum_{i=l}^{r}fib(i)$ $n=m=10^5$   直接求不好求,改成矩阵乘法的形式:  $a_{i}=M^x\times ...

  9. Spring Boot教程(一)在springboot中用redis实现消息队列

    环境依赖 创建一个新的springboot工程,在其pom文件,加入spring-boot-starter-data-redis依赖: <dependency> <groupId&g ...

  10. 大数据笔记(二十四)——Scala面向对象编程实例

    ===================== Scala语言的面向对象编程 ======================== 一.面向对象的基本概念:把数据和操作数据的方法放到一起,作为一个整体(类 c ...