一、Why:概述与价值
(一)MaxCompute
我们把MaxCompute定义为SaaS模式的企业级云数据仓库。在之前,我们可能会认为MaxCompute是一个离线数据处理引擎,也就是一个传统的数仓,但是MaxCompute所能做的事情要比传统数仓多的多。因此,我们更倾向于把MaxCompute看成一个数据处理的平台,在它上面我们可以做离线数据的处理,包括数据库的应用,传统数据仓库的应用,以及近实时的数据采集和近实时的数据查询,现在将其与MC-Holegres组件结合,我们还能做到实时数仓的应用场景。
MaxCompute是阿里云的一个托管服务,它依托于阿里云强大的基础设施,为用户提供优质、便捷的服务,其架构如下图所示。
MaxCompute有着广泛的应用场景,传统数仓所能做的,MaxCompute都能做,主要包括:
1.广告场景:用户标签计算、分析等;
2.业务运营场景:交互式业务指标计算、查询等;
3.各行业搭建数据仓库,比如流批一体、湖仓一体等;
4.云上弹性扩展大数据计算和存储。
得益于可靠的架构和强大的技术实力,MaxCompute有着非常优秀的产品技术特性,主要包括:
(1)全托管的Serverless的在线服务
1.对外以API方式访问的在线服务,开箱即用;
2.预铺设的大规模集群资源,近乎无限资源,按需使用和付费;
3.无需平台运维,最小化运维投入。
(2)弹性能力与扩展性
1.存储和计算独立扩展,支持TB到EB级别数据规模的扩展能力,可以让企业将全部数据资产保存在一个平台上进行联动分析,消除数据孤岛;
2.Serverless资源按需分配,实时根据业务峰谷变化带来的需求变化分配资源,自动扩展;
3.单作业可根据需要秒级获得成千上万Core。
(3)数据湖探索分析
1.默认集成对数据湖(如OSS服务)的访问分析,处理非结构化或开放格式数据;
2.支持外表映射、Spark直接访问方式开展数据湖分析;
3.对用户友好:在同一套数据仓库服务和用户接口下,实现数据湖分析和数据仓库的关联分析。
(4)集成AI能力
1.与阿里云机器学习平台PAI无缝集成,提供强大的机器学习处理能力;
2.可使用用户熟悉的Spark-ML开展智能分析;
3.提供SQLML可以直接使用标准SQL训练机器学习模型,并对数据进行预测分析;
4.Mars:使用Python机器学习第三方库。
(5)支持流式采集和近实时分析
1.支持流式数据的实时写入(Tunnel),并在数据仓库中开展分析;
2.与云上主要流式服务深度集成,轻松接入各种来源流式3.高性能秒级弹性并发查询,满足近实时分析场景。
(6)深度集成Spark引擎
1.内建Apache Spark引擎,提供完整的Spark功能;
2.与MaxCompute计算资源、数据和权限体系深度集成。
(7)统一而丰富的运算能力
1.离线计算(MR,DAG,SQL,ML,Graph);
2.实时计算(流式,内存计算,选代计算);
3.涵盖通用关系型大数据,机器学习,非结构化数据处理,图计算。
(8)提供统一的企业数据视图
1.提供租户级别的统一元数据,让企业能够轻松获得完整的企业数据目录;
2.对于更广泛的数据源,通过外表建立数据仓库与外部数据源的连接,Connect not Collect。
(9)企业级服务
1.SLA保证:99.9%服务可用性保障;
2.自助运维与自动化运维;
3.完善的故障容错(软件,硬件,网络,人为)机制。
一般来讲我们的大数据项目是需要很多个组件才能完成的,包括离线组件和实时组件。下图一个常用的场景,它是集实时、离线、分析、服务于一体的一套方案,适用于数据化运营,如智能推荐、日志采集分析、用户画像、数据治理、业务大屏、搜索等场景。这套方案是阿里巴巴最佳实践的大数据平台,具有技术领先性,降本提效,高附加值业务收益等优势。当然,整个方案涉及到的产品也非常多,包括日志服务SLS、数据传输DTS、DataHub、实时计算Flink等等,具体如下图所示。
下图是MaxCompute和Hologres两个组件融合之后的实时分析简单架构,即云原生HASP系统,通过该架构我们可以实现实时写入和实时查询。与其他的OLAP应用不同的是这种架构下Hologres和MaxCompute是一体的,可以共享存储,也就是说Hologres可以直接读取MaxCompute的数据,大大降低了存储成本。通过这两个组件,我们还可以解决离线加速、联邦分析、交互式分析等问题。
(二)Elasticsearch
Elasticsearch是一个开源的分布式、RESTful 风格的搜索和数据分析引擎,它的底层是开源库Apache Lucene。Elasticsearch解决了Lucene使用时的繁复性,功能强大,使用简单,能够提供实时搜索服务。Elasticsearch应用场景广泛,比如打车的场景中(例如滴滴打车),使用查询附近的车辆等功能时候,后台就是Elasticsearch在为搜索做支撑,又比如在Github中,Elasticsearch可以帮助我们利用关键字等在站内进行检索。当然,不只是网站应用,包括手机APP,只要用到站内搜索服务,都能够用到Elasticsearch或者其他的搜索服务应用。
我们为什么需要搜索引擎呢?实时搜索为什么现在这么火呢?之前我们在做数据分析的时候,可以通过写程序的方式,但是写程序对于一些数据分析师来说是一个高门槛的任务,需要一定的学习成本,包括使用SQL也有一定的学习成本。但是有了搜索引擎之后,我们只需要按照一定的条件进行筛选就可以得到我们想要的信息,大大降低了学习成本。
当前,主流的搜索引擎有两个:Solr和Elasticsearch,两者都基于Lucene发展而来。Lucene是当今最先进,最高效的全功能开源搜索引擎框架,但是Lucene只是一个框架,且比较复杂,要充分利用它的功能,需要在其基础上进行扩展开发,因此有了Solr和Elasticsearch。
下图是Google Trend中两个搜索应用的趋势分析,可以看出在实时搜索领域,近几年Elasticsearch的热度已经超过了Solr,因为在实时搜索领域Elasticsearch的效果要好于Solr,但是不得不提的是Solr在现有数据的基础上进行查询搜索的速度会更快一些。
目前,Elastic 已经宣布与阿里云建立长期合作和战略伙伴关系。未来阿里云Elasticsearch将会兼容开源 Elasticsearch 的功能,以及Security、Machine Learning、Graph、APM 等商业功能,致力于数据分析、数据搜索等场景服务,与Elastic合作,共同为客户提供企业级权限管控、安全监控告警、自动报表生成等场景服务。
(三)为什么需要MaxCompute+实时搜索
二、What:应用场景
当前,实时搜索的主要应用场景有三个:
1.日志和指标分析(Log/Indicator Analysis);
2.安全(Security);
3.站内检索(WebHosting)。
其场景的应用逻辑如下面三张图所示。
三、How:最佳实践
最佳实践主要包括数据集成和数据监控两部分,其中数据集成指的是MaxCompute和Elasticsearch两个组件之间怎么做数据交互。
(一)数据集成
下图是一个在线教育的案例,该案例大的背景是要监控企业内部包括用户的C端产生的日志,还有内部的服务端产生的日志,它由MaxCompute做数据的预分析,然后交由Elasticsearch做数据监控,其痛点主要有如下三点:。
1.监控数据实时性要求高;
2.流量波动大,自建集群投入成本高;
3.数据权限粒度要求高。
对于以上痛点,一般通用的解决方案如上图所示,包括数据采集和集中、数据ETL、数据分析和展现三部分,最后会得到如下图所示的DashBoard。
MaxCompute和Elasticsearch之间的数据交互是非常重要的一部分,将MaxCompute的数据导入Elasticsearch主要分为如下五步:
1.准备工作
创建DataWorks工作空间并开通MaxCompute服务,准备MaxCompute数据源、创建阿里云Elasticsearch实例。
2.步骤一:购买并创建独享资源组
购买并创建一个数据集成独享资源组,并为该资源组绑定专有网络和工作空间,独享资源组可以保障数据快速、稳定地传输。
3.步骤二:添加数据源
将MaxCompute和Elasticsearch数据源接入DataWorks的数据集成服务中。
4.步骤三:配置并运行数据同步任务
配置一个数据同步的脚本,将数据集成系统同步成功的数据存储到Elasticsearch中,然后将独享资源组作为一个可以执行任务的资源,注册到DataWorks的数据集成服务中,这个资源组将获取数据源的数据,并执行将数据写入Elasticsearch中的任务(该任务将有数据集成系统统一下发)。
5.步骤四:验证数据同步结果
在Kibana控制台中,查看同步成功的数据,并按条件查询数据。
(二)数据监控
经过上面的步骤,数据已经导入了Elasticsearch,我们做数据监控主要有如下两步:
1.使用Kibana的discover,view,dashboard和其他对象来查看这些数据。
2.通过导入预先准备好的Kibana对象,可以统一显示直播数据。