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

相关文章
|
SQL 机器学习/深度学习 Java
用Python进行实时计算——PyFlink快速入门
Flink 1.9.0及更高版本支持Python,也就是PyFlink。 在最新版本的Flink 1.10中,PyFlink支持Python用户定义的函数,使您能够在Table API和SQL中注册和使用这些函数。但是,听完所有这些后,您可能仍然想知道PyFlink的架构到底是什么?作为PyFlink的快速指南,本文将回答这些问题。
2594 0
用Python进行实时计算——PyFlink快速入门
|
存储 NoSQL 关系型数据库
DataX教程(01)- 入门
DataX教程(01)- 入门
834 0
|
SQL 人工智能 分布式计算
如何使用 Flink SQL 探索 GitHub 数据集|Flink-Learning 实战营
想要了解如何使用 Flink 在 GitHub 中发现最热门的项目吗?本实验使用阿里云实时计算 Flink 版内置的 GitHub 公开事件数据集,通过 Flink SQL 实时探索分析 Github 公开数据集中隐藏的彩蛋!
440 1
如何使用 Flink SQL 探索 GitHub 数据集|Flink-Learning 实战营
|
SQL 弹性计算 分布式计算
视频-《E-MapReduce》|学习笔记(二)
快速学习视频-《E-MapReduce》
182 0
视频-《E-MapReduce》|学习笔记(二)
|
SQL 弹性计算 分布式计算
视频-《E-MapReduce》|学习笔记(三)
快速学习视频-《E-MapReduce》
187 0
视频-《E-MapReduce》|学习笔记(三)
|
SQL 弹性计算 分布式计算
视频-《E-MapReduce》|学习笔记(四)
快速学习视频-《E-MapReduce》
202 0
视频-《E-MapReduce》|学习笔记(四)
|
机器学习/深度学习 消息中间件 存储
Alink、Tensorflow on Flink 在京东的应用
京东张颖、刘露在 FFA 2021 的分享内容
Alink、Tensorflow on Flink 在京东的应用
|
机器学习/深度学习 分布式计算 数据可视化
「直播回顾」Mars:加速数据科学的新方式
本文从数据科学概念、背景和现状切入,引出加速数据科学的新方式Mars,并介绍了Mars具体能解决的一些问题和背后的逻辑、哲学,同时对Mars整体数据处理流程进行了介绍。
2794 0
「直播回顾」Mars:加速数据科学的新方式
|
机器学习/深度学习 算法 数据可视化
「直播回顾」Mars应用与最佳实践
本文首先对Mars的概念、功能、优势进行了介绍,随后,对Mars几个典型的应用场景进行介绍,并通过两个Demo展示了在使用Mars后数据科学性能的提升,最后总结了Mars的最佳实践,让使用Mars更高效便捷。
6852 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)