龙空技术网

「精选」网易严选质量数仓建设(一)——数据仓库基本概念

强叔微聊 156

前言:

此刻你们对“mahout算法库”大体比较着重,兄弟们都想要剖析一些“mahout算法库”的相关内容。那么小编也在网上搜集了一些对于“mahout算法库””的相关内容,希望各位老铁们能喜欢,各位老铁们一起来学习一下吧!

对所有组织来说,数据都是重要的财富,数据的存在有两个目的:操作型记录的保存以及分析决策的制定。

对于质量保障团队来说,质量数据能够客观反映开发、测试团队的工作量、工作效率以及工作质量。通过数据指标,查找质量保障工作中的薄弱环节,予以加强;通过数据指标在时间上的纵向对比,反映各项工作开展的效果;通过数据指标在各个团队之间的横向对比,找出优秀团队,借鉴工作经验。

鉴于以上诸多好处,严选质量保障组开展质量数仓建设工作。在建设数据仓库之前,先了解一些数据仓库的基本概念。

1. 数据库 & 数据仓库

从广泛的定义来讲,数据库和数据仓库的本质其实是一致的或极其相似的,都是通过某个数据库软件,基于某种数据模型来组织、管理数据。

而在常见的语义中,数据库是指传统的业务数据库,大部分为关系型数据如,如 Mysql、Oracle 等。而数据仓库是用于多元化数据分析的一种体系结构,在数据仓库的体系中,也存在用来存储数据的软件系统,只不过其中数据的组织方式与传统数据库不同,不遵循数据库的设计范式,因此在数据模型的设计上有很大的自由度。

面向业务的数据库,主要做操作型处理,它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。传统的数据库系统作为数据管理的主要手段,主要用于操作型处理。

数据仓库是一个面向数据分析的集成化数据环境,它可以通过对大量数据进行分析从而得出分析报告并提供决策支持。需要注意的是,数据仓库本身并不生产数据,同时也不消费数据,它的数据来源于外部,且通常不是一个单一的数据源。

2. 数据仓库的特点面向主题

业务数据库中的数据都是面向事务处理进行组织的,但数据仓库是面向主题存放,其目的是为了更好的组织数据,方面数据查询分析。

集成的

数据仓库中的数据来源广泛,通常会从不同的数据源抽取过来,需要在数据仓库中对数据进行清洗转换(编码统一、属性度量统一、描述统一、关键字统一,也就是 ETL),重新编排,得到原始表与数据仓库表的映射结果。比如,不同系统中,订单号可能表示为 task_id,也可能表示为 order_id,当需要订单主题进行集成时,就需要将订单号标准化。

相对稳定

数据仓库的数据通常是批量的方式更新、访问,所涉及的数据操作主要是数据的查询,一般情况下并不会进行修改操作。当数据抽取到操作环境中后,只要没有误操作,数据不会轻易丢失掩盖。

反应历史变化

有的业务数据仅仅保留当前状态,数据进入数据仓库后,都会加上时间关键字以标记,存储历史状态,以此在时间维度上反映数据变化情况,帮助用户进行决策分析。

3. 相关概念数据域

指面向业务分析,将业务过程或者维度进行抽象的集合。数据域是需要抽象提炼,并且长期维护和更新的,但不轻易变动,在划分数据域时,既能涵盖当前所有的业务需求,又能在新业务进入时,无影响地被包含进已有的数据域中和扩展新的数据域。

业务过程

指企业的业务活动事件,如下单、支付、退款等,都是业务过程(质量数仓中如提交 bug 就是业务过程)。业务过程是一个不可拆分的行为事件。

时间周期

用来明确数据统计的时间范围或者时间点,如近 30 天,自然周,截至当日等。

修饰词

指除了统计维度、时间周期以外,指标的业务场景限定抽象。修饰词隶属于一种修饰类型,如在流量域访问终端类型下,有修饰词 PC 端、无线端等。

修饰类型

是对修饰词的一种抽象划分,例如流量域的访问终端类型。

主题

主题就是指我们所要分析的具体方面。主题有两个元素:各个分析角度(维度),二是要分析的具体度量,一般通过数值体现。

维是用于从不同角度描述事物特征的,一般维都会有多层,每个 level 都会包含一些共有的或特有的属性。

度量 / 原子指标

度量就是要分析的具体的技术指标,一般为数值型数据,是业务定义中不可再拆分的指标,具有明确业务含义的名词,如支付金额。

维度

维度是度量的环境,用来反映业务的一类属性,这类属性的集合构成一个维度,也可以称为实体对象。维度属于一个数据域,如地理纬度、时间维度等。

维度属性

维度属性隶属于一个维度,如地理纬度里面的国家名称、省份名称等都属于维度属性。

派生指标

派生指标 = 一个原子指标 + 多个修饰词(可选)+ 时间周期。可以理解为,对原子指标业务统计范围的圈定。

粒度

数据的细分程度。

事实表

事实表是用来记录分析的内容的全量信息的,包含了每个事件的具体要素,以及具体发生的事情。事实表中的每行对应一个度量事件,每行的数据是一个特定级别的细节数据,称为粒度。

维表

维度表包含与业务过程度量事件有关的文本环境,用于描述与“谁、什么、哪里、何时”有关的事件。

4. Hadoop SystemHDFS

Hadoop 分布式文件处理系统,是 Hadoop 体系中,数据存储管理的基础。源自于 Google 的 GFS 论文,也既 GFS 的克隆版。它是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行。HDFS 简化了文件的一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。

Mapreduce

分布式计算框架,Hadoop MapReduce 是 Google Mapreduce 克隆版,是一种计算模型,用以进行大数据量的计算。其中 Map 对数据集上的独立元素进行指定的操作,生成键 - 值对形式中间结果;Reduce 则对中间结果中相同“键”的所有“值”进行规约,以得到最终结果。Mapreduce 这样的功能划分,非常适合在大量计算机组成的分布式并行环境里进行数据处理。

HBase

Hbase 是 Google Bigtable 的克隆版,是一个针对结构化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库。和传统关系数据库不同,HBase 采用了 BigTable 的数据模型:增强的稀疏排序映射表(Key/Value),其中,键由行关键字、列关键字和时间戳构成。HBase 提供了对大规模数据的随机、实时读写访问,同时,HBase 中保存的数据可以使用 MapReduce 来处理,它将数据存储和并行计算完美地结合在一起。

Zookeeper

Zookeeper 是 Google Chubby 克隆版。解决分布式环境下的数据管理问题:统一命名,状态同步,集群管理,配置同步等。

Sqoop

Sqoop 是 SQL-to-Hadoop 的缩写,主要用于传统数据库和 Hadoop 之间传输数据。数据的导入和导出本质上是 Mapreduce 程序,充分利用了 MR 的并行化和容错性。

Pig

基于 Hadoop 的数据流系统,由 yahoo! 开源,设计动机是提供一种基于 MapReduce 的 ad-hoc(计算在 query 时发生) 数据分析工具,定义了一种数据流语言—Pig Latin,将脚本转换为 MapReduce 任务在 Hadoop 上执行。通常用于进行离线分析。

Mahout

数据挖掘算法库,Mahout 的主要目标是创建一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout 现在已经包含了聚类、分类、推荐引擎(协同过滤)和频繁集挖掘等广泛使用的数据挖掘方法。除了算法,Mahout 还包含数据的输入 / 输出工具、与其他存储系统(如数据库、MongoDB 或 Cassandra)集成等数据挖掘支持架构。

Flume

日志收集工具,Cloudera 开源的日志收集系统,具有分布式、高可靠、高容错、易于定制和扩展的特点。它将数据从产生、传输、处理并最终写入目标的路径的过程抽象为数据流,在具体的数据流中,数据源支持在 Flume 中定制数据发送方,从而支持收集各种不同协议数据。同时,Flume 数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。此外,Flume 还具有能够将日志写往各种数据目标(可定制)的能力。总的来说,Flume 是一个可扩展、适合复杂环境的海量日志收集系统。

Hive

由 Facebook 开源,最初用于解决海量结构化的日志数据统计问题。Hive 定义了一种类似 SQL 的查询语言(HQL),将 SQL 转换为 MapReduce 任务在 Hadoop 上执行,通常用于离线分析,Hive 让不熟悉 MapReduce 开发人员也能编写数据查询语句,然后这些语句被翻译为 Hadoop 上面的 MapReduce 任务。

Yarn

Yarn 是下一代 Hadoop 计算平台,主要是为了解决原始 Hadoop 扩展性差,不支持多计算框架而提出的。Yarn 是一个通用的运行时框架,用户可以编写自己的计算框架,在该运行环境中运行,用于自己编写的框架作为客户端的一个 lib,在提交作业时打包即可。该框架提供了资源管理、资源调度组件。

Tez

Tez 是 Apache 最新开源的支持 DAG 作业的计算框架,它直接源于 MapReduce 框架,核心思想是将 Map 和 Reduce 两个操作进一步拆分,即 Map 被拆分成 Input、Processor、Sort、Merge 和 Output,Reduce 被拆分成 Input、Shuffle、Sort、Merge、Processor 和 Output 等,这样,这些分解后的元操作可以任意灵活组合,产生新的操作,这些操作经过一些控制程序组装后,可形成一个大的 DAG 作业。

Spark

Spark 是一个通用的并行计算框架,它提供了一个更快、更通用的数据处理平台,与 Hadoop 相比,Spark 能够让程序在内存中运行时速度提升百倍。

Kafka

Kafka 是 Linkedin 开源的分布式消息队列,主要用于处理活跃的流式数据。活跃的流式数据在 web 网站应用中非常常见,这些数据包括网站的 pv、用户访问了什么内容,搜索了什么内容等。这些数据通常以日志的形式记录下来,然后每隔一段时间进行一次统计处理。

Ambari

Apache Ambari 的作用来说,就是创建、管理、监视 Hadoop 的集群,是为了让 Hadoop 以及相关的大数据软件更容易使用的一个 web 工具。

作者简介

婧雯,网易严选资深测试工程师,2014 年毕业于北京理工大学,2017 年加入网易。参与数据产品技术部多个重点产品质量保障工作,建设并完善数据产品部质量保障体系,致力于质量保障工作效能得提升。

本文转自:infoq,原文链接:

标签: #mahout算法库