地铁译:Spark for python developers --- 搭建Spark虚拟环境2

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 这一段,主要是 Spark 的基本概念,以及Anaconda的基本组成。理解SparkHadoop 随着数据的增长水平扩展,可以运行在普通的硬件上, 所以是低成本的.

这一段,主要是 Spark 的基本概念,以及Anaconda的基本组成。

理解Spark

Hadoop 随着数据的增长水平扩展,可以运行在普通的硬件上, 所以是低成本的. 数据密集型应用利用可扩展的分布处理框架在大规模商业集群上分析PB级的数据. Hadoop 是第一个map-reduce的开源实现. Hadoop 依赖的分布式存储框架叫做 HDFS(Hadoop Distributed File System). Hadoop 在批处理中运行map-reduce任务.Hadoop 要求在每个 map, shuffle,和reduce 处理步骤中将数据持久化到硬盘. 这些批处理工作的过载和延迟明显地影响了性能.

Spark 是一个面向大规模数据处理的快速、分布式、通用的分析计算引擎. 主要不同于Hadoop的特点在于Spark 通过数据管道的内存处理允许不同阶段共享数据. Spark 的独特之处在于允许四种不同的数据分析和处理风格. Spark能够用在:

  • Batch: 该模式用于处理大数据集典型的是执行大规模map-reduce 任务。
  • Streaming: 该模式用于近限处理流入的信息。
  • Iterative: 这种模式是机器学习算法,如梯度下降的数据访问重复以达到数据收敛。
  • Interactive: 这种模式用于数据探索,有用大数据块位于内存中,所以Spark的响应时间非常快。

下图描述了数据处理的4种方式:

Spark Processing Styles

Spark 有三种部署方式: 单机单节点和两种分布式集群方式Yarn(Hadoop 的分布式资源管理器)或者Mesos(Berkeley 开发的开源资源管理器,同时可用于Spark):

Spark Components

Spark 提供了一个Scala, Java, Python, and R的多语言接口.

Spark libraries

Spark 时一个完整的解决方案, 有很多强大的库:

  • SparkSQL: 提供 类SQL 的能力 来访问结构化数据,并交互性地探索大数据集
  • SparkMLLIB: 用于机器学习的大量算法和一个管道框架
  • Spark Streaming: 使用微型批处理和滑动窗口对进入的流数据T实现近限分析
  • Spark GraphX: 对于复杂连接的尸体和关系提供图处理和计算

PySpark实战

Spark是使用Scala实现的,整个Spark生态系统既充分利用了JVM环境也充分利用了原生的HDFS. Hadoop HDFS是Spark支持的众多数据存储之一。 Spark与其相互作用多数据源、类型和格式无关.
PySpark 不是Spark的一个Python转写,如同Jython 相对于Java。PySpark 提供了绑定Spark的集成 API,能够在所有的集群节点中通过pickle序列化充分使用Python 生态系统,更重要的是, 能够访问由Python机器学习库形成的丰富的生态系统,如Scikit-Learn 或者象Pandas那样的数据处理。

当我们着有一个Spark 程序的时候, 程序第一件必需要做的事情是创建一个SparkContext 对象,来告诉Spark如何防蚊鸡群。Python程序会创建PySparkContext。Py4J 是一个网关将Spark JVM SparkContex于python程序绑定。应用代码JVM SparkContextserializes
和闭包把他们发送给集群执行.

集群管理器分配资源,调度,运送这些闭包给集群上的 Spark workers,这需要激活 Python 虚拟机.
在每一台机器上, 管理 Spark Worker 执行器负责控制,计算,存储和缓存.

这个例子展示了 Spark driver 在本地文件系统上如何管理PySpark context 和Spark context以及如何通过集群管理器与 Spark worker完成交互。

PySpark

弹性分布数据集(RDS,Resilient Distributed Dataset)

Spark 应用包含了一个驱动程序来运行用户的主函数,在集群上创建分布式数据集, 并在这些数据集上执行各种并行操作
(转换和动作 )。 Spark 应用运行在独立的进程集合, 与一个驱动程序中的一个 SparkContext 协调工作。SparkContext 将从集群管理器中分配系统资源 (主机, 内存, CPU)。

SparkContext管理执行器,执行器来管理集群上的多个worker .驱动程序中有需要运行的Spark 工作。这些工作被分拆成多个任务,提交给执行器来完成。执行器负责每台机器的计算,存储和缓存。Spark 中的核心构建块是 RDD (Resilient Distributed Dataset). 一个已选元素的数据集。分布意味着数据集可以位于集群的任何节点。弹性意味着数据集在不伤害数据计算进程的条件下可以全部或部分丢失,spark 将重新计算内存中的数据关系,例如操作 DAG (Directed Acyclic Graph) 基本上,Spark 将RDD的一个状态的内存快照放入缓存。如果一台计算机在操作中挂了, Spark 将从缓存的RDD中重建并操作DAG,从而使RDD从节点故障中恢复。

这里有两类的RDD 操作:


• Transformations: 数据转换使用现存的RDD,并生产一个新转换后的RDD指针。一个RDD是不可变的,一旦创建,不能更改。 每次转换生成新的RDD. 数据转换的延迟计算的,只有当一个动作发生时执行。如果发生故障,转换的数据世系重建RDD

.
• Actions: 动作是一个RDD触发了Spark job,并缠上一个值。一个动作操作引发Spark 执行数据转换操作,需要计算动作返回的RDD。动作导致操作的一个DAG。 DAG 被编译到不同阶段,每个阶段执行一系列任务。 一个任务是基础的工作单元。

这是关于RDD的有用信息:

  • RDD 从一个数据源创建,例如一个HDFS文件或一个数据库查询 .

    有三种方法创建 RDD:


    ∞从数据存储中读取

    ∞ 从一个现存的RDD转换

    ∞使用内存中的集合


  • RDDs 的转换函数有 map 或 filter, 它们生成一个新的RDD.

  • 一个RDD上的一个动作包括 first, take, collect, 或count 将发送结果到Spark 驱动程序. Spark驱动程序是用户与Spark集群交互的客户端。

    下图描述了RDD 数据转换和动作:
    RDD

理解 Anaconda

Anaconda 是由 Continuum(https://www.continuum.io/)维护的被广泛使用的Python分发包. 我们将使用 Anaconda 提供的流行的软件栈来生成我们的应用. 本书中,使用 PySpark和PyData生态系统。PyData生态系统由Continuum维护,支持并升级,并提供 Anaconda Python 分发包。Anaconda
Python分发包基本避免了python 环境的安装过程恶化从而节约了时间;我们用它与Spark对接. Anaconda 有自己的包管理工具可以替代传统的 pip install 和easy_install. Anaconda 也是完整的解决方案,包括一下有名的包如 Pandas, Scikit-Learn, Blaze, Matplotlib, and Bokeh. 通过一个简单的命令久可以升级任何已经安装的库:

`$  conda  update`

通过命令可以我们环境中已安装库的列表:

$ conda list




主要组件如下:


* Anaconda: 这是一个免费的Python分发包包含了科学,数学,工程和数据分析的200多个Python包


* Conda: 包管理器负责安装复杂软件栈的所有依赖,不仅限于 Python ,也可以管理R和其它语言的安装进程。


* Numba: 通过共性能函数和及时编译,提供了加速Python代码的能力。


* Blaze: 通过统一和适配的接口来访问提供者的数据来实现大规模数据分析,包括Python 流处理, Pandas, SQLAlchemy, 和Spark.



* Bokeh: 为巨型流数据集提供了交互数据的可视化.




* Wakari: 允许我们在一个托管环境中分享和部署 IPython Notebooks和其它应用



下图展示了 Anaconda 软件栈中的部分组件:
Anaconda Stack

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
2月前
|
PyTorch Linux 算法框架/工具
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
这篇文章是关于如何使用Anaconda进行Python环境管理,包括下载、安装、配置环境变量、创建多版本Python环境、安装PyTorch以及使用Jupyter Notebook的详细指南。
345 1
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
|
1月前
|
机器学习/深度学习 数据可视化 Docker
Python环境
Python环境
44 3
|
1月前
|
弹性计算 Linux iOS开发
Python 虚拟环境全解:轻松管理项目依赖
本文详细介绍了 Python 虚拟环境的概念、创建和使用方法,包括 `virtualenv` 和 `venv` 的使用,以及最佳实践和注意事项。通过虚拟环境,你可以轻松管理不同项目的依赖关系,避免版本冲突,提升开发效率。
105 3
|
2月前
|
IDE 网络安全 开发工具
IDE之pycharm:专业版本连接远程服务器代码,并配置远程python环境解释器(亲测OK)。
本文介绍了如何在PyCharm专业版中连接远程服务器并配置远程Python环境解释器,以便在服务器上运行代码。
490 0
IDE之pycharm:专业版本连接远程服务器代码,并配置远程python环境解释器(亲测OK)。
|
2月前
|
机器学习/深度学习 缓存 PyTorch
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
这篇文章是关于如何下载、安装和配置Miniconda,以及如何使用Miniconda创建和管理Python环境的详细指南。
554 0
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
|
2月前
|
机器学习/深度学习 缓存 Linux
python环境学习:pip介绍,pip 和 conda的区别和联系。哪个更好使用?pip创建虚拟环境并解释venv模块,pip的常用命令,conda的常用命令。
本文介绍了Python的包管理工具pip和环境管理器conda的区别与联系。pip主要用于安装和管理Python包,而conda不仅管理Python包,还能管理其他语言的包,并提供强大的环境管理功能。文章还讨论了pip创建虚拟环境的方法,以及pip和conda的常用命令。作者推荐使用conda安装科学计算和数据分析包,而pip则用于安装无法通过conda获取的包。
155 0
|
Python Windows
[Python]搭建虚拟环境与Django项目的创建[virtualenv virtualenvwrapper venv](Windows)(上)
[Python]搭建虚拟环境与Django项目的创建[virtualenv virtualenvwrapper venv](Windows)(上)
|
7月前
|
Ubuntu Python
一键打包,随时运行,Python3项目虚拟环境一键整合包的制作(Venv)
之前我们介绍了[如何使用嵌入式 Python3 环境给项目制作一键整合包](https://v3u.cn/a_id_328),在使用嵌入式 Python 环境时,通常是作为另一个应用程序的一部分,而Python3虚拟环境是为了在开发过程中隔离项目所需的 Python 环境。虚拟环境允许我们在同一台计算机上的不同项目中使用不同的 Python 版本和软件包,而不会相互干扰。 本次我们利用Python3自带的虚拟环境(venv)功能来给项目制作一键整合包。
一键打包,随时运行,Python3项目虚拟环境一键整合包的制作(Venv)
|
测试技术 数据库 Python
[Python]搭建虚拟环境与Django项目的创建[virtualenv virtualenvwrapper venv](Windows)(下)
[Python]搭建虚拟环境与Django项目的创建[virtualenv virtualenvwrapper venv](Windows)(下)
|
Shell Python
python虚拟环境(venv、virtualenv)及虚拟环境管理工具(virtualenvwrapper)
  Python应用开发时,本机的Python环境中安装各种各样的包的话,随着项目的增加,每次运行时都需要处理一下各种不同版本的依赖库,而且python版本也可能使用的不同,这样做很耗时。这就需要虚拟出不同的Python版本的环境,可以让虚拟环境专门为某一个应用而存在,且允许在虚拟环境中安装各种包。而且不影响本机大的python环境,便于开发环境和生产环境的管理。
439 0