导航:首页 > 网络数据 > 大数据常用组件

大数据常用组件

发布时间:2023-06-08 12:57:08

⑴ 一个典型的大数据解决方案,包含哪些组件

首先,一个典型的大数据解决方案,也就是大数据系统平台的构建,涉及到多个层次,数据采集和传输、数据存储、数据计算、资源管理、任务调度等,每个流程阶段当中,都有多个组件可选择,关键是要能够满足实际的需求。
简单举例说明一下典型的一些组件:
文件存储:Hadoop HDFS
离线计算:Hadoop MapRece、Spark
流式、实时计算:Storm、Spark Streaming
K-V、NOSQL数据库:HBase、Redis、MongoDB
资源管理:YARN、Mesos
日志收集:Flume、Scribe、Logstash、Kibana
消息系统:Kafka、StormMQ、ZeroMQ、RabbitMQ
查询分析:Hive、Impala、Presto、Phoenix、SparkSQL、Flink、Kylin、Druid
分布式协调服务:Zookeeper
集群管理与监控:Ambari、Ganglia、Nagios、Cloudera Manager
数据挖掘、机器学习:Mahout、Spark MLLib
数据同步:Sqoop
任务调度:Oozie

⑵ 大数据包括哪些

大数据技术庞大复杂,基础的技术包含数据的采集、数据预处理、分布式存储、NoSQL数据内库、容数据仓库、机器学习、并行计算、可视化等各种技术范畴和不同的技术层面。
大数据主要技术组件:Hadoop、HBase、kafka、Hive、MongoDB、Redis、Spark 、Storm、Flink等。
大数据技术包括数据采集,数据管理,数据分析,数据可视化,数据安全等内容。数据的采集包括传感器采集,系统日志采集以及网络爬虫等。数据管理包括传统的数据库技术,nosql技术,以及对于针对大规模数据的大数据平台,例如hadoop,spark,storm等。数据分析的核心是机器学习,当然也包括深度学习和强化学习,以及自然语言处理,图与网络分析等。

⑶ 五种大数据处理架构

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

⑷ 大数据组件之oozie

官网首页介绍: http://oozie.apache.org

简单项目的话可以用crontab来做控制,但是项目比较复杂的话会发现还是有很多不方便的,比如失败重启和日志查看等问题,所以我们通常在Azkaban和oozie之间做对比,选择适合自己公司或者项目的任务调度工具

Oozie主要有三个层层包裹的主要概念

Oozie的作业有三部分组成,分别是job.properties,workflow.xml,lib文件夹。下面分别介绍

从名称也能看出来,这个文件是用来配置作业(job)中用到的各种参数的,总结如下

注:
1、这个文件如果是在本地通过命令行进行任务提交的话,这个文件在本地就可以了,当然也可以放在hdfs上,与workflow.xml和lib处于同一层级。
2、nameNode,jobTracker和workflow.xml在hdfs中的位置必须设置。

一个简单的job.properties文件如下:

这个文件是定义任务的整体流程的文件,需要注意的有三点:版本信息,EL函数,节点信息。
先上一个例子:

在xmls属性中定义了workflow的版本为0.4,workflow的版本不能高于oozie兼容的最高版本,可以降低。

A. 流程控制节点

案例:

B. 动作节点

Workflow.xml综述
文件需要被放在HDFS上才能被oozie调度,如果在启动需要调动MR任务,jar包同样需要在hdfs上。最终的目录结构如下:

在workflow工作流定义的同级目录下,需要有一个lib目录,在lib目录中存在java节点MapRece使用的jar包。需要注意的是,oozie并不是使用指定jar包的名称来启动任务的,而是通过制定主类来启动任务的。在lib包中绝对不能存在某个jar包的不同版本,不能够出现多个相同主类。

在搭建好CDH后,可以直接通过添加服务的方式实现oozie的安装,比较方便。当然也可以在服务器上搭建独立的oozie服务,具体可参考 https://oozie.apache.org/docs/5.0.0/AG_Install.html

搭设后进入oozie web控制台,地址为:OozieserverIp:11000/oozie/ (OozieserverIp为oozie所在的服务器的ip地址),界面如下:

1.拷贝官方自带实例模板

2.修改job.properties

3.修改workflow.xml

4.在shell目录下创建mem.sh

注:/usr/bin/date为命令绝对路径,可以通过which date获得

5.上传到hdfs

6.执行:

7.检查结果

⑸ 大数据专业都需要学习哪些软件啊

大数据处理分析能力在21世纪至关重要。使用正确的大数据工具是企业提高自身优势、战胜竞争对手的必要条件。下面让我们来了解一下最常用的30种大数据工具,紧跟大数据发展脚步。

第一部分、数据提取工具
Octoparse是一种简单直观的网络爬虫,可以从网站上直接提取数据,不需要编写代码。无论你是初学者、大数据专家、还是企业管理层,都能通过其企业级的服务满足需求。为了方便操作,Octoparse还添加了涵盖30多个网站的“任务模板 (Task Templates)”,操作简单易上手。用户无需任务配置即可提取数据。随着你对Octoparse的操作更加熟悉,你还可以使用其“向导模式 (Wizard Mode)”来构建爬虫。除此之外,大数据专家们可以使用“高级模式 (Advanced Mode)”在数分钟内提取企业批量数据。你还可以设置“自动云提取 (Scheled Cloud Extraction)”,以便实时获取动态数据,保持跟踪记录。

02

Content Graber

Content Graber是比较进阶的网络爬网软件,具有可用于开发、测试和生产服务器的编程操作环境。用户可以使用C#或VB.NET调试或编写脚本来构建爬虫。Content Graber还允许你在爬虫的基础上添加第三方扩展软件。凭借全面的功能,Content Grabber对于具有基本技术知识的用户来说功能极其强大。
Import.io是基于网页的数据提取工具。Import.io于2016年首次启动,现已将其业务模式从B2C转变为B2B。2019年,Import.io并购了Connotate,成为了一个网络数据集成平台 (Web Data Integration Platform)。凭借广泛的网络数据服务,Import.io成为了商业分析的绝佳选择。
Parsehub是基于网页的数据爬虫。它可以使用AJax,JavaScript等等从网站上提取动态的的数据。Parsehub提供为期一周的免费试用,供用户体验其功能。
Mozenda是网络数据抓取软件,提供企业级数据抓取服务。它既可以从云端也可以从内部软件中提取可伸缩的数据。
第二部分、开源数据工具

01Knime

KNIME是一个分析平台,可以帮助你分析企业数据,发现潜在的趋势价值,在市场中发挥更大潜能。KNIME提供Eclipse平台以及其他用于数据挖掘和机器学习的外部扩展。KNIME为数据分析师提供了2,000多个模块。

02OpenRefine(过去的Google Refine)是处理杂乱数据的强有力工具,可用于清理、转换、链接数据集。借助其分组功能,用户可以轻松地对数据进行规范化。

03R-Programming

R大家都不陌生,是用于统计计算和绘制图形的免费软件编程语言和软件环境。R语言在数据挖掘中很流行,常用于开发统计软件和数据分析。近年来,由于其使用方便、功能强大,得到了很大普及。

04RapidMiner

与KNIME相似,RapidMiner通过可视化程序进行操作,能够进行分析、建模等等操作。它通过开源平台、机器学习和模型部署来提高数据分析效率。统一的数据科学平台可加快从数据准备到实施的数据分析流程,极大地提高了效率。
第三部分、数据可视化工具

01

Datawrapper

Microsoft PowerBI既提供本地服务又提供云服务。它最初是作为Excel附加组件引入的,后来因其强大的功能而广受欢迎。截至目前,它已被视为数据分析领域的领头羊,并且可以提供数据可视化和商业智能功能,使用户能够以较低的成本轻松创建美观的报告或BI仪表板。

02

Solver

Solver专用于企业绩效管理 (CPM) 数据可视化。其BI360软件既可用于云端又可用于本地部署,该软件侧重于财务报告、预算、仪表板和数据仓库的四个关键分析领域。

03

Qlik

Qlik是一种自助式数据分析和可视化工具。可视化的仪表板可帮助公司有效地“理解”其业务绩效。
04

Tableau Public



Tableau是一种交互式数据可视化工具。与大多数需要脚本的可视化工具不同,Tableau可帮助新手克服最初的困难并动手实践。拖放功能使数据分析变得简单。除此之外,Tableau还提供了入门工具包和丰富的培训资源来帮助用户创建报告。

05

Google Fusion Tables

Fusion Table是Google提供的数据管理平台。你可以使用它来收集,可视化和共享数据。Fusion Table与电子表格类似,但功能更强大、更专业。你可以通过添加CSV,KML和电子表格中的数据集与同事进行协作。你还可以发布数据作品并将其嵌入到其他网络媒体资源中。

06

Infogram

Infogram提供了超过35种交互式图表和500多种地图,帮助你进行数据可视化。多种多样的图表(包括柱形图,条形图,饼形图和文字云等等)一定会使你的听众印象深刻。

第四部分、情感分析工具

01

HubSpot’s ServiceHub

HubSpot具有客户反馈工具,可以收集客户反馈和评论,然后使用自然语言处理 (NLP) 分析数据以确定积极意图或消极意图,最终通过仪表板上的图形和图表将结果可视化。你还可以将HubSpot’s ServiceHub连接到CRM系统,将调查结果与特定联系人联系起来。这样,你可以识别不满意的客户,改善服务,以增加客户保留率。

02

Semantria

Semantria是一款从各种社交媒体收集帖子、推文和评论的工具。Semantria使用自然语言处理来解析文本并分析客户的态度。通过Semantria,公司可以了解客户对于产品或服务的感受,并提出更好的方案来改善产品或服务。

03

Trackur

Trackur的社交媒体监控工具可跟踪提到某一用户的不同来源。它会浏览大量网页,包括视频、博客、论坛和图像,以搜索相关消息。用户可以利用这一功能维护公司声誉,或是了解客户对品牌和产品的评价。

04

SAS Sentiment Analysis



SAS Sentiment Analysis是一款功能全面的软件。网页文本分析中最具挑战性的部分是拼写错误。SAS可以轻松校对并进行聚类分析。通过基于规则的自然语言处理,SAS可以有效地对消息进行分级和分类。

05

Hootsuit Insight

Hootsuit Insight可以分析评论、帖子、论坛、新闻站点以及超过50种语言的上千万种其他来源。除此之外,它还可以按性别和位置对数据进行分类,使用户可以制定针对特定群体的战略营销计划。你还可以访问实时数据并检查在线对话。

第五部分、数据库

01

Oracle



毫无疑问,Oracle是开源数据库中的佼佼者,功能丰富,支持不同平台的集成,是企业的最佳选择。并且,Oracle可以在AWS中轻松设置,是关系型数据库的可靠选择。除此之外,Oracle集成信用卡等私人数据的高安全性是其他软件难以匹敌的。

02

PostgreSQL

PostgreSQL超越了Oracle、MySQL和Microsoft SQL Server,成为第四大最受欢迎的数据库。凭借其坚如磐石的稳定性,它可以处理大量数据。

03

Airtable

Airtable是基于云端的数据库软件,善于捕获和显示数据表中的信息。Airtable提供一系列入门模板,例如:潜在客户管理、错误跟踪和申请人跟踪等,使用户可以轻松进行操作。

04

MariaDB

MariaDB是一个免费的开源数据库,用于数据存储、插入、修改和检索。此外,Maria提供强大的社区支持,用户可以在这里分享信息和知识。

05

Improvado

Improvado是一种供营销人员使用自动化仪表板和报告将所有数据实时地显示在一个地方的工具。作为营销和分析领导者,如果你希望在一个地方查看所有营销平台收集的数据,那么Inprovado对你再合适不过了。你可以选择在Improvado仪表板中查看数据,也可以将其通过管道传输到你选择的数据仓库或可视化工具中,例如Tableau、Looker、Excel等。品牌,代理商和大学往往都喜欢使用Improvado,以大大节省人工报告时间和营销花费。

⑹ 常用的大数据BI工具有哪些_bi大数据是什么

1、亿信ABI

亿信ABI是亿信华辰开发的一款全能型数据分析平台。支持连接多种类型的数据源,包括:关系型数据库,分布式数据库,文件数据源,接口数据源等;也能灵活支持跨源跨库的数据分析。内置了数仓实施工具,通过拖拽式的流程设计,实现了数据抽取、清洗、转换、装载及调度。支持业务人员自助分析,拖拖拽拽就能做出数据分析。

2、Tableau

Tableau是国外比较流行的一款数据可视化工具,可视化功能很强大,对计算机的硬件要求较高,部署较复杂。支持与Matlab进行集成计算。目前在数据挖掘领域做得相对比较简单,只是内置了预测和聚类两个挖掘分析算法,但支持R语言等挖掘语言集成。

3、QlikView

QlikView比较灵活,展示样式多样。它允许设置和调整每个对象的每个小方面,并自定义可视化和仪表板的外观。QlikView数据文件(QVD文件)概念的引入,一定程度上取代了ETL工具的功能,拥有可集成的ETL(提取,转换,加载)引擎,能够执行普通的数据清理操作,但是这可能会很昂贵。

4、PowerBI

PowerBI是微软提供的一种商业分析产品,因为是微软的产品,所以它的知名度很高。在产品的功能、易用性、美观程度液凳举上都有很好的表现。这个产品的学习成本较低、上手快,因为桌面版粗岩不提供协作选项,因此最适合独立用户或在同一个办公区工作的人使用,对于有复杂业务场景需求的客户,包闹碧括有定制开发需求的客户来说,存在不小的障碍。

5、Finebi

Finebi是帆软开发的一款敏捷BI工具,帆软早期专注于传统报表的图表组件功能,以价格优势占到了不低的市场份额,作为传统报表起步的公司,在敏捷BI的冲击下市场受到了冲击并开始转向敏捷路线。Finebi做到了将IT人员从分析环节的中心淡去,提供了从数据采集到数据加工处理、数据存储、数据分析、数据可视化为一体的一站式商业智能解决方案。

关于常用的大数据BI工具有哪些,青藤小编就和您分享到这里了。如果你对大数据工程有浓厚的兴趣,希望这篇文章能够对你有所帮助。如果您还想了解更多数据分析师、大数据工程师的技巧及素材等内容,可以点击本站的其他文章进行学习。

⑺ 常见的大数据开发工具有哪些

1.Hadoop


Hadoop是一个由Apache基金会所开发的分布式体系基础架构。用户能够在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop是一个能够对很多数据进行分布式处理的软件结构。Hadoop 以一种牢靠、高效、可伸缩的方式进行数据处理。


2.Apache Hive


Hive是一个建立在Hadoop上的开源数据仓库基础设施,经过Hive能够很简略的进行数据的ETL,对数据进行结构化处理,并对Hadoop上大数据文件进行查询和处理等。 Hive供给了一种简略的类似SQL的查询言语—HiveQL,这为了解SQL言语的用户查询数据供给了便利。


3. Apache Spark


Apache Spark是Hadoop开源生态体系的新成员。它供给了一个比Hive更快的查询引擎,由于它依赖于自己的数据处理结构而不是依靠Hadoop的HDFS服务。一起,它还用于事情流处理、实时查询和机器学习等方面。


4. Keen IO


Keen IO是个强壮的移动应用分析东西。开发者只需要简略到一行代码, 就能够跟踪他们想要的关于他们应用的任何信息。开发者接下来只需要做一些Dashboard或者查询的工作就能够了。


5. Ambari


Apache Ambari是一种基于Web的东西,支撑Apache Hadoop集群的供给、管理和监控。Ambari已支撑大多数Hadoop组件,包含HDFS、MapRece、Hive、Pig、 Hbase、Zookeper、Sqoop和Hcatalog等。


6. Flume


Flume是Cloudera供给的一个高可用的,高牢靠的,分布式的海量日志搜集、聚合和传输的体系,Flume支撑在日志体系中定制各类数据发送方,用于搜集数据;一起,Flume供给对数据进行简略处理,并写到各种数据接受方(可定制)的才能。


7.MapRece


MapRece是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Rece(归约)",是它们的首要思维,都是从函数式编程言语里借来的,还有从矢量编程言语里借来的特性。它极大地便利了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式体系上。


关于常见的大数据开发工具有哪些,青藤小编就和您分享到这里了。如果您对大数据工程有浓厚的兴趣,希望这篇文章可以为您提供帮助。如果您还想了解更多关于数据分析师、大数据工程师的技巧及素材等内容,可以点击本站的其他文章进行学习。

⑻ 大数据包括什么

大数据技术伍拿庞大复杂,基础的技术包含数据的采集、数据预处理、分布式存储、NoSQL数据库、数据仓库、机器学习、并行计算、可视化等各种技术范畴和不同的技术层面。

大数据主要技术组件:Hadoop、HBase、kafka、Hive、MongoDB、Redis、Spark、Storm、Flink等。

大数据技术包括数据采集,数据管袭宏理,数据分析,数据可视化,数据安全等内容。数据的采集包括传感器采集,系统日志采集以及网络爬虫等。数据管理包括传统的数据库技术,nosql技术,以及对于针对大规模数据的大数据平台,例如hadoop,spark,storm等。数据分析的核心是机器学习,当然也包括深度学习和强化学习,以及自然语言处理腔禅搭,图与网络分析等。

⑼ 大数据开发工程师要掌握哪些技术

1. Java编程技术

Java编程技术是大数据学习的基础塌并,Java是一种强类型语言,拥有极高的跨平台能力,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等,是大数据工程师最喜欢的编程工具,因此,想学好大数据,掌握Java基础是必不陵亮可少的。

2.Linux命令

对于大数据开发通常是在Linux环境下进行的,相比Linux操作系统,Windows操作系统是封闭的操作系统,开源的大数据软件很受限制,因此,想从事大数据开发相关工作,还需掌握Linux基础操作命令。

3. Hadoop

Hadoop是大数据开发的重要框架,其核心是HDFS和MapRece,HDFS为海量的数据提供了存储,MapRece为海量的数据提供了计算,因此,需要重点掌握,除此之外,还需要掌握Hadoop集群、Hadoop集群管理、YARN以及Hadoop高级管理等相关技术与操作!

4. Hive

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapRece任务进行运行,十分适合数据仓库的统尺衫宽计分析。对于Hive需掌握其安装、应用及高级操作等。

5. Avro与Protobuf

Avro与Protobuf均是数据序列化系统,可以提供丰富的数据结构类型,十分适合做数据存储,还可进行不同语言之间相互通信的数据交换格式,学习大数据,需掌握其具体用法。

6.ZooKeeper

ZooKeeper是Hadoop和Hbase的重要组件,是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组件服务等,在大数据开发中要掌握ZooKeeper的常用命令及功能的实现方法。

关于大数据开发工程师要掌握哪些技术,小编就和您分享到这里了。

阅读全文

与大数据常用组件相关的资料

热点内容
在北京学java哪里好 浏览:825
视频文件夹怎么起名 浏览:505
mac显示文件夹 浏览:651
mac传文件到linux 浏览:661
数据结构看不懂算法怎么办 浏览:55
js给div 浏览:785
linuxmd5校验文件 浏览:770
文件名两行命名规则 浏览:347
win7看不见刻录的光盘文件夹 浏览:244
观影清单app 浏览:50
谷歌地球搜索时候连接网络失败 浏览:938
n是什么网站 浏览:149
win10提示卸载更新补丁 浏览:783
windowsxp帮助文件下载 浏览:546
linuxapache并发 浏览:455
怎么建立网络映射 浏览:635
大数据除了运营商还会有哪些领域 浏览:509
idea配置文件中文变成了十六进制 浏览:704
买图书上什么网站便宜 浏览:644
犀牛保存的文件名 浏览:768

友情链接