* Kafka框架基础

官网:kafka.apache.org

框架简介

Apache Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。

相关概念

** 生产者

提供数据源生产的地方,对于同一个topic,生产者只能有一个,这样可以确保同一个topic数据来自同一个业务数据,支持多并发

** 消费者

消费数据的客户端,对于同一个topic,可以有多个消费者,比如spark,storm等等

** Broker

消息中间件处理结点,一个Kafka节点就是一个broker,多个broker可以组成一个Kafka集群。

** Topic

同一类消息的统称,Kafka集群能够同时负载多个topic分发。

** Partition

topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列,同一个topic里面的数据是存放在不同的分区中。

** Replication

每个分区或者topic都是有副本的,副本的数量也是可以在创建topic的时候就指定好,保证数据的安全性,以及提供高并发读取效率。

** Segment

partition物理上由多个segment组成

** Offset

每个partition都由一系列有序的、不可变的消息组成,这些消息被连续的追加到partition中。partition中的每个消息都有一个连续的序列号叫做offset,用于partition唯一标识一条消息

框架特色

** 同时为发布和订阅提供高吞吐量。Kafka每秒可以生产约25万消息(约50 MB),每秒处理55万消息(约110 MB)。

** 可进行持久化操作。将消息持久化到磁盘,因此可用于批量消费,例如ETL,以及实时应用程序。通过将数据持久化到硬盘以及replication防止数据丢失。

** 分布式系统,易于向外扩展。所有的producer、broker和consumer都会有多个,均为分布式的。无需停机即可扩展机器。

** 消息被处理的状态是在consumer端维护,而不是由server端维护。当失败时能自动平衡。

架构图

 
 

* 框架部署

** 相关下载

kafka以及scala:链接:http://pan.baidu.com/s/1pLBFJf1 密码:seto

** 解压Kafka以及scala

$ tar -zxf kafka_2.10-0.8.2.1.tgz -C /opt/modules/cdh/

$ tar -zxf scala-2.10.4.tgz -C /opt/modules/cdh/

** 安装JDK并配置环境变量

不再赘述

** 安装并启动zookeeper

在zookeeper的根目录下:

$ bin/zkServer.sh start

** 配置scala环境变量

# vi /etc/profile

$ source /etc/profile

(注意以上两条语句的执行用户)

添加如下:

##SCALA_HOME

SCALA_HOME=/opt/modules/cdh/scala-2.10.4

export PATH=$PATH:$SCALA_HOME/bin

使用命令检查scala配置是否正确:

$ scala -version,如图:

 
 

** 修改Kafka配置文件

server.properties

修改为如下:

 
 

producer.properties

变动内容如下:

 
 

consumer.properties

变动内容如下:

 
 

** 启动Kafka

$ bin/kafka-server-start.sh config/server.properties

** 创建Topic

$ bin/kafka-topics.sh --create --zookeeper z01:2181 --replication-factor 1 --partitions 1 --topic testTopic

 
 

** 启动生产者

$ bin/kafka-console-producer.sh --broker-list z01:9092 --topic testTopic

 
 

** 启动消费者

$ bin/kafka-console-consumer.sh --zookeeper z01:2181 --topic testTopic --from-beginning

 
 

在生产者窗口输入数据,在消费者窗口查看数据,测试如图:

消费者:

 
 

生产者:

 
 

* 整合测试

使用flume+kafka整合测试

** 配置flume

原来我们配置flume,是在tomcat所在机器节点开启了一个flume收集日志,并直接上传到HDFS,如果集群中存在多个机器节点,则势必导致对HDFS集群占用率过高,所以在面临多个flume集群时,一般会采用1~2个单独的flume节点来收集另外flume节点的日志,相当于弄了一个中转站,由中转站收集其他flume,再统一放置到HDFS系统中,此刻我们采用方案2,原理如图:

 
 

背景:在一台机器上开两个flume,分别收集tomcat日志和hive日志,这两者的日志信息分别输入到中间层flume(这个中间层flume也模拟在同一个机器节点上),然后中间层flume在将数据写入到HDFS。

首先检查一下hive的conf目录下的hive-log4j.properties配置中,是否已经指定了hive的日志目录,如果没有,请指定,如图:

 
 

涉及flume文件:以下文件存在于flume的conf目录下,如果不存在,请自行创建即可。

flume-apache-log-kafka.conf

 
 

flume-hive-log-kafka.conf

 
 

flume-connector-kafka.conf

 
 

依次启动:

a4:

$ bin/flume-ng agent --conf conf/ --name a4 --conf-file conf/flume-connector-kafka.conf

a3:

$ bin/flume-ng agent --conf conf/ --name a3 --conf-file conf/flume-hive-log-kafka.conf

a2:

$ bin/flume-ng agent --conf conf/ --name a2 --conf-file conf/flume-apache-log-kafka.conf

测试后如图,即可发现,日志在HDFS和kafka中都已经显示出来:

 
 

个人微博:http://weibo.com/seal13

QQ大数据技术交流群(广告勿入):476966007


作者:Z尽际
链接:https://www.jianshu.com/p/a24af7a86392
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Kafka框架基础的更多相关文章

  1. Apache Kafka框架学习

    背景介绍 消息队列的比较 kafka框架介绍 术语解释 文件存储 可靠性保证 高吞吐量实现 负载均衡 应用场景 背景介绍: kafka是由Apache软件基金会维护的一个开源流处理平台,由scala和 ...

  2. 实践部署与使用apache kafka框架技术博文资料汇总

    前一篇Kafka框架设计来自英文原文(Kafka Architecture Design)的翻译及整理文章,非常有借鉴性,本文是从一个企业使用Kafka框架的角度来记录及整理的Kafka框架的技术资料 ...

  3. Flume框架基础

    * Flume框架基础 框架简介: ** Flume提供一个分布式的,可靠的,对大数据量的日志进行高效收集.聚集.移动的服务,Flume只能在Unix环境下运行. ** Flume基于流式架构,容错性 ...

  4. Hibernatel框架基础使用

    Hibernatel框架基础使用 1.简介 1.1.Hibernate框架由来 Struts:基于MVC模式的应用层框架技术 Hibernate:基于持久层的框架(数据访问层使用)! Spring:创 ...

  5. Struts2框架基础

    Struts2框架基础 1.Java的框架 1.1.框架简介 在大型项目开发过程中,经常会使用到一些框架,这样做好的好处是能够提高工作效率,在java中最常用的的框架就是SSH,这其实是三个框架的简称 ...

  6. .NET面试题系列[1] - .NET框架基础知识(1)

    很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...

  7. 框架基础之Hibernate简介

    框架基础之Hibernate简介 1.什么是Hibernate? Hibernate是一个开发源代码的对象关系映射框架,它对JDBC进行非常轻量级的对象封装,使得程序员可以随心所欲地使用对象编程思维来 ...

  8. ThinkPHP框架基础

    ThinkPHP 一.php框架基础介绍 真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维 ...

  9. Python云端系统开发入门——框架基础

    Django框架基础 这是我学习北京理工大学嵩天老师的<Python云端系统开发入门>课程的笔记,在此我特别感谢老师的精彩讲解和对我的引导. 1.Django简介与安装 Django是一个 ...

随机推荐

  1. 在fragment中显示对话框出现异常

    异常类型为:android.view.WindowManager$BadTokenException: Unable to add window 我在fragment中public View onCr ...

  2. ios+openflow 问题

    环境:xcode5.1+ios7.1 需求:A试图 的scroll加入 B视图:[A addSubview:B.view] 问题: 1.B视图载入到A视图上了,但Openflow的图片未载入.后经调试 ...

  3. Git-删除本地文件夹的repository(本地仓库)

    安装git软件后.有些文件夹里会出现带有?的图标,右键菜单上会有"Git-Sync"或者"Git-Commit"等命令:正常的应该是"Git-Clon ...

  4. LA 6437 Power Plant (prim最小生成树)

    还是裸的最小生成树 #include<bits/stdc++.h> using namespace std; int T,N,M,P,K,a,b,c; int dist[1020],m[1 ...

  5. [JZOJ NOIP2018模拟10.21]

    考试之前我刚刚领略到了特判的重要性,没想到T2的两个子任务还是写挂了,丢了20分 考试的感觉不行,一路打的都是暴力,正解的思路想到一半就断了推不下去 T1:逛公园 题目链接: https://jzoj ...

  6. eclipse启动错误:An internal error occurred during: "reload maven project".

    解决方案一: 简单粗暴!直接删除E:\eclipseWorkspace\.metadata目录!然后再单个导入eclipseWorkspace中的项目. 解决方案二: 打开这个配置文件:E:\ecli ...

  7. IOS设备获取崩溃日志的办法

    除了用xcode 的devices功能获取之外,在windows下面也是可以获取的.首先安装itools.下载地址: http://www.itools.cn/ 安装好后将设备(iphone或ipad ...

  8. logging.config模块---使用配置文件管理logger

    logging配置文件 一.使用到的模块: logging.config 官方文档: https://docs.python.org/3/library/logging.config.html 非官方 ...

  9. 影像服务——加载CESIUM自带的影像服务

    1.加载arcgis数据——ArcGisMapServerImageryProvider var viewer = new Cesium.Viewer("cesiumDiv",{ ...

  10. sed 替换 引用变量值,记录一个自己学习错误的地方。

    先上脚本,脚本的目的是虚拟机克隆-连接克隆,然后修改ip这个搞定,修改hostname就很简单了 declare oldipdeclare -i Anamedeclare newipoldip=`ca ...