大数据传输服务简介

随着现实业务变的更加复杂,业务数据量变的更加庞大,我们的软件架构也变的非常庞大,动辄上百台服务器节点的业务也开始随处可见,特别是在一些大型公司。
加上随着现在对于用户行为数据的重视度越来越高,日志的价值也越来越被大家所重视,那么随之而来的问题是,我们需要一个简单,快速,稳定,可靠的日志收集工具,能够收集散落在几百台服务器,不同目录下的日志数据。
这样的日志收集中间件在各大公司都已经成为必不可少的组件,例如linkin的kafka ,cloudera的flume,facebook的scribe.国内做的较好的阿里云已经将这种数据收集服务做到了SAAS层,整合到云主机中做为一个公共服务对外提供。网易杭研中的对比产品就是Datastream。

对于日志收集大体上分为以下三个步骤
收集的数据源 — > 收集系统 — > 收集的目的地。
为了满足源端和终端的不同的收集场景,可能需要提供不同的工具或是组件来满足,下面就以网易杭研自研的Datastream为例来介绍下在大数据收集这块的工作。同时会附带简单介绍国内做的比较领先的阿里云,来看下在数据收集这块他们做的一些工作。

上面提到了大数据收集的三个环节:数据源端,收集系统,数据终端。其中收集系统就是我们需要做的系统,在另外两个环节我们会面临以下几个问题?

什么数据需要传输?
常见的数据大体上分为两类:
1.通过日志组件(log4j,logback)打印到本地的文件日志
2.关系数据库(mysql,oracle)中存储的数据
基本上80%左右的需求是日志文件需要收集。

如何传输?
1.增量的数据传输,例如实时的采集日志文件中的数据传输到HDFS或是MQ中。
2.批量的数据传输,将关系数据库(mysql)中的某张表传输到HDFS中,或是到hive中。
当然全新的日志文件收集也可以理解为批量的数据传输,关系数据库中的更新数据收集也可以理解为增量的数据传输,所说的例子并没有完全的限定了日志就是增量传输,关系数据库就是批量传输。

如何选择数据终端?
较为常见的数据存储终端是以下三种,分别覆盖了不同的需求场景。
1.HDFS:这个是离线数据分析的第一选择,或者说也是必然选择,分布式的存储能够满足大数据量的存储及扩容,同时基于HDFS也有一套较为完善的离线分析计算体系,如MapReducer,Hive等。
2.MQ:这个终端更多的是满足一些实时的数据分析,通常会同storm或是spark streaming等实时计算框架整合使用。或者是一些增量的数据场景,例如搜索引擎的增量更新。
3.HBASE:HDFS是为了满足离线计算,MQ更多的是增量的服务(搜索的增量更新)或是实时计算,但是还有一些常见是涉及类似传统关系数据的查询需求,那么HBASE必然成为了大数据存储和查询到的最佳选择。

通过以上的三个问题,基本上可以得知我们大部分的业务场景

1.日志传输到HDFS
网易:Datastream支持GBK和UTF-8两种编码格式的日志文件传输到HDFS,同时支持HDFS文件按照文件大小或者按照小时进行归档。
阿里云:ODPS Tunnel 。

2.日志传输到MQ
网易:Datastream支持日志数据到rabbitmq的数据传输。
阿里云:ODPS DataHub Service(DHS) ,只支持UTF-8

3.日志传输到Hive。
网易:当前Datastream还未做到这一步,也就是说还为打通原始日志–> HDFS –>HIVE 的整个过程。
阿里云:ODPS DataHub Service(DHS) + ODPS SQL 。底层屏蔽了HIVE。

4.日志到实时计算
网易:当前我们还是通过 Datastream + STORM的方式来支持这种业务场景,目前我们支持的MQ是rabbitmq,后续会支持kafka.
阿里云:ODPS DataHub Service(DHS + ODPS Stream SQL 。 底层封装的是STORM还是其他框架未知。

阿里云在做ODPS时,在业务模型上做了一个很高的抽象,将底层的HDFS进行了屏蔽,所有的数据都是以表的方式进行组织,类似于HIVE中表的概念。所以在传输时,必须先建立对应的表。当然也就很容易的支持了SQL的离线查询,相当于自己建立了一套新的业务模型。Datastream则无此限制,当前还是基于业界通用的组件,并为做过多的封装。

5.增量日志到实时搜索引擎(solr,elasticsearch)
网易:当前是通过Datastream + NDIR 来实现日志的秒级查询需求,将日志数据传输到搜索引擎中。
阿里云: SLS,当前该服务还停留在种子用户使用阶段

6.日志到HBASE
网易:当前Datastream支持数据到HBASE0.94版本的存储
阿里云:未开放

7.mysql数据到各个终端的传输
网易:当前Datastream支持通过采集binlog的方式采集数据到相应的终端(HBASE,MQ,HDFS)。
阿里云:未开放

以上是对于了公司Datasream当前支持的功能,及同业界做的较好的阿里云之间的对比,其中部分会成为我们将来的发展方向。
大体上看,阿里将不同的场景通过不同的组件来实现,我们当前还是较为简单,通过一个统一的组件来解决多个场景下的问题,阿里云的这种实现方式可能从商业的角度看较为经济化。

下篇会介绍大数据传输组件的设计,主要涉及一些关键点的设计及我们踩过的一些坑。

作者: inter12

在这苦短的人生中,追求点自己的简单快乐

发表评论

电子邮件地址不会被公开。 必填项已用*标注