大数据简介
大数据,是指一个公司创造或收集的“结构化”、“半结构化”或者“非结构化”的海量数据集合。它的意义不在于掌握的数据量是最大的,而在于能否有效、专业的对这些数据进行加工处理,并让这些海量的、多样化的数据产生最大的价值。
大数据的主要特征:
数据体量大、数据多样化、数据价值高、数据时效性;
数据的链路:
数据采集-->数据存储-->数据清洗/转换-->数据建模-->数据计算-->数据展示
数据采集这一块。主要是我们把从业务系统、日志、埋点、数据文件中的一些数据采集过来。存储到大数据的系统,主要是以HDFS文件系统为主,其他的还有比如ES、Kafka、TIDB等。
数据采集过来之后,我们会对一些脏数据或者测试数据进行清洗和转换,主要是一些测试数据,包括把格式不一致的数据统一转换成统一的格式等。
数据清洗完成之后,我们会对数据进行建模,这部分是数据仓库的核心。把拥有共同属性和共同业务逻辑的表整合到一起,提供给不同的场景方、业务方使用。
数据建模之后,我们根据不同的业务需求进行指标的一些汇总、计算。数据计算完成后,我们会把数据推送到不同的业务方、不同的系统,供他们分析使用。
数据计算层主要是分为两个部分,一个是实时计算,主要是以Fink和Sparkstreaming为主,批量计算这部分主要是Hive、Presto跟Spark。
在此基础上实现了历史数据查询、数据订阅、数据下载等一些数据服务。
什么是大数据测试?
大数据测试:通常是指对采用大数据技术的系统或应用的测试。它可以分成两个维度,对数据本身的测试,对大数据系统或应用产品的测试。
数据测试是指数据质量的测试,主要关注数据的完整性、准确性、一致性、及时性、可用性五个维度。
大数据系统一般指使用Hadoop生态组件搭建的或自主研发的大数据系统,主要包括数据存储、计算、分析等组件。大数据应用产品比较丰富,典型的有BI报表、数据挖掘产品、数据分析平台等。
大数据系统测试是比较复杂的,首先包括Hadoop本身生态的一些组件,再就是包括我们自己做的一些数据应用平台、数据开发平台,主要包括这三块内容。
技术门槛高首先它的技术复杂、多样,比如我们之前看到的,包括实时数据、离线数据它们处理数据的架构、框架都是不一样的,技术也都是不一样的。再者,对SQL编写能力的要求会比业务测试会高很多,不仅仅要求能够写一些复杂的业务逻辑,还要有一定的问题定位的能力。第三点是它的自动化、性能测试场景比较复杂。
测试效率低第二个难点是测试效率低。测试效率低体现在大数据技术手段的多样复杂;任务运行时间比较长,以我们的数据仓库为例,为一个任务修复一个问题,跑完可能需要一个小时,任务运行时间比较长。再一个就是缺少测试工具,我们这边也正在规划准备开发一个大数据测试平台。再一个就是回归测试难,主要因为数据链路太长,改一个东西可能会影响到整个数据链路。
环境问题多第三个难点是环境问题比较多,首先测试和生产的环境之间的差异还是很大的。因为大数据这边的集群比较大,所以测试环境没有办法做到像正常环境那样完善,所以它的测试环境也比较难以管理,测试环境的资源也比较有限。
数据验收难第四个,数据的验收难。主要体现在验收标准比较模糊,场景缺乏一些统一的标准,主要是数据不像一些业务功能或者展示功能可以有直接的感知,我们无法感知到数据是不是准确。
数据复杂多样最后一个是数据复杂多样,数据类型的话我们刚才也讲过了,不仅仅有结构化、半结构化的数据,还有一些视频、图片的数据,所以处理起来的技术难度还是很大的。