Apache Apex 项目简介

Apache Apex 项目简介

Apache Hadoop自诞生起已有14年了。它已成为了能让企业通过用大数据创收来转变其业务运营大数据标准平台。 Hadoop承诺能让企业无需支付高昂费用就能使用其强大的处理系统来实现大数据处理,继而实现持续的快速增长。

雅虎Hadoop工程师刚开始要解决的问题是:我们该如何建立一个高效的搜索索引功能?MapReduce编程模型正是建立在该问题和一些另外的灵感之上。尽管MapReduce是一个非常强大的模型,但是它也并不是完美的:去熟练掌握它需要一个较长的学习过程,移植已有的程序到MapReduce需要程序员把程序几乎重头再写。另一个让人担心的问题是MapReduce运用的是批量处理模式和其以“compute going to data”作为核心价值,这些问题都限制了MapReduce发挥其真正潜力。不出所料,MapReduce仅能让大数据的产品化提供了轻微的提升。不过我们也不用担心,因为很快就出现了更快的MapReduce替代模型。但和Hadoop相似,这些模型都需要深层次的专业知识而且难以熟练掌握。因为,我们可以说Hadoop变革我们对大数据进行该有的处理,但是即便是Hadoop出现了十年后,它亦只使到少量数据实现产品化。今时今日,数据正在迅速增长,我们能利用大数据的能力已经左右了我们竞争的优势,而MapReduce则某程度上阻碍了我们把业务转变到数据驱动的模式。

现在回头一看,当初在早期Hadoop取得的成功是没有人料到的。如果人们能够预料到Hadoop的成功的话,他们的问题就会变成“我们能用这些大规模的分布式资源做些什么?”而这个问题的答案就是紧接下来作为新一代Hadoop出现的YARN。YARN首次带来了让我们通过利用分布式资源处理大数据来执行“很多事情”的能力,因此,YARN超越了早期MapReduce的模式,我们也可以说它超越了批量处理和compute-going-to-data模式。YARN向我们展现了其不仅能允许我们处理大容量的数据,而且亦能处理更广泛的应用范例,这些都能推动Hadoop去实现它的真正潜力。Hadoop所面临的困境,我们可以用一个手机的例子来描述。手机的出现让固定电话收到了冲击,但并没有马上造成很大的轰动,直至手机转变为现在的智能手机并带有许多令人惊叹的功能。可以肯定的是YARN能够使大数据做到更大更广,有了它,Hadoop 2.x才算是真正意义上的分布式操作系统。

我们需要的是最前沿的以YARN为基础的,有能力去实现Hadoop全部的潜力的平台。

现在正是我们不仅产品化大数据,并且让其运作而确保实现更大的商业目标的最好时机。这是一项艰巨的任务,所以需要一个易于部署,无需超出日常的专业IT知识,可以毫不费力地和现有的IT基础设施整合,又能保证软件能够轻松移植的平台。新时代的Hadoop平台在设计时就需要考虑到能够提供帮助缩短软件从研发到上市的生命周期,从而让企业更早实现营收的方法。同时这些平台亦要能够缩短开发者开发和devOps运维软件所需时间,并最终缩短洞察业务所需时间。这样的平台都会需要去学习,适应和改变去满足大数据世界的新兴需求。

让我们看看要建立这样的平台最重要的几条准则:

  • 简单且专业
充分理解大数据是非常困难的,但是我们可以做到保持平台简单,无需要深厚的专业知识,同时保证能提供轻松迁移。我们的重点应该放在运用同样的专业知识来获得更多,去实现这目标主要有两个方向,一是简单的工作流程,二是简单的API。简单的API能够使我们与Hadoop生态系统交流时无需对代码做大范围改动,因此这能令到其平台变得可行,同时足以满足不断增长的数据需求。智能电话没有为了加入新功能而产生过多的负担,大数据也同样不应该出现这样的情况。我们的座右铭必须是“是开放的,有简单的API ,而且维持平台的简易性”。简而言之,平台必须允许用户自定义函数(UDF)来利用其全部功能,而且业务逻辑应该只能是用户自定义函数,仅此而已。
  • 代码重用
代码重用不仅意味着在单个流式程序内重用个别代码,而且应该在任何地方都能重用,无论是在批量处理或者流处理任务内。大数据平台应该能够熟练地处理批量处理或者流处理任务,并同时让用户能够按照他们写的样子,不用再做修改就能使用他们写的代码。这就是为什么平台需要用到能够统一流和批量处理的动态数据架构的原因。一个能够处理无界数据的平台能够轻松地处理有界数据,而且,有了数据流动(data-in-motion)架构,结果可以被几近瞬间处理,因此大大减少实现业务持续性的时间和成本。
  • 可维护性
在大数据里,功能开发的成本最多去到百分之二十,而运作成本则至少需要占到总成本的百分之八十。当我还在雅虎的时候,无论是雅虎Hadoop还是雅虎财经,我们都得花费百分之八十以上的资源在运行任务上。一个理想的平台应该原生支持软件运行,而并不会在稍后打断软件的运行。企业应该只需把精力集中在业务逻辑,因为那是他们理解得最为透彻的东西,运行任务并不是他们的核心专业,因此理应把这些“外包”给平台,也正是因为这样,平台的运行必须能使用户定义的业务逻辑代码顺利运行,这样的话我们就能使一个平台能满足多种独特的商业需要。迫使用户去写有关运行方面的代码将间接导致大数据项目的失败。
  • 易整合且易使用
这些因素对一个大数据项目的成功有直接的影响。大数据项目不是孤立的系统,这就是为什么平台应该能与当前的数据流架构轻易地融为一体。目前,缺乏这样的轻易整合是Hadoop生态系统的一个大问题,为了解决这个问题,我们应该确保该平台可以读取和写入所有数据源/目标。此外,维护,管理,和监测平台必须做到简单容易,无需付出特殊的努力。
  • Hadoop原生支持
最后,新时代的大数据平台应该做到能够意识到Hadoop已有的投入。Hadoop生态系统的核心(HDFS,YARN)正在快速成熟,一个新的平台应该是YARN原生的,能够利用所有Hadoop已有的成熟特性,特别是YARN。当YARN继续变成熟时,它亦会继续提高正常运行时间,容错(fault tolerance),安全性(security),多重租赁(multi-tenancy)等等。YARN原生平台的支持和开发成本将会比非YARN原生平台的要低很多。而更多的YARN原生功能则将能减少数据簇(cluster)的使用,意味着更高的运行性能。

大数据技术带来了很多革命性的承诺, 而Apache Apex恰恰是业界第一个兑现承诺的YARN原生引擎。

因为大数据的庞大使其很难被从整体上去进行设想,平台必须能够成为通过批量或者流或者两者兼有的模式去推动数据处理需要的基础。Apache Apex是业内第一个既能够处理批量数据也能够处理流数据的开源企业级引擎,它能为在高度数据密集型环境中运营的企业做好准备去驱动业务到实现最大价值。

以下是为什么我们说Apache Apex是一个能把大数据项目带向成功的解决方案的原因:

  • 简单且专业
Apache Apex的API非常简单。每一个应用程序都能用一个由若干个算子(operator)组成的有向无环图(DAG)来表示。算子开发员只需要实现一个简单的“process()”调用即可。这个API能够允许用户插入任何的函数(包括自定义函数)去处理输入的事件。单线程执行和应用级JAVA专业知识是Apache Apex能够让大数据团队在数周内开发出自己的应用程序,并只需三个月就能开始运行的最大两个原因。Apex不仅非常容易进行部署和定制,而且用户获取能使他们运用全部Apex功能的专业知识也非常简单。
  • 代码重用
开发者仅需进行少量的培训就足以在Apache Apex上开发大数据应用程序。并且,他们并不需要对他们的企业逻辑进行明显的改动,只需在他们原有的代码上进行少量改动即可。把功能规范与运行规范完全分离大大地增加了代码重用的可能性。此外,Apex可以让用户自定义可重用模块,这也能让相同的业务逻辑用在流或者批量处理分析上。Apex是动态数据平台,它能允许整合统一处理两种不同的数据:永无休止的无界数据(流任务),和文件内的有界数据(批量任务)。不同的企业或组织能根据自己的企业逻辑来开发不同的应用程序,然后把这些应用程序扩展到流任务或者批量任务。Apache Apex架构能从消息队列系统,文件系统,数据库和其他任何数据源,只要这数据源有能在JVM中运行的客户端进行读写。因此Apache Apex能与这些I/O进行无缝整合。
  • 可运行性
从动态数据平台的角度来看,拥有文件读取是必须的能力,但是却还远远不够,它还必须达到企业运行服务等级协议(SLA)要求。Apex正是为了增强运行性而开发的,从而使在Apex上开发的应用程序仅需要考虑自己的业务逻辑。至于原生容错能力,Apex能保证没有数据丢失,它会备份元数据,同时也会把应用程序的当前配置保留在HDFS(一种持久性储存方式),企业亦能自行选择其他的带有DFS接口的持久性储存方式。对于Apex来说,容错性是Hadoop原生自带的,并不需要其他外部的附加系统来保存当前配置,也不需要用户去写额外的代码。Apex应用程序能从Hadoop运行中断里,通过最后一次保存在HDFS的系统状态来进行恢复。我们可以在同一个Hadoop集群里轻松运行两个不同版本的Apex运用程序,还可以在运行时动态地改变正在运行的程序。应用程序也可以被很轻松地运行和升级。当程序开始运行以后,Apex不会再产生新的调度负担,除非该程序或者YARN需要改变资源的分配。Apex的内置动态数据构造令到其在每一个单核上每秒能处理数百万件事件。所以我们说Apex是一个易用,高度可扩展,同时又拥有与Hadoop相同的安全标准的平台。
  • 集成与易用性
Apex平台自带Web Service 接口用于监控运行程序的各种状态。这使其易于与当前数据管道组件进行集成。DevOps团队仅需进行轻微改动,即可利用已提供的系统和主控面板检测动态数据,所以说能够轻松与现有的设置进行整合。Apex现已有很多不同的连接器去连接不同的数据流,而且加入更多的连接器也是十分轻松的事,所以我们说Apex能够轻易地与现有的数据流进行整合集成。
  • 原生支持Hadoop
作为一个原生YARN动态大数据平台,Apex能够利用已有的分布式操作系统,而不是另外建立一个全新的系统。就和MapReduce一样,有几样东西是Apex没有的:资源管理调度器,分布式文件系统,安全设置,和一些系统内共用的实用工具。Apex利用了所有YARN的功能而且并没有加入与YARN出现重叠的新功能,同时Apex默认HDFS为它的持续储存设备用于存储程序运行时的元数据。所有在Hadoop上已有的投入,无论是专业知识,硬件,整合,都被利用到Apex里面。而日渐成熟的YARN将会使Apex成为一个完全成熟的,能够处理巨大容量的数据的,同时又能控制运行成本的平台。
  • 算字库Malhar
Apex本身自带Malhar算子(operator)库。这些预建的算子能读入或输出数据到时下流行的消息队列系统,文件系统和数据库,加快用户开发的进度,大大减少软件上市所需时间,也让用户能成功开发和发动大数据项目。

更多相关链接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是Apache Kafka项目的链接: 官方网站:https://kafka.apache.org/ GitHub仓库:https://github.com/apache/kafka 文档:https://kafka.apache.org/documentation/ Javadoc API文档:https://kafka.apache.org/25/javadoc/index.html Kafka社区:https://community.apache.org/projects/kafka.html ### 回答2: Apache Kafka是一个分布式流处理平台,由LinkedIn公司开发并捐赠给Apache软件基金会。它主要用于高吞吐量、可扩展性和持久性的数据传输,适用于构建实时数据管道和流式应用程序。 Apache Kafka的项目链接位于其官方网站https://kafka.apache.org/。在这个链接中,可以找到关于Apache Kafka的所有相关信息,包括官方文档、API参考、社区讨论、开发工具等。 该链接提供了Apache Kafka的下载页面,用户可以从这里获取最新版本的Apache Kafka二进制文件。此外,还提供了详细的安装说明和配置指南,以帮助用户正确地安装和配置Apache Kafka。 在Apache Kafka的项目链接中,还可以找到全面的文档,涵盖了从基本概念到高级主题的所有内容。这些文档包括简介、架构、生产者和消费者API、数据保留策略、数据复制和容错机制等。这些文档是学习和理解Apache Kafka的重要指导。 此外,Apache Kafka的项目链接还提供了用于开发和管理Kafka集群的工具和技术。例如,与Apache Kafka集成的Kafka Connect和Kafka Streams可以帮助用户构建复杂的数据流处理应用程序。而Kafka Manager和Kafka Monitor等工具则可用于管理和监控Kafka集群。 另外,在该链接中,还可以找到Apache Kafka社区的相关信息,包括邮件列表、讨论论坛、问题跟踪和代码库等。这些社区资源可以帮助用户与其他开发者交流,并获取有关Apache Kafka的支持和建议。 总而言之,Apache Kafka的项目链接提供了全面的资源和信息,可以帮助用户深入了解、学习和使用Apache Kafka。无论是从事流式数据处理的开发者,还是对实时数据传输和处理感兴趣的用户,都可以从中获得所需的帮助和指导。 ### 回答3: Apache Kafka 是一个开源的分布式流处理平台和消息队列系统。它由 LinkedIn 公司于2010年开发,并于2011年贡献给 Apache 软件基金会。Kafka 被设计为高吞吐量、低延迟的实时数据管道,能够处理大规模的消息和数据流。 Kafka 的设计理念是将数据流分为多个主题(topics)和分区(partitions),并将它们分布在一个或多个 Kafka 服务器集群上。每个主题包含一个或多个分区,每个分区可以有多个生产者(producer)和消费者(consumer)。生产者负责将消息发布到 Kafka 集群,而消费者则从特定分区读取消息。 Kafka 的一个重要特点是其可扩展性。通过将主题和分区分散在多个服务器上,Kafka 可以处理海量的数据流,并能够水平扩展以适应不断增长的负载。此外,Kafka 具有高可靠性和持久性,它可以保证数据在写入和读取过程中不会丢失,并支持数据备份和副本以防止数据丢失。 Kafka 提供了丰富的 API,支持多种编程语言和开发框架。用户可以使用 Kafka 的 API 来实现各种实时数据处理场景,如数据传输、事件日志、流处理和实时分析等。Kafka 还与其他大数据平台和工具集成紧密,如 Apache Hadoop、Apache Spark 和 Apache Storm 等。 总之,Apache Kafka 是一个高性能、可扩展和可靠的消息队列系统和流处理平台,被广泛应用于大数据和实时数据处理领域。通过使用 Kafka,用户可以构建高效、实时的数据管道,并实现实时的数据流处理和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值