首页 文章 精选 留言 我的

精选列表

搜索[虚拟环境],共710篇文章
优秀的个人博客,低调大师

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

Spark 同时可以建立在虚拟化的基础上,例如Vagrant 和Docker, 这样的虚拟化环境很容易部署到各种云服务上,例如AWS。 Vagrant的虚拟化环境 为了创建Python和Spark 环境,便于分享和复制, 整个开发环境可以生成一个 vagrantfile.我们参考Berkeley University 和 Databrick 发布的 Massive Open Online Courses (MOOCs) : • Introduction to Big Data with Apache Spark, Professor Anthony D. Joseph 网址 https://www.edx.org/course/introduction-big-data-apache-spark-uc-berkeleyx-cs100-1x • Scalable Machine Learning, Professor Ameet Talwalkar 网址 https://www.edx.org/course/scalable-machine-learning-uc-berkeleyx-cs190-1x 课程实现使用了 IPython Notebooks和PySpark. 在GitHub repository的位置: https://github.com/spark-mooc/mooc-setup/. 一旦在你的机器中建立了Vagrant, 从这里的引导开始: https://docs.vagrantup.com/v2/getting-started/index.html. 在你的工作目录Clone spark-mooc/mooc-setup/ 的github仓库,在cloned的目录中启动命令: $ vagrant up 注意一下spark的版本可能过期了而 vagrantfile可能没有过期. 可以看到类似的输出: C:\Programs\spark\edx1001\mooc-setup-master>vagrant up Bringing machine 'sparkvm' up with 'virtualbox' provider... ==> sparkvm: Checking if box 'sparkmooc/base' is up to date... ==> sparkvm: Clearing any previously set forwarded ports... ==> sparkvm: Clearing any previously set network interfaces... ==> sparkvm: Preparing network interfaces based on configuration... sparkvm: Adapter 1: nat ==> sparkvm: Forwarding ports... sparkvm: 8001 => 8001 (adapter 1) sparkvm: 4040 => 4040 (adapter 1) sparkvm: 22 => 2222 (adapter 1) ==> sparkvm: Booting VM... ==> sparkvm: Waiting for machine to boot. This may take a few minutes... sparkvm: SSH address: 127.0.0.1:2222 sparkvm: SSH username: vagrant sparkvm: SSH auth method: private key sparkvm: Warning: Connection timeout. Retrying... sparkvm: Warning: Remote connection disconnect. Retrying... ==> sparkvm: Machine booted and ready! ==> sparkvm: Checking for guest additions in VM... ==> sparkvm: Setting hostname... ==> sparkvm: Mounting shared folders... sparkvm: /vagrant => C:/Programs/spark/edx1001/mooc-setup-master ==> sparkvm: Machine already provisioned. Run `vagrant provision` or use the `--provision` ==> sparkvm: to force provisioning. Provisioners marked to run always will still run. C:\Programs\spark\edx1001\mooc-setup-master> 这里在localhost:8001启动Python Notebooks和PySpark: 移动到云端 我们需要在分布系统中处理数据,而已经建立的开发环境是在单台电脑上的虚拟机,这对于探索和学习都非常受限。为了体验Spark 分布框架的规模扩展和强大,我们将在云上操作. 在AWS上部署应用 一旦要规模化我们的应用, 我们可以把我开发环境迁移到 Amazon Web Services (AWS). 这里清楚的描述了如何在EC2上运行 Spark,网址:https://spark.apache.org/docs/latest/ec2-scripts.html. 我们着重在构建 AWS Spark 环境的5个关键步骤: 1. 通过AWS console创建AWS EC2 key pair,网址:http://aws.amazon.com/console/. 2. 将key pair 导出到自己的环境: export AWS_ACCESS_KEY_ID=accesskeyid export AWS_SECRET_ACCESS_KEY=secretaccesskey 3. 启动集群: ~$ cd $SPARK_HOME/ec2 ec2$ ./spark-ec2 -k <keypair> -i <key-file> -s <num-slaves> launch <cluster-name> 4. SSH 到集群运行 Spark jobs: ec2$ ./spark-ec2 -k <keypair> -i <key-file> login <cluster-name> 5. 使用后销毁集群: ec2$ ./spark-ec2 destroy <cluster-name> Docker的虚拟化环境 为了创建Python 和 Spark环境,便于分享和复制, 开发环境还可以构建在 Docker 的容器中.希望充分利用 Docker的两个主要功能: * 生成独立的容器便于部署在不同的操作系统和云端. * 使用DockerHub 可以方便的分享开发环境的镜像和相关依赖,这样便于复制和版本控制,配置好的环境镜像作为将来功能增强的基线. 下图介绍了一个 Docker环境,使用了 Spark, Anaconda, 数据库服务器和相关的数据卷. Docker 提供了从Dockerfile 复制和部署环境的能力.可以从该地址找到一个用PySpark和Anaconda 构建Dockerfile的例子: https://hub.docker.com/r/thisgokeboysef/pyspark-docker/~/dockerfile/. 安装 Docker的指导链接如下: • http://docs.docker.com/mac/started/ if you are on Mac OS X • http://docs.docker.com/linux/started/ if you are on Linux • http://docs.docker.com/windows/started/ if you are on Windows 从Dockerfile 中安装Docker 容器的命令如下: $ docker pull thisgokeboysef/pyspark-docker 可以从Lab41 获得有关如何将环境 dockerize的信息资源. GitHub repository包含了所需代码: https://github.com/Lab41/ipython-spark-docker 技术支持的blog也有丰富的信息: http://lab41.github.io/blog/2015/04/13/ ipython-on-spark-on-docker/. 小结 我们明确了构建数据密集型应用的场景,阐明了系统架构包括基础设施, 持久化,集成,分析和参与层,也探讨了Spark和Anaconda的组成. 进而在VirtualBox中搭建了Anaconda 和的开发环境,并使用第一章的文本内容作为输入,展示了一个词频统计应用。 下一章, 将深入挖掘数据密集型应用的架构,并利用witter, GitHub, 和Meetup 的APIs体验一下用Spark挖掘数据的感觉。

优秀的个人博客,低调大师

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

在VirtualBox 上建Ubantu虚机,安装Anaconda,Java 8,Spark,IPython Notebook,以及和Hello world 齐名的wordcount 例子程序。 搭建Spark 环境 本节我们学习搭建 Spark环境: 在Ubuntu 14.04的虚拟机上创建隔离的开发环境,可以不影响任何现存的系统 安装 Spark 1.3.0 及其依赖. 安装Anaconda Python 2.7 环境包含了所需的库 例如Pandas, Scikit-Learn, Blaze, and Bokeh, 使用PySpark, 可以通过IPython Notebooks访问 在我们的环境中搭建后端或数据存储,使用MySQL作为关系型数据库;MongoDB作文档存储;Cassandra 作为列存储数据库。 根据所需处理数据的需要,每种存储服务于不同的特殊目的。MySQL RDBMs可以使用SQL轻松地完成表信息查询;如果我们处理各种API获得的大量JSON类型数据, 最简单的方法是把它们存储在一个文档里;对于实时和时间序列信息,Cassandra 是最合适的列存储数据库. 下图给出了我们将要构建的环境视图 将贯穿本书的使用: 在Oracle VirtualBox 搭建Ubuntu 搭建一个运行Ubuntu 14.04的virtualbox环境是搭建开发环境最安全的办法,可以避免与现存库的冲突,还可以用类似的命令将环境复制到云端。 为了搭建Anaconda和Spark的环境,我们要创建一个运行Ubuntu 14.04的virtual box虚拟机. 步骤如下: 1. Oracle VirtualBox VM从 https://www.virtualbox.org/wiki/Downloads 免费下载,径直安装就可以了. 2. 装完 VirtualBox,打开Oracle VM VirtualBox Manager,点击按钮New. 3. 给新的VM指定一个名字, 选择Linux 类型和Ubuntu(64 bit)版本. 4. 需要从Ubuntu的官网下载ISO的文件分配足够的内存(4GB推荐) 和硬盘(20GB推荐).我们使用Ubuntu 14.04.1 LTS版本,下载地址: http://www.ubuntu.com/download/desktop. 5. 一旦安装完成, 就可以安装VirtualBox Guest Additions了 (从VirtualBox 菜单,选择新运行的VM) Devices|Insert Guest Additions CD image. 由于windows系统限制了用户界面,可能会导致安装失败. 6. 一旦镜像安装完成,重启VM,就已经可用了.打开共享剪贴板功能是非常有帮助的。选择VM点击 Settings, 然后General|Advanced|Shared Clipboard 再点击 Bidirectional. 安装Anaconda的Python 2.7版本 PySpark当前只能运行在Python 2.7(社区需求升级到Python 3.3),安装Anaconda, 按照以下步骤: 1. 下载 Linux 64-bit Python 2.7的Anaconda安装器 http://continuum.io/downloads#all. 2. 下载完Anaconda 安装器后, 打开 terminal进入到它的安装位置.在这里运行下面的命令, 在命令中替换2.x.x为安装器的版本号: #install anaconda 2.x.x #bash Anaconda-2.x.x-Linux-x86[_64].sh 3. 接受了协议许可后, 将让你确定安装的路径 (默认为 ~/anaconda). 4. 自解压完成后, 需要添加 anaconda 执行路径到 PATH 的环境变量: # add anaconda to PATH bash Anaconda-2.x.x-Linux-x86[_64].sh 安装 Java 8 Spark运行在 JVM之上所以需要安装Java SDK而不只是JRE, 这是我们构建spark应用所要求的. 推荐的版本是Java Version 7 or higher. Java 8 是最合适的, 它包安装 Java 8, 安装以下步骤: 1. 安装 Oracle Java 8 使用的命令如下: # install oracle java 8 $ sudo apt-get install software-properties-common $ sudo add-apt-repository ppa:webupd8team/java $ sudo apt-get update $ sudo apt-get install oracle-java8-installer 2. 设置 JAVA_HOME 环境变量,保证Java 执行程序在PATH中. 3. 检查JAVA_HOME 是否被正确安装: # $ echo JAVA_HOME 安装 Spark 首先浏览一下Spark的下载页 http://spark.apache.org/downloads. html. 它提供了多种可能来下载Spark的早期版本,不同的分发包和下载类型。 我们选择最新的版本. pre-built for Hadoop 2.6 and later. 安装 Spark 的最简方法是使用 Spark package prebuilt for Hadoop 2.6 and later, 而不是从源代码编译,然后 移动 ~/spark 到根目录下。下载最新版本 Spark—Spark 1.5.2, released on November 9, 2015: 1. 选择Spark 版本 1.5.2 (Nov 09 2015), 2. 选择包类型 Prebuilt for Hadoop 2.6 and later, 3. 选择下载类型 Direct Download, 4. 下载spark: spark-1.5.2-bin-hadoop2.6.tgz, 5. 验证 1.3.0 签名校验,也可以运行: # download spark $ wget http://d3kbcqa49mib13.cloudfront.net/spark-1.5.2-bin-hadoop2.6.tgz 接下来, 我们将提取和清理文件: #extract,clean up,move the unzipped files under the spark directory $ rm spark-1.5.2-bin-hadoop2.6.tgz $ sudo mv spark-* spark 现在,我们能够运行 Spark 的 Python 解释器了: # run spark $ cd ~/spark ./bin/pyspark 应该可以看到类似这样的效果: 解释器已经提供了一个Spark context 对象, sc, 我们可以看到: >>>print(sc) <pyspark.context.SparkContext object at 0x7f34b61c4e50> 使用 IPython Notebook IPython Notebook 比控制台拥有更更友好的用户体验. 可以使用如新命令启动IPython Notebook: $ IPYTHON_OPTS="notebook --pylab inline" ./bin/pyspark 在目录 examples/AN_Spark,启动PySpark和IPYNB或者在Jupyter或 IPython Notebooks 的安装目录启动: # cd to /home/an/spark/spark-1.5.0-bin-hadoop2.6/examples/AN_Spark $ IPYTHON_OPTS='notebook' /home/an/spark/spark-1.5.0-bin-hadoop2.6/bin/ pyspark --packages com.databricks:spark-csv_2.11:1.2.0 #launch command using python 3.4 and the spark-csv package: $ IPYTHON_OPTS='notebook' PYSPARK_PYTHON=python3 /home/an/spark/spark-1.5.0-bin-hadoop2.6/bin/pyspark --packages com.databricks:spark-csv_2.11:1.2.0 构建在 PySpark上的第一个应用 我们已经检查了一切工作正常,将word count 作为本书的第一个实验是义不容辞的: # Word count on 1st Chapter of the Book using PySpark import re # import add from operator module from operator import add # read input file file_in = sc.textFile('/home/an/Documents/A00_Documents/Spark4Py 20150315') # count lines print('number of lines in file: %s' % file_in.count()) # add up lengths of each line chars = file_in.map(lambda s: len(s)).reduce(add) print('number of characters in file: %s' % chars) # Get words from the input file words =file_in.flatMap(lambda line: re.split('\W+', line.lower(). strip())) # words of more than 3 characters swords = words.filter(lambda x: len(x) > 3) # set count 1 per word words = words.map(lambda w: (w,1)) # reduce phase - sum count all the words words = words.reduceByKey(add) 在这个程序中, 首先从目录 /home/an/ Documents/A00_Documents/Spark4Py 20150315 中读取文件到 file_in. 然后计算文件的行数以及每行的字符数. 我们把文件拆分成单词并变成小写。 为了统计单词的目的, 我们选择多于三个字符的单词来避免象 the, and, for 这样的高频词. 一般地, 这些被认为是停词,应该被语言处理任务过滤掉 . 在该阶段,我们准备了 MapReduce 步骤,每个单词 map 为值1, 计算所有唯一单词的出现数量. 这是IPython Notebook中的代码描述. 最初的 10 cells是在数据集上的单词统计预处理 数据集在本地文件中提取. 以(count, word)格式交换词频统计元组是为了把count作为元组的key 进行排序 : # create tuple (count, word) and sort in descending words = words.map(lambda x: (x[1], x[0])).sortByKey(False) # take top 20 words by frequency words.take(20) 未来显示结果, 我们创建(count, word) 元组来以逆序显示词频出现最高的20个词: 生成直方图: # create function for histogram of most frequent words % matplotlib inline import matplotlib.pyplot as plt # def histogram(words): count = map(lambda x: x[1], words)m word = map(lambda x: x[0], words) plt.barh(range(len(count)), count,color = 'grey') plt.yticks(range(len(count)), word) # Change order of tuple (word, count) from (count, word) words = words.map(lambda x:(x[1], x[0])) words.take(25) # display histogram histogram(words.take(25)) 我们可以看到以直方图形式画出的高频词,我们已经交换了初识元组 (count, word) 为 (word, count): 所以,我们也已经回顾了本章所有的高频词 Spark, Data 和 Anaconda.

优秀的个人博客,低调大师

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

这一段,主要是 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 有三种部署方式: 单机单节点和两种分布式集群方式Yarn(Hadoop 的分布式资源管理器)或者Mesos(Berkeley 开发的开源资源管理器,同时可用于Spark): 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完成交互。 弹性分布数据集(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 数据转换和动作: 理解 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 软件栈中的部分组件:

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册