数据开发是数据资产内容建设的主战场,是数据价值生产过程中的核心环节,可以支撑大批量数据的离线处理、实时处理和数据挖掘等。
数据开发设计的产品能力主要包括三个部分,分别是离线开发、实时开发和算法开发。
-
离线开发主要包括离线数据的加工、发布、运维管理,以及数据分析、数据探索、在线查询和即席分析相关的工作。
-
实时开发主要涉及数据的实时接入和实时处理,简化流数据的加工处理过程。
-
算法开发主要提供简单易用的可视化拖曳方式和Notebook方式来实现数据价值的深度挖掘。
不同点:离线开发范围覆盖了在线查询、即席分析的内容;
产品能力依赖于存储能力和计算能力的封装
1.数据计算能力的4种类型
根据加工场景抽象,分成四大类:批计算、流计算、在线查询和即席分析。不同场景配合不同的存储和计算框架来实现,以满足业务的复杂需求。
-
批计算
主要用于批量数据的高延时处理场景,如离线数仓的加工、大规模数据的清洗和挖掘等。
目前大多是利用MapReduce、hive、spark等计算框架进行处理,其特点是数据吞吐量达、延时高、适合人机交互少的场景。 -
流计算
也叫实时流计算,对于数据的加工处理和应用有较强的实效性要求,常见于告警监控场景,例如实时分析网络事件。
这类场景目前应用较多的计算框架主要有flink、spark streaming和storm等。
-
在线查询
主要用于数据结果的在线查询、条件过滤和筛选等,如数据检索、条件过滤等。
营销场景对响应延时要求高的,一般会采集缓存型的存储计算,如redis、tair等;
对响应延时要求正常的,可以选择hbase和mysql等;
需要进行条件过滤、检索的,可以选择es等。 -
即席分析
主要用于分析型场景和经验统计。企业80%的数据处理需求是在线查询和即席分析。
针对不同维度的分析,有多种方式可以提供,提前固定计算的维度、根据需求任意维度的交叉分析(ad-hoc)等都是常见的场景。
如kylin、impala、clickhouse、hawk等。
1.1 批处理
随着数据量的不断增加,提供成本低廉且可水平扩容的计算能力,采用分而治之的方法是必然的。
MapReduce是一种分布式编程模型,采用分而治之的思想,将一个大规模数据集分解为多个小规模数据,然后分发给集群中多个节点共同完成计算。这样可以有效降低每一部分的运算复杂度,达到提高运算效率的目的。
优点:MapReduce大幅降低了在大规模集群上进行分布式大数据处理的难度;
缺点:过于简单,难以处理复杂、多阶段的应用;执行时间过长,难以实时响应查询请求
Spark也是一个批量计算框架,它将数据抽象成RDD、DataFrame,这是一种分布式的内存抽象,允许在大型集群上执行基于内存的计算,大大减少了迭代计算所需的开销。
spark目标:高效执行复杂的应用和交互式查