马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
1.概述 虽然大数据的解决方案不仅只有hadoop平台,但是目前金融行业基于Hadoop的大数据平台已经得到广泛和成熟的应用。建设大数据平台需要解决三大问题,首先要有足够多的数据,包括结构数据、非结构数据、业务数据、第三方数据、行为数据等方方面面的数据,其次需要平台有足够快的速度处理实时和流动的数据,再有具备对现有数据进行挖掘、分析和学习的能力。 目前互联网金融行业都比较重视对大数据平台的建设,Hadoop平台技术更新也比较快,各家公司使用的技术选型和架构设计也是各有特点。但最基本的数据仓库都是基于Hive来构建的,实时处理的框架要不基于日志埋点flume+kafka+Spark+storm,要不基于解析binlog+spark+storm日志。 2.大数据家族产品Hadoop平台是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架构。光Hadoop家族下的子项目就有20多个,思绪导图上仅列了一些常用的大数据开源的项目,当然类似成熟的开源项目还有很多,不同的技术架构下使用的子项目也不一样。
2.1.Hive无论你是传统架构还是互联网架构,建设大数据平台你都需要首先考虑数据仓库,Hive是基于Hadoop的一个数据仓库工具,可以把基于Mysql的结构化的数据文件映射为一张张大的只读的数据库表或大宽表,开发人员不用考虑MapReduce,Hive目前已经成为数仓的标配。 Hive 适合用来对一段时间内的数据进行分析查询,Hive不应该用来进行实时的查询。况且Hive设计的目的,也不是支持实时的查询,因为它需要很长时间才可以返回结果。 2.2.HbaseHbase是构建在HDFS之上的分布式、面向列的存储系统,可以支持实时的读写、随机访问超大规模数据集。 Hbase则非常适合用来进行大数据的实时查询,可以直接使用HQL来进行直接查询。 在 HBase 中首先会有Column Family 的概念,简称为 CF。CF 一般用于将相关的列(Column)组合起来。
2.3.Sqoop建设数据仓库时,你需要一个工具把数据从业务数据库如Mysql导入到Hive里,Sqoop是比较常用的工具。当然Sqoop本身也存在很多问题,我们项目刚开始使用的是Sqoop,后来抛弃工具自己写的T+1导入数据。 2.4.Flume一个分布的、可靠的、高可用的海量日志收集的平台。一般来说大数据平台很多实时数据从业务埋点进来的,业务埋点打日志后,通过Flume进行日志收集然后通过Kafka传到大数据进行后续处理。
2.5.KafkaKafka是一个分区的、分布式的、可复制的消息系统。除了提供普通消息功能外还有一些自己独特的设计。 Kafka将消息以topic为单位进行归集,producer向kafka发布消息,consumer消费消息。客户端和服务端通过TCP协议通信。 2.6.StormStorm是一个分布式、高容错的实时计算系统。Storm令持续不断的流计算变得容易,弥补了Hadoop批处理所不能满足的实时要求。Stormy主要应用于实时分析,在线机器学习,持续计算、分布式远程调用等领域。 如果业务场景中需要低延迟的响应,希望在秒级或者毫秒级完成分析、并得到响应,而且希望能够随着数据量的增大而拓展。那就可以考虑下,使用Storm了。 2.7.Spark Streaming与Storm一样也是实时计算系统,是Spark生态技术栈中子项目,Spark Streaming可以和Spark Core、Spark SQL无缝整合。但与Storm相比仅是秒级的准实时,优点主要是吞度度大。
2.8.KuduKudu的定位是快速更新的数据上进行快速的查询,同时具备高性能的随机写,以及很强大的可用性(单行事务,一致性协议),支持Impala spark计算引擎。 什么时候使用kudu: 大规模数据复杂的实时分析,例如大数据量的join。 数据有更新。 查询准实时。
2.9.ImpalaImpala大数据实时分析查询引擎,Impala 与Hive都是构建在Hadoop之上的数据查询工具,Impala适合于实时交互式SQL查询。对于执行时间过长的SQL,仍旧是Hive更合适。 最初Impala主要支持HDFS,Kudu发布之后,Impala和Kudu做了深度集成。数据可以从实时计算平台中实时的写入Kudu,上层的Impala提供BI分析SQL查询,对于数据挖掘和算法等需求可以在Spark迭代计算框架上直接操作Kudu底层数据。 2.10.CanalCanal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL。 上面介绍Sqoop工具并不支持实时的数据抽取。MySQL Binlog 则是一种实时的数据流,用于主从节点之间的数据复制,我们可以利用它来进行实时的数据抽取。使用Canal 项目,我们能够非常便捷地将 MySQL 中的数据抽取到大数据平台中。
2.11.KylinKylin是ebay中国团队开发的一套OLAP系统并贡献至开源社区,主要用于支持大数据生态圈的数据分析业务,它主要是通过预计算的方式将用户设定的多维立方体缓存到HBase中。通过预计算的方式缓存了所有需要查询的的数据结果,需要大量的存储空间(原数据量的10+倍)。一般我们要分析的数据可能存储在关系数据库、HDFS上数据、文本文件、excel 等。 2.12.Spark mlibMLlib是Spark的机器学习(Machine Learning)库,旨在简化机器学习的工程实践工作,并方便扩展到更大规模。MLlib由一些通用的学习算法和工具组成,包括分类、回归、聚类、协同过滤、降维等,同时还包括底层的优化原语和高层的管道API。 具体来说,其主要包括以下几方面的内容: - 算法工具:常用的学习算法,如分类、回归、聚类和协同过滤;
- 特征化公交:特征提取、转化、降维,和选择公交;
- 管道(Pipeline):用于构建、评估和调整机器学习管道的工具;
- 持久性:保存和加载算法,模型和管道;
- 实用工具:线性代数,统计,数据处理等工具。
2.12.TensorFlowTensorFlow 是世界上最受欢迎的开源机器学习框架,它具有快速、灵活并适合产品级大规模应用等特点,让每个开发者和研究者都能方便地使用人工智能来解决多样化的挑战。 TensorFlow能够让你直接解决各种机器学习任务。目标就是在一般情况下,无论你遇到什么问题,TensorFlow都可以在一定程度上提供API的支持。 总的来说TensorFlow就是为了快而设计的,所以它针对你实际使用的硬件和平台做了优化。 其中在机器学习框架方面,TensorFlow的真正独特之处在于,能够在5行或者10行代码中构建模型。然后应用这个模型,进行扩展做出产品。 因此,你能够在几十甚至几百个机器的簇上进行训练。从而用该模型进行非常低的延迟预测。 3.大数据架构
3.1.数据源做大数据平台,首先需要考虑的是数据从那里来。有足够的数据源才能作后续的工作。 3.1.1.业务数据比较重要的数据来源,一般都是结构化的业务数据如客户、订单、贷前、贷中、贷后、风险信审等数据,还有部分非结构化的如照片、视频、报文等数据。 3.1.2.第三方数据如人行征信数据、第三方征信反欺诈问题如同盾、百融、芝麻、鹏元等数据。 3.1.3.用户行为数据对用户行为的数据进行筛选、统计、分析,从而发现用户的一些使用习惯,操作规律。从用户行为和使用习惯上也可以建立反欺诈模型。 3.1.3.1.实现方案 1、APP或H5页面通过埋点实时发送用户行为数据至后端server, app直接调用http接口,server通过logback直接输出日志文件 2、flume通过tail命令监控日志文件变化 3、flume通过生产者消费者模式将tail收集到日志推送至kafka集群 4、kafka根据服务分配topic,一个topic可以分配多个group,一个group可以分配多个partition 5、storm实时监听kafka,流式处理日志内容,根据特定业务规则,将数据实时存储至cache,同时根据需要可以写入hdfs 6、kafka直接写入hdfs 3.1.3.2.采集数据 1、用户下载APP、注册和登陆信息 2、终端信息: 操作系统:系统版本、系统类型 联网模式:网络(wifi或者移动网络) 终端特性:分辨率、机型 应用版本:当前版本 3、行为信息: 录入:录入速度、出错概率 操作路径:界面停留时间、界面跳转路径、界面跳转次数 操作行为:启动次数,使用时长,激活量,卸载量 4、错误信息: 错误摘要 错误次数 发生时间 5、GPS: 各操作页面GPS和时间 3.1.4.互联网数据互联网特别是移动互联网时代的来临,互联网上存在无数数据,与用户相关的、与行业相关的数据。我们可以合规的使用爬虫去抓取很多有用的数据,比如百度贴吧、金融门户网站等数据,来扩充公司强大的数据体系和数据宽度。 3.2.数据采集3.2.1.实时采集实时采集的来源主要是三个方面: 1、通过日志Flume+kafka然后实时分析或者直接存入hdfs。 2、通过Canal分析mysql的bilog日志,放到kafka或者直接存入hdfs。 3、靠爬虫去抓取互联网数据后保存到hdfs。 3.2.2.T+11、使用Sqoop从业务数据直接导入HIVE,导入频率也可以设为2小时一次,但对生产库有影响,可以考虑从mysql备库导入。 2、自己写工具导入HIVE。 3.3.数据融合和清洗这块工具最复杂而且需要消耗大量的资源,数据质量如果比较差的情况下,到数据应用那一层会很艰难。前面偷懒而欠的债后期肯定是要还的。 数据仓库具体分几层主要看业务特性和数据情况,分3层、7、8层都有,具体不会的架构方案有不同的分法。 3.3.1.ODSODS层是数据分层中的第一层,需要保持大量初始状态的数据,你可以想像ODS就是一个大仓库,所有的数据都先堆放在这里。 ODS需要保存数据每天的更新和历史。 3.3.2.数据清洗ODS层海量的原始数据中存在着大量不完整、不一致、有异常的数据,严重影响到数据应用和建模的执行效率,甚至可能导致数据应用的偏差,所以进行数据清洗就显得尤为重要,数据清洗同时进行数据集成、变换、规约等一系列的处理。 数据清洗一方面是要提高数据的质量,另一方面是要让数据更好地适应特定的数据应用和数据建模。 1、数据的完整性 2、数据的唯一性 3、数据的权威性 4、数据的合法性 5、数据的一致性 1、纠正错误 2、删除重复项 3、统一规格 4、修正逻辑 5、转换构造 6、数据压缩 7、补足残缺/空值 8、丢弃数据/变量 3.3.3.数据建模根据业务要求和数据应用建设数据主题模型。包括增减字段,增纬、减纬、行列转换、拆分表、合并表、统一类型(格式转换)、字段日期和数字计算及转换、列数据拆分为行数据、行数据合并为列数据。 如主题模型: 1、客户主题 2、帐户主题 3、产品主题 4、客户事件主题 3.4.数据应用3.4.1.SASSAS目前是金融行业风险部门必不可少的分析工具,SAS可以直接访问hdfs,架构设计中应该建设风险的数据集市,把SAS用所需要使用的数据和部分模型在数据集市里加工出来,风险分析数据就会轻松很多,最起码没有那么痛苦。 3.4.2.OLAPOLAP的作用就是尽可能将所有的维度条件及聚合值都准备好,供业务人员分析时可以按照任意维度来分析。Kylin从Hive中读取源数据,使用 MapReduce作为Cube构建的引擎,并把预计算结果保存在HBase。业务可以使用SQL语句或者其它分析工具访问构建好的结果。 3.4.3.报表T+1一般使用Spark来处理,把分析后的数据放到mysql里,报表工具直接读取mysql展示就可以了。 实时报表使用Storm从kafka里读取数据,一条一实时分析处理,数据结果可以放在mysql和redis,报表工具或应用作展示。 注:用户画像和客户挖掘不在这样讲了,后面我们单独讲解。 4.小结大数据时代,你不仅需要知道你的数据在那里、还要有能力实时采集、存储、清洗、分析、建模这些流动的数据。 数据质量、数据规模、业务建模、数据处理效率都是我们所需要关心的工作。基于Hadoop体系下开源的工具和子项目比较多,技术更新迭代比较快,大量的解决方案不够成熟或者需要你投入相应的研发资源。
|