热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

只需3分钟,快速了解大数据平台架构

点击“蓝字”关注我们本文转自:大数据杂谈作者丨侠天大数据架构背后的哲理Airbnb公司提倡数据信息化,凡事以数据说话。收集指标,通过实验验

 点击“蓝字”关注我们

本文转自:大数据杂谈

作者丨侠天

大数据架构背后的哲理

Airbnb公司提倡数据信息化,凡事以数据说话。收集指标,通过实验验证假设、构建机器学习模型和挖掘商业机会使得Airbnb公司高速、灵活的成长。

经过多版本迭代之后,大数据架构栈基本稳定、可靠和可扩展。

James Mayfield说,“我们每天使用着开源社区提供的优秀的项目,这些项目让大家更好的工作。我们在使用这些有用的项目得到好处之后也得反馈社区。”

下面基于在Airbnb公司大数据平台架构构建过程的经验,给出一些有效的观点。

  • 多关注开源社区:在开源社区有很多大数据架构方面优秀的资源,需要去采用这些系统。同样,当我们自己开发了有用的项目也最好回馈给社区,这样会良性循环。

  • 多采用标准组件和方法:有时候自己造轮子并不如使用已有的更好资源。当凭直觉去开发出一种“与众不同”的方法时,你得考虑维护和修复这些程序的隐性成本。

  • 确保大数据平台的可扩展性:当前业务数据已不仅仅是随着业务线性增长了,而是爆发性增长。我们得确保产品能满足这种业务的增长。

  • 多倾听同事的反馈来解决问题:倾听公司数据的使用者反馈意见是架构路线图中非常重要的一步。

  • 预留多余资源:集群资源的超负荷使用让我们培养了一种探索无限可能的文化。对于架构团队来说,对资源利用最大化还高兴的太早,但Airbnb大数据团队总是假设数据仓库的会有新的商业机会来抵消这些额外的机器费用。

大数据架构预览

这里是大数据平台架构一览图。

Airbnb数据源主要来自两方面:数据埋点发送事件日志到Kafka;MySQL数据库dumps存储在AWS的RDS,通过数据传输组件Sqoop传输到Hive“金”集群。

(其实就是Hive集群,只是Airbnb内部有两个Hive集群,分别为“金”集群和“银”集群,具体分开两个集群的原因会在文章末尾给出。)。

包含用户行为以及纬度快照的数据发送到Hive“金”集群存储,并进行数据清洗。这步会做些业务逻辑计算,聚合数据表,并进行数据校验。

在以上架构图中,Hive集群单独区分“金”集群和“银”集群大面上的原因是为了把数据存储和计算进行分离。这样可以保证灾难性恢复。

这个架构中,“金”集群运行着更重要的作业和服务,对资源占用和即席查询可以达到无感知。“银”集群只是作为一个产品环境。

“金”集群存储的是原始数据,然后复制“金”集群上的所有数据到“银”集群。但是在“银”集群上生成的数据不会再复制到“金”集群。

你可以认为 “银”集群是所有数据的一个超集。由于Airbnb大部分数据分析和报表都出自“银”集群,所以得保证“银”集群能够无延迟的复制数据。

更严格的讲,对于“金”集群上已存在的数据进行更新也得迅速的同步到“银”集群。

集群间的数据同步优化在开源社区并没有很好的解决方案,Airbnb自己实现了一个工具,后续文章会详细的讲。

在HDFS存储和Hive表的管理方面做了不少优化。数据仓库的质量依赖于数据的不变性(Hive表的分区)。更进一步,Airbnb不提倡建立不同的数据系统,也不想单独为数据源和终端用户报表维护单独的架构。

以以往的经验看,中间数据系统会造成数据的不一致性,增加ETL的负担,让回溯数据源到数据指标的演化链变得异常艰难。

Airbnb采用Presto来查询Hive表,代替Oracle、 Teradata、 Vertica、 Redshift等。在未来,希望可以直接用Presto连接Tableau。

另外一个值得注意的几个事情,在架构图中的Airpal,一个基于Presto,web查询系统,已经开源。Airpal是Airbnb公司用户基于数据仓库的即席SQL查询接口,有超过1/3的Airbnb同事在使用此工具查询。

任务调度系统Airflow,可以跨平台运行Hive,Presto,Spark,MySQL等Job,并提供调度和监控功能。Spark集群时工程师和数据分析师偏爱的工具,可以提供机器学习和流处理。

S3作为一个独立的存储,大数据团队从HDFS上收回部分数据,这样可以减少存储的成本。并更新Hive的表指向S3文件,容易访问数据和元数据管理。

Hadoop集群演化

Airbnb公司在今年迁移集群到“金和银”集群。为了后续的可扩展,两年前迁移Amazon EMR到 EC2实例上运行HDFS,存储有300 TB数据。

现在,Airbnb公司有两个独立的HDFS集群,存储的数据量达11PB。S3上也存储了几PB数据。

下面是遇到的主要问题和解决方案:

A) 基于Mesos运行Hadoop

早期Airbnb工程师发现Mesos计算框架可以跨服务发布。在AWS c3.8xlarge机器上搭建集群,在EBS上存储3TB的数据。在Mesos上运行所有Hadoop、 Hive、Presto、 Chronos和Marathon。

基于Mesos的Hadoop集群遇到的问题:

  • Job运行和产生的日志不可见

  • Hadoop集群健康状态不可见

  • Mesos只支持MR1

  • task tracker连接导致性能问题

  • 系统的高负载,并很难定位

  • 不兼容Hadoop安全认证Kerberos

解决方法:不自己造轮子,直接采用其它大公司的解决方案。

B) 远程读数据和写数据

所有的HDFS数据都存储在持久性数据块级存储卷(EBS),当查询时都是通过网络访问Amazon EC2。Hadoop设计在本地节点,读写速度会更快,而现在的部署跟这相悖。

Hadoop集群数据分成三部分存储在AWS一个分区三个节点上,每个节点都在不同的机架上。所以三个不同的副本就存储在不同的机架上,导致一直在远程的读数据和写入数据。

这个问题导致在数据移动或者远程复制的过程会出现丢失或者崩溃。

解决方法:使用本地存储的实例,并运行在单个节点上。

C) 在同构机器上混布任务

纵观所有的任务,发现整体的架构中有两种完全不同的需求配置。Hive/Hadoop/HDFS是存储密集型,基本不耗内存和CPU。而Presto和Spark是耗内存和CPU型,并不怎么需要存储。

在AWS c3.8xlarge机器上持久性数据块级存储卷(EBS)里存储3 TB是非常昂贵的。

解决方法:迁移到Mesos计算框架后,可以选择不同类型的机器运行不同的集群。比如,选择AWS c3.8xlarge实例运行Spark。

AWS后来发布了“D系列”实例。从AWS c3.8xlarge实例每节点远程的3 TB存储迁移数据到AWS d2.8xlarge 4 TB本地存储,这给Airbnb公司未来三年节约了上亿美元。

D) HDFS Federation

早期Airbnb公司使用Pinky和Brain两个集群联合,数据存储共享,但mappers和reducers是在每个集群上逻辑独立的。这导致用户访问数据需要在Pinky和Brain两个集群都查询一遍。并且这种集群联合不能广泛被支持,运行也不稳定。

解决方法:迁移数据到各HDFS节点,达到机器水平的隔离性,这样更容易容灾。

E) 繁重的系统监控

个性化系统架构的严重问题之一是需要自己开发独立的监控和报警系统。Hadoop、Hive和HDFS都是复杂的系统,经常出现各种bug。试图跟踪所有失败的状态,并能设置合适的阈值是一项非常具有挑战性的工作。

解决方法:通过和大数据公司Cloudera签订协议获得专家在架构和运维这些大系统的支持。减少公司维护的负担。Cloudera提供的Manager工具减少了监控和报警的工作。

最后陈述

在评估老系统的问题和低效率后进行了系统的修复。无感知的迁移PB级数据和成百上千的Jobs是一个长期的过程。作者提出后面会单独写相关的文章,并开源对于的工具给开源社区。

大数据平台的演化给公司减少大量成本,并且优化集群的性能,下面是一些统计数据:

  • 磁盘读写数据的速度从70 – 150 MB / sec到400 + MB / sec

  • Hive任务提高了两倍的CPU时间

  • 读吞吐量提高了三倍

  • 写吞吐量提高了两倍

  • 成本减少百分之七十

- FIN -

福利

关注我们,后台回复关键字,即可领取相应白皮书资料

1、关键字:直播7 ,获取直播回放《硅谷“数据中台”实践》

2、

2、关键字:大数据图谱,获取《2020中国大数据产业生态地图暨中国大数据产业发展白皮书》

3、关键字:新基建白皮书,获取《“新基建”政策白皮书》

扫描添加小编微信,备注“姓名+公司职位”,加入【大数据学习交流群】,和志同道合的朋友们共同打卡学习!

更多精彩推

  • 定位云原生数据中台,「智领云」获数千万元A轮融资

  • 硅谷速递 | 硅谷2020最新大数据学习路线:科学使用这一招,12周助你成为数据分析师

  • 【必读!】Twitter数据平台的架构演化:分析数据的数据发现和消费

  • 2020人工智能应用挑战赛前瞻 | 专家委员会强大阵容,震撼发布!

  • Uber 大数据平台的演进(2014~2019)

  • 数据平台、大数据平台、数据中台……傻傻分不清?这次终于有人讲明白了……

????更多智领云科技详细内容,点击“阅读原文”


推荐阅读
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 本文介绍了如何使用Flume从Linux文件系统收集日志并存储到HDFS,然后通过MapReduce清洗数据,使用Hive进行数据分析,并最终通过Sqoop将结果导出到MySQL数据库。 ... [详细]
  • Spark与HBase结合处理大规模流量数据结构设计
    本文将详细介绍如何利用Spark和HBase进行大规模流量数据的分析与处理,包括数据结构的设计和优化方法。 ... [详细]
  • oracle c3p0 dword 60,web_day10 dbcp c3p0 dbutils
    createdatabasemydbcharactersetutf8;alertdatabasemydbcharactersetutf8;1.自定义连接池为了不去经常创建连接和释放 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 如何使用mysql_nd:Python连接MySQL数据库的优雅指南
    无论是进行机器学习、Web开发还是爬虫项目,数据库操作都是必不可少的一环。本文将详细介绍如何使用Python通过 `mysql_nd` 库与 MySQL 数据库进行高效连接和数据交互。内容涵盖以下几个方面: ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 在第二课中,我们将深入探讨Scala的面向对象编程核心概念及其在Spark源码中的应用。首先,通过详细的实战案例,全面解析Scala中的类和对象。作为一门纯面向对象的语言,Scala的类设计和对象使用是理解其面向对象特性的关键。此外,我们还将介绍如何通过阅读Spark源码来进一步巩固对这些概念的理解。这不仅有助于提升编程技能,还能为后续的高级应用开发打下坚实的基础。 ... [详细]
  • 字节跳动深圳研发中心安全业务团队正在火热招募人才! ... [详细]
  • 技术日志:深入探讨Spark Streaming与Spark SQL的融合应用
    技术日志:深入探讨Spark Streaming与Spark SQL的融合应用 ... [详细]
  • 在Linux系统中,原本已安装了多个版本的Python 2,并且还安装了Anaconda,其中包含了Python 3。本文详细介绍了如何通过配置环境变量,使系统默认使用指定版本的Python,以便在不同版本之间轻松切换。此外,文章还提供了具体的实践步骤和注意事项,帮助用户高效地管理和使用不同版本的Python环境。 ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  • 我们在之前的文章中已经初步介绍了Cloudera。hadoop基础----hadoop实战(零)-----hadoop的平台版本选择从版本选择这篇文章中我们了解到除了hadoop官方版本外很多 ... [详细]
author-avatar
pet宠物情缘
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有