利用阿里云产品搭建一个简单数据分析平台

阿里云有两个消息产品,消息队列(ONS)与消息服务(MNS),ONS上有个很好用的功能消息轨迹,消息的生命周期都可以通过控制台查询,那么消息服务上,想看见消息从生产到消费的轨迹数据有什么好办法呢?我们以这个小小的需求为原型,介绍一下怎么利用阿里云现有的产品,搭建出一个简单的数据分析平台。

先画个数据流程架构图。

step 1:
MNS->SLS
先把MNS的日志数据写到SLS里面去,不用写代码,在MNS控制台日志管理页面做个配置即可。MNS的队列要打开logging功能,SLS控制台创建好project logstore这里自动就能看见,注意要一个域的才能配哦。

然后我们跑跑代码,收发点消息,完了去SLS控制台看一样,数据已然自动写进去了,如图

比方我们搜索一条消息79E4FBE5094E8911-2-15D3F907B3B-2000000DB,已经可以看见收发时间,那不就满足看消息轨迹功能了吗,这篇文章可以结束了!!但是本文是硬广,当然不能这么就结束了,堂堂一个攻城狮最擅长什么!当然是无事生非!
我不要在控制台搜索!不要登陆!要让谁都可以看见轨迹!我还不想用sls sdk写一句代码!来来来,下面满足您,顺便把阿里云的产品硬广做一遍。

step 2:
SLS->OSS
SLS里面的数据,有很多消费方式,最简单不写代码的办法就是配置投递到MaxComputer或者OSS,投MaxComputer常用,我们今天来试下OSS。
投递配置文档

注意下分区格式 mydate=%Y%m%d/log_%H%M%s
投递出来的目录就是 mydate=20170714/ 这样可以方便MaxComputer/Hive作为分区使用,截图是投递出来的OSS里面看见的效果。

我们根据日志服务里面数据长什么样来配置怎么写csv文件(之前的查询截图就是数据的样子),做个一一对应的配置,这样投递出来的数据,oss里面的cvs跟日志服务的数据就一样一样了。

好了,做完以上这些,投递就配置好了,需要注意的是,配置好投递之后只会从这个时间点开始生效,已经写入sls的旧数据是不会被投递的,我们再次启动MNS收发消息的程序,造点数据写到sls,让投递工作起来,看见投递任务完成后去OSS里面看看写入的文件吧,前面已经有截图了。

现在oss里面已经有数据了,我们怎么用这个数据看轨迹呢?
硬广告强势插入:
Maxcompute 2.0支持使用OSS数据源做外部表,直接可查OSS,简单介绍一下这个功能,前面几个set是打开2.0的开关,现在2.0的功能要申请通过才能使用。

set odps.task.major.version=2dot0_demo_flighting;
set odps.service.mode=off;
set odps.sql.planner.mode=lot;
set odps.sql.ddl.odps2=true;
set odps.sql.preparse.odps2=lot;

CREATE EXTERNAL TABLE IF NOT EXISTS mns_router_log_external (
    AccountId INT,
    Action STRING,
    MessageId STRING,
    NextVisibleTime INT,
    ProcessTime INT,
    QueueName STRING,
    RemoteAddress STRING,
    RequestId STRING,
    Time STRING
  )
  PARTITIONED BY (
    mydate STRING
  )
STORED BY 'com.aliyun.odps.CsvStorageHandler'
WITH SERDEPROPERTIES (
 'odps.properties.rolearn'='acs:ram::<aliId>:role/aliyunodpsdefaultrole'
)
LOCATION 'oss://oss-cn-shanghai-internal.aliyuncs.com/ali-shanghai/mns_router';    

alter table mns_router_log_external add if not exists partition (mydate='20170714');

select * from mns_router_log_external where mydate='20170714' and MessageId='79E4FBE5094E8911-2-15D3F907B3B-2000000DB';

直接数加控制台运行,出结果:

在MaxComputer里面您可以写sql处理您的数据,比方查平均处理时间啊什么的,这里就是做做广告,不详细做Maxcompute的介绍了。

但素,我们的目标是不登陆直接看数据,这里就要祭出阿里云一款报表产品
Quick BI,Quick BI并不支持OSS作为数据源,可以支持RDS,Maxcompute等等,Maxcompute查询速度相对RDS来说较慢,那么我们就用RDS吧。用大数据处理套件来做数据同步,比方OSS倒入RDS。

Step 3:
OSS->RDS
先在rds上的数据库建张表

CREATE TABLE `mns_route_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `AccountId` bigint(20) DEFAULT NULL,
  `Action` varchar(255) DEFAULT NULL,
  `MessageId` varchar(255) DEFAULT NULL,
  `NextVisibleTime` bigint(11) DEFAULT NULL,
  `ProcessTime` bigint(11) DEFAULT NULL,
  `QueueName` varchar(255) DEFAULT NULL,
  `RemoteAddress` varchar(255) DEFAULT NULL,
  `RequestId` varchar(255) NOT NULL,
  `Time` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `MessageId` (`MessageId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

大数据处理套件上我们先建好两个数据源,一个OSS的数据源mns_oss,再建一个RDS的数据源mns_log,然后用脚本模式配置一个同步任务,把数据同步到我们建的这个表里面。

{
  "configuration": {
    "reader": {
      "plugin": "oss",
      "parameter": {
        "fieldDelimiterOrigin": ",",
        "nullFormat": "",
        "compress": "",
        "datasource": "mns_oss",
        "column": [
          {
            "name": 0,
            "index": 0,
            "type": "string"
          },
          {
            "name": 1,
            "index": 1,
            "type": "string"
          },
          {
            "name": 2,
            "index": 2,
            "type": "string"
          },
          {
            "name": 3,
            "index": 3,
            "type": "string"
          },
          {
            "name": 4,
            "index": 4,
            "type": "string"
          },
          {
            "name": 5,
            "index": 5,
            "type": "string"
          },
          {
            "name": 6,
            "index": 6,
            "type": "string"
          },
          {
            "name": 7,
            "index": 7,
            "type": "string"
          },
          {
            "name": 8,
            "index": 8,
            "type": "string"
          }
        ],
        "skipHeader": "false",
        "encoding": "UTF-8",
        "fieldDelimiter": ",",
        "object": [
          "mns_router/mydate=${bdp.system.bizdate}/log_*.csv"
        ]
      }
    },
    "writer": {
      "plugin": "mysql",
      "parameter": {
        "postSql": [],
        "datasource": "mns_log",
        "column": [
          "AccountId",
          "Action",
          "MessageId",
          "NextVisibleTime",
          "ProcessTime",
          "QueueName",
          "RemoteAddress",
          "RequestId",
          "Time"
        ],
        "writeMode": "replace",
        "table": "`mns_route_log`",
        "preSql": []
      }
    },
    "setting": {
      "errorLimit": {
        "record": "100"
      },
      "speed": {
        "concurrent": "5",
        "mbps": "5"
      }
    }
  },
  "type": "job",
  "version": "1.0"
}

注意这个脚本里面使用了一个系统参数${bdp.system.bizdate},这样我们可以配置每天凌晨跑一次,每次同步一天的数据。
运行这个任务,业务时间选2017-07-14,把刚才的数据同步进RDS。
可以配置成每天凌晨运行一次同步任务。

Step 4.
RDS->Quick BI
先在Quick BI添加一个RDS的数据源,找到表mns_route_log生成一个数据集,然后我们在这个数据集后面点一下”新建仪表板”,添加查询条件,保存之后公开仪表板,直接访问生成的地址,不用做任何登陆即可访问,效果如图

通过基于日志服务的数据采集,ODPS/OSS的数据计算,最后Quick BI的报表制作这条线路,小规模的初创公司可以快速的搭建完一个适合业务,容易扩展的数据分析平台,例如时下流行的推荐系统。

阿里云的产品!是不是AMAZING!好想配个无事生非的表情包!

时间: 2024-10-30 18:17:54

利用阿里云产品搭建一个简单数据分析平台的相关文章

利用阿里云产品的数据备份与恢复实践

背景 对业务系统来说,数据可靠性非常重要.如何通过简单的配置,实现适当有效的备份机制并具备快速恢复能力是本最佳实践所要解决的主要问题. 不同的业务系统,对可用性和备份恢复的要求有很大的不同:对一般系统来说,因为阿里云默认有3份冗余副本.对磁盘和数据库的每天自动备份,并承诺99.9%的可用性,所以不须做更多配置.但为了应对意外情况,需要做好变更日志和本地备份: 对业务价值比较大的系统来说,只要做到严格遵守操作规范和利用阿里云提供高可用.数据备份和恢复机制,无论发生何种类型的故障或灾难,也能降低损失

梨视频:基于阿里云E-MapReduce搭建视频推荐系统的实践

   (来源:C资讯)     专注新闻资讯的梨视频近来表现亮眼.   梨视频由前澎湃新闻掌门人邱兵创立.   在上线之前,它就获得了黎瑞刚华人文化近1亿美元投资,旗下<微辣>栏目总播放量已经超过4亿,并在上线1个月后获得"年度视频新媒体"大奖.   这样一款脱胎于传统媒体的创业型短视频软件,在视频领域异军突起,不仅让内人士在感叹梨视频内容生产力之强大的同时,也诧异于是谁在为梨视频的庞大用户体量提供技术支撑.保证视频流畅?   今天就和大家分享梨视频如何基于阿里云快速搭建一

利用阿里云的VPC+ECS+负载均衡搭建安全的WEB服务

        随着云计算时代的到来,各公有云平台都提供了各种丰富的产品供消费者使用,商品也达到了"琳琅满目"的程度了.以阿里云为例,它就提供了10多种分类.五六十种具体的服务产品.那么,中小企业在搭建WEB服务时,利用公有云的哪些产品就能快速.便捷.低成本地搭建出高安全.高可用的.可伸缩的服务呢?我就自身经验,给出如下的实践过程,供有同类需求的业内人士参考.         打开阿里云的首页,鼠标放到"产品"这个菜单上,默认出来的子菜单的第一个,就是"弹

大数据阿里云产品的简单介绍理解

   很多人问,大数据是什么.一个时尚的技术名词,一个互联网时代的标志.给人高端大气上档次的感觉,很多公司不说自己有大数据都不好意思跟别人谈业务.那我就谈谈我的一些看法来结合阿里云的数加大数据产品比较粗俗的介绍下大数据到底是什么.    首先,从字面意思"大数据",那可以感受到,数据量要大,这是一个必须的条件.举一个例子,比方说我要根据一些销售数据做一个报表给老板看,那么几千条数据甚至几万条,我用excel可以很方便的做出来,数据可以保存在自己电脑上.那么,当数据几十万到几百万,exc

从小白到入门的阿里云产品经历

阿里云用户:论坛昵称imnpc"对于个人和小微企业,阿里云提供极为低廉的价格和优秀服务.大量带环境带控制面板的镜像方便部署,只要会FTP,剩下的全是图形化操作,降低管理门槛:对于大企业,阿里云更是提供优秀的高端服务" 从2012年8月份申请试用阿里云云主机ECS开始,阿里云的云主机一直提供很优秀的服务,      2013年3月购买年付并开始备案,备案历时11天完成,      中间因为自己提交的资料填写有问题,重新顺丰了一次,      后来反映了网址最好直接打印输出,不用人工填写,

Terraform 助力 ECS 实例借助 RAM 管理阿里云产品

众所周知,不论以怎样的方式访问阿里云产品的 API,拥有账号完整权限的密钥AK(Access Key ID 和 Access Key Secret,简称 AK)是必不可少的参数.因此,对 AK 的有效管理是每个调用阿里云 API 的应用程序首先需要解决的问题. 对于部署在 ECS 实例上的应用程序而言,为了方便对 AK 的管理,通常需要将 AK 保存在应用程序的配置文件中或 ECS 实例的环境变量中,如此一来,无疑增加了 AK 管理的复杂性,降低了 AK 的安全性和灵活性.除此之外,对于多 Re

一分钟了解阿里云产品:阿里云开放云搜索初探

前阶段申请了阿里云开放云搜索(Aliyun OpenSearch)的邀请码,今早收到通过验证了,于是准备试试云搜索.   阿里云搜索使用很简单,和Lucene一样,包括索引文档字段几个概念.每个索引可以当成数据库的一个数据库,一条文档当成数据库的一条记录,一个字段就是数据库的一个字段.   开放搜索目前支持四种形式的搜索模板,资讯类,小说类,应用类和社区类.模板在这儿就是规定好了索引的字段,也可以自定义.下面我来详细介绍下:   我想测试一下,就把自己的博客写的这十几篇POST发上去建立索引吧,

阿里云的下一个十年,云计算驱动制造业

两个月前的杭州·云栖大会上,马云提出了"5个新",并直言将会冲击很多行业.单从字面上说,"新制造"等似乎并不能引发巨大的想象空间,但波士顿咨询告诉我们"人工智能+制造业"将创造6万亿的额外附加值,而"5个新"所产生的价值更是难以想象. 两个月后,2016云栖大会广东分会开幕,人工智能.新制造.大数据等成为关注的焦点,尤其是在新制造这个话题上,阿里云拿出了一套完整的解决方案,马云的商业野心再次让世人眼呆. 关于新制造的定义,马云

oss php sdk+laravel搭建一个简单网站

背景 目前中小型网站最流行的还是采用php搭建自己的web服务器,一个web服务器都会做动静资源分离,静态资源流量小的话,静态文件可以统一放单独目录用域名独立访问,流量稍大的时候,可以直接托管到阿里云OSS上,需要静态资源时从oss拉取,对请求延时苛刻的还可以用CDN做缓存和加速. 目的 介绍如何如何在30分钟内搭建一个简单的web服务器,采用nignx+php-fpm+laravel+oss-php-sdk 框架 ,静态资源托管到阿里云oss上.实现通过浏览器展示一张图片. 简单的服务器框图