大数据之实时流处理常用框架

        实时流处理简单概述:实时是说整个流处理相应时间较短,流式技算是说数据是源源不断的,没有尽头的。实时流处理一般是将业务系统产生的数据进行实时收集,交由流处理框架进行数据清洗,统计,入库,并可以通过可视化的方式对统计结果进行实时的展示。本文涉及到的框架或技术有 Flume,Logstash,kafka,Storm, SparkStreaming等。

     实时流处理的的流程与技术选型 :

       一、日志收集

       由于业务系统一般是游离与流处理集群如SparkStreaming、Storm之外的,所以我们需要对业务系统的数据进行实时收集。这就用到了日志收集框架,日志收集框架主要需要解决三个问题:数据从哪儿来,数据到哪儿去,实时收集。因为在流处理中为了防止突发或激增流量压垮流处理集群,通常将收集过后的数据输出到kafka分布式消息系统,然后流处理集群去消费kafka中的数据,下面介绍两种常用的日志收集框架以及他们如何对接kafka.

       1).Apache Flume 

       这是一个apache的顶级项目,所以他的域名为flume.apache.org, 下面是官网上的原理图,Flume框架把每个收集任务都定义为一个Agent(这是一个JAVA进程),他有三个基本组件Source、Channel、Sink。

      source:收集数据,可以对接各种常用数据源,如文件(exec source),kafka(kafka source),jms(java消息系统)等。 
      channel:source组件把数据收集来以后,临时存放在channel(管道)中,即channel组件在agent中是专门用来存放临时数据的,并起到数据缓冲的作用。常用的channel有memory chanel 、jdbc chanel 、file channel 等等。 

      sink:sink组件是用于从channel中取数据并送到目的地的组件,目的地包括hdfs、logger、avro、thrift、file、hbase等。

 

   其实flume的使用就是编写配置文件,下面是使用flume将Nginx的日志对接kafka的配置文件,我们将该收集任务命名为

exec-memory-kafka,只需如下编写:

#配置source、sink、channel

exec-memory-kafka.sources = exec-source  #指定source (数据从哪儿来),可以指定多个数据源,用逗号分隔。
exec-memory-kafka.sinks = kafka-sink #指定sink(数据到哪儿去)
exec-memory-kafka.channels = memory-channel #指定channel 

#source详细配置
exec-memory-kafka.sources.exec-source.type = exec  执行操作系统命令
exec-memory-kafka.sources.exec-source.command = sudo tail -F /var/log/nginx/access.log #监控Nginx日志文件
exec-memory-kafka.sources.exec-source.shell = /bin/sh -c  #shell命令的前缀

#channel 详细配置
exec-memory-kafka.channels.memory-channel.type = memory  #内存channel

#sink详细配置
exec-memory-kafka.sinks.kafka-sink.type = org.apache.flume.sink.kafka.KafkaSink #类型 为kafka sink
exec-memory-kafka.sinks.kafka-sink.brokerList = hadoop000:9092  #kafaka服务的地址,多个用逗号分隔
exec-memory-kafka.sinks.kafka-sink.topic = test1 #指定主题
exec-memory-kafka.sinks.kafka-sink.batchSize = 5  #指定每多少条收集一次,这里是每5条发送一次。
exec-memory-kafka.sinks.kafka-sink.requiredAcks = 1 #使kafka对是否收到数据进行确认,确保数据不会丢失

#为sink和source指定channel

exec-memory-kafka.sources.exec-source.channels = memory-channel

exec-memory-kafka.sinks.kafka-sink.channel = memory-channel

 

编写好配置文件后切换到flume的bin目录下执行:

flume-ng agent --conf 配置文件的目录--conf-file 配置文件的全路径--name exec-memory-kafka -Dflume.root.logger=INFO,console

即可开启收集任务(进程的方式)

2).ELK技术栈的Logstash 

         Logstash 是一个开源的数据收集引擎,它具有备实时数据传输能力。它可以统一过滤来自不同源的数据,并按照开发者的制定的规范输出到目的地。Logstash使用时也是编写配置文件,下面是如何使用配置文件的方式将Nginx日志输出到Kafka。

#定义数据源

input{

#这里是Nginx日志文件  

file{

 

  • 10
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大数据的应用与挑战 大数据是物联网、云计算、移动互联网之后的又一大技术变革,大数据蕴含着丰富的 信息,往往具有巨大的经济和社会价值,有助于为人们更深入地认识事物和做出判断, 已成为信息社会的宝贵财富。文章通过对大数据的研究和特点,分析了大数据的应用和 挑战。 标签:大数据;价值;应用;挑战 前言 近年来,随着博客、微博、云计算、网络等通信手段的应用与发展,以及视频监控、 智能终端迅速普及,加上遍布各处的传感器,引发数据的爆炸性增长模,用GB、TB或PB (1PB=1024TB),EB(1EB=1024PB)作数据量单位已不适合,需要用ZB(1ZB=1024EB) 、YB(1YB=1024ZB)等为计量单位。大数据和传统的数据管理方法给人们的生活带来了 巨大的挑战,但也有很多方便。 1 大数据的概念 1.1 概念 大数据是一个比较抽象的概念,从字面上看,它代表了一个巨大的数据量。大数据是 使用常用的软件工具来捕获、管理和处理数据,所耗时间超过一个可容忍时间的数据集 合。大数据把大量的数据,通过快速收集、筛选、整合、处理与分析,获得一个非常有 价值的结论,以支持预期和服务决策。 1.2 特征 与传统的数据相比,大数据具有独特的特征,也被称为"4V"特征。 1.2.1 大量化(Volume):在大数据时代,数据量以PB,EB,ZB等为存储单位,数据存储量大 ,计算量也很大。 1.2.2 多样化(Variable):数据类型的种类繁多,不仅包含数据表一类的结构化数据,也有 半结构化的数据如文本、网页、图像、视频等信息,各种数据之间交互十分频繁和普遍 。 1.2.3 快速化(Velocity):数据生成,存储和变化速度极快。 1.2.4 价值化(Value):数据正在成为一种新型的资产,是形成和提高竞争力的基础,通过分 析和大计算,它可以产生更多的价值。 1.3 区分数据库和大数据 数据库同大数据本质上是不同的。两者在数据来源、数据处理与数据思维等方面有根 本性区别:数据库比较小,处理对象的基本单位以MB为多,而大数据的基本单位是GB、 TB、PB等;数据库通常只有少数简单数据,大数据往往包含各种结构化、半结构化或非 结构化数据;大数据的模式会不断演变且在数据出现后才能确定,传统数据库只有确定 模式之后才会有数据。 2 大数据应用 美国把大数据作为事关国家战略和国家核心竞争力的问题,在2012年3月,奥巴马政 府推出了《大数据研究与发展倡议》,政府出资约2亿美元启动该方案。据美国咨询公司g anner预测,2015年在全球创建了440万个大数据工作岗位。 2.1 大数据来源 有三种:丰富的WEB数据库资源配置;物理信息系统,如智能电网,智能城市;科学 实验和观测数据,如生物数据,高能物理实验数据和空间观测数据等。 2.2 大数据处理处理程和处理模式 处理大数据是基于适当工具,根据一定的标准将对异构数据源提取和集成,再使用适 当的数据分析技术,分析存储数据和提取有用的知识,并把最终结果传递给最终端用户 。主要处理模式包括批处理处理两种类型,处理是直接处理,而批处理为先存储 再处理。 2.3 大数据在各行业中的应用 大数据的研究数据已被广泛应用于推荐系统、商业智能、决策支持等许多领域。 2.3.1 对大数据深度分析,挖掘消费偏好和用户行为,进而实现网络优化和精准营销。 2.3.2 进行大数据的分类、存储、挖掘及决策支持,维持单位和部门日常的管理,抽调竞争优 势和促进可持续发展。 2.3.3 利用大数据分析与挖掘,发现隐藏的威胁,促进信息安全部门找到应对新的安全威胁的 方法。 2.3.4 使用大数据来做出决策。在大数据时代,发挥计算机系统的数据分析和数据挖掘功能, 可在很多领域做出科学的决策。 3 大数据面临的挑战 大数据为人们的生活和工作带来便利,同时也面临着严峻的挑战。 3.1 数据预处理挑战 数据数量的增加未必意味着数据价值同样增加,因为往往会包含大量无用的数据。所 以,数据的预处理是数据分析前要完成的工作。数据清洗过程既要过滤掉无效的信息, 又不能滤掉有用的信息。 3.2 大数据时代的算法要做调整 大数据往往是实时的,需要调整算法来适应云计算的框架要求。 3.3 数据安全问题 数据安全威胁在大数据时代随时可发生。大数据提供了一种新的网络支持资源,通过 网络,恐怖分子可以入侵到生活的各个方面作,对社会安全构成潜在威胁。目前,我国 对大数据的保护很有限,恶意使用数据的情况时有发生。 3.4 异质性问题 大数据时代,数据异构性要求数据集成中进行数据转换,这是一个难以管理而又复杂 的程。 3.5 大数据的存储和处理能力的挑战 大数据的数据量增长迅猛,存储技术面临新的挑战。 3.6 大数据人才挑战 大数据的质量将严重影响系统,并影响最

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值