一直想整理一下这块内容,既然是漫谈,就想起什么说什么吧。我一直是在互联网行业,就以互联网行业来说。
先大概列一下互联网行业数据仓库、数据平台的用途:
整合公司所有业务数据,建立统一的数据中心;
提供各种报表,有给高层的,有给各个业务的;
为网站运营提供运营上的数据支持,就是通过数据,让运营及时了解网站和产品的运营效果;
为各个业务提供线上或线下的数据支持,成为公司统一的数据交换与提供平台;
分析用户行为数据,通过数据挖掘来降低投入成本,提高投入效果;比如广告定向精准投放、用户个性化推荐等;
开发数据产品,直接或间接为公司盈利;
建设开放数据平台,开放公司数据;
。。。。。。
上面列出的内容看上去和传统行业数据仓库用途差不多,并且都要求数据仓库/数据平台有很好的稳定性、可靠性;但在互联网行业,除了数据量大之外,越来越多的业务要求时效性,甚至很多是要求实时的 ,另外,互联网行业的业务变化非常快,不可能像传统行业一样,可以使用自顶向下的方法建立数据仓库,一劳永逸,它要求新的业务很快能融入数据仓库中来,老的下线的业务,能很方便的从现有的数据仓库中下线;
其实,互联网行业的数据仓库就是所谓的敏捷数据仓库,不但要求能快速的响应数据,也要求能快速的响应业务;
建设敏捷数据仓库,除了对架构技术上的要求之外,还有一个很重要的方面,就是数据建模,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。应对这种情况,一般是先将核心的持久化的业务进行深度建模(比如:基于网站日志建立的网站统计分析模型和用户浏览轨迹模型;基于公司核心用户数据建立的用户模型),其它的业务一般都采用维度+宽表的方式来建立数据模型。这块是后话。
整体架构下面的图是我们目前使用的数据平台架构图,其实大多公司应该都差不多:
逻辑上,一般都有数据采集层、数据存储与分析层、数据共享层、数据应用层。可能叫法有所不同,本质上的角色都大同小异。
我们从下往上看:
数据采集数据采集层的任务就是把数据从各种数据源中采集和存储到数据存储上,期间有可能会做一些简单的清洗。
数据源的种类比较多:
网站日志:
作为互联网行业,网站日志占的份额最大,网站日志存储在多台网站日志服务器上,
一般是在每台网站日志服务器上部署flume agent,实时的收集网站日志并存储到HDFS上;
业务数据库:
业务数据库的种类也是多种多样,有Mysql、Oracle、SqlServer等,这时候,我们迫切的需要一种能从各种数据库中将数据同步到HDFS上的工具,Sqoop是一种,但是Sqoop太过繁重,而且不管数据量大小,都需要启动MapReduce来执行,而且需要Hadoop集群的每台机器都能访问业务数据库;应对此场景,淘宝开源的DataX,是一个很好的解决方案(可参考文章 《异构数据源海量数据交换工具-Taobao DataX 下载和使用》),有资源的话,可以基于DataX之上做二次开发,就能非常好的解决,我们目前使用的DataHub也是。
当然,Flume通过配置与开发,也可以实时的从数据库中同步数据到HDFS。
来自于Ftp/>
有可能一些合作伙伴提供的数据,需要通过Ftp/也可以满足该需求;
其他数据源:
比如一些手工录入的数据,只需要提供一个接口或小程序,即可完成;
数据存储与分析毋庸置疑,HDFS是大数据环境下数据仓库/数据平台最完美的数据存储解决方案。
离线数据分析与计算,也就是对实时性要求不高的部分,在我看来,Hive还是首当其冲的选择,丰富的数据类型、内置函数;压缩比非常高的ORC文件存储格式;非常方便的SQL支持,使得Hive在基于结构化数据上的统计分析远远比MapReduce要高效的多,一句SQL可以完成的需求,开发MR可能需要上百行代码;
当然,使用Hadoop框架自然而然也提供了MapReduce接口,如果真的很乐意开发Java,或者对SQL不熟,那么也可以使用MapReduce来做分析与计算;Spark是这两年非常火的,经过实践,它的性能的确比MapReduce要好很多,而且和Hive、Yarn结合的越来越好,因此,必须支持使用Spark和SparkSQL来做分析和计算。因为已经有Hadoop Yarn,使用Spark其实是非常容易的,不用单独部署Spark集群,关于Spark On Yarn的相关文章,可参考:《Spark On Yarn系列文章》
实时计算部分,后面单独说。
数据共享这里的数据共享,其实指的是前面数据分析与计算后的结果存放的地方,其实就是关系型数据库和NOSQL数据库;
前面使用Hive、MR、Spark、SparkSQL分析和计算的结果,还是在HDFS上,但大多业务和应用不可能直接从HDFS上获取数据,那么就需要一个数据共享的地方,使得各业务和产品能方便的获取数据; 和数据采集层到HDFS刚好相反,这里需要一个从HDFS将数据同步至其他目标数据源的工具,同样,DataX也可以满足。
另外,一些实时计算的结果数据可能由实时计算模块直接写入数据共享。
数据应用
业务产品
业务产品所使用的数据,已经存在于数据共享层,他们直接从数据共享层访问即可;
报表
同业务产品,报表所使用的数据,一般也是已经统计汇总好的,存放于数据共享层;
即席查询
即席查询的用户有很多,有可能是数据开发人员、网站和产品运营人员、数据分析人员、甚至是部门老大,他们都有即席查询数据的需求;
这种即席查询通常是现有的报表和数据共享层的数据并不能满足他们的需求,需要从数据存储层直接查询。
即席查询一般是通过SQL完成,最大的难度在于响应速度上,使用Hive有点慢,目前我的解决方案是SparkSQL,它的响应速度较Hive快很多,而且能很好的与Hive兼容。
当然,你也可以使用Impala,如果不在乎平台中再多一个框架的话。
OLAP
目前,很多的OLAP工具不能很好的支持从HDFS上直接获取数据,都是通过将需要的数据同步到关系型数据库中做OLAP,但如果数据量巨大的话,关系型数据库显然不行;
这时候,需要做相应的开发,从HDFS或者HBase中获取数据,完成OLAP的功能;
比如:根据用户在界面上选择的不定的维度和指标,通过开发接口,从HBase中获取数据来展示。
其它数据接口
这种接口有通用的,有定制的。比如:一个从Redis中获取用户属性的接口是通用的,所有的业务都可以调用这个接口来获取用户属性。
实时计算现在业务对数据仓库实时性的需求越来越多,比如:实时的了解网站的整体流量;实时的获取一个广告的曝光和点击;在海量数据下,依靠传统数据库和传统实现方法基本完成不了,需要的是一种分布式的、高吞吐量的、延时低的、高可靠的实时计算框架;Storm在这块是比较成熟了,但我选择Spark Streaming,原因很简单,不想多引入一个框架到平台中,另外,Spark Streaming比Storm延时性高那么一点点,那对于我们的需要可以忽略。
我们目前使用Spark Streaming实现了实时的网站流量统计、实时的广告效果统计两块功能。
做法也很简单,由Flume在前端日志服务器上收集网站日志和广告日志,实时的发送给Spark Streaming,由Spark Streaming完成统计,将数据存储至Redis,业务通过访问Redis实时获取。
任务调度与监控在数据仓库/数据平台中,有各种各样非常多的程序和任务,比如:数据采集任务、数据同步任务、数据分析任务等;
这些任务除了定时调度,还存在非常复杂的任务依赖关系,比如:数据分析任务必须等相应的数据采集任务完成后才能开始;数据同步任务需要等数据分析任务完成后才能开始; 这就需要一个非常完善的任务调度与监控系统,它作为数据仓库/数据平台的中枢,负责调度和监控所有任务的分配与运行。
前面有写过文章,《大数据平台中的任务调度与监控》,这里不再累赘。
总结在我看来架构并不是技术越多越新越好,而是在可以满足需求的情况下,越简单越稳定越好。目前在我们的数据平台中,开发更多的是关注业务,而不是技术,他们把业务和需求搞清楚了,基本上只需要做简单的SQL开发,然后配置到调度系统就可以了,如果任务异常,会收到告警。这样,可以使更多的资源专注于业务之上。
MCGS是一套基于Windows平台的,用于快速构造和生成上位机监控系统的组态软件系统,主要完成现场数据的采集与监测、前端数据的处理与控制。
MCGS组态软件包括三个版本,分别是网络版、通用版、嵌入版。
具有功能完善、 *** 作简便、可视性好、可维护性强的突出特点。通过与其他相关的硬件设备结合,可以快速、方便的开发各种用于现场采集、数据处理和控制的设备。
扩展资料:
由MCGS嵌入版生成的用户应用系统,其结构由主控窗口、设备窗口、用户窗口、实时数据库和运行策略五个部分构成。
窗口是屏幕中的一块空间,是一个“容器”,直接提供给用户使用。在窗口内,用户可以放置不同的构件,创建图形对象并调整画面的布局,组态配置不同的参数以完成不同的功能。
在MCGS嵌入版中,每个应用系统只能有一个主控窗口和一个设备窗口,但可以有多个用户窗口和多个运行策略,实时数据库中也可以有多个数据对象。
参考资料:
1、InTouch:Wonderware的InTouch软件是最早进入我国的组态软件。在80年代末、90年代初,基于Windows31的InTouch软件曾让我们耳目一新,并且InTouch提供了丰富的图库。但是,早期的InTouch软件采用DDE方式与驱动程序通信,性能较差,最新的InTouch70版已经完全基于32位的Windows平台,并且提供了OPC支持。
2、iFix:Intellution公司以Fix组态软件起家,1995年被爱默生收购,现在是爱默生集团的全资子公司,Fix6x软件提供工控人员熟悉的概念和 *** 作界面,并提供完备的驱动程序(需单独购买)。Intellution将自己最新的产品系列命名为iFiX,在iFiX中,Intellution提供了强大的组态功能,但新版本与以往的6x版本并不完全兼容。原有的Script语言改为VBA(Visual Basic For Application),并且在内部集成了微软的VBA开发环境。遗憾的是,Intellution并没有提供61版脚本语言到VBA的转换工具。在iFiX中,Intellution的产品与Microsoft的 *** 作系统、网络进行了紧密的集成。Intellution也是OPC(OLE for Process Control)组织的发起成员之一。iFiX的OPC组件和驱动程序同样需要单独购买。
3、Citech:CiT公司的Citech也是较早进入中国市场的产品。Citech具有简洁的 *** 作方式,但其 *** 作方式更多的是面向程序员,而不是工控用户。Citech提供了类似C语言的脚本语言进行二次开发,但与iFix不同的是,Citech的脚本语言并非是面向对象的,而是类似于C语言,这无疑为用户进行二次开发增加了难度。
4、WinCC:Simens的WinCC也是一套完备的组态开发环境,Simens提供类C语言的脚本,包括一个调试环境。WinCC内嵌OPC支持,并可对分布式系统进行组态。但WinCC的结构较复杂,用户最好经过Simens的培训以掌握WinCC的应用。
互联网是个神奇的大网,大数据开发和软件定制组态软件也是一种模式,这里提供最详细的报价,如果真的想做,可以来这里,这个手技的开始数字是一八七中间的是三儿零最后的是一四二五零,按照顺序组合起来就可以找到,想说的是,除非想做或者了解这方面的内容,如果只是凑热闹的话,就不要来了。
5、组态王:组态王是国内第一家较有影响的组态软件开发公司(更早的品牌多数已经湮灭)。组态王提供了资源管理器式的 *** 作主界面,并且提供了以汉字作为关键字的脚本语言支持。组态王也提供多种硬件驱动程序。
6、Controx(开物):华富计算机公司的Controx2000是全32位的组态开发平台,为工控用户提供了强大的实时曲线、历史曲线、报警、数据报表及报告功能。作为国内最早加入OPC组织的软件开发商,Controx内建OPC支持,并提供数十种高性能驱动程序。提供面向对象的脚本语言编译器,支持ActiveX组件和插件的即插即用,并支持通过ODBC连接外部数据库。Controx同时提供网络支持和WevServer功能。
7、ForceControl(力控):大庆三维公司的ForceControl(力控)从时间概念上来说,力控也是国内较早就已经出现的组态软件之一。只是因为早期力控一直没有作为正式商品广泛推广,所以并不为大多数人所知。大约在93年左右,力控就已形成了第一个版本,只是那时还是一个基于DOS和VMS的版本。后来随着Windows31的流行,又开发出了16位Windows版的力控。但直至Windows95版本的力控诞生之前,他主要用于公司内部的一些项目。32位下的10版的力控,在体系结构上就已经具备了较为明显的先进性,其最大的特征之一就是其基于真正意义的分布式实时数据库的三层结构,而且其实时数据库结构可为可组态的活结构。在1999~2000年期间,力控得到了长足的发展,最新推出的20版在功能的丰富特性、易用性、开放性和I/O驱动数量,都得到了很大的提高。在很多环节的设计上,力控都能从国内用户的角度出发,即注重实用性,又不失大软件的规范。另外,公司在产品的培训、用户技术支持等方面投入了较大人力,相信在较短时间内,力控软件产品将在工控软件界形成巨大的冲击。
8、GE的Cimplicity,
9、RSView Supervisory Edition是罗克韦尔自动化发布的,基于Windows2000 *** 作系统的人机界面软件,它用于监视,控制并获得全企业内所有的生产 *** 作的数据。
10、NI Lookout是市场上最为易用的工控组态软件!运用Lookout,可以很方便地实现对工业过程的监控和数据采集。Lookout支持数十种PLC的通信协议,比如Modbus,AB和Siemens等等。Lookout同样支持OPC通信。Lookout还可以同NI的硬件产品FieldPoint无缝集成。文件较大,仅适合宽
11、Wizcon是一个先进的SCADA应用开发工具,系统集成商运用它可以建立各种工业领域的高级应用。Wizcon的十分便捷的图形用户接口,出众的HMI功能,Internet访问,由浅入深的开发过程,以及全厂范围的集成能力等特点使它成为工厂自动化最通用的SCADA系统,Wizcon使得企业内部底层和其他部门建立联系, *** 作人员的工厂管理者都可以看到各种数据。管理人员可以在办公室用熟悉的 *** 作环境和查询工具获取实时数据。实际上,作为一个开放的系统,Wizcon允许用户将不同的硬件和软件结合在一起构成完整的自动化解决方案以保护现有投资,提高生产率和产品质量。
12、MCGS(Monitor and Control Generated System)是组态软件是通态软件公司开发的,一套基于Windows平台的,用于快速构造和生成上位机监控系统的组态软件系统,可运行于Microsoft Windows 95/98/Me/NT/2000等 *** 作系统。
数据传输(DataTransmission)支持以数据库为核心的结构化存储产品之间的数据传输。
它是一种集数据迁移、数据订阅及数据实时同步于一体的数据传输服务。数据传输致力于在公有云、混合云场景下,解决远距离、毫秒级异步数据传输难题。1在分析型数据库上创建目标表,数据更新类型为实时写入,字段名称和MySQL中的建议均相同,字段类型的映射见本文档22节。2在阿里云数据传输的控制台上创建数据订阅通道,并记录这个通道的ID。3配置dts-ads-writer/appconf文件,配置方式如下:所有配置均保存在appconf中,运行前请保证配确。修改配置后,请重启write。
在您RDSforMySQL所在的云账号下开通阿里云数据传输服务。并点击此处下载dts-ads-writer插件到您的一台服务器上并解压(需要该服务器可以访问互联网,建议使用阿里云ECS以最大限度保障可用性)。服务器上需要有Java6或以上的运行环境(JRE/JDK)。
以上就是关于怎样的架构设计才是真正的数据仓库架构全部的内容,包括:怎样的架构设计才是真正的数据仓库架构、MCGS是什么、组态软件有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)