用户您好!请先登录!

分类目录大数据

阿里基于HBase的大数据引擎Lindorm

注:Lindorm是阿里内部HBase分支的别称,在阿里云上对外售卖的版本叫做HBase增强版,之后文中出现的HBase增强版和Lindorm都指同一个产品。

2019年以来,Lindorm已经服务了包括淘宝、天猫、蚂蚁、菜鸟、妈妈、优酷、高德、大文娱等数十个BU,在今年的双十一中,Lindorm峰值请求达到了7.5亿次每秒,天吞吐22.9万亿次,平均响应时间低于3ms,整体存储的数据量达到了数百PB。这些数字的背后,凝聚了HBase&Lindorm团队多年以来的汗水和心血。

Lindorm脱胎于HBase,是团队多年以来承载数百PB数据,亿级请求量,上千个业务后,在面对规模成本压力,以及HBase自身缺陷下,全面重构和引擎升级的全新产品。相比HBase,Lindorm无论是性能,功能还是可用性上,都有了巨大飞跃。本文将从功能、可用性、性能成本、服务生态等维度介绍Lindorm的核心能力与业务表现,最后分享部分我们正在进行中的一些项目。

阅读更多

Flink在小红书实时推荐系统中的运用

本文整理自2019阿里云峰会·上海开发者大会开源大数据专场中小红书实时推荐团队负责人郭一先生现场分享。小红书作为生活分享类社区,目前有8500万用户,年同比增长为300%,大约每天有30亿条笔记在发现首页进行展示。推荐是小红书非常核心且重要的场景之一,本文主要分享在推荐业务场景中小红书的实时计算应用。

实时计算在推荐业务中的场景

1. 线上推荐流程

小红书线上推荐的流程主要可以分为三步。第一步,从小红书用户每天上传的的笔记池中选出候选集,即通过各种策略从近千万条的笔记中选出上千个侯选集进行初排。第二步,在模型排序阶段给每个笔记打分,根据小红书用户的点赞和收藏行为给平台带来的价值设计了一套权重的评估体系,通过预估用户的点击率,评估点击之后的点赞、收藏和评论等的概率进行打分。第三步,在将笔记展示给用户之前,选择分数高的笔记,通过各种策略进行多样性调整。

阅读更多

Flink Runtime核心机制分析

Flink 的整体架构如图 1 所示。Flink 是可以运行在多种不同的环境中的,例如,它可以通过单进程多线程的方式直接运行,从而提供调试的能力。它也可以运行在 Yarn 或者 K8S 这种资源管理系统上面,也可以在各种云环境中执行。

图1. Flink 的整体架构,其中 Runtime 层对不同的执行环境提供了一套统一的分布式执行引擎。

阅读更多

HBase架构简析

物理上,Hbase 是由三种类型的 server 组成的的主从式(master-slave)架构:

  • Region Server,负责处理数据的读写请求,客户端请求数据时直接和 Region Server 交互。
  • HBase Master,负责 Region 的分配,DDL(创建,删除 table)等操作。
  • Zookeeper,作为 HDFS 的一部分,负责维护集群状态。

当然底层的存储都是基于 Hadoop HDFS 的:

  • Hadoop DataNode 负责存储 Region Server 所管理的数据。所有的 HBase 数据都存储在 HDFS 文件中。Region Server 和 HDFS DataNode 往往是分布在一起的,这样 Region Server 就能够实现数据本地化(data locality,即将数据放在离需要者尽可能近的地方)。HBase 的数据在写的时候是本地的,但是当 region 被迁移的时候,数据就可能不再满足本地性了,直到完成 compaction,才能又恢复到本地。
  • Hadoop NameNode 维护了所有 HDFS 物理 data block 的元信息。
这可能是最容易理解的Hbase架构全解,10分钟学会,建议收藏

阅读更多

不能免俗:学习下阿里数据中台

数据中台的概念是最早由阿里巴巴首次提出,是为了应对内部众多业务部门千变万化的数据需求和高速时效性的要求而成长起来的,它既要满足业务部门日常性的多个业务前台的数据需求,又要满足像双十一,六一八这样的业务高峰、应对大规模数据的线性可扩展问题、应对复杂活动场景业务系统的解耦问题,而在技术、组织架构等方面采取的一些变革。

数据中台定义

阿里巴巴数据中台是阿里云上实现数据智能的最佳实践,它是由数据中台方法论+组织+工具所组成。

  • 数据中台方法论采用实现企业数据的全局规划设计,通过前期的设计形成统一的数据标准、计算口径,统一保障数据质量,面向数据分析场景构建数据模型,让通用计算和数据能沉淀并能复用,提升计算效能;
  • 数据中台的建设实施必须有能与之配合的组织,不仅仅相应岗位的人员要配备齐全,而且组织架构建设也需要对应,有一个数据技术部门统筹企业的数字化转型,数据赋能业务中形成业务模式,在推进数字化转型中实现价值;
  • 数据中台由一系列的工具和产品组成,阿里云数据中台以智能数据构建与管理Dataphin产品、商业智能QuickBI工具和企业参谋产品为主体等一系列工具组成。

详解阿里云数据中台

数据中台的概念来自于阿里巴巴“大中台,小前台”业务战略下的数据化实践,它是关于“数据价值化和数据资产化”的一整套解决方案,内容包括数据中台方法论,组织,数据产品三个方面。

阅读更多

Apache Flink:Flink SQL 编程实践

注:本文实践基于 Ververica 开源的 sql-training 项目,基于 Flink 1.7.2 。

环境准备

本文教程是基于 Docker 进行的,因此你只需要安装了 Docker 即可。不需要依赖 Java、Scala 环境、或是IDE。

注意:Docker 默认配置的资源可能不太够,会导致运行 Flink Job 时卡死。因此推荐配置 Docker 资源到 3-4 GB,3-4 CPUs。

阅读更多

Apache Flink:Table API 编程

一、什么是 Table API

为了更好地了解 Table API,我们先看下 Flink 都提供了哪些 API 供用户使用。

1. Flink API 总览

如图,Flink 根据使用的便捷性和表达能力的强弱提供了 3 层 API,由上到下,表达能力逐渐增强,比如 processFunction,是最底层的 API,表达能力最强,我们可以用他来操作 state 和 timer 等复杂功能。Datastream API 相对于 processFunction 来说,又进行了进一步封装,提供了很多标准的语义算子给大家使用,比如我们常用的 window 算子(包括 Tumble, slide,session 等)。

阅读更多

Apache Flink:状态管理及容错机制

一. 状态管理的基本概念

1.什么是状态

首先举一个无状态计算的例子:消费延迟计算。假设现在有一个消息队列,消息队列中有一个生产者持续往消费队列写入消息,多个消费者分别从消息队列中读取消息。从图上可以看出,生产者已经写入 16 条消息,Offset 停留在 15 ;有 3 个消费者,有的消费快,而有的消费慢。消费快的已经消费了 13 条数据,消费者慢的才消费了 7、8 条数据。

阅读更多

Apache Flink:Time & Window 解析

一、Window & Time 介绍

Apache Flink(以下简称 Flink) 是一个天然支持无限流数据处理的分布式计算框架,在 Flink 中 Window  可以将无限流切分成有限流,是处理有限流的核心组件,现在 Flink 中 Window 可以是时间驱动的(Time Window),也可以是数据驱动的(Count Window)。

下面的代码是在 Flink 中使用 Window 的两个示例

阅读更多

Apache Flink: DataStream API 编程

1. 流处理基本概念

对于什么是流处理,从不同的角度有不同的定义。其实流处理与批处理这两个概念是对立统一的,它们的关系有点类似于对于 Java 中的 ArrayList 中的元素,是直接看作一个有限数据集并用下标去访问,还是用迭代器去访问。

图1. 左图硬币分类器

硬币分类器也可以看作一个流处理系统,用于硬币分类的各部分组件提前串联在一起,硬币不断进入系统,并最终被输出到不同的队列中供后续使用。右图同理。

阅读更多

Apache Flink开发环境搭建与部署

本文主要面向于初次接触 Apache Flink(以下简称Flink)、或者对 Flink 有了解但是没有实际操作过的同学。希望帮助大家更顺利地上手使用 Flink,并着手相关开发调试工作。

课程内容包括:

  • Flink 开发环境的部署和配置
  • 运行 Flink 应用(包括:单机 Standalone 模式、多机 Standalone 模式和 Yarn 集群模式)

一、Flink 开发环境部署和配置

Flink 是一个以 Java 及 Scala 作为开发语言的开源大数据项目,代码开源在 GitHub 上,并使用 Maven 来编译和构建项目。对于大部分使用 Flink 的同学来说,Java、Maven 和 Git 这三个工具是必不可少的,另外一个强大的 IDE 有助于我们更快的阅读代码、开发新功能以及修复 Bug。因为篇幅所限,我们不会详述每个工具的安装细节,但会给出必要的安装建议。

关于开发测试环境,Mac OS、Linux 系统或者 Windows 都可以。如果使用的是 Windows 10 系统,建议使用 Windows 10 系统的 Linux 子系统来编译和运行。

工具 注释
Java Java 版本至少是Java 8,且最好选用 Java 8u51 及以上版本
Maven 必须使用 Maven 3,建议使用 Maven 3.2.5。Maven 3.3.x 能够编译成功,但是在 Shade 一些 Dependencies 的过程中有些问题
Git Flink 的代码仓库是: https://github.com/apache/flink

建议选用社区已发布的稳定分支,比如 Release-1.6 或者 Release-1.7。

阅读更多

Apache Flink 基础概念解析

一、Apache Flink 的定义、架构及原理

Apache Flink 是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态或无状态的计算,能够部署在各种集群环境,对各种规模大小的数据进行快速计算。

1. Flink Application

了解Flink 应用开发需要先理解Flink 的Streams、State、Time 等基础处理语义以及Flink 兼顾灵活性和方便性的多层次API。

  • Streams:流,分为有限数据流与无限数据流,unbounded stream 是有始无终的数据流,即无限数据流;而bounded stream 是限定大小的有始有终的数据集合,即有限数据流,二者的区别在于无限数据流的数据会随时间的推演而持续增加,计算持续进行且不存在结束的状态,相对的有限数据流数据大小固定,计算最终会完成并处于结束的状态。
  • State,状态是计算过程中的数据信息,在容错恢复和Checkpoint 中有重要的作用,流计算在本质上是Incremental Processing,因此需要不断查询保持状态;另外,为了确保Exactly- once 语义,需要数据能够写入到状态中;而持久化存储,能够保证在整个分布式系统运行失败或者挂掉的情况下做到Exactly- once,这是状态的另外一个价值。
  • Time,分为Event time、Ingestion time、Processing time,Flink 的无限数据流是一个持续的过程,时间是我们判断业务状态是否滞后,数据处理是否及时的重要依据。
  • API,API 通常分为三层,由上而下可分为SQL / Table API、DataStream API、ProcessFunction 三层,API 的表达能力及业务抽象能力都非常强大,但越接近SQL 层,表达能力会逐步减弱,抽象能力会增强,反之,ProcessFunction 层API 的表达能力非常强,可以进行多种灵活方便的操作,但抽象能力也相对越小。

阅读更多

通用的大数据平台架构

对于一般中小企业而言,在企业内部从宏观、整体的角度就可以设计和实现一个统一的大数据平台,引入单一集群、单一存储,统一服务和统一安全的架构思想,这样就能很好的帮助企业解决很多问题。

而提到大数据分析平台,不得不说Hadoop系统,Hadoop到现在也超过10年的历史了,很多东西发生了变化,版本也从0.x进化到目前的2.6版本。在2012年以后我们更有了像NoSQL (Not Only SQL)那样的选型补充。

大数据分析平台

Hadoop: 开源的数据分析平台,解决了大数据(大到一台计算机无法进行存储,一台计算机无法在要求的时间内进行处理)的可靠存储和处理。适合处理非结构化数据,包括HDFS,MapReduce基本组件。

一文详解被阿里腾讯视作核心机密的大数据平台架构

阅读更多

System Architectures for Personalization and Recommendation

本文我们将探索如何创建一个能够交付并支持快速创新的软件架构。提出一种能够处理大量现有数据、响应用户交互并易于试验新的推荐方法的软件体系结构并非易事。在这篇文章中,我们将描述我们如何解决Netflix面临的一些挑战。

首先,我们在下图中展示了推荐系统的总体系统图。该体系结构的主要组件包含一个或多个机器学习算法。

Netflix应用架构之用于个性化和推荐的系统架构

对于数据,我们能做的最简单的事情就是将其存储起来,以便稍后进行脱机处理,这就引出了管理脱机作业的部分体系结构。然而,计算可以离线、近线或在线进行。

阅读更多

Design of Structured Large Data Analysis Platform

时下大数据平台主要解决以下几个问题:

1. 丰富的数据源支持和数据格式延迟绑定

丰富的数据源是因为这样一个数据分析平台是汇总我们各类业务数据的地方,数据源可能来自各类数据库例如MySQL,MongoDB,日志源等等。这个平台需要能够方便各类数据源便捷的入库,例如通常大家会发现大数据架构中有一个Kafka,各类数据源会先进入Kafka,再由Kafka推送到大数据的存储系统中。这里Kafka就承担了解耦大数据平台的存储接口和上游数据源的作用。

数据格式延时绑定是一个很重要的概念,TP类数据库往往需要根据业务需求预先定义Schema,也就是通常说的写入型Schema,数据在写入时即会做严格的数据字段类型检验。但是分析系统并不希望因为Schema约束或者限制的数据入库,通常会采用读取型Schema,也就是这里的延时绑定,数据在分析时才会根据数据类型做对应的处理。

阅读更多

实时数据中台的组建

在企业业务发展过程中所累积的大量数据,往往分散在各个业务单元和组织内部,形成一个个“数据孤岛”、“数据烟囱”。而数据中台是着眼于企业数据资产汇集、数据算法迭代、数据能力输出的根基平台,以数据指引业务决策并驱动业务增长,是破除数据孤岛的关键策略。

阿里数据架构师告诉你,如何建立实时数据中台

数据中台的计算载体包括hadoop、MPP以及流处理引擎,但你会发现这三类计算载体承载的数据内涵是不一样的。

Hadoop、MPP中的数据模型往往是精心打磨的离线数据仓库模型,无论是维度建模还是关系建模,其强调数据模型的复用,并且通过建模屏蔽了底层数据的差异,从而高效率的支撑上层应用,但流处理不一样。

阅读更多

计算机系统的运维演进之路

数字化转型大潮中,常常说到DevOps,但是其并不是数字化转型所特有的。从一个高度及敏捷的研发团队的角度,其是必要的技术组成部分,甚至不在于是否用不用敏捷。并随着大数据的特有应用,衍生出DataOps;同时由于互联网相关应用等的大规模分布式的使用,及虚拟化、容器化等等的海量集群的应用,AIOps也被冠名了。

小运维与大运维

  • 统一及集中的部门和团队的成立,就是为了提供集中/一致/协同的管理支持,提高专业化水平。
  • 但是其不能永远站在后面,被动的接受服务请求。
  • 其专业性和资源集中性要渗透到立项,开发,运维等的全生命周期中,协同应用及系统建设和后续工作。
  • 不管是自己内部资源,还是外部资源,第三方服务及产品,团队应是组织与基础设施及平台服务的唯一对接中心。
航司的DevOps & DataOps & AIOps

阅读更多

微服务分布式事务中的Saga模式

该文是基于《微服务模式》作者Chris Richardson的QCONSF 2017会议上的PPT文章(这里)和其 Eventuate Tram Saga框架之上,对Saga模式进行的原理性解说,其中包含banq个人经验总结和见解,请从批判性视角看待。Chris Richardson的另外一本书籍《POJO in Action》曾经是帮助Spring成功挑战了EJB2。

在微服务环境下为什么不能使用ACID事务?因为每个微服务都拥有自己的私有数据库,比如订单服务有自己的订单数据库,而客户服务有自己的客户数据库,如果有一个业务操作需要跨订单和客户一起操作,那么一般使用JTA+XA方式跨订单数据库和客户数据库操作:

@ Transactional //事务元注解
public void crossAction(XX){
    //事务开始

    //这里ORDERS是属于订单服务的私有数据库
    SELECT ORDER_TOTAL FROM ORDERS WHERE CUSTOMER_ID = ?

    //这里CUSTOMERS是属于客户服务的私有数据库
    SELECT CREDIT_LIMIT FROM CUSTOMERS WHERE CUSTOMER_ID=?

    INERT INTO ORDERS .....

    //提交事务

}
<p>

以上JTA操作如果结合XA数据源配置,将会实现2PC两段事务提交。

阅读更多

几种常见的大数据架构

数据分析工作虽然隐藏在业务系统背后,但是具有非常重要的作用,数据分析的结果对决策、业务发展有着举足轻重的作用。随着大数据技术的发展,数据挖掘、数据探索等专有名词曝光度越来越高,但是在类似于Hadoop系列的大数据分析系统大行其道之前,数据分析工作已经经历了长足的发展,尤其是以BI系统为主的数据分析,已经有了非常成熟和稳定的技术方案和生态系统,对于BI系统来说,大概的架构图如下:

常用的几种大数据架构剖析

可以看到在BI系统里面,核心的模块是Cube,Cube是一个更高层的业务模型抽象,在Cube之上可以进行多种操作,例如上钻、下钻、切片等操作。大部分BI系统都基于关系型数据库,关系型数据库使用SQL语句进行操作,但是SQL在多维操作和分析的表示能力上相对较弱,所以Cube有自己独有的查询语言MDX,MDX表达式具有更强的多维表现能力,所以以Cube为核心的分析系统基本占据着数据统计分析的半壁江山,大多数的数据库服务厂商直接提供了BI套装软件服务,轻易便可搭建出一套Olap分析系统。

阅读更多

数据挖掘绕不开的是算法

数据挖掘是什么?

官方的定义,数据挖掘(Data Mining)就是从大量的、不完全的、有噪声的、模糊的、随机的数据中提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。

通俗易懂的说,数据挖掘就是从大量的数据中,发现那些我们想要的“东西”。

这个“东西”指什么?

1. 一种称为预测任务

也就是说给了一定的目标属性,让去预测目标的另外一特定属性。如果该属性是离散的,通常称之为‘分类’,而如果目标属性是一个连续的值,则称之为‘回归’。

2. 另一种称为描述任务

这是指找出数据间潜在的联系模式。比方说两个数据存在强关联的关系,像大数据分析发现的一个特点:买尿布的男性通常也会买点啤酒,那么商家根据这个可以将这两种商品打包出售来提高业绩。另外一个非常重要的就是聚类分析,这也是在日常数据挖掘中应用非常非常频繁的一种分析,旨在发现紧密相关的观测值组群,可以在没有标签的情况下将所有的数据分为合适的几类来进行分析或者降维。

阅读更多

数据分析、数据挖掘、数据统计的区别

简单说:数据挖掘就是从海量数据中找到隐藏的规则,数据分析一般要分析的目标比较明确,数据统计则是单纯的使用样本来推断总体。

主要区别

  • “数据分析”的重点是观察数据,“数据挖掘”的重点是从数据中发现“知识规则”,数据统计的重点是参数估计和假设检验。
  • “数据分析、数据统计”得出的结论是人的智力活动结果,“数据挖掘”得出的结论是机器从学习集(或训练集、样本集)发现的知识规则。
  • “数据分析”需要人工建模,“数据挖掘”自动完成数学建模,“数据统计”则是把模糊估计变得准确而定量。可以通过机器学习自动建立输入与输出的函数关系,根据KDD得出的“规则”,给定一组输入参数,就可以得出一组输出量。

简单的例子

有一些人总是不及时向电信运营商缴费,如何发现它们?

数据分析:通过对附近人口的生活习惯、业余爱好、教育背景、收入分布、家庭组成等进行全方面分析,发现很多人都习惯在收到欠费通知以后再缴费。结论就是提前发放短信提醒。

数据挖掘:通过编写机器学习聚类算法发现无法通过观察图表得出的深层次原因。发现家住在五环以外的人,由于居住环境偏远没有时间上营业厅缴费。结论就需要多设立一些营业厅或者自助缴费点。

数据统计:通过统计学推理方法组成样本的试验单元进行参数估计和假设检验,我们发现不及时缴钱人群里的贫困人口占82%。所以结论是收入低的人往往会缴费不及时。结论就需要降低资费。

Hadoop、Storm、Samza、Spark和Flink大数据框架分析

大数据是收集、整理、处理大容量数据集,并从中获得见解所需的非传统战略和技术的总称。虽然处理数据所需的计算能力或存储容量早已超过一台计算机的上限,但这种计算类型的普遍性、规模,以及价值在最近几年才经历了大规模扩展。

本文将介绍大数据系统一个最基本的组件:处理框架。处理框架负责对系统中的数据进行计算,例如处理从非易失存储中读取的数据,或处理刚刚摄入到系统中的数据。数据的计算则是指从大量单一数据点中提取信息和见解的过程。

下文将介绍这些框架:

  • 仅批处理框架:
  • Apache Hadoop
  • 仅流处理框架:
  • Apache Storm
  • Apache Samza
  • 混合框架:
  • Apache Spark
  • Apache Flink

大数据处理框架是什么?

处理框架和处理引擎负责对数据系统中的数据进行计算。虽然“引擎”和“框架”之间的区别没有什么权威的定义,但大部分时候可以将前者定义为实际负责处理数据操作的组件,后者则可定义为承担类似作用的一系列组件。

阅读更多


1 2