聚集网(jujiwang.com) - 收录免费分类目录信息软文发布网址提交
免费加入

HDFS 替代方案:比较优势和劣势 (hdfs替代方案)

文章编号:11498时间:2024-10-01人气:


简介

Hadoop 分布式文件系统 (HDFS) 是一种流行的大数据文件系统,用于存储和管理海量数据集。随着大数据技术的不断发展,出现了许多替代 HDFS 的解决方案,提供不同的优势和劣势。本文将比较几种主流的 HDFS 替代方案,包括:CephGlusterFSLustreMinIOTachyon

比较因素

在比较 HDFS 替代方案时,需要考虑以下因素:性能:读写速度、吞吐量和延迟。可扩展性:处理大数据集的能力。可靠性:数据完整性和容错能力。成本:许可证费用、硬件要求和维护成本。易用性:安装、配置和管理的难易程度。

HDFS 替代方案

Ceph优势:对象、块和文件存储的统一接口。高性能和可扩展性。自愈和自动故障转移。开源且免费。劣势:与 HDFS 的兼容性有限。可能比其他解决方案更复杂。GlusterFS优势:分布式文件系统,提供类似于 POSIX 的文件访问。可扩展且支持大文件。开源且免费。劣势:性能可能较低,尤其是对于小文件。可靠性不如其他解决方案。Lustre优势:非常高的性能和吞吐量。适用于高性能计算 (HPC) 和人工智能 (AI) 应用。提供了多协议支持。劣势:商业许可证,成本高昂。需要专门的硬件和配置。MinIO优势:基于 Amazon S3 的对象存储,易于使用。高性能和可扩展性。开源且免费。劣势:仅限于对象存储,不支持文件系统。可能不适合需要文件系统功能的应用程序。Tachyon优势:高性能的内存文件系统。适用于需要快速数据访问的应用程序。可以与其他存储系统(如 HDFS)结合使用。劣势:仅限于内存,数据丢失风险较高。可能比其他解决方案更复杂。

选择正确的 HDFS 替代方案

选择合适的 HDFS 替代方案取决于特定应用程序的需求。对于需要高性能、可扩展性和可靠性的应用程序,Lustre 可能是一个不错的选择。对于成本敏感且易于使用的应用程序,MinIO 和 GlusterFS 是不错的选择。对于需要内存文件系统功能的应用程序,Tachyon 是一个理想的选择。

总结

HDFS 替代方案提供了广泛的功能和优势,以满足大数据存储和管理的不断变化的需求。通过仔细比较这些解决方案的性能、可扩展性、可靠性、成本和易用性,组织可以根据其特定要求做出明智的决策。

hdfs运行流程

HDFS运行流程:客户端通过调用FileSystem的open方法获取需要读取的数据文件。

HDFS替代方案比较优势和劣势hdfs替

HDFS通过RPC来调用NameNode,获取要读取的数据文件对应的block存放在哪些DataNode上。 客户端先到距离最近的DataNode上调用FSDataInputStream的read方法,将数据从DataNode传输到客户端。

当读取完所有的数据后,FSDataInputstream会关闭与DataNode的连接,寻找下一块的最佳位置(即距离最近的下一块)。 当客户端完成读取操作之后,会调用FSDataInputStream的close方法完成对资源的关闭工作。 这个流程确保了数据的可靠存储和高效访问,满足了大规模数据处理的需求。

HDFS的优势

1、高容错性:HDFS采用了数据块的副本机制,当某个数据块丢失或损坏时,可以从其他副本中恢复,确保了数据的可靠性和可用性。

2、可扩展性:HDFS可以在普通的硬件上运行,并且可以通过增加节点来扩展存储和计算能力,满足了大规模数据处理的需求。

3、简单一致性模型:HDFS采用了“一次写入,多次读取”的模式,数据一旦写入,就被永久存储,并且可以随时读取,保证了数据的一致性。

4、支持大规模数据:由于数据被分散存储在多个节点上,HDFS可以处理GB、TB甚至PB级别的数据,适合存储和分析大规模数据集。

5、支持多种文件类型:除了常规的文件,HDFS还支持图片、视频、音频等多种文件类型,可以满足各种应用的需求。

大数据只需要掌握hadoop吗

学习大数据肯定需要学习Hadoop技术,Hadoop在大数据技术体系中的地位至关重要,Hadoop是大数据技术的基础,对Hadoop基础知识的掌握的扎实程度,会决定在大数据技术道路上走多远。

Hadoop学习之后,还得学习Spark,它是一种与 Hadoop 相似的开源集群计算环境,拥有Hadoop MapReduce所具有的优点,Spark是MapReduce的替代方案,而且兼容HDFS、Hive,可融入Hadoop的生态系统,以弥补MapReduce的不足。

这是大数据技术学习的两大重点。

2.HDFS是否属于NoSQL数据库?请分析一下HDFS作为数据库的不足之处

HDFS(Hadoop Distributed File System)不被归类为NoSQL数据库,因为它是分布式文件系统而不是数据库。 HDFS是Apache Hadoop生态系统的一部分,旨在存储和处理大规模数据集。 尽管HDFS非常适合用于存储和处理大规模的结构化和非结构化数据,但作为数据库,它存在以下一些不足之处:1. 缺乏事务支持:HDFS不支持事务,这意味着无法保证数据的一致性和完整性。 如果需要强一致性和事务支持的数据库操作,HDFS并不是一个理想的选择。 2. 有限的查询能力:HDFS的设计目的是高吞吐量的批量处理,而不是实时交互式查询。 虽然Hadoop生态系统提供了一些查询工具(如Hive、Pig等),但相对于传统的关系型数据库,HDFS的查询能力仍然有限。 3. 无结构化数据管理:HDFS主要用于存储和处理大规模的非结构化数据(如日志文件、图像、视频等),而对于结构化数据的管理相对较弱。 与传统的关系型数据库相比,HDFS缺乏对表关系、查询优化和数据约束的内建支持。 4. 难以更新和删除数据:HDFS的设计重点是数据追加和批量处理,而不是频繁的数据更新和删除。 在HDFS上更新和删除数据可能需要执行较为复杂的操作,且性能可能受到影响。 5. 数据一致性的挑战:由于HDFS是分布式的,数据的一致性可能面临挑战。 在复制模式下,HDFS会将数据复制到多个节点上,但由于数据复制的异步性质,数据的读取一致性可能受到影响。 综上所述,尽管HDFS具有存储和处理大规模数据的优势,但作为数据库,它仍然存在一些不足之处。 对于需要事务支持、强一致性和复杂查询操作的应用场景,传统的关系型数据库或NoSQL数据库可能更为适合。

五种大数据处理架构

五种大数据处理架构大数据是收集、整理、处理大容量数据集,并从中获得见解所需的非传统战略和技术的总称。 虽然处理数据所需的计算能力或存储容量早已超过一台计算机的上限,但这种计算类型的普遍性、规模,以及价值在最近几年才经历了大规模扩展。 本文将介绍大数据系统一个最基本的组件:处理框架。 处理框架负责对系统中的数据进行计算,例如处理从非易失存储中读取的数据,或处理刚刚摄入到系统中的数据。 数据的计算则是指从大量单一数据点中提取信息和见解的过程。 下文将介绍这些框架:· 仅批处理框架:Apache Hadoop· 仅流处理框架:Apache StormApache Samza· 混合框架:Apache SparkApache Flink大数据处理框架是什么?处理框架和处理引擎负责对数据系统中的数据进行计算。 虽然“引擎”和“框架”之间的区别没有什么权威的定义,但大部分时候可以将前者定义为实际负责处理数据操作的组件,后者则可定义为承担类似作用的一系列组件。 例如Apache Hadoop可以看作一种以MapReduce作为默认处理引擎的处理框架。 引擎和框架通常可以相互替换或同时使用。 例如另一个框架Apache Spark可以纳入Hadoop并取代MapReduce。 组件之间的这种互操作性是大数据系统灵活性如此之高的原因之一。 虽然负责处理生命周期内这一阶段数据的系统通常都很复杂,但从广义层面来看它们的目标是非常一致的:通过对数据执行操作提高理解能力,揭示出数据蕴含的模式,并针对复杂互动获得见解。 为了简化这些组件的讨论,我们会通过不同处理框架的设计意图,按照所处理的数据状态对其进行分类。 一些系统可以用批处理方式处理数据,一些系统可以用流方式处理连续不断流入系统的数据。 此外还有一些系统可以同时处理这两类数据。 在深入介绍不同实现的指标和结论之前,首先需要对不同处理类型的概念进行一个简单的介绍。 批处理系统批处理在大数据世界有着悠久的历史。 批处理主要操作大容量静态数据集,并在计算过程完成后返回结果。 批处理模式中使用的数据集通常符合下列特征…· 有界:批处理数据集代表数据的有限集合· 持久:数据通常始终存储在某种类型的持久存储位置中· 大量:批处理操作通常是处理极为海量数据集的唯一方法批处理非常适合需要访问全套记录才能完成的计算工作。 例如在计算总数和平均数时,必须将数据集作为一个整体加以处理,而不能将其视作多条记录的集合。 这些操作要求在计算进行过程中数据维持自己的状态。 需要处理大量数据的任务通常最适合用批处理操作进行处理。 无论直接从持久存储设备处理数据集,或首先将数据集载入内存,批处理系统在设计过程中就充分考虑了数据的量,可提供充足的处理资源。 由于批处理在应对大量持久数据方面的表现极为出色,因此经常被用于对历史数据进行分析。 大量数据的处理需要付出大量时间,因此批处理不适合对处理时间要求较高的场合。 Apache HadoopApache Hadoop是一种专用于批处理的处理框架。 Hadoop是首个在开源社区获得极大关注的大数据框架。 基于谷歌有关海量数据处理所发表的多篇论文与经验的Hadoop重新实现了相关算法和组件堆栈,让大规模批处理技术变得更易用。 新版Hadoop包含多个组件,即多个层,通过配合使用可处理批数据:· HDFS:HDFS是一种分布式文件系统层,可对集群节点间的存储和复制进行协调。 HDFS确保了无法避免的节点故障发生后数据依然可用,可将其用作数据来源,可用于存储中间态的处理结果,并可存储计算的最终结果。 · YARN:YARN是Yet Another Resource Negotiator(另一个资源管理器)的缩写,可充当Hadoop堆栈的集群协调组件。 该组件负责协调并管理底层资源和调度作业的运行。 通过充当集群资源的接口,YARN使得用户能在Hadoop集群中使用比以往的迭代方式运行更多类型的工作负载。 · MapReduce:MapReduce是Hadoop的原生批处理引擎。 批处理模式Hadoop的处理功能来自MapReduce引擎。 MapReduce的处理技术符合使用键值对的map、shuffle、reduce算法要求。 基本处理过程包括:· 从HDFS文件系统读取数据集· 将数据集拆分成小块并分配给所有可用节点· 针对每个节点上的数据子集进行计算(计算的中间态结果会重新写入HDFS)· 重新分配中间态结果并按照键进行分组· 通过对每个节点计算的结果进行汇总和组合对每个键的值进行“Reducing”· 将计算而来的最终结果重新写入 HDFS优势和局限由于这种方法严重依赖持久存储,每个任务需要多次执行读取和写入操作,因此速度相对较慢。 但另一方面由于磁盘空间通常是服务器上最丰富的资源,这意味着MapReduce可以处理非常海量的数据集。 同时也意味着相比其他类似技术,Hadoop的MapReduce通常可以在廉价硬件上运行,因为该技术并不需要将一切都存储在内存中。 MapReduce具备极高的缩放潜力,生产环境中曾经出现过包含数万个节点的应用。 MapReduce的学习曲线较为陡峭,虽然Hadoop生态系统的其他周边技术可以大幅降低这一问题的影响,但通过Hadoop集群快速实现某些应用时依然需要注意这个问题。 围绕Hadoop已经形成了辽阔的生态系统,Hadoop集群本身也经常被用作其他软件的组成部件。 很多其他处理框架和引擎通过与Hadoop集成也可以使用HDFS和YARN资源管理器。 总结Apache Hadoop及其MapReduce处理引擎提供了一套久经考验的批处理模型,最适合处理对时间要求不高的非常大规模数据集。 通过非常低成本的组件即可搭建完整功能的Hadoop集群,使得这一廉价且高效的处理技术可以灵活应用在很多案例中。 与其他框架和引擎的兼容与集成能力使得Hadoop可以成为使用不同技术的多种工作负载处理平台的底层基础。 流处理系统流处理系统会对随时进入系统的数据进行计算。 相比批处理模式,这是一种截然不同的处理方式。 流处理方式无需针对整个数据集执行操作,而是对通过系统传输的每个数据项执行操作。 · 流处理中的数据集是“无边界”的,这就产生了几个重要的影响:· 完整数据集只能代表截至目前已经进入到系统中的数据总量。 · 工作数据集也许更相关,在特定时间只能代表某个单一数据项。 处理工作是基于事件的,除非明确停止否则没有“尽头”。 处理结果立刻可用,并会随着新数据的抵达继续更新。 流处理系统可以处理几乎无限量的数据,但同一时间只能处理一条(真正的流处理)或很少量(微批处理,Micro-batch Processing)数据,不同记录间只维持最少量的状态。 虽然大部分系统提供了用于维持某些状态的方法,但流处理主要针对副作用更少,更加功能性的处理(Functional processing)进行优化。 功能性操作主要侧重于状态或副作用有限的离散步骤。 针对同一个数据执行同一个操作会或略其他因素产生相同的结果,此类处理非常适合流处理,因为不同项的状态通常是某些困难、限制,以及某些情况下不需要的结果的结合体。 因此虽然某些类型的状态管理通常是可行的,但这些框架通常在不具备状态管理机制时更简单也更高效。 此类处理非常适合某些类型的工作负载。 有近实时处理需求的任务很适合使用流处理模式。 分析、服务器或应用程序错误日志,以及其他基于时间的衡量指标是最适合的类型,因为对这些领域的数据变化做出响应对于业务职能来说是极为关键的。 流处理很适合用来处理必须对变动或峰值做出响应,并且关注一段时间内变化趋势的数据。 Apache StormApache Storm是一种侧重于极低延迟的流处理框架,也许是要求近实时处理的工作负载的最佳选择。 该技术可处理非常大量的数据,通过比其他解决方案更低的延迟提供结果。 流处理模式Storm的流处理可对框架中名为Topology(拓扑)的DAG(Directed Acyclic Graph,有向无环图)进行编排。 这些拓扑描述了当数据片段进入系统后,需要对每个传入的片段执行的不同转换或步骤。 拓扑包含:· Stream:普通的数据流,这是一种会持续抵达系统的无边界数据。 · Spout:位于拓扑边缘的数据流来源,例如可以是API或查询等,从这里可以产生待处理的数据。 · Bolt:Bolt代表需要消耗流数据,对其应用操作,并将结果以流的形式进行输出的处理步骤。 Bolt需要与每个Spout建立连接,随后相互连接以组成所有必要的处理。 在拓扑的尾部,可以使用最终的Bolt输出作为相互连接的其他系统的输入。 Storm背后的想法是使用上述组件定义大量小型的离散操作,随后将多个组件组成所需拓扑。 默认情况下Storm提供了“至少一次”的处理保证,这意味着可以确保每条消息至少可以被处理一次,但某些情况下如果遇到失败可能会处理多次。 Storm无法确保可以按照特定顺序处理消息。 为了实现严格的一次处理,即有状态处理,可以使用一种名为Trident的抽象。 严格来说不使用Trident的Storm通常可称之为Core Storm。 Trident会对Storm的处理能力产生极大影响,会增加延迟,为处理提供状态,使用微批模式代替逐项处理的纯粹流处理模式。 为避免这些问题,通常建议Storm用户尽可能使用Core Storm。 然而也要注意,Trident对内容严格的一次处理保证在某些情况下也比较有用,例如系统无法智能地处理重复消息时。 如果需要在项之间维持状态,例如想要计算一个小时内有多少用户点击了某个链接,此时Trident将是你唯一的选择。 尽管不能充分发挥框架与生俱来的优势,但Trident提高了Storm的灵活性。 Trident拓扑包含:· 流批(Stream batch):这是指流数据的微批,可通过分块提供批处理语义。 · 操作(Operation):是指可以对数据执行的批处理过程。 优势和局限目前来说Storm可能是近实时处理领域的最佳解决方案。 该技术可以用极低延迟处理数据,可用于希望获得最低延迟的工作负载。 如果处理速度直接影响用户体验,例如需要将处理结果直接提供给访客打开的网站页面,此时Storm将会是一个很好的选择。 Storm与Trident配合使得用户可以用微批代替纯粹的流处理。 虽然借此用户可以获得更大灵活性打造更符合要求的工具,但同时这种做法会削弱该技术相比其他解决方案最大的优势。 话虽如此,但多一种流处理方式总是好的。 Core Storm无法保证消息的处理顺序。 Core Storm为消息提供了“至少一次”的处理保证,这意味着可以保证每条消息都能被处理,但也可能发生重复。 Trident提供了严格的一次处理保证,可以在不同批之间提供顺序处理,但无法在一个批内部实现顺序处理。 在互操作性方面,Storm可与Hadoop的YARN资源管理器进行集成,因此可以很方便地融入现有Hadoop部署。 除了支持大部分处理框架,Storm还可支持多种语言,为用户的拓扑定义提供了更多选择。 总结对于延迟需求很高的纯粹的流处理工作负载,Storm可能是最适合的技术。 该技术可以保证每条消息都被处理,可配合多种编程语言使用。 由于Storm无法进行批处理,如果需要这些能力可能还需要使用其他软件。 如果对严格的一次处理保证有比较高的要求,此时可考虑使用Trident。 不过这种情况下其他流处理框架也许更适合。 Apache SamzaApache Samza是一种与Apache Kafka消息系统紧密绑定的流处理框架。 虽然Kafka可用于很多流处理系统,但按照设计,Samza可以更好地发挥Kafka独特的架构优势和保障。 该技术可通过Kafka提供容错、缓冲,以及状态存储。 Samza可使用YARN作为资源管理器。 这意味着默认情况下需要具备Hadoop集群(至少具备HDFS和YARN),但同时也意味着Samza可以直接使用YARN丰富的内建功能。 流处理模式Samza依赖Kafka的语义定义流的处理方式。 Kafka在处理数据时涉及下列概念:· Topic(话题):进入Kafka系统的每个数据流可称之为一个话题。 话题基本上是一种可供消耗方订阅的,由相关信息组成的数据流。 · Partition(分区):为了将一个话题分散至多个节点,Kafka会将传入的消息划分为多个分区。 分区的划分将基于键(Key)进行,这样可以保证包含同一个键的每条消息可以划分至同一个分区。 分区的顺序可获得保证。 · Broker(代理):组成Kafka集群的每个节点也叫做代理。 · Producer(生成方):任何向Kafka话题写入数据的组件可以叫做生成方。 生成方可提供将话题划分为分区所需的键。 · Consumer(消耗方):任何从Kafka读取话题的组件可叫做消耗方。 消耗方需要负责维持有关自己分支的信息,这样即可在失败后知道哪些记录已经被处理过了。 由于Kafka相当于永恒不变的日志,Samza也需要处理永恒不变的数据流。 这意味着任何转换创建的新数据流都可被其他组件所使用,而不会对最初的数据流产生影响。 优势和局限乍看之下,Samza对Kafka类查询系统的依赖似乎是一种限制,然而这也可以为系统提供一些独特的保证和功能,这些内容也是其他流处理系统不具备的。 例如Kafka已经提供了可以通过低延迟方式访问的数据存储副本,此外还可以为每个数据分区提供非常易用且低成本的多订阅者模型。 所有输出内容,包括中间态的结果都可写入到Kafka,并可被下游步骤独立使用。 这种对Kafka的紧密依赖在很多方面类似于MapReduce引擎对HDFS的依赖。 虽然在批处理的每个计算之间对HDFS的依赖导致了一些严重的性能问题,但也避免了流处理遇到的很多其他问题。 Samza与Kafka之间紧密的关系使得处理步骤本身可以非常松散地耦合在一起。 无需事先协调,即可在输出的任何步骤中增加任意数量的订阅者,对于有多个团队需要访问类似数据的组织,这一特性非常有用。 多个团队可以全部订阅进入系统的数据话题,或任意订阅其他团队对数据进行过某些处理后创建的话题。 这一切并不会对数据库等负载密集型基础架构造成额外的压力。 直接写入Kafka还可避免回压(Backpressure)问题。 回压是指当负载峰值导致数据流入速度超过组件实时处理能力的情况,这种情况可能导致处理工作停顿并可能丢失数据。 按照设计,Kafka可以将数据保存很长时间,这意味着组件可以在方便的时候继续进行处理,并可直接重启动而无需担心造成任何后果。 Samza可以使用以本地键值存储方式实现的容错检查点系统存储数据。 这样Samza即可获得“至少一次”的交付保障,但面对由于数据可能多次交付造成的失败,该技术无法对汇总后状态(例如计数)提供精确恢复。 Samza提供的高级抽象使其在很多方面比Storm等系统提供的基元(Primitive)更易于配合使用。 目前Samza只支持JVM语言,这意味着它在语言支持方面不如Storm灵活。 总结对于已经具备或易于实现Hadoop和Kafka的环境,Apache Samza是流处理工作负载一个很好的选择。 Samza本身很适合有多个团队需要使用(但相互之间并不一定紧密协调)不同处理阶段的多个数据流的组织。 Samza可大幅简化很多流处理工作,可实现低延迟的性能。 如果部署需求与当前系统不兼容,也许并不适合使用,但如果需要极低延迟的处理,或对严格的一次处理语义有较高需求,此时依然适合考虑。 混合处理系统:批处理和流处理一些处理框架可同时处理批处理和流处理工作负载。 这些框架可以用相同或相关的组件和API处理两种类型的数据,借此让不同的处理需求得以简化。 如你所见,这一特性主要是由Spark和Flink实现的,下文将介绍这两种框架。 实现这样的功能重点在于两种不同处理模式如何进行统一,以及要对固定和不固定数据集之间的关系进行何种假设。 虽然侧重于某一种处理类型的项目会更好地满足具体用例的要求,但混合框架意在提供一种数据处理的通用解决方案。 这种框架不仅可以提供处理数据所需的方法,而且提供了自己的集成项、库、工具,可胜任图形分析、机器学习、交互式查询等多种任务。 Apache SparkApache Spark是一种包含流处理能力的下一代批处理框架。 与Hadoop的MapReduce引擎基于各种相同原则开发而来的Spark主要侧重于通过完善的内存计算和处理优化机制加快批处理工作负载的运行速度。 Spark可作为独立集群部署(需要相应存储层的配合),或可与Hadoop集成并取代MapReduce引擎。 批处理模式与MapReduce不同,Spark的数据处理工作全部在内存中进行,只在一开始将数据读入内存,以及将最终结果持久存储时需要与存储层交互。 所有中间态的处理结果均存储在内存中。 虽然内存中处理方式可大幅改善性能,Spark在处理与磁盘有关的任务时速度也有很大提升,因为通过提前对整个任务集进行分析可以实现更完善的整体式优化。 为此Spark可创建代表所需执行的全部操作,需要操作的数据,以及操作和数据之间关系的Directed Acyclic Graph(有向无环图),即DAG,借此处理器可以对任务进行更智能的协调。 为了实现内存中批计算,Spark会使用一种名为Resilient Distributed Dataset(弹性分布式数据集),即RDD的模型来处理数据。 这是一种代表数据集,只位于内存中,永恒不变的结构。 针对RDD执行的操作可生成新的RDD。 每个RDD可通过世系(Lineage)回溯至父级RDD,并最终回溯至磁盘上的数据。 Spark可通过RDD在无需将每个操作的结果写回磁盘的前提下实现容错。 流处理模式流处理能力是由Spark Streaming实现的。 Spark本身在设计上主要面向批处理工作负载,为了弥补引擎设计和流处理工作负载特征方面的差异,Spark实现了一种叫做微批(Micro-batch)*的概念。 在具体策略方面该技术可以将数据流视作一系列非常小的“批”,借此即可通过批处理引擎的原生语义进行处理。 Spark Streaming会以亚秒级增量对流进行缓冲,随后这些缓冲会作为小规模的固定数据集进行批处理。 这种方式的实际效果非常好,但相比真正的流处理框架在性能方面依然存在不足。 优势和局限使用Spark而非Hadoop MapReduce的主要原因是速度。 在内存计算策略和先进的DAG调度等机制的帮助下,Spark可以用更快速度处理相同的数据集。 Spark的另一个重要优势在于多样性。 该产品可作为独立集群部署,或与现有Hadoop集群集成。 该产品可运行批处理和流处理,运行一个集群即可处理不同类型的任务。 除了引擎自身的能力外,围绕Spark还建立了包含各种库的生态系统,可为机器学习、交互式查询等任务提供更好的支持。 相比MapReduce,Spark任务更是“众所周知”地易于编写,因此可大幅提高生产力。 为流处理系统采用批处理的方法,需要对进入系统的数据进行缓冲。 缓冲机制使得该技术可以处理非常大量的传入数据,提高整体吞吐率,但等待缓冲区清空也会导致延迟增高。 这意味着Spark Streaming可能不适合处理对延迟有较高要求的工作负载。 由于内存通常比磁盘空间更贵,因此相比基于磁盘的系统,Spark成本更高。 然而处理速度的提升意味着可以更快速完成任务,在需要按照小时数为资源付费的环境中,这一特性通常可以抵消增加的成本。 Spark内存计算这一设计的另一个后果是,如果部署在共享的集群中可能会遇到资源不足的问题。 相比HadoopMapReduce,Spark的资源消耗更大,可能会对需要在同一时间使用集群的其他任务产生影响。 从本质来看,Spark更不适合与Hadoop堆栈的其他组件共存一处。 总结Spark是多样化工作负载处理任务的最佳选择。 Spark批处理能力以更高内存占用为代价提供了无与伦比的速度优势。 对于重视吞吐率而非延迟的工作负载,则比较适合使用Spark Streaming作为流处理解决方案。 Apache FlinkApache Flink是一种可以处理批处理任务的流处理框架。 该技术可将批处理数据视作具备有限边界的数据流,借此将批处理任务作为流处理的子集加以处理。 为所有处理任务采取流处理为先的方法会产生一系列有趣的副作用。 这种流处理为先的方法也叫做KAppa架构,与之相对的是更加被广为人知的Lambda架构(该架构中使用批处理作为主要处理方法,使用流作为补充并提供早期未经提炼的结果)。 Kappa架构中会对一切进行流处理,借此对模型进行简化,而这一切是在最近流处理引擎逐渐成熟后才可行的。 流处理模型Flink的流处理模型在处理传入数据时会将每一项视作真正的数据流。 Flink提供的DataStream API可用于处理无尽的数据流。 Flink可配合使用的基本组件包括:· Stream(流)是指在系统中流转的,永恒不变的无边界数据集· Operator(操作方)是指针对数据流执行操作以产生其他数据流的功能· Source(源)是指数据流进入系统的入口点· Sink(槽)是指数据流离开Flink系统后进入到的位置,槽可以是数据库或到其他系统的连接器为了在计算过程中遇到问题后能够恢复,流处理任务会在预定时间点创建快照。 为了实现状态存储,Flink可配合多种状态后端系统使用,具体取决于所需实现的复杂度和持久性级别。 此外Flink的流处理能力还可以理解“事件时间”这一概念,这是指事件实际发生的时间,此外该功能还可以处理会话。 这意味着可以通过某种有趣的方式确保执行顺序和分组。 批处理模型Flink的批处理模型在很大程度上仅仅是对流处理模型的扩展。 此时模型不再从持续流中读取数据,而是从持久存储中以流的形式读取有边界的数据集。 Flink会对这些处理模型使用完全相同的运行时。 Flink可以对批处理工作负载实现一定的优化。 例如由于批处理操作可通过持久存储加以支持,Flink可以不对批处理工作负载创建快照。 数据依然可以恢复,但常规处理操作可以执行得更快。 另一个优化是对批处理任务进行分解,这样即可在需要的时候调用不同阶段和组件。 借此Flink可以与集群的其他用户更好地共存。 对任务提前进行分析使得Flink可以查看需要执行的所有操作、数据集的大小,以及下游需要执行的操作步骤,借此实现进一步的优化。 优势和局限Flink目前是处理框架领域一个独特的技术。 虽然Spark也可以执行批处理和流处理,但Spark的流处理采取的微批架构使其无法适用于很多用例。 Flink流处理为先的方法可提供低延迟,高吞吐率,近乎逐项处理的能力。 Flink的很多组件是自行管理的。 虽然这种做法较为罕见,但出于性能方面的原因,该技术可自行管理内存,无需依赖原生的Java垃圾回收机制。 与Spark不同,待处理数据的特征发生变化后Flink无需手工优化和调整,并且该技术也可以自行处理数据分区和自动缓存等操作。 Flink会通过多种方式对工作进行分许进而优化任务。 这种分析在部分程度上类似于SQL查询规划器对关系型数据库所做的优化,可针对特定任务确定最高效的实现方法。 该技术还支持多阶段并行执行,同时可将受阻任务的数据集合在一起。 对于迭代式任务,出于性能方面的考虑,Flink会尝试在存储数据的节点上执行相应的计算任务。 此外还可进行“增量迭代”,或仅对数据中有改动的部分进行迭代。 在用户工具方面,Flink提供了基于Web的调度视图,借此可轻松管理任务并查看系统状态。 用户也可以查看已提交任务的优化方案,借此了解任务最终是如何在集群中实现的。 对于分析类任务,Flink提供了类似SQL的查询,图形化处理,以及机器学习库,此外还支持内存计算。 Flink能很好地与其他组件配合使用。 如果配合Hadoop 堆栈使用,该技术可以很好地融入整个环境,在任何时候都只占用必要的资源。 该技术可轻松地与YARN、HDFS和Kafka 集成。 在兼容包的帮助下,Flink还可以运行为其他处理框架,例如Hadoop和Storm编写的任务。 目前Flink最大的局限之一在于这依然是一个非常“年幼”的项目。 现实环境中该项目的大规模部署尚不如其他处理框架那么常见,对于Flink在缩放能力方面的局限目前也没有较为深入的研究。 随着快速开发周期的推进和兼容包等功能的完善,当越来越多的组织开始尝试时,可能会出现越来越多的Flink部署总结Flink提供了低延迟流处理,同时可支持传统的批处理任务。 Flink也许最适合有极高流处理需求,并有少量批处理任务的组织。 该技术可兼容原生Storm和Hadoop程序,可在YARN管理的集群上运行,因此可以很方便地进行评估。 快速进展的开发工作使其值得被大家关注。 结论大数据系统可使用多种处理技术。 对于仅需要批处理的工作负载,如果对时间不敏感,比其他解决方案实现成本更低的Hadoop将会是一个好选择。 对于仅需要流处理的工作负载,Storm可支持更广泛的语言并实现极低延迟的处理,但默认配置可能产生重复结果并且无法保证顺序。 Samza与YARN和Kafka紧密集成可提供更大灵活性,更易用的多团队使用,以及更简单的复制和状态管理。 对于混合型工作负载,Spark可提供高速批处理和微批处理模式的流处理。 该技术的支持更完善,具备各种集成库和工具,可实现灵活的集成。 Flink提供了真正的流处理并具备批处理能力,通过深度优化可运行针对其他平台编写的任务,提供低延迟的处理,但实际应用方面还为时过早。 最适合的解决方案主要取决于待处理数据的状态,对处理所需时间的需求,以及希望得到的结果。 具体是使用全功能解决方案或主要侧重于某种项目的解决方案,这个问题需要慎重权衡。 随着逐渐成熟并被广泛接受,在评估任何新出现的创新型解决方案时都需要考虑类似的问题。

现在后端都在用什么数据库存储数据?

那我就根据这两三年的研究与工作经历,说说如今的情况。

传统行业,尤其是政府,医疗,学校和大企业,基本上还是Oracle应用最广,其次就是DB2。 反而是WebLogic和WebSphere这些中间件基本上随着经典javaee的没落,已经逐步退出历史舞台,被富前端和微服务框架的轻量级组合所替代。

传统行业的很多新项目也大量开始应用MySQL,因为轻量级数据库的前期成本很低,可以保证项目预算够用,所以主要是新项目居多,面向互联网连接的项目也居多。 这些系统一般不会像Oracle一样承担关键性业务的数据存储,所以选择什么样的数据库都是开发公司自己的选择决定。

目前有大量企业都开始上云,大家买云服务以阿里云ecs为主,总体上阿里云还是比较稳定,那么对于云上数据库的稳定有要求的企业一般都会选择阿里云主打的的rds系列,MySQL居多,PostgreSQL也开始逐渐被认可。

说到PostgreSQL,的确这两年PG风头正劲,以前我的文章也提到过我做过的互联网医疗产品,其架构设计就选择采用了PostgreSQL,主要就是看中PostgreSQL在生产上的稳定性极高,而且成本很低。 尤其是精通Linux服务的架构师,对于PostgreSQL更容易掌握。

更具体地说就是使用PostgreSQL的关键因素主要还是业务数据很关键,因为我们当时承载的是互联网医疗数据,医疗数据自身属性就很关键!所以稳定和安全都是刚性要求,同时要平衡成本与互联网方式的灵活性,所以才否定了MySQL方案,坚决执行了PostgreSQL方案。

大数据类项目的主数据集还是以HadoopHDFS作为基础存储设施。 尽管现在很热的讨论就是Hadoop已经是日落黄昏,可以选择其他更快的NoSQL存储方案。 实际上,大数据工程师在最终落地的执行上,还是很诚实的选择了Hadoop,因为其成熟度,稳定性是最终考量的标准。

ELK家族的Elasticsearch目前被大量作为日志监测分析的主数据集去使用,甚至都忽视了它本身是搜索引擎的这个事实,在电子商务网站,内容发布网站以及社交媒体网站,Elasticsearch作为专业搜索引擎,还是稳坐第一把交椅。

6.实时/时序数据库

工业能源以及其他物联网行业,实时、时序数据库正在逐步采用开源的解决方案,例如、InfluxDB,OpenTSDB,还是目前存储物联网数据最好的开源选择方案。 是实时与历史一整套实时库解决方案;InfluxDB目前热度非常高的时序数据库,自己独立实现了一套原生的集群存储结构;OpenTSDB主要依赖HBase分布式数据库与HDFS分布式文件系统。 另外提一句,清华推出的开源时序数据库IOTDB,目前已经升级成的顶级项目。

Hadoophbase作为列簇存储,也是毫秒级的k-v存储,越来越适应通用场景下的实时数据分析了,可能哪个领域都有能用到它,支撑实时处理的联机分析以及小型批处理业务。 它的分布式一致性,存储hdfs的稳定性,都是关键性业务数据进行实时分析的极佳方案。

在互联网海量数据查询,保证事务一致性以及大吞吐写入并行的时代,就会形成两种模式,一种是NewSQL对关系型数据库的替代方案,以前我的文章也不断提到TiDB对关系数据库替代的必要性,这种替换行为一般会出现在基于关系数据库的上层复杂业务不断升级更新带来的问题,导致运维过程中相关人员生无可恋的情况。 那么NewSQL这种分布式一致性,满足ACID,又带有k-v水平伸缩存储的方案就极为合适,不用在关系数据库的分库分表的泥潭中挣扎。

另一种是关系数据库自身的改进或者引入MongoDB进行部分替代,例如电子商务的订单业务数据,互联网医疗的健康档案数据,内容发布的文章数据,都能实现MongoDB的文档化替代,这不仅更符合业务的文档化模型,而且能保证事务的前提下,实现海量数据的支撑。

10.关系数据库并行能力

关系数据库也是在不断改进中前进,尤其是轻量级数据库的改进,MySQL8的cluster特性,PostgreSQL11的并行特性,都是不同手段想要达到同一个目的:那就是关系库都在想尽一切办法,不必让用户脱离关系型数据库,非得拥抱NoSQL才能追求到海量数据的并行处理能力,同时也能降低用户替换导致的巨大升级成本。

备注:以上架构图均来自数据库官方网站或相关技术的权威网站。



相关标签: HDFS替代方案比较优势和劣势hdfs替代方案

上一篇:告别0x000018蓝屏错误全面指南,涵盖原因解决

下一篇:HDFS在大数据分析中的应用存储和处理考虑因

内容声明:

1、本站收录的内容来源于大数据收集,版权归原网站所有!
2、本站收录的内容若侵害到您的利益,请联系我们进行删除处理!
3、本站不接受违法信息,如您发现违法内容,请联系我们进行举报处理!
4、本文地址:http://www.jujiwang.com/article/3f6464e520acbfe54fd0.html,复制请保留版权链接!


温馨小提示:在您的网站做上本站友情链接,访问一次即可自动收录并自动排在本站第一位!
随机文章
为数据密集型应用程序提供强大动力:Phison-UP10 控制器满足严格要求 (数据密集型应用系统设计)

为数据密集型应用程序提供强大动力:Phison-UP10 控制器满足严格要求 (数据密集型应用系统设计)

随着数据密集型应用程序的兴起,对高性能存储解决方案的需求也在不断增长,PhisonElectronics认识到这一需求,推出了最新的UP10控制器,专为满足数据密集型应用程序的严格要求而设计,Phison,UP10控制器,卓越性能的领航者Phison,UP10控制器采用尖端技术,提供卓越的性能和可靠性,其主要特性包括,支持NVMe1....。

最新资讯 2024-10-01 16:38:35

采集侠:数据采集的未来,助力企业实现卓越运营 (采集侠教程)

采集侠:数据采集的未来,助力企业实现卓越运营 (采集侠教程)

前言随着信息技术的飞速发展,数据已成为驱动企业发展的关键资产,企业面临的挑战是获取和处理大量复杂的数据,以从中提取有价值的见解,采集侠应运而生,它是一个强大的数据采集平台,旨在帮助企业应对这些挑战,实现卓越运营,采集侠简介采集侠是一个基于云端的数据采集平台,旨在简化和自动化企业的数据采集流程,它提供了一系列工具和功能,让企业可以轻松地...。

互联网资讯 2024-09-30 20:56:42

XSLT 与 XPath:XML 数据处理的动态组合

XSLT 与 XPath:XML 数据处理的动态组合

简介XML,可扩展标记语言,是一种强大的标记语言,用于表示结构化数据,XSLT,可扩展样式表语言转换,是一种用于转换XML文档的语言,而XPath,XML路径语言,是一种用于在XML文档中选取节点和值的语言,这两个技术一起使用,可以创建功能强大且灵活的XML数据处理解决方案,XSLTXSLT是一种声明性语言,用于将XML文档转换为其他...。

技术教程 2024-09-26 22:49:54

数据转换之道:使用 ResultTransformer 优化数据集成 (数据转换之道pdf)

数据转换之道:使用 ResultTransformer 优化数据集成 (数据转换之道pdf)

在数据集成过程中,数据转换是至关重要的一个环节,它可以帮助我们对数据进行格式化、标准化和清洗,从而使其能够顺利地被目标系统所接受和处理,在Java中,我们可以使用SpringIntegration框架来实现数据转换,SpringIntegration提供了一个名为ResultTransformer的接口,它可以让我们对数据集成管道中的...。

互联网资讯 2024-09-23 20:00:01

在移动设备上优化div滚动:确保跨平台的无缝体验 (在移动设备上输入此验证码在哪输入的)

在移动设备上优化div滚动:确保跨平台的无缝体验 (在移动设备上输入此验证码在哪输入的)

在移动设备上提供流畅的滚动体验至关重要,因为它可以让用户舒适地浏览内容并与应用程序交互,在移动设备上优化div滚动时,需要考虑以下因素,1.避免滚动反弹滚动反弹是当用户将手指从内容顶部或底部拖动过远时,内容会反弹回其原始位置的效果,这在移动设备上会让人分心,尤其是在小屏幕上,为了避免滚动反弹,请使用以下CSS属性,cssbody,ov...。

互联网资讯 2024-09-23 04:27:12

深入了解 patindex:查找 SQL 中字符串中特定模式的 (深入了解胖东来)

深入了解 patindex:查找 SQL 中字符串中特定模式的 (深入了解胖东来)

^a%,column,name,>,0,示例3,查找以example结尾的记录SELECTFROMtable,nameWHEREPATINDEX,%example$,column,name,>,0,示例4,查找包含数字123的记录SELECTFROMtable,nameWHEREPATINDEX,%123%,column,na...。

本站公告 2024-09-14 09:51:21

指针函数:提升 C/C++ 编程水平的宝贵工具 (指针 函数)

指针函数:提升 C/C++ 编程水平的宝贵工具 (指针 函数)

引言在C,C,编程中,指针是一个非常重要的概念,它允许程序员直接访问内存地址,从而可以高效地处理数据,指针函数是C,C,中的一种高级技术,它将指针与函数相结合,可以显著提升代码的效率和灵活性,指针函数的概念指针函数是一个指向函数的指针,换句话说,它存储的是函数的地址,而不是函数的返回值,与普通函数不同,指针函数可以作为参数传递给其...。

技术教程 2024-09-09 07:10:40

从新手到大师:sort函数在Python列表排序中的全面实践指南 (从新手到大师训练计划)

从新手到大师:sort函数在Python列表排序中的全面实践指南 (从新手到大师训练计划)

排序是数据处理中一项基本任务,在Python中,`sort,`函数是执行此操作的强大工具,本文将提供一个全面且循序渐进的指南,帮助您从新手到大师掌握使用`sort,`函数排序Python列表,基础知识`sort,`函数的语法```pythonlist.sort,key=None,reverse=False,````key`,可选...。

最新资讯 2024-09-09 00:18:17

为开发人员和系统管理员设计的 PHP 高级安装 (与开发人员特定相关的要求)

为开发人员和系统管理员设计的 PHP 高级安装 (与开发人员特定相关的要求)

概要本文档提供了一份全面的指南,用于为开发人员和系统管理员安装和配置PHP,本指南涵盖了PHP的高级安装配置,包括对其核心功能的自定义、扩展的安装和配置以及故障排除技巧,目标受众本指南面向有经验的开发人员和系统管理员,他们需要在生产环境中安装和配置PHP,读者应具备Linux系统管理和PHP开发方面的基本知识,前提条件Linux操作系...。

最新资讯 2024-09-07 15:16:26

Java进阶之旅:解锁高级特性,提升编程技能 (java进阶书籍推荐)

Java进阶之旅:解锁高级特性,提升编程技能 (java进阶书籍推荐)

欢迎来到Java进阶的奇妙世界!准备好踏上探索之旅,解锁高级特性并提升您的编程技能了吗,本文将为您推荐一些宝贵的Java进阶书籍,为您提供必要的知识和技能,让您成为一名出色的Java工程师,1.Java核心技术卷1,基础知识作者,KathySierra,BertBates出版社,人民邮电出版社这本经典著作是Java学习者的必备书籍,它...。

最新资讯 2024-09-07 13:03:27

Floor 函数在数学和编程中的重要性:理解向下取整的基础 (floor函数)

Floor 函数在数学和编程中的重要性:理解向下取整的基础 (floor函数)

在数学和编程中,向下取整操作,也称为舍入,是一种将实数四舍五入到其最大整数的运算,地板函数,floor,x,执行此操作,向下四舍五入到小于...。

技术教程 2024-09-05 22:45:20

痛揭伤疤:南京碎尸案对受害者家庭的苦难 (疼痛的伤疤)

痛揭伤疤:南京碎尸案对受害者家庭的苦难 (疼痛的伤疤)

2019年7月11日,南京市中级人民法院对备受社会关注的南京碎尸案进行公开宣判,被告人朱元璋因故意杀人罪被判处死刑,这起案件给受害者家庭带来的伤痛和苦难至今难以愈合,破碎的家庭受害者李某某原本是一个幸福的三口之家,妻子温柔贤惠,儿子活泼可爱,碎尸案的发生,将这个家庭彻底撕裂,妻子在得知丈夫遇害后,悲痛欲绝,最终因无法承受打击而离世,儿...。

互联网资讯 2024-09-03 05:35:42