Baika ,印度公司FreshWork的Data Lake实践

  数据和信息之间相互联系,数据反映客观事物属性的记录,是信息具体表现形式,数据经过加工处理之后,就成为信息,没有数据就不会产生信息。不同业务都会从不同的数据源中获取大量的数据,随着业务逻辑的复杂化及数据源多样化,每天都会产生TB级别的数据。在大数据时代,数据无疑是企业和个人最重要的资产,但是业务收集、使用和使用数据过程中,数据隐私和数据安全是目前企业使用数据是需要考虑的比较敏感的问题。

  业务平台在运行过程中,数据科学家、机器学习、用户、产品部门、业务操作部门都会使用收集到的数据进行解读、分析及创建模型,但是目前仅有IT部门有访问数据的权限,其他部门需要通过IT部门来使用数据,这需要大量时间来执行走完数据使用流程,包括数据安全及隐私保护的工作。

  目前可以通过搭建数据湖来达到多部门及用户的数据共享,数据湖被定义为一种区别于原始数据仓库的数据存储架构,以原生格式保存大量的原始数据,可以包含结构化、非结构化数据,直到数据被使用的时候再进行处理。数据湖形象的表述为自然状态下的巨大水体,汇聚不同数据源的溪流、包括大量的无序的非结构化数据(文本、图片、声音及网页等),其存储大量原始数据,支持所有数据类型,不同用户根据业务需求、使用场景来发掘数据价值。建成数据湖需要解决的问题包括:

Ø 海量数据的存储(建湖)

Ø 数据的汇聚(引水)

Ø 数据的处理和分析(利用)

Ø 满足不同客户端而需求(价值)

  使用Apache Hadoop可以解决构建数据湖所遇到的所有问题,包括数据的采集、预处理及使用等。FreshWork使用Hadoop生态系统的各组件搭建了数据湖产品Baika,下面进行介绍。

  在FreshWork公司内部,每个业务生成的数据都存储在隔离的区域从而形成了数据孤岛,该业务的项目团队才有使用数据的权限,其他项目团队很难访问到这部分数据。为了在工作中能够挖掘商业模式,进一步做分析决策,需要所有的项目团队根据需要便捷的获取数据,合并数据孤岛,Fresh works在AWS上使用Cloudera搭建了可扩展的数据知识库(数据湖),其提供了数据存储、处理及分析的统一数据平台,使用该数据平台可以基于这些数据进行数据挖掘分析。其系统架构图如下所示:


  数据平台从所有的业务平台及外部数据源获取数据,包括结构化和非结构化数据,将其存储到可查询的存储系统中。如上图所示,在平台中使用了多种数据分析/处理框架,如Apache HBaseApache HiveApache HiveApache PigImpalaApache Spark等各种组件,不局限于做简单的数据查询及数据抽取,而是实现更深入的数据分析的企业级数据平台。

  在初始时,Baika使用S3-based的数据湖,数据保存在S3中,查询数据的集群根据需要进行动态扩展和伸缩。为了实现严格安全规范、细粒度的访问控制及控制集群成本,Fresh Works在企业内部搭建了上图所示的内部数据湖,对应上面所列举的数据湖要解决的问题,Baika给出了相应的解决方案:

1)数据收集

FreshWorks中的数据源包括RDSS3及自定义数据源,在Baikal中使用AWSClouderaStack技术开发data pipelines从这些数据源周期性的收集数据。在某些用例中,开发自定义Connectors来收集数据,并将这些数据写入到Hadoop分布式存储系统(HDFS)及Apache HBase

Sqoop,是一个常用的将RDBMS数据转移到Hadoop集群的命令行工具,其用于ETL中,使用HivePig组件处理存储到集群中的数据。随着平台的运行,需要频繁的刷新数据,这就需要增量的扩展数据,为了实现该需求可以采用的策略:

Ø Sqoop Phase,从所有分区中拉取变化的数据

Ø Hive Phase,将数据移动到Staging Table中,并进行去重检查

Ø Hive Reconcilation Phase:更新Records,使用Staging Table A保存最新的数据,Existing Table B保存旧数据,Final Table,去重后的数据表;Deleleted Records,一周更新一次数据

2)数据处理

为了满足不同项目团队的处理需求,需要不同的方式来处理数据。一些项目需要实时的获取汇总信息,一些项目需要先将Job注册到系统中然后调度执行,并将结果通过邮件的方式发送给用户。在平台中,可以使用OozieLuigi来创建自定义工作流。

可以使用Apache Spark的内存计算能力来处理数据,其任务运行在YARN中,充分使用内存来提高数据的处理速度。Spark也提供流分析的能力。在Fresh Work中,Spark任务从Kafka中拉取数据并处理,从而搭建一个实时处理应用。

3)数据存储

对于不同类型的负载需要不同的机器,在Baikai中使用EC2实例存储临时数据,为了便于使用将数据存储到Hive表中,这些数据可能是从RDBMS中抽取出来,为了实现压缩和性能的均衡做了大量的测试。经过测试,使用Apache Parquet的列式存储提供数据抽取和随机查找之间更好的扩展性


在集群中可以使用Hadoop Stack中的组件:SqoopHiveOozie搭建一个简单的数据处理处理pipeline,从RDS中抽取数据,在平台中运行多种应用,其处理的数据需要和数据源同步

4)数据安全

对数据的访问要符合安全策略,在平台中使用Active Directory(AD)来实现数据的加密和鉴权,下图是细粒度,基于角色的Policy


Baikai使用Cloudera提供的Kerberos认证和Apache Sentry实现鉴权。

5)Data Exploration

数据湖的搭建是为了服务于Data Exploration,在Baikai中可以使用ImpalaHive MR进行数据的查询。对于流计算,使用KafkaSpark提供数据,Kafka接收Freshworks所有业务的数据,通过Spark实时处理数据,如下图所示:


6)常见应用

Ø Log Analytics,支持应用日志的分析,使用Flume,MorphlineSolr实现日志的采集

Ø Reporting,使用Oozie定义reporting的工作流,在其中定义Hive查询,可以这该部分的结果输出到BI中做进一步的处理

Ø BI Tools,使用SisenseTableau进行商业分析,为了支持高级分析可以建立数据立方体,然后进行数据的处理。

参考链接:https://blog.freshworks.com/freshworks-data-lake/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值