内容


使用 IBM Bluemix 开发和部署 Python 应用

Comments

本文将从一个开发人员的角度,介绍 Bluemix 运行时对不同应用类型的支持,重点讲解如何使用 Bluemix 平台来开发和部署 Python 类型的应用,主要内容包括:如何使用 Bluemix 开发和部署一个 Python Web 应用,在开发和部署 Python 应用的时候,会用到命令行工具来进行部署,并通过 Bluemix Web 控制台进行管理。最后本文还会结合 Apache Spark 服务来讲解如何在 Bluemix 上通过 Python 来做科学计算和数据分析。

环境准备及相关账号申请

  1. 申请 GitHub 账号

    本文用到的应用程序的源码是托管在 GitHub 上的,请自行申请 GitHub 账号,申请地址:https://github.com/

  2. 安装 Git 命令行工具, 使用 Git 命令行可以下载和提交代码到 GitHub。下载地址:https://git-scm.com/downloads
  3. 注册 Bluemix 账号

    申请地址:http://www.bluemix.net 在页面右上角点击 SIGN UP,填写相关信息提交申请,Bluemix 会发一封确认邮件到注册邮箱,需要手工进入注册邮箱点击确认,才能成功注册。第一次登陆 Bluemix 控制台的时候,会要求创建工作空间。

  4. 安装 CloudFoundry 命令行工具

    通过此工具,可以使用 Cloud Foundry 相关命令与 Bluemix 云环境交互,进行应用的部署,管理和服务的相关操作。参考 http://docs.cloudfoundry.org/devguide/installcf/install-go-cli.html

什么是 Buildpacks

IBM Bluemix 是基于开源云平台 Cloud Foundry 构建的,之所以 Bluemix ( Cloud Foundry ) 可以支持运行几乎所有类型的应用,其原因是因为引入了 Buildpacks 的概念。通俗的来讲,Buildpacks 主要的功能是:自动的探测应用的类型,并根据应用的类型和开发者提供的应用的描述和依赖,对应用所需的运行时和第三方依赖进行编译打包,最终生成一个由运行时,第三方依赖以及应用程序本身构成的可执行的实体(Droplet),并告知 Bluemix 平台,如何去启动和停止这个实体。从这个功能描述中,我们可以得出,Buidpacks 最终的产生是一个 Droplet,这个 Droplet 可以看成是对应用程序和运行时以及依赖的封装,这种封装对 Bluemix 平台本身屏蔽了一些具体的细节,对于平台来说,最终要运行的实体就是 Droplet,不同的应用类型,最终都会被封装成具有相同格式和接口的 Droplet,这些 Droplet 最终会被平台去运行。正是这种"封装"的机制,保证了几乎所有类型的应用都能在 Bluemix 平台上运行,而且行为一致。如果想要了解更多关于 Buildpacks 和 Droplet 的技术细节,可以访问参考资源。

Python Buildpack

对于 Python 应用,Bluemix 内置了 Python Buildpack 来对 Python 类型的应用进行支持。Python Buildpack 同时支持 Python 2 和 Python 3 的应用,但是要求 Python 应用的根目录里至少有一个 requirements.txt 或者 setup.py 文件,否则 Python Buildpack 将不能正常工作。

上手 Bluemix Python Buildpack

在开始进入动手开发和部署之前,我们先通过 Bluemix 控制台提供的 Python 应用模板在 Bluemix 上部署一个 Python Web 应用,从而对 Python 应用在 Bluemix 上的部署和结构有一个快速的了解。

登录 Bluemix 控制台

在浏览器中访问 Bluemix 全球站点 http://www.bluemix.net, 点击右上角的"Log In",输入已经注册成功的 Bluemix 账号和密码就能登录到 Bluemix 的控制台。如果是初次登陆,Bluemix 会引导用户创建属于自己的工作空间(Space),读者根据提示完成即可。工作空间用来包含和展示用户的应用,服务以及其他计算资源,是用户和 Bluemix 交互的主要场所。用户可以根据不同的目的和需求来创建不同的工作空间,来对计算资源和应用进行隔离或者分类。

图 1. Bluemix 主页

登陆成功以后,点击左上角的目录图标,并选择 Apps > Cloud Foundry Apps,然后点击"Create Cloud Foundry Applications"

图 2. 创建第一个 Python 应用

Bluemix 预制了大概 10 种不同应用类型的 Buildpacks,Python Buildpack 就是其中之一,如果用户要用到的 Buildpack 没有出现在下面的页面,那么就需要自己到开源社区查找相应的 Buildpack,或者自己来构建需要的 Buildpack,这部分内容没有包含在本文中,感兴趣的读者请查看 Cloud Foundry 的相关文档。

在这里我们选择 Python 并点击。

图 3. 选择 Python Buildpack

在应用的详细配置页面,指定 App name,Host name 以及 Domain。其中 Host name 必须是唯一的,不能与云上其他的应用同名,请读者自行设置成唯一的命令。默认情况下,App name 和 Host name 是相同的,默认的 Domain 是 mybluemix.net,这个 Domain 是公网可见的,Bluemix 允许用户根据自己的需要设置以上的默认值。最后,点击下方的"Create"创建 Python 应用。

图 4. 配置应用详细信息

应用创建成功后,控制台会默认调转到该应用程序的导航页面,根据页面左侧的导航,用户可以对应用程序进行信息的查看、管理、配置等等常规操作,我们在这里不再详细介绍控制台的操作,只会选择其中比较相关的几个页面来讲解。关于其他的控制台操作,用户可以自行点击使用。

点击左侧的 Overview 按钮,可以查看应用程序的概要信息和进行基本的管理操作。其中 Status 显示的应用程序当下的状态,.py 表明这是一个 Python 的应用,使用的是 Python Buildpack, 点击 View App 可以查看应用的主页和实际的运行效果。

图 5. 应用综述

在本节开头,我们提到这是一个由 Bluemix 提供的预制模板应用,用户可以选择将这个模板应用的源码下载到本地,然后在此基础上编写应用的逻辑代码,并重新部署到 Bluemix 上发布给目标客户来使用。在控制台的 Getting Started 页面,对以上操作有详细的知道步骤,用户可以自行去尝试。

图 6. 下载模板应用源码

当然,在大多数场景下,开发者都是首先在本地开发完代码,然后再选择部署到相应的平台去运行应用程序,下节内容将详细介绍,如果在本地开发一个 Python Web 应用,并通过 Cloud Foundry 命令行部署到 Bluemix 云平台。

开发和部署 Python Web 应用到 Bluemix

应用场景

接下来要开发和部署的这个 Python Web 应用会使用 Bluemix 提供的 dashDB 服务。dasdDB 是一个由 IBM 提供的 SQL 数据库服务,用户可以直接在 Bluemix 上注册使用,不需要在进行本地安装。除了数据存储服务,用户还可以使用 dashDB 来做为数据仓库,并进行数据挖掘等行为。在开发和部署应用程序的过程中,我们会使用 Cloud Foundry 命令行来做为主要的部署工具,同时,还会使用 Bluemix 控制台来对应用进行管理和配置。

图 7. 应用架构

源码管理

应用的源码存储在 Github 上,访问地址是:https://github.com/acostry/dw-python-dashdb

图 8. 应用源码

通过 Git 命令,可以将应用源码克隆到本地,方便我们进行本地开发,当然读者也可以按照下文的步骤一步步从零开始进行应用开发。

清单 1. 克隆源码
xius-mbp:dw acostry$ git clone https://github.com/acostry/dw-python-dashdb.git
Cloning into 'dw-python-dashdb'...
remote: Counting objects: 10, done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 10 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (10/10), done.
Checking connectivity... done.
xius-mbp:dw acostry$ cd dw-python-dashdb/
xius-mbp:dw-python-dashdb acostry$ ls
Procfile		app.py			requirements.txt
README.md		dashDB.ddl		runtime.txt

本地开发

要想实现在 Bluemix 平台运行 Python 应用,至少需要包含以下四个文件:Procfile, requirements.txt, runtime.txt 以及 app.py

  • Procfile: 这个文件是应用启动的入口,用来指定当在 Bluemix 上启动 Python 应用时需要运行的命令,比如在我们的例子里是这样设置的:

    web: python app.py
    其中 web 用来表明,我们正在启动的是一个 Web 类型的应用,"python app.py"用来指明需要运行的 Python 脚本。

  • requirements.txt: 这个文件用来指定应用程序所需要的第三方依赖,比如:

    Flabsk
    ibm_db
    Flask 是一个开发 Python Web 应用的开源框架,ibm_db 用来在 Python 应用中连接和使用 dashDB。

  • runtime.txt: 用来指定应用所需要 Python 版本。

    python-2.7.10

  • app.py: 这个文件就是 Python 应用的脚本或者源代码文件,包含了应用的逻辑。在我们的示例里面,这些代码逻辑主要包含了三部分内容,细节请查看清单 2, 3, 4.
清单 2. 读取环境变量 VCAP_SERVICES
if 'VCAP_SERVICES' in os.environ:
    db2info = json.loads(os.environ['VCAP_SERVICES'])['dashDB'][0]  
    db2cred = db2info["credentials"]  
   
db2conn = ibm_db.connect("DATABASE="+db2cred['db']+";HOSTNAME="+db2cred['hostname']+";PORT="+str(db2cred['port'])+";UID="+db2cred['username']+";PWD="+db2cred['password']+";","","")

这部分代码主要有两个功能:第一,从环境变量 VCAP_SERVICES 里动态读取 dashDB 服务实例的连接信息,并存储在 db2cred 变量里。第二,通过读取的连接信息,建立数据库连接。需要注意的是,只有当应用和 dashDB 数据库实例绑定以后,连接信息才会被写入 VCAP_SERVICES 环境变量,我们这里实现的是动态读取,所以即使还没有绑定数据库实例,代码逻辑也是没有问题的,这也是 Bluemix 推荐的读取 VCAP_SERVICES 信息的方式,不建议硬编码数据库实例信息到代码里,因为被写入环境变量 VCAP_SERVICES 里的信息,有可能会定期的被修改。这也是云上使用服务独有的特点,用户其实不需要关心服务实例具体在哪里,只需要告诉用户通过某种方式可以得到这些连接信息即可。用户需要关心的是如何使用,而不是怎么部署,如何部署以及管理这些服务实例等细节繁琐的问题。关于 VCAP_SERVICES 信息的格式,接下来的章节会讲到。

清单 3. 查询数据库记录并在页面显示
# main page to dump some enroll information  
@app.route('/')
def index():  
   page = '<title>Welcome dashDB!</title>'  
   page += '<h1>Sample IBM Bluemix Python Web Application which connects to dashDB!</h1>'  
   if db2conn:  
    # we have a DB2 connection, so obtain enroll information via enroll table, the enroll information need to be updated to dashDB manually:  
    stmt = ibm_db.exec_immediate(db2conn,"select * from enroll")
    # fetch the result  
    result = ibm_db.fetch_assoc(stmt)
    page += "Enroll Name: "+result["NAME"]+"<br/>Title: "+result["TITLE"]       
    page += "<br/>Skill: "+result["SKILL"]+"<br/> Company: "+str(result["COMPANY"])  
    page += "<br/>Country: "+str(result["COUNTRY"])  
     
   return page

这段代码的主要功能是从数据库的 enroll 表里查询数据,并将数据显示在 page 的主页上。要想让这段代码正常工作,我们需要首先在数据库里新建一张名为 enroll 的表,并插入一些实验数据,这部分内容可以参考下文的操作 dashDB 数据库相关章节。

清单 4. 查询数据库记录并在页面显示
if __name__ == '__main__':
    # Bind to PORT/HOST if defined, otherwise default to 5050/localhost.
    PORT = int(os.getenv('VCAP_APP_PORT', '5050'))
    HOST = str(os.getenv('VCAP_APP_HOST', 'localhost'))
    app.run(host=HOST, port=PORT)

绑定 PORT 和 HOST,根据 Cloud Foundry 的要求,运行在 Bluemix 上的应用,必须绑定"VCAP_APP_PORT"和"VCAP_APP_HOST",否则应用将不能被正常启动和运行。

说了这么多,让我们开始动手部署应用到 Bluemix 吧!

部署 Python 应用到 Bluemix

push 应用到云端

  • 命令行登陆: 使用 CF 命令行工具以及注册的 Bluemix 账户和密码登陆到 Bluemix 工作空间
    	xius-mbp:dw-python-dashdb acostry$ cf api https://api.ng.bluemix.net
    	Setting api endpoint to https://api.ng.bluemix.net...
    	OK                   
    	API endpoint:   https://api.ng.bluemix.net (API version: 2.54.0)   
    	Not logged in. Use 'cf login' to log in.
    	
    	xius-mbp:dw-python-dashdb acostry$ cf login
    	API endpoint: https://api.ng.bluemix.net
    	Email> xiuleizh@cn.ibm.com
    	Password>
    	Authenticating...
    	OK
    	
    	Select an org (or press enter to skip):
    	1. xiuleizh@cn.ibm.com
    	2. OE_Runtimes_SVT
    	3. BMIX_NG_CNSL_USERS
    	Org> 1
    	Targeted org xiuleizh@cn.ibm.com
    	
    	Select a space (or press enter to skip):
    	1. dev
    	2. dw-space
    	Space> 2
    	Targeted space dw-space
    	
    	
    	                   
    	API endpoint:   https://api.ng.bluemix.net (API version: 2.54.0)   
    	User:           xiuleizh@cn.ibm.com   
    	Org:            xiuleizh@cn.ibm.com   
    	Space:          dw-space
  • 在应用程序的根目录下,使用 cf push 命令来部署应用到 Bluemix 云平台
    	xius-mbp:dw-python-dashdb acostry$ ls
    	Procfile		app.py			requirements.txt
    	README.md		dashDB.ddl		runtime.txt
    	xius-mbp:dw-python-dashdb acostry$ cf push dw-python-cmd --no-start
    	Creating app dw-python-cmd in org xiuleizh@cn.ibm.com / space dw-space as xiuleizh@cn.ibm.com...
    	OK
    	
    	Creating route dw-python-cmd.mybluemix.net...
    	OK
    	
    	Binding dw-python-cmd.mybluemix.net to dw-python-cmd...
    	OK
    	
    	Uploading dw-python-cmd...
    	Uploading app files from: /Users/acostry/Workspace/dw/dw-python-dashdb
    	Uploading 2.8K, 6 files
    	Done uploading               
    	OK

    cf push 后面跟的 dw-python-cmd 是应用的名字,请读者在实际部署的时候另取新的名字并保证是云上唯一的,后面的"--no-start"参数是告诉 Bluemix 暂时不要启动应用,因为这个实例在代码里用到了 dashDB 服务实例,等配置好 dashDB 服务实例以后再来手工启动应用。

创建并绑定服务实例

  • 创建 dashDB 服务实例
    	xius-mbp:dw-python-dashdb acostry$ cf create-service dashDB Entry dashDB-Sample
    	Creating service instance dashDB-Sample in org xiuleizh@cn.ibm.com / space dw-space as xiuleizh@cn.ibm.com...
    	OK
    	
    	Attention: The plan `Entry` of service `dashDB` is not free.  The instance `dashDB-Sample` will incur a cost.  Contact your administrator if you think this is in error.

    cf create-service 后面有三个参数,第一个 dashDB 是所有服务的名称。第二个 Entry 指的是相应服务的 plan,plan 是和计价相关的概念,读者只需暂时记住就可以了,至于具体的计价信息,可以到服务的文档查看。第三个参数 dashDB-Sample 是所要创建的服务实例的名称,这个名称用户可以自行设定。在命令输出的最后有一个 Attention,这里是告知用户正在使用的服务 plan 是一个收费的服务。但是对于试用用户可以放心使用,每个服务都有一定的免费使用期限和用量,可以放心使用,并不会产生任何费用。

  • 绑定服务实例到具体应用
    	xius-mbp:dw-python-dashdb acostry$ cf bind-service dw-python-cmd dashDB-Sample
    	Binding service dashDB-Sample to app dw-python-cmd in org xiuleizh@cn.ibm.com / space dw-space as xiuleizh@cn.ibm.com...
    	OK

    cf bind-service 后面需要跟两个参数,一个是具体应用的名字,另外一个是所要绑定的 服务的实例名字。当绑定服务成功后,系统会提示 restage 应用,基本上就是要进行一次应用的重启来使绑定生效。因为在绑定的过程中会有一些服务信息被写入到相关的环境变量里,通过 restage 可以激活这些信息。

  • 在控制台验证应用和服务

    通过上面的操作,已经成功的部署了一个名为 dw-python-cmd 的应用到运行,并且创建并绑定了 dashDB 数据库实例 dashDB-Sample 到该应用。参照前文的方法,登陆 Bluemix 控制台用户界面,点击左上角的目录按钮,选择 Apps > Dashboard,在控制台上查看应用和服务的列表。

    图 9. 应用和服务列表

    分别单击应用和服务实例的名字就可以进入相应的显示和配置管理页面。在这里,我们点击 dw-python-cmd 进入到应用的管理页面,并选择 Runtime > Environment Variables,这里可以查看到我们之前提到的 VCAP_SERVICS 的具体信息,在上文提到的清单 2 里实际处理的就是这部分信息。基本上每一种服务都会有相关的 VCAP_SERVICES 信息和描述,用户需要首先了解这些信息,才能在自己的应用程序里正确的使用这些服务。VCAP_SERVICES 是服务与应用交互的接口和桥梁,读者可以自行查看每一种服务的文档来了解更过关于本服务的 VCAP_SERVICES 信息的细节。

    图 10. 环境变量 VCAP_SERVICES

初始化 dashDB 数据库

前文提到,app.py 会从一个叫做"enroll"的表里来查找数据,本节的主要内容就是介绍如何通过控制台在 dashDB 数据库中创建表并插入数据。在图 9 显示的服务列表里,点击 dashDB-Sample 进入到 dashDB 服务的管理页面:

图 11. dashDB 主页

在上图中,点击"OPEN"打开 dashDB 数据库实例的管理界面,并单击左侧列表中的"Run SQL"

图 12. dashDB Run SQL 视图

清空上图中的示例 SQL 语句,在运行框里输入如下 SQL 语句,并点击"Run All"执行 SQL,完成数据库的初始化。

清单 5. 初始化数据库实例
create table enroll(name varchar(50) not null primary key, title varchar(50), skill varchar(50), company varchar(50), country varchar(30));
insert into enroll values ('acostry', 'Software Engineer', 'Cloud Computing', 'IBM', 'China');
图 13. 执行 SQL 视图

如果碰到执行 SQL 失败,请多尝试几次或者换个时间段来执行,这是因为我们使用的 Bluemix 数据中心位于国外,经常会因为网络的问题出现各种未知错误。

启动并验证应用

  • 使用 cf start 命令来启动已经部署的应用
    	xius-mbp:dw-python-dashdb acostry$ cf start dw-python-cmd
    	Starting app dw-python-cmd in org xiuleizh@cn.ibm.com / space dw-space as xiuleizh@cn.ibm.com...
    	-----> Downloaded app package (4.0K)
    	-------> Buildpack version 1.5.5
    	-----> Installing python-2.7.10
    	     $ pip install -r requirements.txt
    	DEPRECATION: --allow-all-external has been deprecated and will be removed in the future. Due to changes in the repository protocol, it no longer has any effect.
    	       Collecting Flask (from -r requirements.txt (line 1))
    	         Downloading Flask-0.11.1-py2.py3-none-any.whl (80kB)
    	       Collecting ibm-db (from -r requirements.txt (line 2))
    	         Downloading ibm_db-2.0.7.tar.gz (553kB)
    	       Collecting click>=2.0 (from Flask->-r requirements.txt (line 1))
    	         Downloading click-6.6.tar.gz (283kB)
    	       Collecting itsdangerous>=0.21 (from Flask->-r requirements.txt (line 1))
    	         Downloading itsdangerous-0.24.tar.gz (46kB)
    	       Collecting Werkzeug>=0.7 (from Flask->-r requirements.txt (line 1))
    	       Collecting Jinja2>=2.4 (from Flask->-r requirements.txt (line 1))
    	         Downloading Jinja2-2.8-py2.py3-none-any.whl (263kB)
    	       Collecting MarkupSafe (from Jinja2>=2.4->Flask->-r requirements.txt (line 1))
    	         Downloading MarkupSafe-0.23.tar.gz
    	       Installing collected packages: click, itsdangerous, Werkzeug, MarkupSafe, Jinja2, Flask, ibm-db
    	         Running setup.py install for click: started
    	           Running setup.py install for click: finished with status 'done'
    	         Running setup.py install for itsdangerous: started
    	           Running setup.py install for itsdangerous: finished with status 'done'
    	         Running setup.py install for MarkupSafe: started
    	           Running setup.py install for MarkupSafe: finished with status 'done'
    	         Running setup.py install for ibm-db: started
    	           Running setup.py install for ibm-db: finished with status 'done'
    	       Successfully installed Flask-0.11.1 Jinja2-2.8 MarkupSafe-0.23 Werkzeug-0.11.11 click-6.6 ibm-db-2.0.7 itsdangerous-0.24
    	You are using pip version 8.1.1, however version 9.0.1 is available.
    	You are using pip version 8.1.1, however version 9.0.1 is available.
    	You should consider upgrading via the 'pip install --upgrade pip' command.
    		-----> Uploading droplet (62M)
    	0 of 1 instances running, 1 starting
    	1 of 1 instances running
    	
    	App started
    	
    	
    	OK
    	
    	App dw-python-cmd was started using this command `python app.py`
    	
    	Showing health and status for app dw-python-cmd in org xiuleizh@cn.ibm.com / space dw-space as xiuleizh@cn.ibm.com...
    	OK
    	
    	requested state: started
    	instances: 1/1
    	usage: 1G x 1 instances
    	urls: dw-python-cmd.mybluemix.net
    	last uploaded: Tue Nov 15 07:14:00 UTC 2016
    	stack: cflinuxfs2
    	buildpack: python 1.5.5
    	
    	     state     since                    cpu    memory        disk           details   
    	#0   running   2016-11-15 08:35:25 PM   0.0%   83.9M of 1G   214.5M of 1G

    当使用 cf start 命令来启动应用的时候,Bluemix 平台会自动去探测应用类型,
    并安装相应的运行时环境:Installing python-2.7.10
    安装应用程序定义的第三方依赖:$ pip install -r requirements.txt
    生成并上传 Droplet:Uploading droplet (62M)
    启动应用:App dw-python-cmd was started using this command `python app.py`
    最后给出应用的访问地址等信息:urls: dw-python-cmd.mybluemix.net

  • 验证应用是否启动成功

    在浏览器中输入应用的访问地址,比如:http://dw-python-cmd.mybluemix.net 如果看到如下页面,则表明应用启动正常,并从 dashDB 中成功获取的查询信息。

    图 14. 访问应用

使用 Apache Spark 服务和 Python 进行科学计算和数据分析

科学计算和数据分析是 Python 语言应用比较多的领域,Bluemix 对使用 Python 来进行科学计算和数据分析也提供了全面的支持。

Apache Spark 服务介绍

Apache Spark 是开源的集群计算框架,主要用于海量数据的计算和分析。IBM Analytics for Apache Spark 服务将 Spark 与 notebook 相结合,可以使用户非常方便的在 Bluemix 上进行科学计算和数据分析。用户只需要几次点击操作就能创建一个 Spark 集群,不需要进行复杂的安装和配置,非常快速的就能体验到 Spark 服务带来的便利。登陆 Bluemix,并点击 Catalog 可以查看更多关于 Apache Spark 服务的介绍。

图 15. IBM Analytics for Apache Spark

使用 IPython Notebook 和 Spark 进行数据分析

在开始进行数据分析之前,需要首先创建 Spark 服务实例,登陆 Bluemix,点击左上角目录按钮,选择 Services > Data&Analytics , 在显示页面里点击 Analytics,如下图所示:

图 16. 选择数据分析服务

在上图中,点击"NEW INSTANCE"创建一个新的 Spark 服务实例,在弹出页面里设置实例的名称和工作的空间,并点击"CREATE INSTANCE"

图 17. 创建 Spark 实例

Spark 实例创建成功以后,会跳转到 My Notebooks 页面,在这里点击"NEW NOTEBOOK"来创建一个新的 Notebook

图 18. My Notebooks

在创建 Notebook 的时候,我们可以选择创建一个空白的 Notebook,或者上传一个已经存在的 Notebook,同时也可以选择使用 Bluemix 预制的样本来创建。

图 19. 创建空白 Notebook

为了方便我们讲解 IPython Notebook 的使用,我们在这里使用 Bluemix 预制的样本来创建一个 Notebook

图 20. 创建样本 Notebook

点击"CREATE NOTEBOOK"创建一个基于样本的 IPython Notebook,如下图所示。红方框里是功能按钮用来帮助在 IPython Notebook 里运行 Python 脚本。右上角的 Notebook Tools 可以帮助用户更好的来使用和管理 Notebook,其中:

  • Data Sources: 用来导入和管理数据源,这些数据源就是被用来进行数据分析的原始数据,用户可以选择从本地的数据文件进行导入,也可以选择已经存储在 Bluemix 上的数据源进行导入
  • Notebook Info: 用来展示和 Notebook 相关的描述信息,比如名称和类型等等
  • Environment:用来显示 Python 和 Spark 的版本以及预先安装的第三方 Python 类库,这些第三方类库已经由 Bluemix 平台预先安装,用户可以直接使用,不需要再进行独立安装
  • Sharing:用来帮助用户将正在工作的 Notebook 分享给更多的人,用户可以选择将 Notebook 分享给有限的人,或者也可以选择分享给所有拥有分享链接的人
图 21. IPython Notebook

关于 IPython Notebook 更多的使用方法,读者可以根据样本程序的引导来进行更全面的学习。同时也可以参考文章《在 Bluemix 上使用 Spark 在浏览器中分析天气数据》 了解更多具体的用法和功能。

总结

在本文中,我们首先介绍了 Bluemix 里的 Buildpacks 机制,进而引出 Python Buildpack。然后通过一个实例来演示如何在 Bluemix 上开发和部署 Python 应用。最后向读者介绍了如何使用 Apache Spark 服务和 Python 来进行科学计算和数据分析。读完本篇文章,相信读者应该已经对在 Bluemix 上如何使用 Python 和相关服务有了比较深刻的理解,并应该具备了够独立部署 Python 应用到 Bluemix 云平台的能力。

参考资源 (resources)


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Cloud computing, Open source
ArticleID=1040405
ArticleTitle=使用 IBM Bluemix 开发和部署 Python 应用
publish-date=11302016