kylo 场景 大数据

2018-10-16 10:12:06 wiborgite 阅读数 4395

定位

Kylo定位于企业级的数据湖管理平台(Data Lake Platform),它是基于Spark和NiFi的开源数据湖编排框架,Kylo提供的主要特性包括数据获取、数据准备和数据发现,并支持元数据管理、数据治理和高级安全特性。

厂商信息

Kylo是由Teradata天睿公司开源,并被航空、保险、电信、金融服务、银行和零售行业的全球Top N公司所应用。

经典场景

通过Kylo的GUI界面,业务人员可以按照他们关心的方式来操作数据,包括:创建数据源、定义数据加载、数据预处理、转换,发布到目标系

Kylo系统介绍

系统组件

  • Kylo-ui:即前端web组件,主要包括Operations、Feed Manager和Admin三个一级功能:
  • Operations:提供仪表盘、服务状态监控、Job执行概览、告警查看、SLA调度等功能。
  • Feed Manager:提供Feed管理、目录分类、SLA、可视化查询以及数据预览等能力。
  • Admin:提供用户管理、分组管理、数据源管理、模板管理等功能。
  • kylo-services:Kylo服务后端,为前端提供Rest ful接口,并实现Job 仓库、元数据仓库的管理能力,并负责与依赖组件如ES、NiFi、Hadoop Cluster的通信。

系统依赖
Kylo的安装和运行依赖于多种外部组件,组件及其作用如下所示

概述说明如下:

MySQL/PG/MS SQL Server :kylo需要使用关系型数据库实现其元数据存储与管理

MQ:用于不同组件之间的消息通信

JDK:Kylo运行在java虚拟机中

ES/Solr:用于Hive中元数据或Feed数据的全局搜索(前提是在创建Feed时需要指定索引)

Spark、Hive、HDFS:Kylo具有调用大数据集群的能力,Kylo默认将Spark作为Hive的执行引擎。

组网模式

Kylo的自有服务和依赖服务可以分开部署,也可以部署在一台服务器上。Kylo既支持单机模式也可以集群方式。
组网结构如下所示:

与大数据系统的关系
在物理上,Kylo既独立于源系统和目标系统,同时也与CDH/HDP Cluster相互独立。但Kylo需要集成Hive、HDFS、Spark等的lib库,从而实现与大数据集群的通信。
Kylo集成的部分lib库如下所示:

与NiFi的关系
Kylo依赖NiFi实现数据流编排的能力,即Kylo中对数据的处理依赖于NiFi中的模板,在工作中需要先在NiFi中完成模板定义,然后从NiFi中导出并导入到Kylo中,如下所示:
NiFi中的数据流:

NiFi中的模板:

Kylo中的模板:

2018-01-29 00:00:00 np4rHI455vg29y2 阅读数 967

至顶网CIO与应用频道 01月22日 编译:随着人们对大数据的预测和预期不断加速,企业数据团队发现自己正处于一个快速变革的领域,既受到各种可能性的鼓舞,又因为各种局限性受折磨。2018年,大数据将继续沿着这两条路线发展:提供更多提高了可访问性的选择,同时又让那些寻找所有复杂问题答案的企业感到沮丧。对于刚加入大数据热潮和已经充分涉足的企业,我们总结了:

四个值得兴奋的理由:

- 机器学习方法变得更容易获得了

- 数据不会短缺

- 大数据工具可以更有效地进入企业

- 基础设施上升到支持大数据的数量和速度

四个需要担心的理由:

- 必要的技能严重短缺

- 隐私问题变得可执行

- 数据互操作性仍然有限

- 安全缺陷威胁数据完整性

兴奋点:

机器学习方法变得更容易获得

生产就绪的机器学习工具和模型的兴起,将成为2018年大数据能让人们兴奋起来的原因之一。机器学习模型可以准确地识别数据流中的特定模式。在已经被数据淹没的环境中,这种能力提供了高价值和独特的优势,整个业界也作出了相应的回应。

数据科学家可以利用越来越多的开源机器学习框架,包括Google的TensorFlow、Apache MXNet、Facebook Caffe2和Microsoft Cognitive Toolkit等等。最重要的是,建立模型的任务变得从未如此简单。例如,AWS提供深度学习AMI(Amazon Machine Images),其中已经内置了机器学习框架,可在AWS云上使用。对于那些刚刚起步的人来说,Google的TensorFlow Playground可以帮助用户使用简单数据集和预先训练好的模型,更多地了解机器学习框架下的神经网络(图1)。

图1. TensorFlow Playground提供了一个交互式的沙箱,用于探索TensorFlow的基础。 (来源:Google)

即使不深入研究机器学习算法的内部工作远离,开发人员也可以开始将这些技术应用于数据集。Google TensorFlow提供预先训练好的模型和示例,以及TensorFlow框架和针对如自然语言处理、音频识别和图像识别等应用流程。

对于更有经验的用户来说,使用机器学习会简单得多。由Facebook和微软推出的开放神经网络交换(ONNX)格式为在机器学习框架之间移动的模型提供了一个标准。除了这些公司对Caffee2和Cognitive Toolkit的早期支持之外,亚马逊最近还推出了一个开源的Python软件包,用于将ONNX模型导入Apache MXNet。

兴奋点:

数据不会短缺

随着企业完成他们的数字化转型,物联网等(图2)重要项目催生了很多新的数据源,因此数据科学家不会缺少数据的。受这些和其他来源的驱动,与大数据相关的每个参数都将继续迅速演变:数据量自然会随着来源的增加而呈现上升趋势;随着企业提高数据分解以降低粒度,数据速度将会增加;随着物联网应用上线,以及企业合作伙伴共享关键数据源,数据的多样性将会随之迅速增加。

图2. 更多的数据来源意味着数据量、速度和多样化的激增。(来源:Patrick Cheesman)

然而,随着企业在生产中使用更深层次的分析和机器学习模型,数据科学家的工作将因为可以得到中立数据集而受益,用于测试和优化数据处理链、机器学习模型的广泛类别、甚至是算法本身。幸运的是,数据科学家可以随时访问各种公共数据集。例如,AWS提供了对环境、生命科学、图像等公共数据集的免费访问。同样,Google提供了各种各样的BigQuery公共数据集,其中包括GitHub代码、NOAA天气数据等等。数据科学家还可以通过data.gov访问超过20万个美国政府开放的数据源。

兴奋点:

大数据工具可以更有效地进入企业

从Hadoop和MapReduce早期开始,大数据分析工具已经发展成为一系列广泛的工具和平台。2018年,这种趋势将持续下去,人们越来越频繁地将数据提炼成更有用的信息,并利用一系列开放源代码和专有软件包来跟上数据快速增长的步伐。

随着企业要应对更多的数据生产者和消费者,大数据需求甚至超越了功能强大的Hadoop分布式文件系统(HDFS)的功能。今天,企业面临着结构化和非结构化数据的混合,传统批处理、流分析和来自任意数量数据存储库的交互式查询等等这些复杂而混合的分析场景。大数据架构试图通过构建在(用于数据管理和计算的)高性能框架上的综合工具链来满足这些要求(图3)。

图3. NIST大数据参考架构,构建信息价值链的指南。(来源:NIST大数据公众工作组)

Apache Hadoop框架已经发展到包含大量解决大数据分析方面问题的工具,以及相关的Apache项目解决了更为复杂的需求。例如,Apache Spark补充了Hadoop以批处理为主导的MapReduce处理模型,提供了对数据流和交互式查询的实时分析。Apache Yarn提供了一个复杂的框架,其中包含资源管理器和作业调度程序,能够协调多个计算节点上的多个应用。因此,Apache Spark可以作为独立服务运行,也可以使用Yarn作为Hadoop集群上的Hadoop模块运行。

随着企业将不同来源的结构化数据和非结构化数据汇集到数据湖中,相同的做法被作为扩展大数据工具范围的基础。例如,Kylo开源平台建立在Apache框架之上,以解决相应更复杂的数据流和数据管理要求(图4)。

图4. Kylo旨在为数据湖提供开源平台。(来源:Teradata)

兴奋点:

基础设施上升到支持大数据的数量和速度

越来越多的数据、工具和支持平台,当然就意味着对合适的计算基础设施不断增长的需求,大数据工作者不会对2018年感到失望的。超大规模云服务提供商将继续扩大数据中心来满足这些需求,提供更多的集群和更快存储运行在更快的网络上。这也使更多的传统企业软件公司变成了硬件开发公司。例如,AWS使用自己的定制路由器,这些定制路由器使用基于Broadcom Tomahawk的专用ASIC来支持128个25 GbE通道。

在开放计算项目(OCP)的努力下,开源硬件在数据中心中不断获得推动力。 OCP在提高数据中心性能和效率方面的合作方式已经不仅仅是体现作为一个讨论用的公开论坛。参与者继续分享开放的规范。例如,微软在去年分享了Project Olympus服务器机架设计之后,向OCP社区提供了专注于平台安全的Project Cerebus规范。

随着基础架构的速度和容量的不断攀升,企业经常发现自己仍然要面对各种不同的Hado哦派配置等问题。有一个工作组一直在致力于简化这其中的流程。在Linux基金会的主导下,ODPi试图消除对于不同平台的多个Hadoop发行版的需求(图5)。

图5. ODPi试图简化Hadoop发行版。(来源:ODPi)

担心:

必要的技能严重短缺

大数据工具可使深度分析更容易获得,但仍然需要数据科学的坚实基础。不幸的是,数据科学家将在2018年保持供不应求的状态,开放职位与合格个人之间的差距将继续增长,这可能是阻碍大数据成功最令人担忧的挑战之一。

Burning Glass Technologies(BHEF)和IBM的一项研究显示,合格的数据科学家明显不足(图6)。更糟糕的是,现有数据科学家的数量增长可能远远没有达到大数据本身增长的预测水平。自动化技术将为传统数据科学任务(如数据清理和非结构化数据解耦)提供一些缓解措施,但是大数据的创新应用仍然与可用的大数据专家资源密切相关。

图6. 关键数据分析技能需求的增长速度远远超过所能供应的水平。(来源:IBM)

担心:

隐私问题变得可执行

欧盟一般数据保护条例(GDPR)自2018年5月25日起生效,适用于任何处理欧盟居民数据的企业组织。即使是在欧盟以外的公司也需要遵守GDPR,并且可能面临严重的违规处罚。对私人数据的严格管制和违规处罚,对于那些要在美国HIPAA安全规则下保护健康数据的公司来说并不陌生。即使非故意的违规行为也会导致罚款,故意忽视对健康数据的保护将要面临重大罚款和多年徒刑。此外,消费者日益关注的数据隐私重要性甚至超过了监管要求。

诸如金融行业这样的细分市场,多年来依靠数据脱敏(Data masking)技术来去除个人可识别的数据。利用这些技术,数据流过程中采取额外步骤,来提取敏感数据,将敏感数据转换为另一种字符串,并将这些数据混入数据集中以加载到目标数据库(图7),从而将其去个性化。数据脱敏技术可理想地确保数据集对于使用目标数据库的人类用户来说仍然有意义,因为诸如地址(例如151 W 34th St)的敏感数据被转换为一些安全但是有意义的字符串(诸如123 Hidden Street)。

图7. 传统的数据脱敏技术在数据流中插入额外的步骤。(来源:IBM)

GDPR要求企业使用类似的假名方法来隐去个人数据。如果没有数据科学家和隐私专家,公司将很难利用大数据工具来应用正确的方法组合。当个人担心他们的私人数据,并要求将这些私人数据从企业文件、数据库和数据池中删除的时候,这个问题就会变得更加复杂。特别是,如果个人资料保持不变,但数据转换和分析结果被埋没,这个问题就会变得几乎不可能。像Kantara Initiative的Consent Management Solutions Work Group这样的初期尝试,为处理这些问题提供了一个框架。

担心:

数据互操作性仍然有限

大数据概念(例如数据湖)旨在实现数据源的广泛混合。2018年,企业可能会因为通过合并多来源的数据而导致创造有用信息的能力受限而感到沮丧。

随着非结构化数据的增长,当企业在对比不同非结构化容器解析的数据时遇到了巨大的挑战,即使这些容器是来自于企业电子邮件流量这样相同的来源。在结构化数据中,语义问题常常由于模式和数据定义的性质而减少。

如果语义上等同的数据点与完全不同的上下文相关联(例如当用人体温度计和室外温度计测量温度时,温度的重要性),那么数据互操作性问题变得更为复杂。温度数据的上下文反映了明显不同的含义,需要一个统一的语义元数据框架来确定有用的结果组合(图8)。上下文敏感的解析和标记这一新机制,将有助于解决更现实的情况,但解决此问题的方法取决于是否有经验丰富的数据科学家,以及数据共享合作伙伴之间对数据语义和广义本体的一致性。

图8. 跨域应用(6)中有用的推理(7)需要一致的语义(2)和本体(4)。 (来源:Murdock,Paul等,物联网的语义互操作性)

担心:

安全缺陷威胁数据完整性

与几乎所有的在线资产一样,数据安全在2018年仍将是一个值得关注的问题。这仍然是整个业界最关注的问题之一,这一点也不意外。在Forrester针对314位高级公司经理、IT经理和高级数据分析领导者的调查中,受访者提到了与存储和数据完整性相关的数据安全问题(图9)。虽然有个别细分的安全方案是已经有了的,但要组合成实用的解决方案,还需要把技术和实践精心组合起来。

图9. Forrester调查发现,数据安全性仍然是企业管理人员最关心的问题。(来源:Rackspace)

在安全薄弱的环境中,对机器学习模型依赖的增加带来了额外的难度。犯罪分子通过向数据源中加入恶意数据流,入侵那些利用新数据趋势来进行训练的模型。最糟糕的是,网络犯罪分子可以使用微妙的“数据中毒”来将企业分析转向他们所选择的方向,从而在机器学习模型中创造出一种零日漏洞。不管怎样,数据中毒在单个的企业中是现实存在的威胁,如果企业之间共享数据的话可能性就更高了——例如汽车制造商将自己的物联网数据与交通基础设施合作伙伴共享的物联网数据结合起来。分布式账本技术被证明是维护这些数据集安全性的理想选择。在实践中,广泛分布的开放式分类账(例如区块链)固有的性能限制,可能会限制其在静态数据集、而不是动态数据流中的早期应用,尽管在基于更受限的分布式方法中,这种情况可能会有所改变。


人工智能赛博物理操作系统

AI-CPS OS

人工智能赛博物理操作系统新一代技术+商业操作系统“AI-CPS OS:云计算+大数据+物联网+区块链+人工智能)分支用来的今天,企业领导者必须了解如何将“技术”全面渗入整个公司、产品等“商业”场景中,利用AI-CPS OS形成数字化+智能化力量,实现行业的重新布局、企业的重新构建和自我的焕然新生。


AI-CPS OS的真正价值并不来自构成技术或功能,而是要以一种传递独特竞争优势的方式将自动化+信息化、智造+产品+服务数据+分析一体化,这种整合方式能够释放新的业务和运营模式。如果不能实现跨功能的更大规模融合,没有颠覆现状的意愿,这些将不可能实现。


领导者无法依靠某种单一战略方法来应对多维度的数字化变革。面对新一代技术+商业操作系统AI-CPS OS颠覆性的数字化+智能化力量,领导者必须在行业、企业与个人这三个层面都保持领先地位:

  1. 重新行业布局:你的世界观要怎样改变才算足够?你必须对行业典范进行怎样的反思?

  2. 重新构建企业:你的企业需要做出什么样的变化?你准备如何重新定义你的公司?

  3. 重新打造自己:你需要成为怎样的人?要重塑自己并在数字化+智能化时代保有领先地位,你必须如何去做?

AI-CPS OS是数字化智能化创新平台,设计思路是将大数据、物联网、区块链和人工智能等无缝整合在云端,可以帮助企业将创新成果融入自身业务体系,实现各个前沿技术在云端的优势协同。AI-CPS OS形成的字化+智能化力量与行业、企业及个人三个层面的交叉,形成了领导力模式,使数字化融入到领导者所在企业与领导方式的核心位置:

  1. 精细种力量能够使人在更加真实、细致的层面观察与感知现实世界和数字化世界正在发生的一切,进而理解和更加精细地进行产品个性化控制、微观业务场景事件和结果控制。

  2. 智能:模型随着时间(数据)的变化而变化,整个系统就具备了智能(自学习)的能力。

  3. 高效:企业需要建立实时或者准实时的数据采集传输、模型预测和响应决策能力,这样智能就从批量性、阶段性的行为变成一个可以实时触达的行为。

  4. 不确定性:数字化变更颠覆和改变了领导者曾经仰仗的思维方式、结构和实践经验,其结果就是形成了复合不确定性这种颠覆性力量。主要的不确定性蕴含于三个领域:技术、文化、制度。

  5. 边界模糊:数字世界与现实世界的不断融合成CPS不仅让人们所知行业的核心产品、经济学定理和可能性都产生了变化,还模糊了不同行业间的界限。这种效应正在向生态系统、企业、客户、产品快速蔓延。

AI-CPS OS形成的数字化+智能化力量通过三个方式激发经济增长:

  1. 创造虚拟劳动力,承担需要适应性和敏捷性的复杂任务,即“智能自动化”,以区别于传统的自动化解决方案;

  2. 对现有劳动力和实物资产进行有利的补充和提升,提高资本效率

  3. 人工智能的普及,将推动多行业的相关创新,开辟崭新的经济增长空间


给决策制定者和商业领袖的建议:

  1. 超越自动化,开启新创新模式:利用具有自主学习和自我控制能力的动态机器智能,为企业创造新商机;

  2. 迎接新一代信息技术,迎接人工智能:无缝整合人类智慧与机器智能,重新

    评估未来的知识和技能类型;

  3. 制定道德规范:切实为人工智能生态系统制定道德准则,并在智能机器的开

    发过程中确定更加明晰的标准和最佳实践;

  4. 重视再分配效应:对人工智能可能带来的冲击做好准备,制定战略帮助面临

    较高失业风险的人群;

  5. 开发数字化+智能化企业所需新能力:员工团队需要积极掌握判断、沟通及想象力和创造力等人类所特有的重要能力。对于中国企业来说,创造兼具包容性和多样性的文化也非常重要。


子曰:“君子和而不同,小人同而不和。”  《论语·子路》云计算、大数据、物联网、区块链和 人工智能,像君子一般融合,一起体现科技就是生产力。


如果说上一次哥伦布地理大发现,拓展的是人类的物理空间。那么这一次地理大发现,拓展的就是人们的数字空间。在数学空间,建立新的商业文明,从而发现新的创富模式,为人类社会带来新的财富空间。云计算,大数据、物联网和区块链,是进入这个数字空间的船,而人工智能就是那船上的帆,哥伦布之帆!


新一代技术+商业的人工智能赛博物理操作系统AI-CPS OS作为新一轮产业变革的核心驱动力,将进一步释放历次科技革命和产业变革积蓄的巨大能量,并创造新的强大引擎。重构生产、分配、交换、消费等经济活动各环节,形成从宏观到微观各领域的智能化新需求,催生新技术、新产品、新产业、新业态、新模式。引发经济结构重大变革,深刻改变人类生产生活方式和思维模式,实现社会生产力的整体跃升。





产业智能官  AI-CPS



用“人工智能赛博物理操作系统新一代技术+商业操作系统“AI-CPS OS:云计算+大数据+物联网+区块链+人工智能)在场景中构建状态感知-实时分析-自主决策-精准执行-学习提升的认知计算和机器智能;实现产业转型升级、DT驱动业务、价值创新创造的产业互联生态链




长按上方二维码关注微信公众号: AI-CPS,更多信息回复:


新技术“云计算”、“大数据”、“物联网”、“区块链”、“人工智能新产业:智能制造”、“智能农业”、“智能金融”、“智能零售”、“智能城市、“智能驾驶”新模式:“财富空间、“数据科学家”、“赛博物理”、“供应链金融”


官方网站:AI-CPS.NET



本文系“产业智能官”(公众号ID:AI-CPS)收集整理,转载请注明出处!



版权声明产业智能官(公众号ID:AI-CPS推荐的文章,除非确实无法确认,我们都会注明作者和来源。部分文章推送时未能与原作者取得联系。若涉及版权问题,烦请原作者联系我们,与您共同协商解决。联系、投稿邮箱:erp_vip@hotmail.com





2016-03-24 19:26:23 tangxiaoyin 阅读数 185

近日,大数据分析服务供应商Teradata天睿公司举行媒体沟通会宣布,旗下Think Big公司正式进军大中华区市场,面向客户提供开源数据分析的咨询服务,融合优秀的数据仓库方案,帮助各种规模的企业建立和发展适合的技术架构,快速有效地进行多元化大数据分析。

在大数据生态系统建设中,想要整合不同技术架构的优势,就必须要有更好的工具来管理、访问和利用这些平台,尤其是需要具备实际经验的团队指导Hadoop等复杂开源系统的延伸部署。而随着客户应用或开始尝试诸多不同的技术架构或版本,面临着很多技术与路线图规划等实际问题,往往会导致项目偏离既定的大数据战略以及业务目标。

辛儿伦

Teradata天睿公司大中华区首席执行官辛儿伦(Aaron Hsin)

对此,Teradata天睿公司大中华区首席执行官辛儿伦(Aaron Hsin)表示:“在过去五年,企业和政府单位的许多数据和信息不是以结构化的形态存储的。事实上不仅是过去五年,过去十年也有很多,比如互联网数据、文本数据、制造业数据、机器生成数据等。五六年前没有能够迅速、有效的数据分析手段来分析非结构化或半结构化数据。但现在,Teradata基于自身的研究和开发,同时融合优秀的开源技术,已经做到无论数据是什么形态以及何种格式,都有办法协助客户做有效的数据分析。”

而其旗下Think Big公司一直以来正是致力于提供数据科学与工程服务,通过整合Hadoop、NoSQL和流引擎(Streaming Engines)等开源平台和数据仓库环境,帮助客户应用大数据分析。Think Big作为全球首家大数据服务公司,自创立以来就协助各个行业的客户部署和整合开源技术,如Apache™ Hadoop®、Apache Spark™、Presto、Hive、NoSQL数据库(Apache HBase™、Apache Cassandra™以及MongoDB)以及R等,能够根据特定的业务需求,部署灵活、可靠的大数据解决方案。

Rick Farnell

Think Big公司联合创始人兼国际业务高级副总裁Rick Farnell

Think Big公司联合创始人兼国际业务高级副总裁Rick Farnell认为,客户在开始其大数据征途时,往往存在着很多“痛点”,例如“在生产环境中存在大数据挑战?”、“不清楚从何起步?”、“希望从大数据中获得更多价值?”、“帮助管理大数据平台”、“需要创建大数据团队?”

而针对这些“痛点”需求,Think Big提供对应的大数据服务组合,以及核心咨询能力,帮助客户基于自己业务需求,制定自己的大数据策略和路线图,通过数据工程服务帮助各个行业客户提升竞争能力和利润。其核心咨询业务和能力具体如下:

  • 大数据战略咨询服务:根据客户业务需求和战略目标,制定符合企业需求优先等级和能力的大数据战略,帮助企业更快地释放大数据价值;
  • 数据工程服务:根据客户的业务目标,设计、开发和交付最适合的解决方案,提供现有分析架构优化以及数据湖治理等服务;
  • 分析和数据科学服务:通过广受认可的数据分析方法论,解决客户现存的业务问题,通过创新的数据分析方法,发掘全新的业务机会;
  • 管理服务和培训:提供大数据分析系统的管理和最佳优化,提高数据分析效率和洞察力,通过各种形式的培训帮助企业真正获得能力,提高数据和分析系统的采用和普及。

而在此之中,颇引人注意的一点就是Think Big在具体实践中对于大数据战略和专业技能培养的重视,其“Think Big大数据学院”即是致力于为客户和合作伙伴提供全面的人才培养,通过“授人以渔”的方式帮助企业掌握各种开源分析技术,实现数据驱动的业务成功。

针对企业面对各种技术选择时的困惑,到底是选择开源解决方案,还是继续现有技术,Rick Farnell强调必须从具体的业务场景和需求出发,避免大数据征途上的典型误区,例如多数客户都愿意采用最新的开源数据,或者最新的趋势在第一个项目里使用。

Rick认为“对于客户来说,他们要真正能够建立在开源数据创新方面的能力,一开始应该先考虑建立一个平台开始发展,然后判断技术对自己业务的发展的效果是否满意。”

Rick Farnell强调:“随着各种规模的企业在开展大数据战略时选择不同的开源分析系统,客户对开源系统咨询服务的需求快速发展。我们致力于实现最新开源技术同现有成熟技术的优势互补,借助我们在业内备受尊重的数据科学家、数据工程师和咨询团队,为全球客户分享我们的专业能力,支持更快速、高效和便捷地获取大数据价值。”

那么,在整个大中华区,Think Big究竟有哪些本土化的动作呢?据介绍,Think Big已经在大中华区建立起一支成熟而且卓越的团队,借助全球各地专业团队的紧密协作,将最佳的数据分析系统部署和大数据分析能力交付给本地客户,帮助客户实现更大的竞争能力和业务优势。对此,Rick Farnell最后笑着说,“我们正在热烈地招聘中,也请你们广泛传播这个消息。”

当问及Think Big在Teradata公司大数据战略布局中的价值时,辛儿伦特别强调统一数据架构是广受客户认可的架构,其“兼容并包”的特性促进了整个大数据分析系统的繁荣。他表示,“Teradata通过统一数据架构实现了Hadoop等开源分析系统、Teradata Aster大数据探索分析技术以及数据仓库环境的完美整合,而借助Think Big专业的咨询服务,Teradata将能够向客户提出多元化大数据的最佳咨询建议,简化大数据分析系统部署和应用的难度,进一步强化统一数据架构的优势,推动大中华地区客户数据驱动转型的实现。今天,在大中华区正式推出Think Big的全面服务,这不仅体现了公司对高速发展的大中华区市场的重视,而且反映出客户对Teradata以及Think Big服务和能力的高度认可。”

2019-03-01 09:36:49 weixin_34129145 阅读数 20

0. Data Lake Analytics(简称DLA)介绍

数据湖(Data Lake)是时下大数据行业热门的概念:en.wikipedia.org/wiki/Data_l…。基于数据湖做分析,可以不用做任何ETL、数据搬迁等前置过程,实现跨各种异构数据源进行大数据关联分析,从而极大的节省成本和提升用户体验。关于Data Lake的概念。

终于,阿里云现在也有了自己的数据湖分析产品:www.aliyun.com/product/dat…
可以点击申请使用(目前公测阶段还属于邀测模式),体验本教程分析OTS数据之旅。
产品文档:help.aliyun.com/product/701…

1. ETL介绍

ETL(en.wikipedia.org/wiki/Extrac…)就是Extract、Transfrom、Load即抽取、转换、加载,是传统数仓和大数据的重要工具。

抽取:就是从源系统抽取需要的数据,这些源系统是同构或异构的:比如Excel表格、XML文件、关系型数据库。
转换:源系统的数据按照分析目的,转换成目标系统要求的格式,或者做数据清洗和数据加工。
加载:把转换后的数据装载到目标数据库,作为联机分析、数据挖掘、数据展示的基础。

整个ETL过程就像是在源系统和目标系统之间构建一个管道,数据在这个管道里源源不断的流动。

2. DLA与ETL

Data Placement Optimization(数据摆放优化)是目前云平台上的业务系统的主流架构方向和思路。架构师们会从读写性能、稳定性、强一致性、成本、易用性、开发效率等方面来考量不同存储引擎给业务上带来的好处,从而实现整个业务系统的完美的平衡状态。

而这种跨异构数据源之间的数据搬迁,却不是一件容易的事情。很多ELT工具基本上属于框架级别,需要自己开发不少的辅助工具;同时表达能力也较弱,无法满足很多场景;另外对异构数据源的抽象和兼容性也不是那么完美。

反观DLA,无论从哪方面来看,DLA都完美的契合ETL的需求场景。下图是DLA的简易架构图,DLA一开始就是基于“MPP计算引擎+存储计算分离+弹性高可用+异构数据集源”等架构原则来设计的,支持各种异构数据源读写是DLA的核心目标!



通过连接异构数据源来执行select + join + subQuery等逻辑实现Extract,通过Filter+ Project + Aggregation + Sort + Functions等实现数据流转换和映射Transform,而通过insert实现Load,下面是一个例子:

--基本格式
insert into target_table (col1, col2, col3, ....)  --需要导入的列以及列的顺序
select c1, c2, c3, ....                            --需要与导入列的类型兼容,顺序要确认清楚
from ...                         --可以是任何你想要查询的数据目标
where ...


--下面是一个例子
insert into target_table (id, name, age)  
select s1.pk1, s2.name, s1.age            
from source_table1 s1
join source_table2 s2
on s1.sid = s2.sid
where s1.xxx = 'yyy'
复制代码

下面我们就尝试往不同的数据源导入数据吧。

3. 实际测试(以TableStore:为例)

  • 准备DLA账号(已有测试账号)
    • 测试集群:上海region;
    • 账号账号:DLA测试账号;


  • 准备两个来源表(两个TPC-H的OSS表,customer和nation),用来做join和数据查询;
  • 准备一个TableStore(help.aliyun.com/document_de…)的目标表;
  • 执行导入SQL,写入数据后校验结果;

a)两个来源表定义:

mysql> show create database tpch_50x_text;
+---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Database      | Create Database                                                                                                                                                        |
+---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tpch_50x_text | CREATE DATABASE `tpch_50x_text`
WITH DBPROPERTIES (
    catalog = 'hive',
    location = 'oss://${您的bucket}/datasets/tpch/50x/text_date/'
)
COMMENT '' |
+---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.02 sec)


mysql> show tables;
+------------+
| Table_Name |
+------------+
| customer   |
| nation     |
+------------+
2 rows in set (0.03 sec)

mysql> show create table customer;
+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table    | Create Table                                                                                                                                                                                                                                                                                                                                                                           |
+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| customer | CREATE EXTERNAL TABLE `tpch_50x_text`.`customer` (
    `c_custkey` int,
    `c_name` string,
    `c_address` string,
    `c_nationkey` int,
    `c_phone` string,
    `c_acctbal` double,
    `c_mktsegment` string,
    `c_comment` string
)
ROW FORMAT DELIMITED
    FIELDS TERMINATED BY '|'
STORED AS `TEXTFILE`
LOCATION 'oss://${您的bucket}/datasets/tpch/50x/text_date/customer_text' |
+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.90 sec)


mysql> show create table nation;
+------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table      | Create Table                                                                                                                                                                                                                                    |
+------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| nation     | CREATE EXTERNAL TABLE `tpch_50x_text`.`nation` (
    `n_nationkey` int,
    `n_name` string,
    `n_regionkey` int,
    `n_comment` string
)
ROW FORMAT DELIMITED
    FIELDS TERMINATED BY '|'
STORED AS `TEXTFILE`
LOCATION 'oss://${您的bucket}/datasets/tpch/50x/text_date/nation_text' |
+------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.73 sec)
复制代码

b)准备TableStore的库和表

## 建库
mysql> show create database etl_ots_test;
+--------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Database     | Create Database                                                                                                                                                                |
+--------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| etl_ots_test | CREATE DATABASE `etl_ots_test`
WITH DBPROPERTIES (
    catalog = 'ots',
    location = 'https://${您的instance}.cn-shanghai.ots-internal.aliyuncs.com',
    instance = '${您的instance}'
)
COMMENT '' |
+--------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.02 sec)

## 使用库
mysql> use etl_ots_test;
Database changed

## 建表
mysql> show create table test_insert;
+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table       | Create Table                                                                                                                                                                          |
+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| test_insert | CREATE EXTERNAL TABLE `test_insert` (
    `id1_int` int NOT NULL COMMENT '客户id主键',
    `c_address` varchar(20) NULL COMMENT '客户的地址',
    `c_acctbal` double NULL COMMENT '客户的account balance',
    PRIMARY KEY (`id1_int`)
)
COMMENT ''             |
+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.03 sec)
复制代码

以下是实际数据的截图:





c)开始导入数据,确保导入字段顺序和类型兼容性:

## 检查数据,都是空的
mysql> select * from etl_ots_test.test_insert;
Empty set (0.31 sec)
mysql> use tpch_50x_text;
Database changed

## 查询下nation数据,其中CANADA的nationkey是3,后续要找这个数据
mysql> select n_nationkey, n_name from nation;
+-------------+----------------+
| n_nationkey | n_name         |
+-------------+----------------+
|           0 | ALGERIA        |
|           1 | ARGENTINA      |
|           2 | BRAZIL         |
|           3 | CANADA         |
|           4 | EGYPT          |
|           5 | ETHIOPIA       |
|           6 | FRANCE         |
|           7 | GERMANY        |
|           8 | INDIA          |
|           9 | INDONESIA      |
|          10 | IRAN           |
|          11 | IRAQ           |
|          12 | JAPAN          |
|          13 | JORDAN         |
|          14 | KENYA          |
|          15 | MOROCCO        |
|          16 | MOZAMBIQUE     |
|          17 | PERU           |
|          18 | CHINA          |
|          19 | ROMANIA        |
|          20 | SAUDI ARABIA   |
|          21 | VIETNAM        |
|          22 | RUSSIA         |
|          23 | UNITED KINGDOM |
|          24 | UNITED STATES  |
+-------------+----------------+
25 rows in set (0.37 sec)

## 查询下customer数据,我们只关注nationkey=3以及c_mktsegment='BUILDING'的数据
mysql> select count(*) from customer where c_nationkey = 3 and c_mktsegment = 'BUILDING';
+----------+
| count(*) |
+----------+
|    60350 |
+----------+
1 row in set (0.66 sec)

## 查询下customer数据,我们只关注nationkey=3以及c_mktsegment='BUILDING'的数据
mysql> select * from customer where c_nationkey = 3 and c_mktsegment = 'BUILDING' order by c_custkey limit 3;
+-----------+--------------------+-------------------------+-------------+-----------------+-----------+--------------+----------------------------------------------------------------------------------------------------+
| c_custkey | c_name             | c_address               | c_nationkey | c_phone         | c_acctbal | c_mktsegment | c_comment                                                                                          |
+-----------+--------------------+-------------------------+-------------+-----------------+-----------+--------------+----------------------------------------------------------------------------------------------------+
|        13 | Customer#000000013 | nsXQu0oVjD7PM659uC3SRSp |           3 | 13-761-547-5974 |   3857.34 | BUILDING     | ounts sleep carefully after the close frays. carefully bold notornis use ironic requests. blithely |
|        27 | Customer#000000027 | IS8GIyxpBrLpMT0u7       |           3 | 13-137-193-2709 |   5679.84 | BUILDING     |  about the carefully ironic pinto beans. accoun                                                    |
|        40 | Customer#000000040 | gOnGWAyhSV1ofv          |           3 | 13-652-915-8939 |    1335.3 | BUILDING     | rges impress after the slyly ironic courts. foxes are. blithely                                    |
+-----------+--------------------+-------------------------+-------------+-----------------+-----------+--------------+----------------------------------------------------------------------------------------------------+
3 rows in set (0.78 sec)
复制代码

导入之前我们想清楚需求:把国家是'CANADA'的,客户的market segmentation为'BUILDING'的客户找到,然后对c_custkey排序,选择前10条数据,然后选择他们的c_custkey、c_address、c_acctbal三列,清晰到OTS的test_insert表中,以备后续使用

##先查询下数据,看看有几条数据
mysql> select c.c_custkey, c.c_address, c.c_acctbal 
    -> from tpch_50x_text.customer c
    -> join tpch_50x_text.nation n 
    -> on c.c_nationkey = n.n_nationkey
    -> where n.n_name = 'CANADA' 
    -> and c.c_mktsegment = 'BUILDING' 
    -> order by c.c_custkey
    -> limit 10;
+-----------+--------------------------------+-----------+
| c_custkey | c_address                      | c_acctbal |
+-----------+--------------------------------+-----------+
|        13 | nsXQu0oVjD7PM659uC3SRSp        |   3857.34 |
|        27 | IS8GIyxpBrLpMT0u7              |   5679.84 |
|        40 | gOnGWAyhSV1ofv                 |    1335.3 |
|        64 | MbCeGY20kaKK3oalJD,OT          |   -646.64 |
|       255 | I8Wz9sJBZTnEFG08lhcbfTZq3S     |   3196.07 |
|       430 | s2yfPEGGOqHfgkVSs5Rs6 qh,SuVmR |   7905.17 |
|       726 | 4w7DOLtN9Hy,xzZMR              |   6253.81 |
|       905 | f iyVEgCU2lZZPCebx5bGp5        |   -600.73 |
|      1312 | f5zgMB4MHLMSHaX0tDduHAmVd4     |    9459.5 |
|      1358 | t23gsl4TdVXqTZha DioEHIq5w7y   |   5149.23 |
+-----------+--------------------------------+-----------+
10 rows in set (1.09 sec)


##开始导入
mysql> insert into etl_ots_test.test_insert (id1_int ,c_address, c_acctbal)
    -> select c.c_custkey, c.c_address, c.c_acctbal 
    -> from tpch_50x_text.customer c
    -> join tpch_50x_text.nation n 
    -> on c.c_nationkey = n.n_nationkey
    -> where n.n_name = 'CANADA' 
    -> and c.c_mktsegment = 'BUILDING' 
    -> order by c.c_custkey
    -> limit 10;
+------+
| rows |
+------+
|   10 |
+------+
1 row in set (2.14 sec)

## 验证结果,没有问题:
mysql> select * from etl_ots_test.test_insert;
+---------+--------------------------------+-----------+
| id1_int | c_address                      | c_acctbal |
+---------+--------------------------------+-----------+
|      13 | nsXQu0oVjD7PM659uC3SRSp        |   3857.34 |
|      27 | IS8GIyxpBrLpMT0u7              |   5679.84 |
|      40 | gOnGWAyhSV1ofv                 |    1335.3 |
|      64 | MbCeGY20kaKK3oalJD,OT          |   -646.64 |
|     255 | I8Wz9sJBZTnEFG08lhcbfTZq3S     |   3196.07 |
|     430 | s2yfPEGGOqHfgkVSs5Rs6 qh,SuVmR |   7905.17 |
|     726 | 4w7DOLtN9Hy,xzZMR              |   6253.81 |
|     905 | f iyVEgCU2lZZPCebx5bGp5        |   -600.73 |
|    1312 | f5zgMB4MHLMSHaX0tDduHAmVd4     |    9459.5 |
|    1358 | t23gsl4TdVXqTZha DioEHIq5w7y   |   5149.23 |
+---------+--------------------------------+-----------+
10 rows in set (0.27 sec)
复制代码

d)注意点:

虽然有ETL工具快速导入导出,但也有些问题需要注意的,比如:

  • 如果导入任务时间太长,请走异步模式,否则连接断开可能会影响任务正常运行;
  • TableStore目前的insert是根据主键覆盖,主键不会去重判断的,请务必不能对你正常的数据表做插入;
  • 目前DLA和TableStore的事务能力还不够,可能会出现中断,已导入的数据不会清楚,需要自行清理;
  • 列的个数和列的类型,需要自己对齐保障,否则会报错;

4. 其他数据源导入

整个过程是不是很简单?是不是想要导入其他场景的数据源?对DLA而言,底层任何数据源都以相同方式处理,只要确保其他数据源的库、表在DLA中正常创建,就可以正常的读写,实现ETL啦!赶紧试试吧!

#阿里云开年Hi购季#幸运抽好礼!

点此抽奖:【阿里云】开年Hi购季,幸运抽好礼


原文链接

本文为云栖社区原创内容,未经允许不得转载。


转载于:https://juejin.im/post/5c78fcd56fb9a049f06af697

2019-06-16 18:00:25 Luomingkui1109 阅读数 262

    参考:https://www.jianshu.com/p/2463b2f057d0

 

    导读:数据湖概念的诞生,源自企业面临的一些挑战,如数据应该以何种方式处理和存储。最开始,企业对种类庞杂的应用程序的管理都经历了一个比较自然的演化周期。

最开始的时候,每个应用程序会产生、存储大量数据,而这些数据并不能被其他应用程序使用,这种状况导致数据孤岛的产生。随后数据集市应运而生,应用程序产生的数据存储在一个集中式的数据仓库中,可根据需要导出相关数据传输给企业内需要该数据的部门或个人。

    然而数据集市只解决了部分问题。剩余问题,包括数据管理、数据所有权与访问控制等都亟须解决,因为企业寻求获得更高的使用有效数据的能力。

    为了解决前面提及的各种问题,企业有很强烈的诉求搭建自己的数据湖,数据湖不但能存储传统类型数据,也能存储任意其他类型数据,并且能在它们之上做进一步的处理与分析,产生最终输出供各类程序消费。

    在本文中,将介绍数据湖的一些主要方面,帮助读者理解为什么它对企业非常重要。

 

一、什么是数据湖

    如果需要给数据湖下一个定义,可以定义为这样:数据湖是一个存储企业的各种各样原始数据的大型仓库,其中的数据可供存取、处理、分析及传输。

数据湖从企业的多个数据源获取原始数据,并且针对不同的目的,同一份原始数据还可能有多种满足特定内部模型格式的数据副本。因此,数据湖中被处理的数据可能是任意类型的信息,从结构化数据到完全非结构化数据。

    企业对数据湖寄予厚望,希望它能帮助用户快速获取有用信息,并能将这些信息用于数据分析和机器学习算法,以获得与企业运行相关的洞察力。

数据湖与企业的关系

    ■ 数据湖能给企业带来多种能力,例如,能实现数据的集中式管理,在此之上,企业能挖掘出很多之前所不具备的能力。

    ■ 数据湖结合先进的数据科学与机器学习技术,能帮助企业构建更多优化后的运营模型,也能为企业提供其他能力,如预测分析、推荐模型等,这些模型能刺激企业能力的后续增长。

 

二、数据湖如何帮助企业

长期以来,企业一直试图找到一个统一的模型来表示企业中所有实体。这个任务有极大的挑战性,原因有很多,下面列举了其中的一部分:

    ■ 一个实体在企业中可能有多种表示形式,因此可能不存在某个完备的模型来统一表示实体。

    ■ 不同的企业应用程序可能会基于特定的商业目标来处理实体,这意味着处理实体时会采用或排斥某些企业流程。

    ■ 不同应用程序可能会对每个实体采用不同的访问模式及存储结构。

这些问题已困扰企业多年,并阻碍了业务处理、服务定义及术语命名等事务的标准化。

从数据湖的角度来看,我们正在以另外一种方式来看待这个问题。使用数据湖,隐式实现了一个较好的统一数据模型,而不用担心对业务程序产生实质性影响。这些业务程序则是解决具体业务问题的“专家”。数据湖基于从实体所有者相关的所有系统中捕获的全量数据来尽可能“丰满”地表示实体。

因为在实体表示方面更优且更完备,数据湖确实给企业数据处理与管理带来了巨大的帮助,使得企业具备更多关于企业增长方面的洞察力,帮助企业达成其商业目标。

 

数据湖的优点

企业会在其多个业务系统中产生海量数据,随着企业体量增大,企业也需要更智能地处理这些横跨多个系统的数据。

一种最基本的策略是采用一个单独的领域模型,它能精准地描述数据并能代表对总体业务最有价值的那部分数据。这些数据指的是前面提到的企业数据。

对企业数据进行了良好定义的企业当然也有一些管理数据的方法,因此企业数据定义的更改能保持一致性,企业内部也很清楚系统是如何共享这些信息的。

在这种案例中,系统被分为数据拥有者(data owner)及数据消费者(data consumer)。对于企业数据来说,需要有对应的拥有者,拥有者定义了数据如何被其他消费系统获取,消费系统扮演着消费者的角色。

一旦企业有了对数据和系统的明晰定义,就可以通过该机制利用大量的企业信息。该机制的一种常见实现策略是通过构建企业级数据湖来提供统一的企业数据模型,在该机制中,数据湖负责捕获数据、处理数据、分析数据,以及为消费者系统提供数据服务。

数据湖能从以下方面帮助到企业:

■ 实现数据治理(data governance)与数据世系。

■ 通过应用机器学习与人工智能技术实现商业智能。

■ 预测分析,如领域特定的推荐引擎。

■ 信息追踪与一致性保障。

■ 根据对历史的分析生成新的数据维度。

■ 有一个集中式的能存储所有企业数据的数据中心,有利于实现一个针对数据传输优化的数据服务。

■ 帮助组织或企业做出更多灵活的关于企业增长的决策。

 

三、数据湖是如何工作的

为了准确理解数据湖能给企业带来哪些好处,理解数据湖的工作机制以及构建功能齐全的数据湖需要哪些组件就显得尤为重要了。在一头扎进数据湖架构细节之前,不妨先来了解数据湖背景中的数据生命周期。

在一个较高的层面来看,数据湖中数据生命周期如图2-1所示。

上述生命周期也可称为数据在数据湖中的多个不同阶段。每个阶段所需的数据和分析方法也有所不同。数据处理与分析既可按批量(batch)方式处理,也可以按近实时(near-real-time)方式处理。

数据湖的实现需要同时支持这两种处理方式,因为不同的处理方式服务于不同的场景。处理方式(批处理或近实时处理)的选择也依赖数据处理或分析任务的计算量,因为很多复杂计算不可能在近实时处理模式中完成,而在一些案例中,则不能接受较长的处理周期。

同样,存储系统的选择还依赖于数据访问的要求。例如,如果希望存储数据时便于通过SQL查询访问数据,则选择的存储系统必须支持SQL接口。

如果数据访问要求提供数据视图,则涉及将数据存储为对应的形式,即数据可以作为视图对外提供,并提供便捷的可管理性和可访问性。

最近出现的一个日渐重要的趋势是通过服务(service)来提供数据,它涉及在轻量级服务层上对外公开数据。每个对外公开的服务必须准确地描述服务功能并对外提供数据。此模式还支持基于服务的数据集成,这样其他系统可以消费数据服务提供的数据。

当数据从采集点流入数据湖时,它的元数据被捕获,并根据其生命周期中的数据敏感度从数据可追溯性、数据世系和数据安全等方面进行管理。

数据世系被定义为数据的生命周期,包括数据的起源以及数据是如何随时间移动的。它描述了数据在各种处理过程中发生了哪些变化,有助于提供数据分析流水线的可见性,并简化了错误溯源。

可追溯性是通过标识记录来验证数据项的历史、位置或应用的能力。

 

四、数据湖与数据仓库的区别

很多时候,数据湖被认为与数据仓库是等同的。实际上数据湖与数据仓库代表着企业想达成的不同目标。表2-1中显示了两者的关键区别。

数据湖数据仓库

能处理所有类型的数据,如结构化数据,非结构化数据,半结构化数据等,数据的类型依赖于数据源系统的原始数据格式。只能处理结构化数据进行处理,而且这些数据必须与数据仓库事先定义的模型吻合。

拥有足够强的计算能力用于处理和分析所有类型的数据,分析后的数据会被存储起来供用户使用。处理结构化数据,将它们或者转化为多维数据,或者转换为报表,以满足后续的高级报表及数据分析需求。

数据湖通常包含更多的相关的信息,这些信息有很高概率会被访问,并且能够为企业挖掘新的运营需求。数据仓库通常用于存储和维护长期数据,因此数据可以按需访问。

从表2-1来看,数据湖与数据仓库的差别很明显。然而,在企业中两者的作用是互补的,不应认为数据湖的出现是为了取代数据仓库,毕竟两者的作用是截然不同的。

 

五、数据湖的构建方法

不同的组织有不同的偏好,因此它们构建数据湖的方式也不一样。构建方法与业务、处理流程及现存系统等因素有关。

简单的数据湖实现几乎等价于定义一个中心数据源,所有的系统都可以使用这个中心数据源来满足所有的数据需求。虽然这种方法可能很简单,也很划算,但它可能不是一个非常实用的方法,原因如下:

■ 只有当这些组织重新开始构建其信息系统时,这种方法才可行。

■ 这种方法解决不了与现存系统相关的问题。

■ 即使组织决定用这种方法构建数据湖,也缺乏明确的责任和关注点隔离(responsibility and separation of concerns)。

■ 这样的系统通常尝试一次性完成所有的工作,但是最终会随着数据事务、分析和处理需求的增加而分崩离析。

更好的构建数据湖的策略是将企业及其信息系统作为一个整体来看待,对数据拥有关系进行分类,定义统一的企业模型。

这种方法虽然可能存在流程相关的挑战,并且可能需要花费更多的精力来对系统元素进行定义,但是它仍然能够提供所需的灵活性、控制和清晰的数据定义以及企业中不同系统实体之间的关注点隔离。

这样的数据湖也可以有独立的机制来捕获、处理、分析数据,并为消费者应用程序提供数据服务。