大数据平台
- 133 次浏览
「大数据」Apache大数据项目目录
在使用BigData大约8年以上之后,我遇到了大量的项目。 Esp Apache的运动对于BigData域非常强大。每个人都会提出一个针对特定解决方案的项目。但是,由于有这么多项目出现,我找不到一个可以查看它们的地方。所以,这就是这个页面背后的灵感。一站式,查看所有Apache BigData项目。当然,这个页面需要不断更新。如果您发现任何项目缺失,请发表评论
我同意一个大的列表(43个以上的项目),但这就是能够进行BigData处理的项目的范围。此外,可能有多个项目符合您的要求。关键是要确定哪些最适合您的要求与给定的硬件。
注意:如果您遇到一些Apache BigData项目但未在此处提及的项目,请发表评论。我将检查并将它们添加到此列表中。
1 Apache Airavata
Apache Airavata是一个框架,支持在基于网格的系统,远程集群和基于云的系统中执行和管理计算科学应用程序和工作流。 Airavata的主要重点是在基于网格的系统中提交和管理应用程序和工作流程。 Airavata的架构也可扩展,以支持其他底层资源。传统的科学应用程序为用户提供了一个门户,可以提交和管理被称为科学网关的科学应用程序。 Airavata可以被科学网关开发人员用作他们的中间件层。他们可以直接调用airavata API,以便与基于网格的系统进行通信。
2 Apache Airflow(Incubating)
Airflow是一个以编程方式创作,安排和监控工作流程的平台。
使用气流将工作流作为任务的有向非循环图(DAG)。气流调度程序在遵循指定的依赖关系的同时在一组工作程序上执行您的任务。
3 Apache Ambari
Apache Ambari是一个用于配置,管理和监控Apache Hadoop集群的工具。 Ambari包含一组RESTful API和基于浏览器的管理界面。
4 Apache Apex
Apache Apex是一个用于大数据流和批处理的统一平台。用例包括摄取,ETL,实时分析,警报和实时操作。 Apex是Hadoop本地YARN实现,默认使用HDFS。它通过缩短上市时间简化了Hadoop应用程序的开发和产品化。主要功能包括具有容错的企业级可操作性,状态管理,事件处理保证,无数据丢失,内存中性能和可伸缩性以及本机窗口支持。
5 Apache Avro
Apache Avro™是一种数据序列化系统。
Avro提供:
丰富的数据结构。
紧凑,快速的二进制数据格式。
容器文件,用于存储持久数据。
远程过程调用(RPC)。
与动态语言的简单集成。不需要代码生成来读取或写入数据文件,也不需要使用或实现RPC协议。代码生成作为可选优化,仅值得为静态类型语言实现。
6 Apache Arrow
为列式内存分析提供支持。它是一种新格式,可以在BigData生态系统中以统一的方式使用。利用最新的硬件(如SIMD)以及软件(柱状)增强功能,并在整个生态系统中提供统一的标准
7 Apache Beam
Apache Beam是一种用于批处理和流数据处理的统一编程模型,可以跨多种分布式执行引擎高效执行,并提供可扩展点,以连接到不同的技术和用户社区。
8 Apache Bigtop
Bigtop是一个用于开发Apache Hadoop生态系统的打包和测试的项目。 Bigtop的主要目标是围绕Hadoop相关项目的打包和互操作性测试构建社区。这包括在社区开发的各个级别(包装,平台,运行时,升级等)进行测试,重点是整个系统,而不是单个项目。简而言之,我们努力为Hadoop提供Debian对Linux的支持。
9 Apache BookKeeper
BookKeeper是一种可靠的复制日志服务。它可用于将任何独立服务转换为高可用性复制服务。 BookKeeper具有高可用性(无单点故障),并且随着更多存储节点的添加而水平扩展。
10 Apache Calcite
Calcite是一个用于编写数据管理系统的框架。它使用可插入的查询转换规则将在关系代数中表示的查询转换为高效的可执行形式。有一个可选的SQL解析器和JDBC驱动程序。 Calcite不存储数据或具有首选执行引擎。数据格式,执行算法,规划规则,运算符类型,元数据和成本模型在运行时作为插件添加。
11 Apache Chukwa
Chukwa是一个用于监控大型分布式系统的开源数据收集系统。 Chukwa构建于Hadoop分布式文件系统(HDFS)和Map / Reduce框架之上,并继承了Hadoop的可扩展性和健壮性。 Chukwa还包括一个灵活而强大的工具包,用于显示,监控和分析结果,以充分利用收集的数据。
12 Apache CouchDB
Apache CouchDB是一个完全包含Web的数据库。使用JSON文档存储数据。使用Web浏览器通过HTTP访问您的文档。使用JavaScript查询,组合和转换文档。 Apache CouchDB适用于现代Web和移动应用程序。您甚至可以直接从Apache CouchDB中提供Web应用程序。您可以使用Apache CouchDB的增量复制有效地分发您的数据或应用程序。 Apache CouchDB支持具有自动冲突检测的主 - 主设置。
13 Apache Crunch
Apache Crunch Java库提供了一个用于编写,测试和运行MapReduce管道的框架。它的目标是使由许多用户定义函数组成的流水线易于编写,易于测试和高效运行。
Apache Crunch™库运行在Hadoop MapReduce和Apache Spark之上,是一个简单的Java API,用于加入和数据聚合等在平面MapReduce上实现繁琐的任务。在处理不适合关系模型的数据时,API尤其有用,例如时间序列,序列化对象格式(如协议缓冲区或Avro记录)以及HBase行和列。对于Scala用户,有Scrunch API,它基于Java API构建,并包含用于创建MapReduce管道的REPL(读取 - 评估 - 打印循环)。
14 Apache DataFu(孵化)
Apache DataFu由两个库组成:Apache DataFu Pig是Apache Pig中用于数据分析的有用的用户定义函数的集合。
Apache DataFu Hourglass是一个使用Apache Hadoop MapReduce逐步处理数据的库。该库的灵感来自于对日常跟踪数据的滑动窗口计算的预测。诸如这些的计算通常以规则的间隔(例如,每天,每周)发生,因此计算的滑动性质意味着大部分工作被不必要地重复。创建DataFu的沙漏是为了使这些计算更有效,有时可以减少50-95%的计算资源。
15 Apache DirectMemory(在Attic中)
Apache DirectMemory是Java虚拟机的堆外缓存
16 Apache Drill
Apache Drill是一个分布式MPP查询层,支持针对NoSQL和Hadoop数据存储系统的SQL和替代查询语言。它的灵感部分来自谷歌的Dremel。
17 Apache Edgent(孵化)
Apache Edgent是一种编程模型和微内核样式运行时,可嵌入网关和小型边缘设备中,实现对来自设备,车辆,系统的连续数据流的本地实时分析,各种器具,设备和传感器(例如,覆盆子Pis或智能手机)。 Apache Edgent与集中分析系统配合使用,可在整个物联网生态系统中提供高效,及时的分析:从中心到边缘。
18 Apache Falcon
Apache Falcon是Hadoop的数据处理和管理解决方案,专为数据移动,数据管道协调,生命周期管理和数据发现而设计。 Falcon使最终消费者能够在Hadoop集群上快速加载其数据及其相关的处理和管理任务。
19 Apache Flink
Flink是一个用于表达,声明,快速和高效数据分析的开源系统。它将分布式MapReduce类平台的可扩展性和编程灵活性与并行数据库中的效率,核外执行和查询优化功能相结合。
20 Apache Flume
Apache Flume是一个分布式,可靠且可用的系统,用于有效地从许多不同的源收集,聚合和移动大量日志数据到集中式数据存储
21 Apache Giraph
Apache Giraph是一个为高可扩展性而构建的迭代图形处理系统。例如,它目前在Facebook上用于分析用户及其连接形成的社交图。
22 Apache Hadoop
Apache™Hadoop®项目开发了用于可靠,可扩展的分布式计算的开源软件。
23 Apache Hama
Apache Hama是一种高效且可扩展的通用BSP计算引擎,可用于加速各种计算密集型分析应用程序。
24 Apache HAWQ
Apache HAWQ是一个Hadoop本机SQL查询引擎,它结合了MPP数据库的关键技术优势和Hadoop的可扩展性和便利性。
25 Apache Helix
Apache Helix是一个通用的集群管理框架,用于自动管理节点集群上托管的分区,复制和分布式资源。 Helix在面对节点故障和恢复,集群扩展和重新配置时自动重新分配资源。
26 Apache Ignite
Apache Ignite内存数据结构旨在为从高性能计算到业界最先进的数据网格,内存中SQL,内存文件系统的各种内存计算用例提供无与伦比的性能,流式传输等。
27 Apache Kafka
单个Kafka代理可以处理来自数千个客户端的每秒数百兆字节的读写操作。 Kafka旨在允许单个群集充当大型组织的中央数据主干。它可以弹性和透明地扩展,无需停机。数据流被分区并分布在一组机器上,以允许数据流大于任何一台机器的能力,并允许协调的消费者群集。 Kafka采用现代以集群为中心的设计,提供强大的耐用性和容错保证。消息将保留在磁盘上并在群集中进行复制,以防止数据丢失。每个代理都可以处理数TB的消息,而不会影响性能。
28 Apache Knox
Apache Knox Gateway是一个REST API网关,用于与Hadoop集群进行交互。
Knox Gateway为所有与Hadoop集群的REST交互提供单一访问点。
在这种能力下,诺克斯网关能够提供有价值的功能来帮助控制,
集成,监控和自动化企业的关键管理和分析需求。
身份验证(LDAP和Active Directory身份验证提供程序)联合/ SSO(基于HTTP标头的身份联合)授权(服务级别授权)审核虽然不安全的Hadoop群集有许多好处,
Knox Gateway也很好地补充了kerberos安全集群。
加上Kerberos安全Hadoop集群的正确网络隔离,
Knox Gateway为企业提供以下解决方案:
与企业身份管理解决方案完美集成保护Hadoop集群部署的详细信息(主机和端口对最终用户隐藏)简化客户端与之交互所需的服务数量
29 Apache Kudu
Kudu提供快速插入/更新和高效柱状扫描的组合,可在单个存储层上实现多个实时分析工作负载。
30 Apache Lens
Lens提供统一分析界面。 Lens旨在通过提供跨多个分层数据存储的单一数据视图和分析查询的最佳执行环境来削减数据分析孤岛。它将Hadoop与传统数据仓库无缝集成,看起来就像一个。
31 Apache MetaModel
使用MetaModel,您可以获得许多非常不同的数据存储类型的统一连接器和查询API,包括:关系(JDBC)数据库,CSV文件,Excel电子表格,XML文件,JSON文件,固定宽度文件,MongoDB,Apache CouchDB,Apache HBase,Apache Cassandra,ElasticSearch,OpenOffice.org数据库,Salesforce.com,SugarCRM甚至普通旧Java对象(POJO)的集合。
MetaModel不是数据映射框架。相反,它强调元数据的抽象和在运行时添加数据源的能力,使MetaModel非常适用于通用数据处理应用程序,对于围绕特定域建模的应用程序则更少。
32 Apache Metron
Apache Metron提供可扩展的高级安全分析框架,该框架使用从Cisco OpenSOC项目演变而来的Hadoop社区构建。一种网络安全应用程序框架,使组织能够检测网络异常并使组织能够快速响应已识别的异常情况。
33 Apache Oozie
Oozie是一个用于管理Apache Hadoop作业的工作流程调度程序系统。 Oozie与Hadoop堆栈的其余部分集成,支持多种类型的Hadoop作业(例如Java map-reduce,Streaming map-reduce,Pig,Hive,Sqoop和Distcp)以及系统特定的工作(例如Java程序和shell脚本)。
34 Apache ORC
ORC是一种自描述类型感知的列式文件格式,专为Hadoop工作负载而设计。它针对大型流式读取进行了优化,但具有快速查找所需行的集成支持。以列式格式存储数据使读者只能读取,解压缩和处理当前查询所需的值。
35 Apache Parquet
Apache Parquet是一种通用的列式存储格式,专为Hadoop而构建,可与任何数据处理框架,数据模型或编程语言一起使用。
36 Apache Phoenix
Apache Phoenix通过提供利用Apache HBase作为其后备存储的关系数据库层,为Apache Hadoop提供OLTP和运营分析。它包括与Apache Spark,Pig,Flume,Map Reduce以及Hadoop生态系统中的其他产品的集成。它作为JDBC驱动程序访问,并允许通过标准SQL查询,更新和管理HBase表。
37 Apache REEF
Apache REEF(可保留评估程序执行框架)是一个开发框架,它提供了一个控制平面,用于调度和协调从资源管理器获取的集群资源的任务级(数据平面)工作。 REEF提供了促进数据缓存资源重用的机制,以及状态管理抽象,极大地简化了支持Resource Manager服务的云平台上弹性数据处理工作流的开发。
38 Apache Samza
Apache Samza提供了一个系统,用于处理来自Apache Kafka等发布 - 订阅系统的流数据。开发人员编写流处理任务,并将其作为Samza作业执行。然后,Samza在流处理任务和消息所针对的发布 - 订阅系统之间路由消息。
39 Apache Spark
Apache Spark是一种用于大规模数据处理的快速通用引擎。它提供Java,Scala和Python中的高级API以及丰富的库,包括流处理,机器学习和图形分析。
40 Apache Sqoop
Apache Sqoop(TM)是一种工具,用于在Apache Hadoop和结构化数据存储(如关系数据库)之间高效传输批量数据。
41 Apache Storm
Apache Storm是一个分布式实时计算系统。类似于Hadoop如何提供一组用于进行批处理的通用基元,Storm提供了一组用于进行实时计算的通用基元。
42 Apache Tajo
Apache Tajo项目的主要目标是在Hadoop中构建一个高级开源数据仓库系统,用于处理Web规模的数据集。基本上,Tajo提供SQL标准作为查询语言。 Tajo专为存储在HDFS和其他数据源上的数据集进行交互式和批量查询而设计。在不损害查询响应时间的情况下,Tajo提供了容错和动态负载平衡,这是长时间运行查询所必需的。 Tajo采用基于成本的渐进式查询优化技术来重新优化运行查询,以避免最糟糕的查询计划。
43 Apache Tez
Apache Tez致力于开发通用应用程序框架,该框架可用于处理数据处理任务的任意复杂的有向无环图(DAG),以及可用于可重用的一组数据处理原语。通过其他项目。它目前在Apache Hadoop YARN上面构建。
44 Apache VXQuery
Apache VXQuery将是一个用Java实现的符合标准的XML查询处理器。重点是评估对大量XML数据的查询。具体而言,目标是评估大型相对较小的XML文档集合上的查询。为了实现此目的,将在无共享机器的集群上评估查询。
45 Apache Zeppelin
Zeppelin是一个基于Web的现代工具,供数据科学家在大规模数据探索和可视化项目上进行协作。
- 159 次浏览
【大数据平台】大数据平台 HDP2.5.3遇到的坑:配置篇
Kafka
Flume:
sourceAgent.channels = logCh kafkaCh
sourceAgent.sources = sourceDataSource
sourceAgent.sinks = logSink kafkaSink
sourceAgent.channels.kafkaCh.type = memory
sourceAgent.channels.kafkaCh.capacity = 1000000
sourceAgent.channels.kafkaCh.transactionCapacity = 1000000
sourceAgent.channels.kafkaCh.keep-alive = 10
sourceAgent.channels.logCh.type = memory
sourceAgent.channels.logCh.capacity = 1000000
sourceAgent.channels.logCh.transactionCapacity = 1000000
sourceAgent.channels.logCh.keep-alive = 10
sourceAgent.sources.sourceDataSource.type = org.apache.flume.source.http.HTTPSource
sourceAgent.sources.sourceDataSource.bind= 172.21.9.74
sourceAgent.sources.sourceDataSource.port = 30001
sourceAgent.sources.sourceDataSource.channels = logCh kafkaCh
sourceAgent.sinks.logSink.channel = logCh
sourceAgent.sinks.logSink.type = logger
sourceAgent.sinks.kafkaSink.channel = kafkaCh
sourceAgent.sinks.kafkaSink.type = org.apache.flume.sink.kafka.KafkaSink
sourceAgent.sinks.kafkaSink.topic = icestone-gateway-event-topic
sourceAgent.sinks.kafkaSink.brokerList =172.21.9.70:6667,172.21.9.72:6667,172.21.9.73:6667,172.21.9.74:6667
sourceAgent.sinks.kafkaSink.flumeBatchSize = 20
sourceAgent.sinks.kafkaSink.producer.acks = 1
sourceAgent.sinks.kafkaSink.producer.linger.ms = 1
sourceAgent.sinks.kafkaSink.producer.compression.type = none
HDFS
YARN
Hbase
Oozie
Spark
MR2
- 17 次浏览
【大数据系列】:Apache Hive 分布式数据仓库项目介绍
Apache Hive™数据仓库软件有助于读取,编写和管理驻留在分布式存储中的大型数据集并进行查询
使用SQL语法。
Hive 特性
Hive构建于Apache Hadoop™之上,提供以下功能:
- 通过SQL轻松访问数据的工具,从而实现数据仓库任务,如提取/转换/加载(ETL),报告和数据分析。
- 一种在各种数据格式上强加结构的机制
- 访问直接存储在Apache HDFS™或其他数据存储系统(如Apache HBase™)中的文件
- 通过Apache Tez™,Apache Spark™或MapReduce执行查询
- 使用HPL-SQL的过程语言
- 通过Hive LLAP,Apache YARN和Apache Slider进行亚秒级查询检索。
Hive提供标准的SQL功能,包括许多后来的SQL:2003和SQL:2011分析功能。
Hive的SQL也可以通过用户定义的函数(UDF),用户定义的聚合(UDAF)和用户定义的表来扩展用户代码
函数(UDTF)。
没有唯一的“Hive格式”存储数据。 Hive附带内置连接器,用于逗号和制表符分隔值(CSV/ TSV)文本文件,Apache Parquet™,Apache ORC™和其他格式。
用户可以使用其他格式的连接器扩展Hive。有关详细信息,请参阅开发人员指南中的File Formats和Hive SerDe。
Hive不适用于联机事务处理(OLTP)工作负载。它最适用于传统的数据仓库任务。
Hive旨在最大限度地提高可伸缩性(通过向Hadoop集群动态添加更多计算机来扩展),性能,可扩展性,容错,与输入格式松散耦合。
Hive的组件包括HCatalog和WebHCat。
HCatalog是Hive的一个组件。它是Hadoop的表和存储管理层,使用户可以使用不同的数据
- 处理工具 - 包括Pig和MapReduce - 可以更轻松地在网格上读写数据。
- WebHCat提供的服务可用于运行Hadoop MapReduce(或YARN),Pig,Hive作业或执行Hive元数据使用HTTP(REST样式)接口的操作。
Hive 使用
Hive SQL语言手册:命令,CLI,数据类型,
DDL(创建/删除/更改/截断/显示/描述),统计(分析),索引,存档,
DML(加载/插入/更新/删除/合并,导入/导出,解释计划),
查询(选择),运算符和UDF,锁,授权
文件格式和压缩:RCFile,Avro,ORC,Parquet; 压缩,LZO
程序语言:Hive HPL / SQL
Hive配置属性
HIve 客户端
- Hive客户端(JDBC,ODBC,Thrift)
- HiveServer2:HiveServer2客户端和直线,Hive指标
Hive Web界面
Hive SerDes:Avro SerDe,Parquet SerDe,CSV SerDe,JSON SerDe
Hive Accumulo集成
Hive HBase集成
Druid整合
Hive Transactions,Streaming Data Ingest和Streaming Mutation API
Hive 计数器
Hive 管理
安装Hive
配置Hive
设置Metastore
Hive Schema Tool
设置Hive Web界面
设置Hive服务器(JDBC,ODBC,Thrift,HiveServer2)
Hive复制
Hive on Amazon Web Services
Amazon Elastic MapReduce上的Hive
Hive on Spark
- 42 次浏览
【大数据系列】:Apache zeppelin 多目标笔记本
多功能笔记本
笔记本是满足您所有需求的地方
- 数据摄取
- 数据发现
- 数据分析
- 数据可视化与协作
支持多语言后端
Apache Zeppelin解释器概念允许将任何语言/数据处理后端插入Zeppelin。 目前Apache Zeppelin支持许多解释器,如Apache Spark,Python,JDBC,Markdown和Shell。
添加新的语言后端非常简单。 了解如何创建自己的解释器。
Apache Spark集成
特别是,Apache Zeppelin提供内置的Apache Spark集成。 您不需要为它构建单独的模块,插件或库。
Apache Zeppelin与Spark集成提供
- 自动SparkContext和SQLContext注入
- 从本地文件系统或maven存储库加载运行时jar依赖项。 详细了解依赖加载器。
- 取消作业并显示其进度
有关Apache Zeppelin中Apache Spark的更多信息,请参阅Apache Zeppelin的Spark解释器。
数据可视化
Apache Zeppelin中已包含一些基本图表。 可视化不仅限于Spark SQL查询,任何语言后端的任何输出都可以被识别和可视化。
数据透视图
Apache Zeppelin聚合值并通过简单的拖放将其显示在数据透视表中。 您可以轻松创建包含多个聚合值的图表,包括总和,计数,平均值,最小值,最大值。
了解有关Apache Zeppelin中显示系统的更多信息。
动态表格
Apache Zeppelin可以在笔记本中动态创建一些输入表单。
详细了解动态表单。
通过分享您的笔记本和段落进行协作
您的笔记本网址可以在协作者之间共享。 然后,Apache Zeppelin将实时广播任何变化,就像Google文档中的协作一样。
Apache Zeppelin提供了一个仅显示结果的URL,该页面不包含笔记本内的任何菜单和按钮。 您可以通过这种方式轻松地将其作为iframe嵌入到您的网站中。 如果您想了解有关此功能的更多信息,请访问此页面。
100%开源
Apache Zeppelin是Apache2 Licensed软件。 请查看源存储库以及如何贡献。 Apache Zeppelin拥有一个非常活跃的开发社区。 加入我们的邮件列表并报告有关Jira Issue跟踪器的问题。
- 64 次浏览
【大数据系列】Apache NIFI:大数据处理和分发系统
什么是Apache NiFi?
简单地说,NiFi就是为了实现系统间数据流的自动化而构建的。虽然术语“数据流”用于各种上下文,但我们在此处使用它来表示系统之间的自动和管理信息流。这个问题空间一直存在,因为企业有多个系统,其中一些系统创建数据,一些系统消耗数据。已经讨论并广泛阐述了出现的问题和解决方案模式。企业集成模式[eip]中提供了一个全面且易于使用的表单。
数据流的一些高级别挑战包括:
系统失败
网络故障,磁盘故障,软件崩溃,人们犯错误。
数据访问超出了消耗能力
有时,给定的数据源可能会超过处理链或交付链的某些部分 - 只需要一个弱链接就会出现问题。
边界条件仅仅是建议
您将总是获得太大,太小,太快,太慢,损坏,错误或格式错误的数据。
噪音有一天成为下一个信号
组织的优先事项 - 迅速改变。启用新流程和更改现有流程必须快速。
系统以不同的速度发展
给定系统使用的协议和格式可以随时改变,而不管它们周围的系统如何。存在数据流以连接本质上是大规模分布的组件系统,这些组件松散地或根本不设计为一起工作。
合规性和安全性
法律,法规和政策发生变化。企业对企业协议的变化。系统到系统和系统到用户的交互必须是安全的,可信的,负责任的。
生产中持续改进
通常不可能在实验室中复制生产环境。
多年来,数据流一直是架构中必不可少的证据之一。现在虽然有许多活跃且快速发展的运动,但数据流更有趣,对于特定企业的成功更为重要。这些包括:面向服务的体系结构[soa],API [api] [api2],物联网[iot]和大数据[bigdata]的兴起。此外,合规性,隐私性和安全性所需的严格程度也在不断提高。即使仍然存在所有这些新概念,数据流的模式和需求仍然大致相同。然后,主要区别在于复杂性的范围,适应所需的变化率,以及大规模边缘情况变得普遍。 NiFi旨在帮助解决这些现代数据流挑战。
特征
Apache NiFi支持强大且可扩展的数据路由,转换和系统中介逻辑的有向图。 Apache NiFi的一些高级功能和目标包括:
基于Web的用户界面
- 设计,控制,反馈和监控之间的无缝体验
高度可配置
- 容忍损失与保证交付
- 低延迟与高吞吐量
- 动态优先级
- 可以在运行时修改流程
- 背压
数据来源
- 从头到尾跟踪数据流
专为扩展而设计
- 构建自己的处理器等等
- 实现快速开发和有效测试
安全
- SSL,SSH,HTTPS,加密内容等......
- 多租户授权和内部授权/策略管理
NiFi的核心概念
NiFi的基本设计概念与基于流程编程的主要思想密切相关[fbp]。以下是一些主要的NiFi概念以及它们如何映射到FBP:
此设计模型也类似于[seda],提供了许多有益的结果,有助于NiFi成为构建功能强大且可扩展的数据流的非常有效的平台。其中一些好处包括:
- 适用于处理器有向图的可视化创建和管理
- 本质上是异步的,即使在处理和流量波动时也允许非常高的吞吐量和自然缓冲
- 提供高度并发的模型,而开发人员不必担心并发的典型复杂性
- 促进内聚和松散耦合组件的开发,然后可以在其他环境中重复使用并促进可测试单元
- 资源受限的连接使得背压和压力释放等关键功能非常自然和直观
- 错误处理变得像快乐路径一样自然而不是粗粒度的全部捕获
- 数据进入和退出系统的点以及它如何流过的点很容易理解和轻松跟踪
NiFi架构
NiFi在主机操作系统上的JVM内执行。 JVM上NiFi的主要组件如下:
网络服务器
Web服务器的目的是托管NiFi基于HTTP的命令和控制API。
流量控制器
流量控制器是操作的大脑。它为扩展程序提供运行的线程,并管理扩展程序何时接收要执行的资源的计划。
扩展
在其他文献中描述了各种类型的NiFi扩展。这里的关键点是扩展在JVM中运行和执行。
FlowFile存储库
FlowFile存储库是NiFi跟踪其对流中当前活动的给定FlowFile的了解状态的地方。存储库的实现是可插入的。默认方法是位于指定磁盘分区上的持久性预写日志。
内容存储库
内容存储库是给定FlowFile的实际内容字节的实时位置。存储库的实现是可插入的。默认方法是一种相当简单的机制,它将数据块存储在文件系统中。可以指定多个文件系统存储位置,以便获得不同的物理分区以减少任何单个卷上的争用。
来源库
Provenance Repository是存储所有起源事件数据的地方。存储库构造是可插入的,默认实现是使用一个或多个物理磁盘卷。在每个位置内,事件数据被索引和搜索。
NiFi也能够在集群内运行。
从NiFi 1.0版本开始,采用了Zero-Master Clustering范例。 NiFi群集中的每个节点对数据执行相同的任务,但每个节点都在不同的数据集上运行。 Apache ZooKeeper选择单个节点作为集群协调器,ZooKeeper自动处理故障转移。 所有群集节点都会向群集协调器报告心跳和状态信息。 群集协调器负责断开和连接节点。 此外,每个群集都有一个主节点,也由ZooKeeper选举。 作为DataFlow管理器,您可以通过任何节点的用户界面(UI)与NiFi群集进行交互。 您所做的任何更改都将复制到群集中的所有节点,从而允许多个入口点。
NiFi的性能期望和特性
NiFi旨在充分利用其运行的底层主机系统的功能。在CPU和磁盘方面,这种资源的最大化特别强大。有关其他详细信息,请参阅“管理指南”中的最佳做法和配置提示。
对于IO
可以预期的吞吐量或延迟会有很大差异,具体取决于系统的配置方式。鉴于大多数主要NiFi子系统都有可插拔的方法,性能取决于实施。但是,对于具体且广泛适用的内容,请考虑开箱即用的默认实现。这些都是持久的保证传递,并使用本地磁盘这样做。因此保守一点,假设典型服务器中的适度磁盘或RAID卷上的读取/写入速率大约为每秒50 MB。然后,对于大类数据流的NiFi应该能够有效地达到每秒100 MB或更高的吞吐量。这是因为预期每个物理分区和添加到NiFi的内容存储库都会线性增长。这将在FlowFile存储库和originance存储库的某个点上出现瓶颈。我们计划提供一个基准测试和性能测试模板,以包含在构建中,允许用户轻松测试他们的系统并确定瓶颈在哪里,以及它们可能成为一个因素。此模板还应使系统管理员可以轻松进行更改并验证其影响。
对于CPU
流控制器充当引擎,指示特定处理器何时被赋予执行线程。编写处理器以在执行任务后立即返回线程。可以为Flow Controller提供一个配置值,指示它维护的各个线程池的可用线程。理想的线程数取决于主机系统资源的核心数量,系统是否正在运行其他服务,以及流程中处理的性质。对于典型的IO大流量,可以使许多线程可用。
对于RAM
NiFi存在于JVM中,因此仅限于JVM提供的内存空间。 JVM垃圾收集成为限制总实际堆大小以及优化应用程序运行时间的一个非常重要的因素。定期阅读相同内容时,NiFi作业可能是I / O密集型的。配置足够大的磁盘以优化性能。
关键NiFi功能的高级概述
这部分提供了20,000英尺的NiFi基石基础视图,让您可以了解Apache NiFi的大图,以及一些最有趣的功能。主要功能类别包括流量管理,易用性,安全性,可扩展架构和灵活的扩展模型。
流量管理
- 保证交货
NiFi的核心理念是即使在非常高的规模下,保证交付也是必须的。这是通过有效使用专用的持久性预写日志和内容存储库来实现的。它们的设计可以实现非常高的事务处理速率,有效的负载分散,写入时复制以及发挥传统磁盘读/写的优势。
- 具有背压和压力释放的数据缓冲
NiFi支持缓冲所有排队数据,以及在这些队列达到指定限制时提供背压或在数据达到指定年龄(其值已经消失)时使数据老化的能力。
- 优先排队
NiFi允许设置一个或多个优先级方案,用于如何从队列中检索数据。默认值是最早的,但有时应先将数据拉到最新,最大的数据或其他一些自定义方案。
- 流特定QoS(延迟v吞吐量,容量损失等)
有一些数据流点,数据绝对是关键的,而且是不容忍的。有时候必须在几秒钟内处理和交付它才能具有任何价值。 NiFi可以实现这些问题的细粒度流量特定配置。
使用方便
- 可视化指挥与控制
数据流可能变得非常复杂。能够可视化这些流并在视觉上表达它们可以极大地帮助降低复杂性并确定需要简化的区域。 NiFi不仅可以实现数据流的可视化建立,而且可以实时实现。而不是“设计和部署”,它更像是塑造粘土。如果对数据流进行更改,则更改会立即生效。变更细粒度并与受影响的组件隔离。您不需要为了进行某些特定修改而停止整个流程或流程集。
- 流程模板
数据流往往是高度模式化的,虽然通常有许多不同的方法来解决问题,但是能够分享这些最佳实践有很大帮助。模板允许主题专家构建和发布他们的流程设计,并让其他人受益并协作。
- 数据来源
当对象流过系统时,NiFi会自动记录,索引并提供可用的起源数据,即使是扇入,扇出,转换等。此信息对于支持合规性,故障排除,优化和其他方案至关重要。
- 恢复/记录细粒度历史记录的滚动缓冲区
NiFi的内容存储库旨在充当历史的滚动缓冲区。数据仅在内容存储库老化或需要空间时才会被删除。这与数据出处能力相结合,为对象的生命周期中的特定点提供了点击内容,内容下载和重放的极其有用的基础,甚至可以跨越几代人。
安全
- 系统到系统
数据流只有安全性才好。数据流中每个点的NiFi都通过使用加密协议(如双向SSL)提供安全交换。此外,NiFi使流程能够加密和解密内容,并在发送方/接收方方程式的任何一侧使用共享密钥或其他机制。
- 用户到系统
NiFi支持双向SSL身份验证,并提供可插拔授权,以便能够正确控制用户的访问权限和特定级别(只读,数据流管理器,管理员)。如果用户在流程中输入密码等敏感属性,则会立即对服务器端进行加密,即使以加密形式也不会再次暴露在客户端。
- 多租户授权
给定数据流的权限级别适用于每个组件,允许管理员用户具有细粒度的访问控制级别。这意味着每个NiFi集群都能够满足一个或多个组织的要求。与隔离拓扑相比,多租户授权支持数据流管理的自助服务模型,允许每个团队或组织在完全了解流程的其余部分的情况下管理流程,而这些流程是他们无法访问的流程。
可扩展的架构
- 扩展
NiFi的核心是为扩展而构建的,因此它是一个数据流进程可以以可预测和可重复的方式执行和交互的平台。扩展点包括:处理器,控制器服务,报告任务,优先级排序器和客户用户界面。
- 类加载器隔离
对于任何基于组件的系统,可能会很快发生依赖性问题。 NiFi通过提供自定义类加载器模型来解决这个问题,确保每个扩展束都暴露于非常有限的依赖关系。因此,可以构建扩展而几乎不关心它们是否可能与另一个扩展冲突。这些扩展包的概念称为“NiFi Archives”,在开发人员指南中有更详细的讨论。
- 站点到站点通信协议
NiFi实例之间的首选通信协议是NiFi站点到站点(S2S)协议。 S2S可以轻松,高效,安全地将数据从一个NiFi实例传输到另一个实例。 NiFi客户端库可以轻松构建并捆绑到其他应用程序或设备中,以通过S2S与NiFi进行通信。 S2S中支持基于套接字的协议和HTTP(S)协议作为底层传输协议,使得可以将代理服务器嵌入到S2S通信中。
灵活的可扩展模型
- 横向扩展(群集)
如上所述,NiFi旨在通过使用将许多节点聚类在一起来向外扩展。如果配置单个节点并将其配置为每秒处理数百MB,则可以将适度的群集配置为每秒处理GB。这就带来了NiFi与其获取数据的系统之间的负载平衡和故障转移的有趣挑战。使用基于异步排队的协议(如消息服务,Kafka等)可以提供帮助。使用NiFi的“站点到站点”功能也非常有效,因为它是一种协议,允许NiFi和客户端(包括另一个NiFi群集)相互通信,共享有关加载的信息,以及交换特定授权的数据端口。
- 放大和缩小
NiFi还可以非常灵活地扩展和缩小。从NiFi框架的角度来看,在增加吞吐量方面,可以在配置时增加Scheduling选项卡下处理器上的并发任务数。这允许更多进程同时执行,从而提供更高的吞吐量。另一方面,您可以完美地将NiFi缩小到适合在边缘设备上运行,因为硬件资源有限,所需的占用空间很小。要专门解决第一英里数据收集挑战和边缘使用案例,您可以在此处找到更多详细信息:https://cwiki.apache.org/confluence/display/NIFI/MiNiFi,关于Apache NiFi,MiNiFi的子项目工作(发音为“缩小”,[min-uh-fahy])。
- 399 次浏览
【大数据系列】Ignite:基于内存分布式数据库和缓存和处理平台
Ignite™是一个以内存为中心的分布式数据库,缓存和处理平台事务性,分析性和流式工作负载,以PB级的速度提供内存速度.
主要好处
- Ignite 使用者包括 ING, Sberbank, HomeAway, Wellington, FSB, The Glue, 24 Hour Fitness, JacTravel等
- 保留你的数据库. 使用Ignite™内存数据网格和缓存功能加速现有的Relational和NoSQL数据库
- NoSQL Scale的SQL .使用Ignite™分布式SQL实现水平可伸缩性,强一致性和高可用性
主要特点
- 以内存为中心的存储.在内存和磁盘上存储和处理分布式数据
- 分布式SQL.分布式以内存为中心的SQL数据库,支持连接
- 分布式键值. 使用最快的键值数据网格和缓存进行读取,写入和事务处理
- ACID交易. 跨分布式数据集实施完全ACID合规性
- 并置处理.通过向群集节点发送计算来避免数据噪声
- 机器学习.培训和部署分布式机器学习模型
IGNITE和其他软件比较
产品功能
Apache Ignite以内存为中心的数据库和缓存平台包含以下一组组件:
主要特点
- 分布式SQL
- 分布式键值
- ACID交易
- 并置处理
- 机器学习
- 多语言
扩展功能
- 服务网格
- 流
- RDBMS集成
- 数据结构
- 消息和事件
- GA(Genetic Algorithms)网格
架构
- 集群和部署
- 以内存为中心的存储
- 持久化
Hadoop和Spark支持
- 用于Spark的内存存储
- 内存文件系统
- 内存中的MapReduce
Apache Ignite用例
作为一个平台,Apache Ignite用于各种用例,其中一些用例如下所示:
数据库
- 分布数据库
- 内存数据库
- 内存数据网格
- 键值存储
对照
- Ignite NoSQL用户
- Ignite RDBMS用户
内存缓存
- 数据库缓存
- JCache提供程序
- Hibernate L2 Cache
- Web会话群集
Spark&Hadoop
- Spark共享RDD
- 加速Sql for Spark
- IGFS作为HDFS缓存
- 加速MapReduce
- 62 次浏览