Kafka在大数据环境中的应用

我们生活在一个数据爆炸的时代,数据的巨量增长给我们的业务处理带来了压力,同时巨量的数据也给我们带来了十分可观的财富。随着大数据将各个行业用户、运营商、服务商的数据整合进大数据环境,或用户取用大数据环境中海量的数据,业务平台间的消息处理将变得尤为复杂。如何高效地采集、使用数据,如何减轻各业务系统的压力,也变得越来越突出。在早期的系统实现时,业务比较简单。即便是数据量、业务量比较大,大数据环境也能做出处理。但是随着接入的系统增多,数据量、业务量增大,大数据环境、业务系统都可出现一定的瓶颈。下面我们看几个场景。

场景一:我们开发过一个设备信息挖掘平台。这个平台需要实时将采集互联网关采集到的路由节点的状态信息存入数据中心。通常一个网关一次需要上报几十甚至几百个变化的路由信息。全区有几万个这种互联网关。当信息采集平台将这些变化的数据信息写入或更新到数据库时候,会给数据库代理非常大的压力,甚至可以直接将数据库搞挂掉。这就对我们的数据采集系统提出了很高的要求。如何稳定高效地把消息更新到数据库这一要求摆了出来。

场景二:数据中心处理过的数据需要实时共享给几个不同的机构。我们常采用的方法是将数据批量存放在数据采集机,分支机构定时来采集;或是分支机构通过JDBC、RPC、http或其他机制实时从数据中心获取数据。这两种方式都存在一定的问题,前者在于实时性不足,还牵涉到数据完整性问题;后者在于,当数据量很大的时候,多个分支机构同时读取数据,会对数据中心的造成很大的压力,也造成很大的资源浪费。

为了解决以上场景提出的问题,我们需要这样一个消息系统:

缓冲能力,系统可以提供一个缓冲区,当有大量数据来临时,系统可以将数据可靠的缓冲起来,供后续模块处理;

订阅、分发能力,系统可以接收消息可靠的缓存下来,也可以将可靠缓存的数据发布给使用者。

这就要我们找一个高吞吐的、能满足订阅发布需求的系统。

Kafka是一个分布式的、高吞吐的、基于发布/订阅的消息系统。利用kafka技术可以在廉价PC Server上搭建起大规模的消息系统。Kafka具有消息持久化、高吞吐、分布式、实时、低耦合、多客户端支持、数据可靠等诸多特点,适合在线和离线的消息处理。

使用kafka解决我们上述提到的问题。

互联网关采集到变化的路由信息,通过kafka的producer将归集后的信息批量传入kafka。Kafka按照接收顺序对归集的信息进行缓存,并加入待消费队列。Kafka的consumer读取队列信息,并一定的处理策略,将获取的信息更新到数据库。完成数据到数据中心的存储。

数据中心的数据需要共享时,kafka的producer先从数据中心读取数据,然后传入kafka缓存并加入待消费队列。各分支结构作为数据消费者,启动消费动作,从kafka队列读取数据,并对获取的数据进行处理。

Kafka生产的代码如下:

public void produce(){

//生产消息预处理

produceInfoProcess();

pro.send(ProducerRecord,new Callback(){

@Override

onCompletion() {

if (metadata == null) {

// 发送失败

failedSend();

} else {

//发送成功!"

successedSend();

}

}

});

}

消息生产者根据需求,灵活定义produceInfoProcess()方法,对相关数据进行处理。并依据数据发布到kafka的情况,处理回调机制。在数据发送失败时,定义failedSend()方法;当数据发送成功时,定义successedSend()方法。

Kafka消费的代码如下:

public void consumer() {

//配置文件

properties();

//获取当前数据的迭代器

iterator = stream.iterator();

while (iterator.hasNext()) {

//取出消息

MessageAndMetadata<byte[], byte[]> next = iterator.next();

messageProcess();

}

}

Kafka消费者会和kafka集群建立一个连接。从kafka读取数据,调用messageProcess()方法,对获取的数据灵活处理。

结论

Kafka的高吞吐能力、缓存机制能有效的解决高峰流量冲击问题。实践表明,在未将kafka引入系统前,当互联网关发送的数据量较大时,往往会挂起关系数据库,数据常常丢失。在引入kafka后,更新程序能够结合能力自主处理消息,不会引起数据丢失,关系型数据库的压力波动不会发生过于显著的变化,不会出现数据库挂起锁死现象。

依靠kafka的订阅分发机制,实现了一次发布,各分支依据需求自主订阅的功能。避免了各分支机构直接向数据中心请求数据,或者数据中心依次批量向分支机构传输数据以致实时性不足的情况。kafka提高了实时性,减轻了数据中心的压力,提高了效率。

为了帮助大家让学习变得轻松、高效,给大家免费分享一大批资料,帮助大家在成为大数据工程师,乃至架构师的路上披荆斩棘。在这里给大家推荐一个大数据学习交流圈:658558542 欢迎大家进群交流讨论,学习交流,共同进步。

当真正开始学习的时候难免不知道从哪入手,导致效率低下影响继续学习的信心。

但最重要的是不知道哪些技术需要重点掌握,学习时频繁踩坑,最终浪费大量时间,所以有有效资源还是很有必要的。

最后祝福所有遇到瓶疾且不知道怎么办的大数据程序员们,祝福大家在往后的工作与面试中一切顺利。

原文地址:https://www.cnblogs.com/n23333/p/10239462.html

时间: 2024-11-12 16:19:32

Kafka在大数据环境中的应用的相关文章

现阶段大数据环境中会存在什么样的不安全因素?

之前分享过的大数据时代的到来,为我们提供了哪些便利之处?今天墨者安全为大家分享下,在现阶段的大数据环境中,会存在什么样的不安全因素?如今各行各业的领域针对安全都有不同的需求,从采集.整合.提炼.挖掘到发布,这一流程已经形成一套完整的产业链条.随着数据的进一步发展,对于产业链中的安全防护变得更加困难,随时都会有数据泄露的风险,所以在大数据的应用过程中,如何确保用户及自身信息资源不被泄露,这将在很长一段时间都是企业重点考虑的问题.1.大数据的基础设施不安全因素包括存储设备.运算设备.一体机和其他基础

windows下用Eclipse连接大数据环境得hbase

1.解压hbase安装包 2.将大数据环境得hadoop安装包拷贝到windows(这里以d:/hadoop为例) 3.打开C:\Windows\System32\drivers\etc目录下的hosts并添加如下代码 127.0.0.1 localhost192.168.48.134 master192.168.48.133 slaver 注:这里你配置了几台服务器就写几台,这里我只配置192.168.48.134 master和192.168.48.133 slaver两台 4.使用Ecli

XFS:大数据环境下Linux文件系统的未来?

XFS:大数据环境下Linux文件系统的未来? XFS开发者Dave Chinner近日声称,他认为更多的用户应当考虑XFS.XFS经常被认为是适合拥有海量数据的用户的文件系统,在空间分配方面的可扩展性要比ext4快“几个数量级”. “元数据验证”意味着,让元数据自我描述,保护文件系统,防范被存储层指错方向的写入.那么,为什么我们仍需要ext4? AD:WOT2015 互联网运维与开发者大会 热销抢票 [51CTO 2月7日外电头条]Linux有好多种件系统,但往往最受关注的是其中两种:ext4

Apache Kafka 在大型应用中的 20 项最佳实践

原标题:Kafka如何做到1秒处理1500万条消息? Apache Kafka 是一款流行的分布式数据流平台,它已经广泛地被诸如 New Relic(数据智能平台).Uber.Square(移动支付公司)等大型公司用来构建可扩展的.高吞吐量的.且高可靠的实时数据流系统. 例如,在 New Relic 的生产环境中,Kafka 群集每秒能够处理超过 1500 万条消息,而且其数据聚合率接近 1Tbps. 可见,Kafka 大幅简化了对于数据流的处理,因此它也获得了众多应用开发人员和数据管理专家的青

大数据环境下,我们被卖了一次又一次

大数据,人工智能是当下互联网最热门的话题. 抛开大数据的人工智能都是耍流氓,人工智能需要大数据作为基础支持. 大数据是1980年,著名未来学家阿尔文·托夫勒便在<第三次浪潮>一书中,将大数据热情地赞颂为"第三次浪潮的华彩乐章".大约从2009年开始,"大数据"成为互联网信息技术行业的流行词汇. 什么是大数据? 大数据,或称巨量数据.海量数据;是由数量巨大.结构复杂.类型众多数据构成的数据集合,是基于云计算的数据处理与应用模式,通过数据的集成共享,交叉复用

大数据环境下的隐形隐私问题探讨

在大数据环境下,信息敏感属性由原来具体的.明确的属性集,成为散落在海量数据中分散的.模糊的信息碎片. 隐形隐私数据的安全保护核心就是基于数据防泄漏技术能够应对更广泛的隐私信息泄露渠道 ,以及采取与隐私隐私数据保护相对应的隐私保护技术手段和管理手段. 下载高清完整PPT材料以及获取更多精彩请扫描长图右下角二维码,加入IT狂想者,提升自我价值,共赢财富与未来! 原文地址:https://blog.51cto.com/cnsecurity/2386952

k8s与docker与大数据环境的构建工作

大数据环境与docker 在使用CDH构建在k8s上的时候遇到了异常困难的问题,其检查机制会将解析主机的IP作为目标容器的IP,导致两者无法正常安装部署,只能放弃已经做好的容器镜像,之后在不断的寻找中终于到了可以达到预期目标的方法. 首先是找到了Spark的两个容器镜像: https://hub.docker.com/r/bde2020/spark-master https://hub.docker.com/r/gettyimages/spark 其中big-data-europe/docker

在Centos7下搭建大数据环境,即Zookeeper+Hadoop+HBase

1. 所需软件下载链接(建议直接复制链接到迅雷下载更快): ①hadoop-2.7.6.tar.gz: wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz ②zookeeper-3.4.12.tar.gz: wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/stable/zookeeper-3

大并发大数量中的MYSQL瓶颈与NOSQL介绍

NoSQL在2010年风生水起,大大小小的Web站点在追求高性能高可靠性方面,不由自主都选择了NoSQL技术作为优先考虑的方面.今年伊始,InfoQ中文站有幸邀请到凤凰网的孙立先生,为大家分享他之于NoSQL方面的经验和体会. 非 常荣幸能受邀在InfoQ开辟这样一个关于NoSQL的专栏,InfoQ是我非常尊重的一家技术媒体,同时我也希望借助InfoQ,在国内推动NoSQL 的发展,希望跟我一样有兴趣的朋友加入进来.这次的NoSQL专栏系列将先整体介绍NoSQL,然后介绍如何把NoSQL运用到自