【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

Apache Ignite(三):核心特性之大数据处理、客户端和部署

  • 2015-12-28
  • 本文字数:2353 字

    阅读完需:约 8 分钟

本文是 Ignite 系列的第三篇介绍性文章,内容整体比较简略,和第二篇文章一起,大体上介绍了 Ignite 平台的所有关键技术点,方便大家有一个整体的认识,供技术选型时参考。

一、Spark 共享 RDD

Apache Ignite 提供了一个 Spark RDD 抽象的实现,他允许跨越多个 Spark 作业时方便地在内存内共享状态,不管是在同一个应用内部还是在不同的 Spark 应用之间。

IgniteRDD 作为 Ignite 分布式缓存的视图,既可以在 Spark 作业执行进程中部署,也可以在 Spark workder 中部署,也可以在他自己的集群中部署。

根据事先配置好的部署模型,状态共享既可以只存在于一个 Spark 应用的生命周期的内部(嵌入式模式),或者也可以存在于 Spark 应用的外部(独立模式),这种模式下状态可以在多个 Spark 应用之间共享。

特性一览

  1. 共享 Spark RDD: IgniteRDD 是原生 Spark RDD 的一个实现,DataFrame API 具有所有标准 RDD 的功能,并且 RDD 的状态可以在 Spark 作业、应用以及 worker 之间共享。
  2. 更快的 SQL: Spark 不支持 SQL 索引,但是 Ignite 可以,由于先进的内存索引功能,IgniteRDD 在执行 SQL 查询时比 Spark 原生 RDD 或者 DataFrame 有百倍的性能提升。

二、内存文件系统

Ignite 一个独有的技术就是分布式内存文件系统(IGFS),IGFS 提供了和 Hadoop HDFS 类似的功能,但是仅仅在内存内部。事实上,除了他自己的 API,IGFS 实现了 Hadoop 的文件系统 API,并且可以透明地加入 Hadoop 或者 Spark 应用。

IGFS 将每个文件中的数据拆分为独立的数据块然后将他们存储在分布式内存缓存中。然而和 Hadoop HDFS 不同,IGFS 不需要一个 name 节点,并且用一个哈希函数自动地确定文件数据位置。

IGFS 可以独立部署,也可以部署在 HDFS 之上,不管是哪种情况,他对于 HDFS 中存储的文件都是一个透明的缓存层。

特性一览

  1. 堆内和堆外: IGFS 既可以在堆内,也可以在堆外存储文件,对于更大的存储空间关键是利用堆外来避免长时间的 JVM 垃圾回收导致的暂停。
  2. IGFS 作为 Hadoop 文件系统: IGFS 实现了 Hadoop 的 FileSystem API,并且可以部署为原生的 Hadoop 文件系统,就像 HDFS 一样,这样就可以在 Hadoop 或者 Spark 环境中以即插即用的方式原生部署 IGFS。
  3. Hadoop 文件系统缓存: IGFS 也可以在另一个 Hadoop 文件系统上部署为一个缓存层。这种情况下,IGFS 中的一个文件如果发生变化,更新会被自动地写入 HDFS。此外,如果读取了一个文件并且当时他不在 IGFS 中,Ignite 会自动地将其从 HDFS 载入 IGFS。
  4. Hadoop 发行版: IGFS 集成了一个原生的 Apache Hadoop,也支持 Cloudera CDH 以及 Hortonworks HDP。

三、内存 MapReduce

Apache Ignite 带来了一个 Hadoop MapReduce API 的内存实现,他比原生的 Hadoop MapReduce 实现有了显著的性能提升。Ignite MapReduce 比 Hadoop 性能更好,是因为基于推的资源分配以及数据的进程内协同计算。

另外,因为 IGFS 不需要一个 name 节点,当使用 IGFS 时,Ignite MapReduce 作业会在一个链路内直达 IGFS 数据节点。

特性一览

  1. 原生 Hadoop MapReduce: Ignite MapReduce 是 Hadoop MapReduce API 的一个实现,他可以原生地加入已有的 Hadoop 环境,并且性能有很大的提升。
  2. Hadoop 加速: Ignite 提供了一个 Hadoop 的加速发行版,包括 IGFS 以及 Ignite MapReduce,这个环境可以很容易地加入已有的 Hadoop 环境。

四、客户端协议

对于客户端连接 Ignite 集群,Ignite 提供了若干种协议,包括 Ignite 原生客户端,REST/HTTP,SSL/TLS,Memcached,Node.js(正在开发中)等等。

详细说明如下:

  1. Ignite 原生客户端: 对于客户端远程连接 Ignite,原生客户端提供了完整的功能,他允许使用完整的 Ignite API,包括近缓存,事务,计算,流式处理,服务等等。
  2. Memcached: Ignite 兼容于 Memcached,他允许用户使用任何 Memcached 兼容客户端在 Ignite 缓存中保存以及获取分布式数据,包括 Java、PHP、Python、Ruby 以及其他的客户端。
  3. REST/HTTP: Ignite 提供了一个 HTTP REST 客户端,可以以 REST 的方式通过 HTTP 或者 HTTPS 协议进行通信。REST API 可以进行执行很多的操作,比如从缓存中读取,实行任务,获取各种度量等等。
  4. SSL/TLS: Ignite 允许在所有的 Ignite 客户端和服务端节点之间使用 SSL 进行 Socket 通信。
  5. Node.js(开发中): Ignite 未来会提供 Node.js 客户端,他能进行所有的缓存操作以及在 Ignite 中存储的 JSON 数据中执行 SQL 查询。

五、部署环境

Apache Ignite 可以独立运行,在集群中运行,在 Docker 容器中运行,还可以运行在 Apache Mesos 以及 Hadoop Yarn 环境。他可以在物理机上运行,也可以在虚拟机上运行。

特性一览

  1. 独立集群: Ignite 节点之间会自动感知,这有助于集群的可扩展性,而不需要重启集群,简单地启动新加入的节点然后他们就是自动地加入集群。
  2. Docker 容器: Docker 可以将 Ignite 及其所有的依赖打包进一个标准的映像。Docker 下载 Ignite 版本映像之后,就可以将用户的应用部署进 Ignite,配置节点,他会自动启动整个配置后的 Ignite 节点。
  3. 公共云: 对于公共云环境,Ignite 原生地集成了 Amazon AWS 和 GCE,对于其他的云环境,Ignite 集成了 Apache JCloud,他支持大多数已有的云服务商。
  4. Apache Mesos: Ignite 提供了 Apache Mesos 的原生支持,可以很容易地将 Ignite 部署进 Mesos 数据中心,比如 Hadoop 和 Spark 环境。
  5. Hadoop Yarn: Ignite 提供了 Hadoop Yarn 的原生支持,可以很容易地将 Ignite 部署进 Hadoop 和 Spark 环境。

感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群(已满),InfoQ 读者交流群(#2))。

2015-12-28 17:4817145

评论

发布
暂无评论
发现更多内容

教育行业为什么管理特权账号?

尚思卓越

运维 网络安全

大模型训练中CPU高负载与GPU低使用率的优化策略

百度开发者中心

gpu 大模型

云电脑和一体机有什么区别?

青椒云云电脑

云电脑 桌面云一体机 云桌面一体机

Java 11 到 Java 21:无缝迁移的可视化指南

高端章鱼哥

Java Java11 Java21

我还是无法忘记那个午夜,当oncall的告警响起

Java 工程师蔡姬

#on-call 21 天技术人写作行动营 #线上问题 #性能问题

国内外免费的SCADA软件工具有哪些?

2D3D前端可视化开发

物联网 组态软件 SCADA软件 组态工具 HMI系统

深入探讨 Swagger Array:开发者的步步为赢指南

Liam

后端 开发工具 swagger API 文档 web 开发

如何构建适合工业设计企业的云端图形工作站?

青椒云云电脑

图形工作站

软件测试/人工智能|一文告诉你Python字典知识

霍格沃兹测试开发学社

IPQ4019 IPQ4029 Platform DR40x9 Provide 23-30KM Long Range Transfer AP Controller Support Openwrt Openwifi|802.11AC Solution

wallyslilly

IPQ4019 ipq4029

提升淘宝商品详情搜索效率,看这篇API接口详解

联讯数据

软件测试/人工智能|一文告诉你Python集合相关知识

霍格沃兹测试开发学社

【写作训练营打卡|04】

王炸升级!PartyRock 10分钟构建 AI 应用

伤感汤姆布利柏

人工智能

大模型训练中错误数据集的影响及应对策略

百度开发者中心

大模型 人工智能’

如何教会小白使用淘宝API接口获取商品数据

Noah

DAPP智能合约质押挖矿系统开发丨详情开发

l8l259l3365

学校建设云教室方案应该考虑哪些?

青椒云云电脑

云教室 云教室解决方案

新一代私有云部署四大优势和案例解读

青椒云云电脑

云电脑平台

大模型训练引领AI新时代

百度开发者中心

人工智能 大模型 LLM

机器学习与低代码开发:创新驱动的双剑合璧

EquatorCoco

机器学习 软件开发 低代码

【scikit-learn基础】--『数据加载』之样本生成器

EquatorCoco

Python 人工智能 机器学习

一个 41 岁老程序员的 2023 年总结 - 利用 AI 延长自己的编程寿命

Jerry Wang

人工智能 AI 总结思考 ChatGPT 2023年

如何给网页和代码做HTML加密?

“2024京津冀人工智能大会”推动京津冀人工智能产业快速发展

AIOTE智博会

智博会 人工智能展 世亚智博会 北京智博会

公司敏感数据被上传Github,吓得我赶紧改提交记录

程序员小富

git

当创建statefulset资源后,k8s组件如何协作

华为云开发者联盟

云原生 k8s 华为云 华为云开发者联盟

每日一题:LeetCode-151. 反转字符串中的单词

半亩房顶

Go 面试 算法 LeetCode 字符串

软件测试/人工智能|使用 Pip 管理 Python 包

霍格沃兹测试开发学社

Vue3.0在软件开发中的能力展示

互联网工科生

Vue DOM vue3.0

23年总结-对于开发者来说AI带来的影响和AI未来的趋势预测

肥晨

AI

Apache Ignite(三):核心特性之大数据处理、客户端和部署_开源_李玉珏_InfoQ精选文章