基于亚马逊云计算服务(AWS)的大数据部署操作指南
前言
学习如何将AWS和你的笔记本或台式机连接起来进行更加快速的运算!
你是否还在使用你的笔记本进行大数据处理之中苦苦挣扎呢?我最近在尝试处理一套10GB的图像识别数据集,但是受限于我的笔记本的运算能力,无法进行更进一步的处理,庆幸的是,在几个小时内我在AWS上免费建立了一个24GB的机器,并且得到了改善后的处理结果,从而解决了这个问题。
为了测试运行速度,我用的是功能受限的免费测试版,令我惊讶的是,它运行太快了。像我这样使用笔记本电脑处理大数据时手足无措的人不在少数,事实上,我们中的大部分人当遇到这种情况时都会考虑购买一台新的运算能力更强的电脑,但是相信我,在AWS平台上进行运算更加便宜。
为了帮助大家解决这个问题,我将会分步展示将24GB的AWS和我的笔记本连接起来的整个流程。为了介绍工作原理,我将会以Python中的Iris数据集为例进行解释。对于R语言的用户来说,除我进行了高亮处理的代码行部分不同之外,其余均相同。
注:写这篇文章不是为了在这里推广AWS,只是想让面对大数据处理困难的人能够尽快解决问题。
内容概要
什么是AWS实例?
如何配置一个实例
如何在AWS实例中建立你的第一个模型?
1.什么是AWS实例是什么?
亚马逊弹性计算云实例(译者注:云中的虚拟服务器)可在云中提供大小可调的计算容量,该服务旨在避免企业或个人用户硬件的现场安装和维护。你可以以极低的价格获得像使用自己笔记本电脑一样简单的梦寐以求的运算能力,根据自己的使用情况按次付费。你可以根据自己的要求对安全、网络和存储进行管理。
在我们进一步了解和使用该界面和平台前,让我们先了解一下亚马逊云服务中常用的术语。
1.1实例和亚马逊镜像
正如AWS所说的那样,亚马逊机器镜像是一个包含了诸如操作系统、应用程序服务器、应用程序等的软件配置模板。我们可以将其理解为一个高度自定义的操作系统,不同的亚马逊机器镜像可以理解为不同的操作系统,就像Windows和Linux操作系统,但是这还无法完全描述它的硬件,一个实例它还包括了RAM,内存、存储容量和CPU核数等等参数。
可以同时运行多个同种或不同种类的AMI,对AM使用的限制取决于你个人对配置的资金预算。
你可以使用AWS预先配置的AMI,也可以使用自己自定义的AMI。例如,例如,如果你自己有一个网站然后你就可以自己定义一个包含自己网站代码和静态内容的AMI因此在一个新的实例中工作很快。一些AWS开发人员也自己开发了一系列自定义的AMI,这些AMI你可以在AW S的商店中购买。
1.2 AWS的区域和可用区
亚马逊数据中心托管于全球多个位置。这些位置由区域和可用区构成,每个区域都是一个独立的地理区域,而每个区域多个相互隔离的位置,称为可用区。你可以选择将你的数据存放于多个区域或可用区。如果是其中某个地点的的数据中心出现故障,其他地方的数据中心仍然能够正常运行。
下图显示了AWS的数据中心的分布情况:
注意以下几点:
AWS不提供任何跨区域的数据传输,因此其他区域的那部分必须自己进行部署。
我们将实例存放在多个可用区,如果其中一个出现故障,我们可以通过定义弹性IP地址进行解决。
可用区由区域代码后跟一个字母标识符表示,例如“us-west-1a”。AWS将可用区独立映射到每个账户的标识符,你无法在不同账户之间进行比对。
1.3实例类型
实例类型决定了实例主机的硬件,每个实例类型提供不同的计算、内存、存储功能,并按照这些功能分组到实例系列。
通常情况下,一些主机资源是专用的,但在资源未充分利用时它也会在实例之间共享主机的另一些资源,因此,对于一个给定类型的实例,资源在一定的范围内变化。
实例可以是当前一代实例,也可以是上一代实例,新用户应该使用当前一代实例,同时也为根据上一代实例优化了应用程序,但尚未升级的用户提供了上一代实例。
AWS为不同的使用条件提供了多种的实例。你能够在这里看到一份详细的列表。在此就不逐一进行介绍了。这里我会讨论几个重要的概念和术语以便大家更好的理解随后的实例。
1.3.1 ECU(EC2计算单位)
由于AWS服务器是基于多种类的硬件,因此很难对不同个体的表现状况进行对比。AWS提出了以ECU为单位来作为硬件基准。1个ECU提供相当于一个1.0-1.2GHZ 2007 Opteron或者2007 xeon处理器的CPU 容量。因此我们能够轻松的对比10ECU和88ECU的实例的表现情况。
1.3.2突发情况实例(译者注:现改名为T2实例)
在这样一个实例中,系统预定义了一个最低水平的运算能力,你还可以根据实例的空闲时间和使用率来获得积分,当实例空闲时,它可以赚取积分并且当他们工作时可以使用这些积分,赚取的积分的量取决于实例的大小。
该实例是用来给那些不需要持续使用完整CPU、但偶尔需要突增性能的工作负载,如Web服务器,开发人员环境和小型数据库。
1.3.3亚马逊弹性储存区块(EBS)
在AWS中存储分为两种,第一种是实例存储,它是临时性存储空间,如果停止或终止实例,实例存储上的所有数据都会丢失,但是这个存储就在实例中,多以速度可以很快。另一种存储形式是亚马逊EBS,它是一种连接到实例中的外部硬盘。即便是实例没有运行,其中存储的数据也都可以获得。因为多种设备会使用同一硬件中的空间,所以它更像一个外部硬盘,因此数据转移速度就会很慢。
EBS卷的性能取决于吞吐量,为此AWS提出了一种EBS优化的解决方案,也就是在AWS服务器和数据存储设备之间设置专用吞吐容量,而专用容量能够随实例赠送或者额外购买获得。
1.3.4专用实例
专用实例是在主机硬件层次上物理隔离的实例。通常情况下,一个服务器会被用来运行属于不同用户的多种实例,但是客户可以选择只运行特定账户特定实例的专用服务器。
2. 如何配置和启动一个实例?
现在让我们使用上面所学的知识来建立和启动一个实例。该例子中我将会使用一个免费的实例,那样大家就可以不用任何费用的进行尝试。有时候为了运行某些特别的应用程序,你就必须根据计算能力来选择实例。
为了获得你的第一个实例,请按以下步骤操作:
步骤0:登录你的AWS账户
首先我们需要一个AWS账户,然后登录进去。AWS为初学者提供了一些免费的实例,像我们这个教程中将要提到的T2。登录进去后,你的控制台是这样:
在这个页面,选择顶部的使用橘黄色高亮的“EC2”选项,将会进入如下EC2面板。
这就是你控制自己实例的控制台,这里贴出了截图。我们做了自己的第一个实例,直接点击中间大的的蓝色按钮“Launch Instance”(启动实例),这将会启动我们的新实例。
步骤1:选择亚马逊机器映像AMI
现在需要选择我们的AMI。启动实例按钮将会将我们带到以下界面:
你可以看到许多的选项
Quick Start(快速启动):这是AMI缺省配置,我们也可以自己选择
My AMIs(我的AMIs):在账户中创建自定义的AMI
AWS MarketPlace(AWS市场):为运行某些特定程序而预先配置好的第三方AMI。
Community AMIs(AMI社区):这里有由AWS开发人员制作的具有特定用途的AMI。
目前,我们只使用其中的快速启动AMI按钮。我们以上图中的Ubuntu 14.04服务器的AMI为例,当然你也可以探索其他选项。
注意:这个页面仅显示了4个AMI选项,但是当你向下滚动滑轮时你就能看到更多的选项,要注意免费级别的标签,有这个标签的才能够在第一年获得免费的资源。
我们选择Ubuntu服务器然后进行下一步。
步骤2:选择实例类型
在这一步中,我们根据上面选择的AMI来选择一个实例,页面如下:
在这里,你能够在顶部看到两个筛选条件:
All Instance types(所有实例类型):这里你可以根据 这里 的描述选择出一个实例类型。
Current Generation(当前一代): 这个选项也可改为前一代实例。
这里,我们就选择t2.micro,因为它是唯一一个免费的。
步骤3:配置实例细节
界面如下:
该页面允许修改的设置为:
Purchasing option(购买选项):选择一个实例
Tenancy(租赁):当需要特定实例时可以选择
步骤4:增加存储容量
现在我们配置实例的内存,页面如下:
默认情况下是8GB根存储容量,在EBS免费的情况下我们能够增加到30GB,因此,我增又加了16GB的存储。
注意:你可以填入一些数值作为你的应用参数。敲击“Review and Launch”(查看并启动)按钮进行最后一步。
步骤5:启动
这一步显示了的启动之前大致选项,对我们来说,结果如下:
检查过各个选项后启动实例,当启动实例时,AWS会弹出关键参数的窗口,这只是一种确认操作。我们能够创建一个密钥并且以.pem文件格式下载下来,从而避免忘记密码的麻烦。
选择“Create a new key pair”(创建密钥对),然后输入.pem文件的名字,并将它保存在已知的位置,随后会用到。
现在实例已经启动,将会进入EC2面板,这里我们可以看到运行的实例,对我而言,显示如图:
这里你可以看到两个实例,顶部的实例是我们刚才建立的那个,注意该实例需要一些时间进行配置。当实例正在启动时状态按钮栏中显示为“Initializing..”(正在初始化…),现在我们能看到实例所有检查通过,然后点击“Connect”(连接)按钮,我们就可以进行实例之间的通讯了。
会弹出如下界面:
这里显示了两个实例之间连接的选项。第一个是使用单独的像putty那样的SSH客户端,第二种是直接使用浏览器。由于我使用的是Mac OS操作系统,可以直接使用我的终端进行SSH连接。如果你使用的的是Windows操作系统,你可以安装Putty或者采用第二种方法。
现在,我们的实例已经启动并开始运行,接下来我们在其中运行一些Python代码。
3.如何在AWS实例中建立第一个模型?
首先,我会使用Mac带领大家通过以下几步和实例连接起来。
(1)首先选择包含有.pem文件的文件夹作为当前目录
(2)运行step3上部连接页面中的命令: – chmod 400 test-instance.pem
(3)运行连接页面中的步骤4的代码: – ssh -i “test-instance.pem” ubuntu@ec2-52-39-116-59.us-west- 2.compute.amazonaws.com
然后我们会进入Ubuntu实例的界面中,按照以上步骤所得的结果如下截图。
你可以看到,最终我们进入AWS实例并且获得了终端的权限,现在我们能够很容易的在它上面运行Python代码了。
使用 – python 命令进入Python:
这就像一个全新的操作系统,因此我们需要从头开始安装一切,首先我们要建立用来安装其他软件的管道。
#Install setuptools: wget https://bootstrap.pypa.io/ez_setup.py -O - | python - --user sudo python setup.py install #Install pip: wget http://pypi.python.org/packages/source/p/pip/pip-1.1.tar.gz#md5=62a9f08dd5dc69d76734568a6c040508 tar -xvf pip*.gz cd pip* sudo apt-get install python-pip
这些代码将会建立管道,现在我们可以使用如下命令来安装numpy,scipy和skleam。
pip install numpy pip install scipy pip install sklearn
这些命令将会安装相应的库,如果你出现了权限问题,可以在这些命令之前添加 sudo 命令来获取管理员权限。注意这些操作仅仅是用来作为示范的,实际工作中,你也许想建立一些可以运行不影响其他代码的虚拟环境。
输入以下Python代码并且输入库来确定你安装成功。
我们将Iris数据集作为示例导入到skleam中并且制作一个决策树分类器。
现在我们能够很快制作出一个决策树,并且通过具体得分进行交叉验证。
from sklearn.cross_validation import cross_val_score alg = DecisionTreeClassifier ( random_state = 0 ) cross_val_score(clf, iris.data, iris.target, cv=10)
现在我们在AWS实例中成功创建了自己的第一个模型并且它是免费的,教程到这里就结束了。记住在你不使用实例时关掉它,否则AWS会继续向你收费。你还可以关注我的其它文章,其中将会使用大量数据来进行一个更加具体的实际应用程序练习,并且使用AWS实例来训练几个更大的模型。
结语
本文中我们为了理解AWS系统,介绍了几个相关概念和术语。然后,我们开始建立我们自己的免费的AWS实例,其中使用截屏进行了全过程的详细介绍。
最后,我们安装了包括numpy和skleam的Python的库,并且使用Iris数据集建立了我们自己的第一个模型。我尽量将这个较难的介绍讲的更加基础易懂。
如果你按照这篇文章,我保证你会对其有一个系统的认识,这会对你今后的实际应用有所帮助。
原文:A Complete Tutorial to work on Big Data with Amazon Web Services (AWS)
End。