基于EMR离线数据分析
登陆集群
打开阿里云E-MapReduce控制台,在E-MapReduce控制台页面的集群列表区域,单击集群名/ID。然后在集群的主机信息栏中,复制MASTER的节点的公网ip地址,打开终端连接集群,命令ssh root@公网Ip地址
。例如:ssh root@47.100.49.44
。提示输入 yes
然后输入登录密码,默认密码为@Aliyun2021
。
上传数据到HDFS
创建HDFS目录:hdfs dfs -mkdir -p /data/student
上传文件到hadoop文件系统:
创建u.txt文件(vim u.txt
),然后写入以下数据(第一列表示userid,第二列表示movieid,第三列表示rating,第四列表示unixtime),最后上传文件u.txt到hadoop文件系统(hdfs dfs -put u.txt /data/student
):以下数据没有问题,请放心复制使用
196 242 3 881250949
186 302 3 891717742
22 377 1 878887116
244 51 2 880606923
166 346 1 886397596
298 474 4 884182806
115 265 2 881171488
253 465 5 891628467
305 451 3 886324817
6 86 3 883603013
62 257 2 879372434
286 1014 5 879781125
200 222 5 876042340
210 40 3 891035994
224 29 3 888104457
303 785 3 879485318
122 387 5 879270459
194 274 2 879539794
291 1042 4 874834944
234 1184 2 892079237
119 392 4 886176814
167 486 4 892738452
299 144 4 877881320
291 118 2 874833878
308 1 4 887736532
95 546 2 879196566
38 95 5 892430094
102 768 2 883748450
63 277 4 875747401
160 234 5 876861185
50 246 3 877052329
301 98 4 882075827
225 193 4 879539727
290 88 4 880731963
97 194 3 884238860
157 274 4 886890835
181 1081 1 878962623
278 603 5 891295330
276 796 1 874791932
7 32 4 891350932
10 16 4 877888877
284 304 4 885329322
201 979 2 884114233
276 564 3 874791805
287 327 5 875333916
246 201 5 884921594
242 1137 5 879741196
249 241 5 879641194
99 4 5 886519097
178 332 3 882823437
251 100 4 886271884
81 432 2 876535131
260 322 4 890618898
25 181 5 885853415
59 196 5 888205088
72 679 2 880037164
87 384 4 879877127
290 143 5 880474293
42 423 5 881107687
292 515 4 881103977
115 20 3 881171009
20 288 1 879667584
201 219 4 884112673
13 526 3 882141053
246 919 4 884920949
138 26 5 879024232
167 232 1 892738341
60 427 5 883326620
57 304 5 883698581
223 274 4 891550094
189 512 4 893277702
243 15 3 879987440
92 1049 1 890251826
246 416 3 884923047
194 165 4 879546723
241 690 2 887249482
178 248 4 882823954
254 1444 3 886475558
293 5 3 888906576
127 229 5 884364867
225 237 5 879539643
299 229 3 878192429
225 480 5 879540748
276 54 3 874791025
291 144 5 874835091
222 366 4 878183381
267 518 5 878971773
42 403 3 881108684
11 111 4 891903862
95 625 4 888954412
8 338 4 879361873
162 25 4 877635573
87 1016 4 879876194
279 154 5 875296291
145 275 2 885557505
119 1153 5 874781198
62 498 4 879373848
62 382 3 879375537
28 209 4 881961214
135 23 4 879857765
32 294 3 883709863
90 382 5 891383835
286 208 4 877531942
293 685 3 888905170
216 144 4 880234639
166 328 5 886397722
查看文件:hdfs dfs -ls /data/student
使用hive创建表
登录hive数据库:hive
创建user表:
CREATE TABLE emrusers (
userid INT,
movieid INT,
rating INT,
unixtime STRING )
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
;
把hadoop文件系统数据加载到hive数据表:
LOAD DATA INPATH '/data/student/u.txt' INTO TABLE emrusers;
对表进行操作
查看5行表数据:select * from emrusers limit 5;
查询数据表中有多少条数据:select count(*) from emrusers;
查询数据表中评级最高的三个电影:select movieid,sum(rating) as rat from emrusers group by movieid order by rat desc limit 3;
仅删除表数据:truncate table emrusers;
数据表无数据
如果你在进行对表操作时,查询不到数据,如下图,那么是你的第二步上传数据到HDFS时的数据有些许问题。阿里云手册的数据有些许的问题,如果你是直接复制的那么数据结构有问题,需要手动调整数据中分隔为Table,或者在创建hive表时使用两个空格切分数据。第二步我的数据已经做了手动调整,可以放心复制使用。先清空表数据(truncate table emrusers;
),重复第二、三步操作即可,创建目录、创建表操作除外。
使用阿里云Elasticsearch快速搭建智能运维系统
使用Beats采集器收集集群上的系统数据和Nginx日志数据,配置基础的指标分析看板,简单展示数据采集、分析的过程和操作方式
登录Kibana
登录阿里云Elasticsearch控制台(https://elasticsearch-cn-hangzhou.console.aliyun.com),本次实验使用的Elasticsearh6.8。
在Elasticsearch栏,点击集群管理>实例ID>配置与管理>可视化控制,然后在Kibana栏中点击修改配置,再开启Kibana私网访问。返回上级页面,在Kibana栏,点击公网入口,复制云产品资源的Elasticsearch登录名和登录密码,到Kibana登录页面的账号、密码,最后登录。在登录成功页面,单击Explore on my own
。
开启自动创建索引功能
点击Kibana左侧导航栏中的Dev Tools(开发工具),再单击Go to work。在Console页签下,执行如下命令,开启阿里云ES实例的自动创建索引功能。
PUT _cluster/settings
{
"persistent": {
"action.auto_create_index": "true"
}
}
开启成功后,结果如下:
{
"acknowledged" : true,
"persistent" : {
"action" : {
"auto_create_index" : "true"
}
},
"transient" : { }
}
使用Metricbeat采集集群上的系统数据
返回Elasticsearch管理控制台,单击Beats数据采集>创建采集器>Metricbeat>确定服务。在采集器配置中,输入采集器信息,复制云产品资源的Elasticsearch登录名和登录密码,至用户名密码,采集器名称输入system_metric
,启动Monitoring
和Kibana Dashboard
,然后在metricbeat.yml
中末尾添加如下脚本,单击下一步。
metricbeat.modules:
- module: system
metricsets:
- cpu
- load
- memory
- network
- process
- process_summary
- uptime
- socket_summary
- core
- diskio
- filesystem
- fsstat
enabled: true
period: 10s
processes: ['.*']
cpu.metrics: ["percentages"]
core.metrics: ["percentages"]
选择采集器安装的ECS实例,单击启动,启动采集器的过程需等待3~5分钟,启动成功后,系统弹出启动成功对话框,单击前往采集中心查看,在采集器管理栏中,查看启动成功的Metricbeat采集器,等待采集器状态变为已生效1/1
。
返回Kibana,单击Dev Tools(开发工具),执行如下命令,查看索引。
GET _cat/indices?v
单击打开Dashboard,搜索[Metricbeat System] Overview
,点击进入[Metricbeat System] Overview页面,点击Host Overview
,即可查看监控仪表板。
使用Filebeat采集集群上的Nginx服务数据
打开Elasticsearch管理控制台,在Beats数据采集中心,将鼠标移至Filebeat上,点击ECS日志,在采集器配置中输入采集器信息,采集器名称输入filebeat_nginx
,版本选择6.8.5
,采集器选择使用的机器,用户名密码还是输入Elasticsearch登录名和登录密码,启动Monitoring
和Kibana Dashboard
,填写Filebeat文件目录为/var/log/nginx/
。
最后需要在filebeat.yml
中更改如下脚本,在第24行enabled更改为true
,在第28行更改为- /var/log/nginx/*.log
。最后下一步,选择采集器安装的机器,点击启动,前往采集中心查看,在采集器管理区域中,查看启动成功的Filebeat采集器,等待采集器状态变为已生效1/1
。
返回Kibana,打开Dev Tools(开发工具),执行如下命令,查看索引。
GET _cat/indices?v
然后单击Discover,点击选择filebeat,即可查看采集的数据详情。
使用协同过滤实现商品推荐
开通机器学习PAI服务
打开阿里云机器学习平台PAI控制台(https://pai.console.aliyun.com),点击免费开通并创建默认工作空间,然后确认开通并创建默认工作空间。然后会自动跳转到PAI管理控制台。
创建PAI Studio项目
打开模型开发和训练栏中的可视化建模(Studio),在PAI Studio页面点击进入机器学习,如果没有项目可以单击创建项目,MaxCompute选择按量付费,项目名称可输入mytestproj1
,然后点击确认。
创建实验
在机器学习界面左侧点击首页,找到【推荐算法】商品推荐,点击从模板创建,点击确定即可创建。
查看实验数据
创建完成后会自动打开实验界面,右键点击cf_训练_data节点
,然后点击查看数据,可以看到训练数据为7月份以前的用户购买行为数据。源数据的字段解释如下:
字段名 | 含义 | 类型 | 描述 |
---|---|---|---|
user_id | 用户编号 | STRING | 购物的用户ID |
item_id | 物品编号 | STRING | 被购买物品的编号 |
active_type | 购物行为 | STRING | 0:表示点击;1:表示购买;2:表示收藏;3:表示加入购物车 |
active_date | 购物时间 | STRING | 购物发生的时间 |
右键点击cf_结果_data节点
,然后点击查看数据,可以看到结果数据为7月份以后的用户购买行为数据。
运行实验
在实验的左上角点击运行,等到几分钟之后,所有节点全都显示为绿色的对号时,实验运行完成。
查看实验结果
右键点击join-1节点,然后点击查看数据,表中similar_item字段为经过协同过滤算法计算得出的该用户购买可能性最大的商品。
右键点击全表统计-1节点
,然后点击查看数据,统计了根据协同过滤算法推荐的商品数量,共有18065个商品可推荐。
右键点击全表统计-2节点
,然后点击查看数据,统计了7月份真实购买行为数据中与经过协同过滤算法所推荐的商品的命中数量,可以看到有60个推荐的商品被购买。