地铁译: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 keysparkvm: 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虚拟环境 4的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows7如何查看端口被占用
- 下一篇: myeclipse连接hadoop集群编