Mars学习笔记(一)

简介: 对阿里开源的、基于Python的大规模计算框架Mars的学习笔记系列。

一、Mars简介

Mars是阿里开源的、基于Python的大规模计算框架。简单理解,Mars是numpy、pandas、scikit-learn、statsmodels、XGBoost等数据处理、机器学习中常用Python库(只能单机使用)的分布式版本合集。同时,Mars也是基于张量的,与TensorFlow、PyTorch也有很好的交互性。下图是官网中展示的Mars架构概览图。
Mars_Architecture.png

二、安装部署

Mars既支持在单机中安装,也支持在集群中安装。在单机上安装,Mars支持在Windows、MacOS或Linux系统上安装,只需要在联网环境下执行如下命令即可。

pip install pymars

下图是笔者在Windows10系统通过Anaconda3安装的3.8版本Python环境中安装Mars的截图,可以看到成功安装了0.9.0版本的Mars。
Mars_Install_1.png
但是在Jupyter Notebook中导入mars.tensor包时发生报错,报错信息为“ImportError: DLL load failed while importing \_arpack: 找不到指定的程序。”如下两图所示,
Mars_Install_2.png
Mars_Install_3.png
在百度中搜索此报错信息,发现大部分帖子都说是与Anaconda自带的scipy包有关,再次回看上述报错发生的位置,发现也是与scipy包有关,如下图所示,
Mars_Install_4.png
按照一篇帖子中提到的方法,先卸载Anaconda自带的scipy包,再从豆瓣镜像中安装scipy包,即可解决此问题。
如下图所示,Anaconda自带的scipy版本为1.6.2。
Mars_Install_5.png
依次执行如下命令,先卸载Anaconda自带的scipy包,再从豆瓣镜像中安装scipy包,

pip uninstall scipy
pip install scipy -i https://pypi.douban.com/simple

卸载及安装过程如下图所示,
Mars_Install_6_1.png
成功安装1.9.1版本scipy包之后,重启此Jupyter Notebook的内核,再次导入mars.tensor包,即可正常执行Mars。
在集群中安装,Mars既支持在集群中安装部署Mars集群,也支持在现有的Ray、Kubernetes、YARN集群中安装部署,使Mars可以快速灵活的在集群中完成安装部署,并与其它已部署集群框架联合,快速集成进现有业务场景中使用。Mars在各类集群中的安装部署步骤,官方文档中已经作了详细的介绍,这里先不展开,之后在不同类型集群中具体使用时再作介绍,先贴出官方文档中有关安装部分的地址,以供大家参考。
https://docs.pymars.org/zh_CN/latest/installation/index.html

三、在单机上的使用

Mars在使用上充分尊重了Python用户对Numpy、Pandas等包的现有使用习惯,无需更改Numpy、Pandas中的语法,只需更改包的别名,即把Numpy的np改成Mars的mt,把Pandas的pd改成Mars的md,就可以使用原有的代码逻辑,借助Mars框架,对海量数据进行大规模计算了,极大的降低了Mars的学习成本,真正实现了开箱即用的效果。
下图是在使用2亿条二维随机数组计算圆周率的示例中,使用Numpy和Mars的代码对比,可以看到除了更换一下包的别名,其余代码均未更改;而且即便是在单机的环境下运行,在处理相同数据量的情况下,Mars的代码执行时间也远小于Numpy的执行时间,性能上也得到了较大的提升。
Mars_Run_1.png
不过这个需要注意一点,Mars是通过执行session来执行大规模数据计算操作的,所以在执行计算代码之前,最好先使用mars.new_session()语句提前创建一个session,因为创建一个新的session也是会花费一些时间的,如下图所示。
Mars_Run_2.png
在使用Pandas做数据处理中,最方便的就是使用DataFrame格式,Mars中也同样保留了Pandas中DataFrame语法,只需要把Pandas的pd改成Mars的md即可,而且Mars还开发了将Pandas的DataFrame快速转换为Mars的DataFrame的方法,实现了Pandas向Mars完美扩展,代码如下图所示。
Mars_Run_3.png

四、后续

使用Mars在国产中标麒麟操作系统搭建的集群中对海量数据进行分布式计算、机器学习模型和深度学习模型,对接国产达梦数据库的数据计算业务等学习笔记,在整理好之后会陆续更新,敬请期待。

相关文章
|
4天前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
24 2
|
7月前
|
SQL C++ 开发者
【技术解析 | 实践】Havenask-UDF定制
本节分享 Havenask UDF定制相关的内容,共包含3个部分,分关于 Havenask 的 UDF 相关的介绍、自定义 UDF 的开发及配置方法的介绍,最后将进行 UDF 定制的实际操作演示。
56679 1
|
SQL 人工智能 分布式计算
如何使用 Flink SQL 探索 GitHub 数据集|Flink-Learning 实战营
想要了解如何使用 Flink 在 GitHub 中发现最热门的项目吗?本实验使用阿里云实时计算 Flink 版内置的 GitHub 公开事件数据集,通过 Flink SQL 实时探索分析 Github 公开数据集中隐藏的彩蛋!
440 1
如何使用 Flink SQL 探索 GitHub 数据集|Flink-Learning 实战营
|
存储 SQL 分布式计算
Flink 引擎简介 | 青训营笔记
从产品技术来看,Flink 具备如下流计算技术特征:完全一次保证:故障后应正确恢复有状态运算符中的状态;低延迟:越低越好。许多应用程序需要亚秒级延迟;高吞吐量:随着数据速率的增长,通过管道推送大量数据至关重要;强大的计算模型:框架应该提供一种编程模型,该模型不限制用户并允许各种各样的应用程序在没有故障的情况下,容错机制的开销很低;流量控制:来自慢速算子的反压应该由系统和数据源自然吸收,以避免因消费者缓慢而导致崩溃或降低性能;乱序数据的支持:支持由于其他原因导致的数据乱序达到、延迟到达后,计算出正确的结果;完备的流式语义:支持窗口等现代流式处理语义抽象;
226 0
Flink 引擎简介 | 青训营笔记
|
机器学习/深度学习 存储 TensorFlow
《TensorFlow技术解析与实战》学习笔记2
《TensorFlow技术解析与实战》学习笔记2
118 0
|
机器学习/深度学习 分布式计算 算法
《TensorFlow技术解析与实战》学习笔记1
《TensorFlow技术解析与实战》学习笔记1
106 0
|
SQL Java 数据挖掘
Flink 必知必会经典课程6:PyFlink 快速上手
本文介绍了PyFlink项目的目标和发展历程,以及PyFlink目前的核心功能,包括Python Table API、Python UDF、向量化Python UDF、Python UDF Metrics、PyFlink依赖管理和Python UDF执行优化,同时也针对功能展示了相关demo。
Flink 必知必会经典课程6:PyFlink 快速上手
|
机器学习/深度学习 算法 数据可视化
「直播回顾」Mars应用与最佳实践
本文首先对Mars的概念、功能、优势进行了介绍,随后,对Mars几个典型的应用场景进行介绍,并通过两个Demo展示了在使用Mars后数据科学性能的提升,最后总结了Mars的最佳实践,让使用Mars更高效便捷。
6852 0
「直播回顾」Mars应用与最佳实践
|
机器学习/深度学习 分布式计算 数据可视化
「直播回顾」Mars:加速数据科学的新方式
本文从数据科学概念、背景和现状切入,引出加速数据科学的新方式Mars,并介绍了Mars具体能解决的一些问题和背后的逻辑、哲学,同时对Mars整体数据处理流程进行了介绍。
2793 0
「直播回顾」Mars:加速数据科学的新方式
|
搜索推荐 API vr&ar
Mars 开源月报(2020.3)
本月,Mars 发布了 0.4.0b1 ,0.4.0b2 和 0.3.2 以及 0.3.3,点击链接查看详细的 Release Notes。本月两次发布版本是特殊情况,0.4.0b2 修复了 0.4.0b1 中比较紧急的问题。
2104 0
Mars 开源月报(2020.3)