大数据流处理:Flume、Kafka和NiFi对比
2019-07-05 12:16:26在构建大数据流水线时,我们需要考虑处理数据的数量,种类和速度,这些数据通常出现在Hadoop生态系统的入口。
在构建大数据流水线时,我们需要考虑处理数据的数量,种类和速度,这些数据通常出现在Hadoop生态系统的入口。在决定采用哪种工具来满足我们的要求时,都会考虑到可扩展性、可靠性、适应性、开发时间方面的成本等初步因素。在本文中,我们将简要介绍三种Apache处理工具:Flume,Kafka和NiFi。这三种产品都具有出色的性能,可以横向扩展,并提供插件机制,可通过自定义组件扩展功能。
Apache Flume
Flume部署由一个或多个使用拓扑配置的代理组成。Flume代理是一个JVM进程,它承载Flume拓扑的基本构建块,即源、通道和接收器。Flume客户机将事件发送到源,该源将这些事件成批放置到名为channel的临时缓冲区中,然后从该缓冲区中数据流到连接到数据最终目的地的接收器。接收器也可以是其他Flume代理的后续数据源。代理可以被链接,并且每个代理都有多个源、通道和接收器。
Flume是一个分布式系统,可用于收集、聚合流事件并将其传输到Hadoop中。它有许多内置的源、通道和接收器,例如Kafka通道和Avro接收器。Flume是基于配置的,它有拦截器来对通道中的数据执行简单的转换。
如果不小心,使用Flume很容易丢失数据。例如,为高吞吐量选择内存通道有一个缺点,即当代理节点关闭时,数据将丢失。文件通道将以增加延迟为代价提供持久性。即使如此,由于数据没有复制到其他节点,因此文件通道仅与底层磁盘一样的可靠性。Flume通过多跳/扇入扇出流提供了可伸缩性。对于高可用性(HA),可以水平扩展代理。
Apache Kafka
Kafka是一种分布式、高吞吐量的消息总线,它将数据生产者与消费者分离开来。消息被组织成主题,主题被拆分成分区,分区被跨集群中的节点(称为代理)复制。与Flume相比,Kafka具有更好的可扩展性和消息持久性。Kafka现在有两种风格:一种是“经典”的生产者/消费者模型,另一种是新的Kafka-Connect,它为外部数据存储提供可配置的连接器(源/接收器)。
Kafka可用于大型软件系统组件之间的事件处理和集成。此外,Kafka附带了Kafka流,它可以用于简单的流处理,而不需要像Apache Spark或Apache Flink那样的单独集群。
由于消息被持久化在磁盘上,并且在集群中被复制,因此数据丢失情况不像Flume那样常见。也就是说,无论是使用Kafka客户端还是通过Connect API,生产者/来源和消费者/接收器通常都需要自定义编码。与Flume一样,消息大小也有限制。最后,为了能够进行通信,Kafka的生产者和消费者必须就协议、格式和架构达成一致,这在某些情况下可能会有问题。
Apache NiFi
与Flume和Kafka不同,NiFi可以处理任意大小的消息。在基于Web的拖放式用户界面后面,NiFi在集群中运行,并提供实时控制,使您可以轻松管理任何源和任何目标之间的数据移动。它支持不同格式、模式、协议、速度和大小的分散和分布式源。
NiFi可以用于具有严格安全性和合规性要求的关键任务数据流中,在那里我们可以可视化整个过程并实时进行更改。在撰写本文时,它有近200个随时可用的处理器(包括Flume和Kafka处理器),可以进行拖放、配置和立即投入使用。NiFi的一些关键特性是优先级排队、数据跟踪和每个连接的背压阈值配置。
尽管NiFi用于创建容错生产管道,但它还没有像Kafka那样复制数据。如果一个节点发生故障,那么可以将流定向到另一个节点,但是排队等待故障节点的数据必须等待该节点恢复。NiFi不是一个成熟的ETL工具,也不是复杂计算和事件处理(CEP)的理想选择。为此,它应该连接到Apache Flink,Spark Streaming或Storm等流式传输框架。

组合
没有哪个工具满足您的所有要求。组合以更好方式执行不同操作的工具可以实现功能的增强,并提高处理更多场景的灵活性。根据您的需求,NiFi和Flume都可以充当Kafka生产者或消费者。
Flume-Kafka集成非常受欢迎,它有自己的名字:Flafka(我不是这样做的)。Flafka包括Kafka源,Kafka通道和Kafka池。结合Flume和Kafka,Kafka可以避免自定义编码并利用Flume经过实战考验的资源和接收器,通过Kafka通道的Flume事件将在Kafka代理中进行存储和复制,以实现弹性。
组合工具可能看起来很浪费,因为它似乎在功能比较重叠。例如,NiFi和Kafka都提供了代理来连接生产者和消费者。但是,它们的做法不同:在NiFi中,大部分数据流逻辑不在生产者/消费者内部,而是在代理中,允许集中控制。NiFi的构建是为了做一件重要的事情:数据流管理。通过两种工具的结合,NiFi可以充分利用Kafka可靠的流数据存储,同时解决Kafka无法解决的数据流挑战。
总结:
多层交换机有几种连接方式?
二层交换机是只具有交机功能的交换机。 价格2、300块(16口)。 三层、四层交换机是带有部分路由功能的交换机,背板带宽大,用于骨干网处理大量数据流,有网管功能、可编程、可堆叠。 价格在几千(16口)至十几万(48口)。 二层指的是数据链路层。 二层交换机,是根据第二层数据链路层的MAC地址和通过站表选择路由来完成端到端的数据交换的。 三层指的是网络层。 三层交换机,是直接根据第三层网络层IP地址来完成端到端的数据交换的。 四层指的是传输层。 第四层交换设备则是用传输层数据包的包头信息来帮助信息交换和传输处理的。 如果你明白OSI七层参考模型的话,就会明白它们到底有什么区别了。 也就是说他们实际上是工作在不同的网络层,完全不是一个档次。
电脑自动关机重启
电脑意外重启的原因及对策 通常,我们在使用电脑的过程中会遇到各种各样的故障,机器意外重启就是其中之一。 什么是意外重启呢?所谓意外重启,就是由于非操作员本身意愿而发生的电脑重新启动现象,引起这一故障的因素很多,如供电、资源冲突……笔者根据对此类许多故障的发生和解决方法的分析及研究,从中找到了一些解决问题的方法,并将这些心得体会一一奉献出来,希望对大家解决此类故障有所帮助。 硬件引起的意外重启 硬件是电脑运行的基础或核心,它的稳定性对软件能否正常工作有很重要的作用。 我认为由于硬件引起的重启现象是最多的,大家不要以为硬件就很复杂,其实这里面也有很多规律。 通常情况下由硬件引起的机器意外重启有如下特点:软件或更换升级不能解决,具有连带性,故障出现方式相同。 在查找硬件故障的时候,首先要排除硬件设置错误和设置连带错误。 这样才有利于正确的查找硬件故障。 在前面,我已经简单地提到了冲突的问题,冲突不仅在软件,而且在硬件中也相当普遍。 1.供电引起的意外重启(欠压,过载,波动) 电脑元件是高集成度的精密元件,当电流在硬件中流动时,电流的质量对硬件的影响就显得至关重要,电压欠压、过载和波动轻则造成死机或重启,重则造成硬件的直接损伤。 原因:供电引起的意外重启的原因很多,如市电电网的电压不稳、机箱电源故障、主板元器件损坏等等。 其原因大多是由于超出硬件所能承受的范围上限,这种上限一般由板卡质量、损坏情况、运行环境和组合质量来决定。 我们在使用电脑时,通过长时间使用、维护、维修,应该能从中找到自己电脑的平衡点,每台电脑也会有各自合适的工作环境,只有掌握好自己电脑的情况(包括软件),才能为电脑的正常运行打下一个良好的基础。 对策:①通过电灯简单目测一下当地电网情况,或加装防市电浪涌装置。 ②尽量减少计算机电源插座和机箱电源的负载。 ③避免同一电源的插座上其它电器对电脑的影响。 ④明确自己电脑的耗电情况,配标准正规或名牌电源。 ⑤遇到频繁的意外重启不要盲目调试,最好多咨询电脑高手,明确故障的原因,以免找错了原因但损坏了硬件。 2.震动引起的意外重启 原因:现在,PC板卡上的接口越来越多,因接口松动而接触不良很容易出现故障,在电脑震动时就会引起上述现象。 震动一般可以分为电脑自震和人为震动两种,电脑的自震是由于机箱内一些会转动的配件产生的,如硬盘、风扇、CD-ROM等,它们转动时可能导致接口松动而接触不良出现电脑意外重启故障。 另外,带转接卡的CPU也容易出现风扇震松转接卡的现象。 对策:①尽量避免人为因素对机箱产生的震动,必要时可对插件接插的稳固性进行测试。 ②机箱的放置位置要求稳定,机箱内部的高转速配件一定要做紧固处理。 3.硬件质量引起的意外重启 原因:讲到电脑,就不能不谈硬件的质量,其实硬件质量才是稳定和功能实现的关键。 电容的大小多少,PCB的厚薄,监测工序的完善程度……,都直接关系到电脑的整体性能。 如果硬件质量有问题,也容易引起机器异常启动现象。 如有些硬件的技术标准具有高度保密性,造成其它开发商生产的这类产品不具有很好的兼容性,而导致故障不断出现。 我们再来说说硬件的稳定性,比较重要的是硬件的热稳定性(热敏度)和抗干扰能力。 其实由于某些硬件的过热引起的重启现象也相当普遍。 因此,我提醒大家多看一些权威的硬件测评报告,有利于你对硬件信息的及时捕获,从而了解此类故障的现象及解决办法。 对策:①减少强静电干扰源,做好防静电工作。 ②对硬件实施有效的降温措施并将温度控制在适当范围内。 软件引起的意外重启 启动游戏时的意外重启,扫描硬件时的意外重启等等,都是软件引起的重启现象。 因此,下面我们结合一些具体的例子来仔细看一下这类软件引起的电脑重启故障。 引起的意外重启 DirectX是增强计算机多媒体功能的实用程序,它对硬件的诊断监测会对你解决一些故障带来一些帮助。 DirectX启动时会对硬件的功能进行扫描确认,当该程序无法启动,或者找到硬件但无法通过功能测试时都会发生电脑意外重启现象。 原因:可能是某种硬件设备的有效注册功能不能实现,或者设备损坏,或者设备冲突或驱动程序不全造成的,此外,DirectX的文件损坏也会造成重启现象。 对策:①重新对硬件驱动程序进行安装或升级。 ②不用DirectX对设备进行监测,视情况对DirectX进行升级或降级。 ③更换功能损坏的硬件。 ④屏蔽不良功能(如模拟硬件功能)。 ⑤在升级硬件驱动程序时,一定要完全删除原有的硬件设备,以防旧驱动程序依旧占有I/O,而导致I/O冲突。 2.系统不完善引起的意外重启 在进行多任务操作时容易出现意外重启故障,通常是软件停止响应导致的重启,或者系统资源匮乏引起(三个堆资源)的重启现象等等。 例如,当用户试图关闭某停止(长时间才)响应的软件时(先按下“Ctrl+Alt+ Del”键,然后选择要关闭的程序),机器就会无缘无故地重新启动。 原因:电脑意外重启现象在Windows95/98中出现的机会比较多,当运行某些软件或保存文件时,一旦有难以通过的运算就会出现这一故障。 其实,这是属于系统的自我保护性错误。 它一般是在特定的软件环境,启动特定的软件时会出现。 Windows95/98本身造成的原因居多,同时也不排除一些木马和其它程序作怪。 对策:①删除或升级容易造成故障的软件。 ②对系统本身进行升级或更换系统。 ③加装系统辅助管理软件,如内存管理,以减少资源浪费。 ④减少窗口的开启数量。 ⑤如果系统出现问题,一般先进行病毒扫描。 3.病毒引起的意外重启 原因:病毒的威力可能很多人见过,破坏的手段和程度多种多样,轻则给我们的使用带来不便,重则造成无法挽回的经济损失。 我们今天所讲的意外重启故障有时也有它的“功劳”。 病毒最常见的危害方式是进行数据破坏和数据流过载,数据的破坏严重会直接导致系统瘫痪或是软件运行错误,从而在一个不稳定的环境中极易出现电脑意外重启的故障。 数据流的过载会导致系统的反应速度降低和系统资源的极大浪费,最终因为系统无法承受错误的数据流而重新启动。 对策:①加强反病毒的管理,注意信息的及时获取和软件升级。 ②不使用黑客软件,以防黑客程序对自己电脑进行盗窃。 ③对自己程序的来源要做到清楚、干净,以防感染病毒。 其他原因引起的意外重启 1.系统“瓶颈”引起的意外重启 原因:在我们的电脑中有很多地方存在瓶颈效应。 所谓瓶颈效应,是指由于不同运行频率的接口之间进行数据传输时引起的一系列问题,如系统效率降低、系统错误频繁出现、功能无法实现等等。 我们都希望电脑的运行速度很快,但瓶颈的存在使得电脑不能发挥它应有的水平。 对策:①在资金允许的情况下,尽量避免功能浪费。 ②对系统增强功能设置要保守一些。 2.灰尘引起的意外重启 灰尘是电脑重要的“杀手”之一。 由于电脑会产生静电磁场,而静电是吸附灰尘的“罪魁祸首”。 灰尘的增多会带来一系列问题:首先会影响到散热,这一点不用细说,大家都明白。 其次就是大量的灰尘会吸附空气中的水分,使其具有导电性(因此产生短路),轻则造成机器重启,重则直接烧毁电器元件造成用户的损失。 因此,定期清除灰尘是非常必要的!3.散热不良引起的电脑意外重启 散热是为保养的重要手段之一,良好的散热会使电脑长时间的保持良好的工作状态,因为电脑中很多元件需要散热,内存是其中最为敏感的也是数据传输的重要环节,温度过高会引起数据传输的错误,从而引起意外重启。 其实内存散热不好的直接原因是机箱内部和外部的对流不好,笔者认为不需要加装内存散热片,只需要加强空气对流就可以,简单的方法是打开机箱盖。 我认为,大家在长期与电脑“斗争”的过程中要不断地自我积累经验,要学会通过现象看本质,笔者不提倡死记故障实例,搞清现象是最重要的。 对于重启的问题大家还可以参看《电脑报》的两篇文章——《小议非法操作》(14期C13版)和《电脑蓝屏的成因及解决》23期C13版)。 以上两篇文章中所讲到的现象或许对你解决意外重启故障有些帮助。 最后我要说的一句是:必须制定一套完整的电脑维护方案,硬件以及数据的维护方案,定期对你的“爱机”进行维护。
程序流程图中带箭头的线段表示的是数据流还是控制流?
程序流程图中带箭头的线段表示控制流,数据流程图中带箭头的线段表示数据流,容易弄混,切记
发表评论