云计算实验报告.docx
《云计算实验报告.docx》由会员分享,可在线阅读,更多相关《云计算实验报告.docx(18页珍藏版)》请在冰豆网上搜索。
云计算实验报告
云计算原理课程
期末实践报告
题目:
Linux集群、MapReduce和CloudSim实践
成绩:
学号:
姓名:
罗滔
登录邮箱:
任课老师:
许娟
2016年11月12日
实验一:
AWS身份与访问管理(P2~P11)
实验二:
AmazonRelationalDatabaseService(P11~P20)
实验三:
Hadoop实验报告(P21~)
AWS管理控制台
使用qwikLABS登录AWS管理控制台
6.在AWS管理控制台中,单击【服务/Services】,然后单击【IAM或身份与访问管理/
IAMorIdentity&AccessManagement】。
7.在IAM控制台的左侧面板中,单击【用户/Users】。
8.找到“userone”,然后单击其名称以显示有关该用户的详细信息。
在用户详细信息中,找到有关该用户的以下三方面的信息:
a.已向该用户分配了一个密码
b.该用户不属于任何组
c.目前没有任何策略与该用户关联(“附加到”该用户)
9.现在,单击左侧导航窗格中的【组/Groups】。
本实验的CloudFormation模板还创建了三个组。
在IAM控制台中的【用户/Users】仪表板中可以看到,
自动化CloudFormation脚本在创建这些组时为其提供了唯一的名称。
这些唯一名称包含以下字符串:
“EC2support”
“EC2admin”
“S3admin”
完整组名的格式如下所示:
EC2support--GA9LGREA7X4S
从现在开始,我们在本实验中将使用上面这些简写名称来指代这些组。
您可以在【组/Groups】仪表板中搜
索子字符串,以便为后续实验操作确定正确的组。
10.单击“EC2support”对应的组名。
其格式应与上面的类似。
11.向下滚动至组详细信息页面中的【权限/Permissions】部分后,在【内联策略/InlinePolicies】部分,
可以看到一个名称为“EC2supportpolicy”的策略与该组关联。
在策略中,您可以规定将允许或拒绝对特定AWS资源执行哪些操作。
您可以使用自定义策略,或通过
选择AWS托管策略来使用一组预定义的权限。
12.虽然我们不会更改此策略,但请单击【编辑策略/EditPolicy】,使其显示在一个窗口中,以便您进行查
看和滚动。
请留意IAM策略中语句的基本结构。
“Action”部分指定了该服务内的AWS服务和功能。
“Resource”部
分定义了该策略规则所涵盖的实体范围,而“Effect”部分则定义了所需结果。
更多有关定义IAM策略的
信息,请访问“AWSIdentityandAccessManagement:
权限和策略”文档页面。
13.单击另外两个组(“EC2admin”和“S3admin”),查看附加到这两个组的策略。
您现在能否识别出附加到这些组的策略所允许的权限
18.完成后,再次单击左侧面板中的【组/Groups】。
各组的【用户/Users】列中应显示“1”,表示各组中
的用户数。
设置自定义密码
替换和设置自定义密码
22.为“userone”设置一个密码,然后在临时的记事本文件中记下该密码。
24.重复上述步骤,为“usertwo”和“userthree”设置密码。
测试对S3的访问权限
您在本实验中使用的“awsstudent”用户所拥有的权限寥寥无几,例如,您可以访问S3仪表板,但无法查看
其中的存储桶。
立即对此进行测试:
25.在主AWS控制台上,单击【服务/Services】,然后单击【S3】。
26.您应该会看到三个存储桶。
尝试单击存储桶以查看其内容–您将无法查看其内容。
25.
28.在主IAM仪表板上,在【欢迎使用身份识别和访问管理/WelcometoIdentityandAccessManagement】
下方,您将看到IAM用户登录链接。
复制此URL,然后将其粘贴到临时记事本文件中。
30.现在,您的记事本文件中应包含登录URL、完整的“userthree”登录名和密码。
在新的浏览器中,使用这些信息以“userthree”的身份登录。
31.您应该会看到标准的AWS控制台。
但是,在右上角,您的用户名不再是“awsstudent”,而是
“userthree”。
32.现在,访问S3服务仪表板。
您可以看到之前的三个存储桶,但现在,作为“S3admin”组的一部分,您可以查看这些存储桶、复制文件、创建新的存储桶和文件等。
实验二:
AmazonRelationalDatabaseService(P12~P21)
1.登录AWS管理控制台
登录之后,返回qwikLAB网
2.创建RelationalDatabaseService(RDS)实例要开始创建第一个AmazonRDS实例,您需要访问Amazon管理控制台上的AmazonRDS图标,然后使RelationalDatabaseService向导。
7.单击首页上的AmazonRDS图标并转到该控制面板。
8.单击“LaunchaDatabaseInstance/启动数据库实例”按钮来启动RDS向导。
9.单击MySQL数据库引擎类型对面的“Select/选择”按钮。
10.看到该数据库是否用于生产目的的询问时,选择“开发测试”单选按钮,然后单击“NextStep/下一步”。
11.在接下来的“DBInstanceDetails/指定数据库详细信息”屏幕上,按以下内容进行设置:
a.DBInstanceClass/数据库实例类
b.Multi--AZDeployment/多可用区部署
c.AllocatedStorage/分配的存储空间:
5
d.DBInstanceIdentifier/数据库实例标识符:
RDSLab
e.MasterUsername:
/主用户名AWSMaster
f.MasterPassword/主密码:
AWS12345
12.单击“NextStep/下一步”。
13.在接下来的“AdditionalConfig/配置高级设置”屏幕上,按以下内容进行设置:
a.DatabaseName/数据库名称:
RDSLab
b.PublicallyAccessible/公开访问:
否
c.VPCSecurityGroup/VPC安全组:
选择包含文本“qlstack”的安全组
14.在备份中,选择备份保留期为0天。
15.单击“LaunchDBInstance/启动数据库实例”。
从亚马逊系统映像(AMI)创建AmazonLinux实例
要开始创建第一个Amazon实例,您需要访问Amazon管理控制台上的AmazonEC2图标,然后使用向导。
16.返回AWS管理控制台(它在浏览器中仍是打开的)。
17.单击AWS管理控制台首页上的EC2图标。
18.单击“Instances/实例”链接来创建实例。
19.单击“LaunchInstance/启动实例”按钮来开始该过程。
20.在第一个对话窗.口中,步骤1:
选择一个Amazon系统映像,然后单击该AMI旁边的“Select/选.”来选择AmazonLinuxAMI实例。
注意:
确认是64位的映像。
21.步骤2:
使实例类型保留默认设置,即。
要继续,则单击“Next:
ConfigureInstanceDetails/下一
步:
配置实例详细信息”。
22.步骤3:
ConfigureInstanceDetails/配置实例详细信息,我们将保留所有默认选项,并单击“Next:
AddStorage/下一步:
添加存储”。
23.步骤4:
AddStorage/添加存储,保留默认虚拟拟硬。
单击“Next:
TagInstance/下一步:
标签实例”。
注意:
您可以在此轻松增加更多虚拟硬盘或更改硬盘大小。
24.步骤5:
TagInstance/标.实例,使标签实例界面为实例命名。
您将注意到左边文本框填充了标签的名字为Name,右边.文本框为空。
在空文,键入名称,例如“EC2FreeLab”并单击“Next:
Configure
SecurityGroup/下一步:
配置安全组。
25.步骤6:
ConfigureSecurityGroup/配置安全组,接受默认安全组,因为它允许通过端口22(SSH)从任意位置连接此Linux实例,单击“ReviewandLaunch/审核和启.
26.步骤7:
通过“ReviewInstanceLaunch/审核和启.动”,您可以获取全部设置的概览。
。
单击“Launch/启动”以继续。
27.QwikLab自动.您生成的密钥.应.自动填第二个下拉框。
28.单击“acknowledgement/确认”复选框,声明。
29.现在,单.“LaunchInstance/启.实例。
30.单击“ViewInstances/查看实例。
40.将ec2--user@键入HostName字段,然后将您复制到剪贴板板的连接字符串粘贴到42.单击单词“Auth”选择“Auth”类(而不是单词“Auth”旁边的+符号)。
43.单击“Browse”。
44.浏览到您稍早在本实验中保存.ppk文件的位置。
45.选择您下载的.ppk文件。
46.单击“Open”。
47.在PuTTY客户端,单击“Open”。
48.出现提示时,单击“Yes”允许PuTTY缓存服务器的主机键。
您已成功登录了Linux主机!
50.回到RDS页面,选中并展开之前创建的RDS实例。
50.
51.回到LinuxEC2主机的终端,输入以下命令:
$mysql–h--p–uAWSMaster
52.在密码的提示符下输入AWS12345
53.然后在mysql>提示符下输入showdatabases;并检查结果。
54.您现在已将MySQL客户端连接到您新创建的RDS实例。
恭喜您!
Hadoop云计算实验报告(P21-)
1、实验目的
在虚拟机Ubuntu上安装Hadoop单机模式和集群;
编写一个用Hadoop处理数据的程序,在单机和集群上运行程序。
2、实验环境
虚拟机:
VMware9
操作系统:
Hadoop和Jdk和Eclipse
Hadoop集群:
一台namenode主机master,一台datanode主机salve,
3、主要设计思路
在ubuntu操作系统下,安装必要软件和环境搭建,使用eclipse编写程序代码。
实现大数据的统计。
本次实验是统计软件代理系统操作人员处理的信息量,即每个操作人员出现的次数。
4、算法设计
该算法首先将输入文件都包含进来,然后交由map程序处理,map程序将输入读入后切出其中的用户名,并标记它的数目为1,形成的形式,然后交由reduce处理,reduce将相同key值(也就是word)的value值收集起来,形成的形式,之后再将这些1值加起来,即为用户名出现的个数,最后将这个对以TextOutputFormat的形式输出到HDFS中。
5、安装实验环境
安装ubuntu操作系统
1)打开VMware,在Hometab中单击“CreateaNewVirtualMachine”,
2)选择custom,选择虚拟硬件版本,选择ios文件,next,
3)录入目标操作系统信息,包括Fullname、Uername和Password,next,
4)选择默认的选项,一般不做更改,最后确认信息,Finish,
5)安装成功后,会看到如下画面,
安装配置Samba
安装samba主要为了实现与windows操作系统的通讯,由于server版本的ubuntu没有自带图形操作界面,所以下载资料等操作不太方便,这也是安装samba的目的之一。
1)安装samba,输入如下命令:
2)安装vim
3)创建共享目录,并修改权限
4)配置samba。
修改samba的配置文件/etc/samba/,将security=share,并在文件的末尾追加如下内容,
5)测试。
在windows实机中,通过ip访问ubuntu虚拟机,可以见到share文件夹
安装配置JDK
首先,下载java开发工具包JDK。
在本次试验中,我们下载的版本是。
解压安装到/usr/lib/jvm/目录下,更名为java-7-sun。
配置环境变量/etc/environment,
使配置生效
测试安装配置结果
在单节点(伪分布式)环境下运行HADOOP
1)添加Hadoop用户并赋予sudo权限
2)安装配置SSH
切换至hadoop用户,
配置密钥,使得hadoop用户能够无须输入密码,通过SSH访问localhost,
测试结果:
3)安装配置Hadoop
首先下载Hadoop,解压缩到/opt/hadoop目录下,更改目录名称为hadoop。
修改与hadoop相关的配置文件(在/opt/hadoop/conf目录下),分别是,,,。
在此不一一列举。
4)运行Hadoop
首先格式化HDFS,
启动单节点集群,
通过jps查看,
master
slave
停止单节点集群,
在多节点(分布式)环境下运行HADOOP
1)设置/etc/hosts文件
2)设置节点之间无密码SSH登陆
验证配置SSH是否正确
3)修改集群配置文件
修改master的masters、slaves,修改所有节点的,,,在此不一一列出。
4)在master上格式化HDFS
5)启动和停止集群
启动集群,
在master上启动HDFS后,jps结果如下:
master
slave
在master上启动mapreduce后,jps结果如下:
master
slave
停止集群
6、运行程序
1.在单机上运行程序
(1)在Eclipse下,新建map/reduce工程
(2)新建一个java类UserNameCount,编写代码
(3)运行程序,结果如下:
(4)在eclipse中编译好源代码后,导出程序的jar包,供在集群上使用。
2.在集群上运行程序
(1)启动集群,通过jps命令查看master,slave上启动的服务列表,结果如下:
(2)在集群环境下运行该程序jar包(),结果如下:
(3)查看集群环境下启动程序生成的结果,即output文件,结果如下:
(4)数据统计结果在part-r-00000中,具体内容如下,
7、源代码:
packagehadoop;
publicclassUserNameCount{
publicstaticclassUserNameCountMapextends
Mapper{
privatefinalIntWritableone=newIntWritable
(1);
privateTextword=newText();
publicvoidmap(LongWritablekey,Textvalue,Contextcontext)
throwsIOException,InterruptedException{
Stringline=();
StringTokenizertoken=newStringTokenizer(line);
while()){
());
(word,one);
}
}
}
publicstaticclassUserNameCountReduceextends
Reducer{
publicvoidreduce(Textkey,Iterablevalues,
Contextcontext)throwsIOException,InterruptedException{
intsum=0;
for(IntWritableval:
values){
sum+=();
}
(key,newIntWritable(sum));
}
}
publicstaticvoidmain(String[]args)throwsException{
Configurationconf=newConfiguration();
Jobjob=newJob(conf);
;
("usernamecount");
;
;
;
;
;
;
(job,newPath(args[0]));
(job,newPath(args[1]));
(true);
}
}