部署到gcp_剖析大数据公司为什么选择 GCP?

文章来源:加米谷大数据

假如L 是一家大数据公司。下面我们的文章将围绕L展开分析。

很多公司拥有大数据。每天早餐之前,健壮的日志框架就已经生成了 PB 级别的日志,并以防万一将这些数据长期保存在了亚马逊的 S3 上。

还有一些公司会使用他们自己的大数据。他们拥有自己的产品,他们会通过 Hadoop 和 Spark 来做一些机器学习,从而生成针对客户的产品推荐。

但是像 L 这样的大数据公司就很少了。我们从客户那里赚取的每一分钱都来自于我们的 Hadoop 处理流水线。L 的产品线很广,但这些产品都经由了相同的生产流程,即提取、转换、加载、加入 Hadoop 处理管道。如果说今天我们关闭了 Hadoop 基础设施,那公司也就可以直接关门停业了。

到去年为止,L 所有的大数据计算都是在本地数据中心完成的。我们的数据中心部署了一个超过 2500 节点的 Cloudera Hadoop 集群。而从今年开始,我们逐步把它们迁移到了 GCP(谷歌云计算平台)。

Sasha Kipervarg,Patrick Raymond 和我在 Google Next 大会上展示了这次迁移之旅,包括我们从中学到的经验教训,以及接下来的计划等。在本系列博客文章中,我将从技术角度更深入地探讨这次迁移,重点有:

  • 在 2018 年及其以前,我们是如何在本地运营 L 大数据基础设施的?
  • 我们为什么要决定迁移?
  • 我们希望 L 基础设施在 GCP 上是什么样子?
  • 我们是如何实现的?
  • 我们下一步该如何发展?

尽管这是一项巨大的工程,但我们仍然对其感到兴奋,因为它将改变 L 的开发体验,让我们可以用前所未有的速度将可扩展的、可靠的产品推向市场。

L 一览

f858cde2bfeb612b262ea06be0d5c8bc.png

L 有很多产品,但它们都是本着匹配客户 CRM(客户关系管理)以及匹配数据集的原则在不同生态系统之间转移数据。我们通过批文件传输管道和实时的像素服务器这两种方式将这些转换后的数据传输到数字广告生态系统中去。

Hadoop 生态系统尤其适合执行大规模数据连接,这也是我们所使用的。我们的绝大多数硬件都用在了 Cloudera Hadoop 集群。本地集群的最大规模可达到为:

  • 2500 个工作节点
  • 90000 个 CPU
  • 300TB 的内存
  • 100PB 的存储

我们的基础设施非常繁忙,每天有超过 10 万个 YARN 应用在运行,读写量超过 13 个 PB/ 天,以及超过 80% 的系统利用率:

51769b43a30c678dd753c7202b3783f6.png

任何拥有 150 名工程师并且在不断增长的公司都会面对大量的服务以及与之对应的支持基础设施。截至 2018 年,我们使用了 500 多个由 Chef 统一配置管理的 VMWare 虚拟机(一个相对小一些的基于 CoreOS Tectonic 版本的 Kubernetes 集群。我们的实时键值服务平台则由内部的一个开源项目实现。

我们需要每天从合作伙伴处获取文件和日志,然后将处理后的文件送还,平均数据量约为 8TB 每天,像素服务器的平均访问量也达到了 20 万 QPS。

尽管我们在 AWS 运行了一些与国际团队和像素服务器相关的服务,但如此大的工作任务仍然用尽了本地数据中心的硬件资源。

上云

虽然我们对自己的基础设施有诸多不满,但是本着“正常工作”优先的原则,我们一直没有对它进行改变。但到了 2017 年中旬,我们开始意识到本地数据中心的规模已经无法满足我们的国际化需求。于是我们具备了所有迁移到云的一般动机:

  • 规模扩展:我们需要能够更快地扩展我们的基础设施,而不再受限于数据中心物理设备的搭建,例如 2 个月的硬件购买时间以及更多的空间放置需求等。
  • 灾难恢复:我们并不满意自己的灾难恢复系统。我们希望在数小时内就可以从灾难性的停机状态中恢复过来,而不是花费几个星期从冷备份开始恢复。
  • 招聘:工程师们希望能够接触到更重要和实用的技能,而在 2019 年,这就是着云计算。
  • 开发速度:假如我们有 30% 的开发人员可以从基础设施维护中解放出来,这意味着他们可以重新转向产品开发,从而将产品推向市场的速度提高 30%。

因此,到 2017 年底,我们开始认真地评估云服务供应商,并开始把 L 想象成一家云原生技术公司。

为什么选择 GCP?

ce9e18e3dc436207dd1b62ba4b3fc07d.png

我们喜欢 GCP,但我们知道它并不是默认选项。我们之所以选择 GCP 主要有两个驱动因素:

  • 技术

技术评估并不适合放在本篇文章中,但我要强调的一点是 GKE(谷歌 Kubernetes 引擎)是一个非常关键的因素。本次迁移有一个很明确的方向,那就是要把所有的应用程序和服务迁移到 Kubernetes 平台。可以粗略地讲,GKE 就是 Kubernetes 领域事实上的领头羊。

虽然我们可以选择任意一家云供应商并最终完成迁移,但一个很大的区别就是云供应商背后的技术支持人员。GCP 把我们同那些想回答我们问题并提供解决方案的工程师很好地联系了起来。

我们对 GCP 的技术支持合约也非常满意。我们总是能够与专业工程师及时取得联系并迅速得到解决措施。这也给了我们信心,通过与 GCP 合作,我们相信可以解决任何问题,这一点都现在也没有改变。

在下一篇文章中,我将讨论一些大数据基础设施迁移到 GCP 的细节,哪些方面可以直接转换到 GCP,而哪些方面又需要重新设计。敬请期待!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556096.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis缓存那点破事 , 绝杀面试官 25 问

转载:https://blog.csdn.net/itomge/article/details/122118060 精彩文章汇总 GitHub https://github.com/aalansehaiyang/technology-talk ,Star 12K ,汇总java生态圈常用技术框架、开源中间件,系统架构、数据库、大公司架构案例…

Mysql的select in会自动过滤重复的数据

Mysql的select in会自动过滤重复的数据 默认使用 SELECT 语句; 当加上in范围后,结果如下图: in范围内的数据,如果有重复的,只会选择第一个数据。 所以如果不是直接使用SQL语句来查询,而是在代码中来查询…

java.sql.SQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key c

错误原图: 错误分析:外键约束失败导致插入数据有误 解决问题:检查被关联的外键字段值,在原表中是否有对应的值,添加时外键的值在原表(外键关联的表)中一定要有该值,没有的值添加报错…

MySql 清空、删除、截断表时1701错误

项目已经进行一段时间,整体的开发工作已经完成。接下来要进入综合测试阶段,所以想要将数据清理一下,然后报了1701错误,由错误提示得知是外键约束的问题 解决办法:关闭外键约束->清空表、截断表->启动外键约束。…

编辑流程图_流程图不会绘制?一分钟手把手教你学会,超简单

我们每天的日常工作非常繁忙,经常被日常的事务性工作淹没,而忽略掉我们工作的流程是否正确,我们的方向是否正确。如果流程、方向错了,再努力都是没有用的。要确保努力与付出是有价值的,就必须确保前进方向是正确的&…

MVVM 模型

MVVM 模型 在实际代码中 <!--MVVM 模型&#xff1a;1. M: 模型(Model) : data 中的数据2. V: 视图(View) : 模板代码3. VM: 视图模型(ViewModel) : Vue 实例观察发现&#xff1a;1. data 中所有的属性&#xff0c;最后都出现在了 vm 身上2. vm 身上所有的属性 以及 Vue 原…

NAVICAT MYSQL 建表字段 默认值、EMPTY STRING、空白、NULL 的区别

Navicat mysql 建表字段 默认值、empty string、空白、NULL 的区别 总结在最后&#xff0c;没啥干货 简单测试了4种类型 bigint tinyint varchar char 单引号 ‘’ 双引号 “” 自定义的默认值 如&#xff1a; 未知的姓名 新建一张用户表 CREATE TABLE user (id bigint(20…

如何将vue项目打包为.apk文件

说明&#xff1a;使用Vue.js开发完毕的app一般不作处理的话&#xff0c;就只能在浏览器上做为Webapp使用。如果需要将它安装到安卓手机上就需要打包为.apk文件了。 前提&#xff1a;安装HBuilderX 具体步骤&#xff1a; 1.在vue项目中找到config/build.js 2.找到build下的a…

linux 快照

一、快照管理器 二、选择保存的快照 — 出错了方便回去

工作琐事太多怎么办_东莞夫妻感情不合怎么办 东莞专业离婚咨询

东莞夫妻感情不合怎么办 东莞专业离婚咨询工作中的琐事影响感情交流&#xff0c;当然什么事也没有但我却打他&#xff0c;还有一些行刑人在旁边站着。行为泼辣得不到观众的好感。对当时的一些知识和政界发生。只记得内容是希望他好自为之&#xff0c;生活中她是位的。苏菲宗派里…

23种经典设计模式都有哪些,如何分类?Java设计模式相关面试

23种经典设计模式都有哪些&#xff0c;如何分类&#xff1f; 23种经典设计模式都有哪些&#xff0c;如何分类&#xff1f; java常用的设计模式&#xff1f;说明工厂模式 Java 中的23 种设计模式&#xff1a; Factory&#xff08;工厂模式&#xff09;&#xff0c; Builder&am…

五大常用算法学习笔记

一、分治算法&#xff1a;快速排序、归并排序、大整数乘法、二分查找、递归&#xff08;汉诺塔&#xff09; 基本概念&#xff1a;把一个复杂的问题分成若干个相同或相似的子问题&#xff0c;再把子问题分成更小的子问题… &#xff0c; 知道最后子问题可以简单的直接求解&…

8客户端安装后无法启动_新君越涉水后车辆无法启动

车型&#xff1a;2010君越故障现象&#xff1a;涉水后车辆无法启动询问客户&#xff1a;涉水的水深10cm左右。 外观检查&#xff1a;TCM连接器进水、其它没发现进水迹象使用压缩空气吹干TCM连接器的进水&#xff0c;并处理机舱的接地点。GDS检测&#xff1a;U0074,控制模块通信…

Java中的return this

Java中的return this return this就是返回当前对象的引用(就是实际调用这个方法的实例化对象) 示例&#xff1a; /*** 资源url*/public HttpConfig url(String url) {urls.set(url);//return this就是返回当前对象的引用(就是实际调用这个方法的实例化对象)return this;}调用…

mybatis 依赖于jdbc_大数据基础:Mybatis零基础入门

在Java企业级开发任务当中&#xff0c;持久层框架的选择&#xff0c;国内市场的主流选择一定有Mybatis的一席之地&#xff0c;从入门来说&#xff0c;Mybatis的学习难度不算高&#xff0c;但是要把Mybatis发挥出真正的效用&#xff0c;还是需要深入学习的。今天的大数据基础分享…

kendo treeview 修改节点显示值_VBA学习笔记60-1: Treeview控件

学习资源&#xff1a;《Excel VBA从入门到进阶》第60集 by兰色幻想本节讲Treeview控件。TreeView控件是以树形结构显示数据的控件。利用TreeView控件&#xff0c;可以设计出树形结构图&#xff0c;便于用户选择不同的项目。总公司人事结构是一级节点&#xff0c;公司一、公司二…

Java之路:this关键字的用法

&#xff08;1&#xff09;this代表当前对象的一个引用。所谓当前对象&#xff0c;指的是调用类中方法或属性的那个对象。 最经常使用this关键字的情况&#xff0c;是在对象的一个属性被方法或构造器的参数屏蔽时&#xff0c;需要调用这个被屏蔽的属性&#xff0c;如下&#xf…

跑分cpu_一加8T现身跑分网站:CPU正式敲定 10月15日见

一加8T将于10月15日发布(海外版将于10月14日发布)&#xff0c;现在关于一加8T的核心规格确认。今天&#xff0c;一加8T现身GeekBench跑分网站&#xff0c;确认该机搭载的是高通骁龙865旗舰处理器&#xff0c;而非高通骁龙865 Plus。与搭载高通骁龙865的一加8相比&#xff0c;一…

发那科攻丝回退参数_乐享:发那科MF选配功能诊断小结

小编微信&#xff1a;shukong99999乐享数控&#xff0c;专注数控电气乐享那科选项功能小结大家好&#xff0c;我是乐享数控&#xff0c;好久不见&#xff0c;今天起&#xff0c;给大家多总结&#xff0c;相互交流进步。1发那科MF选项功能诊断小结在调试过程中&#xff0c;除了M…

matlab怎么画二维热力图_[原创]Day3.箱线图和热力图的绘制

使用Matplotlib和Seaborn进行绘制箱线图和热力图。箱线图箱线图(boxplot)又称盒式图&#xff0c;可以显示数据的分散情况&#xff0c;由五个数值点组成&#xff1a;最大值(max)-上界、最小值(min)-下界、中位数(median)和上下四分位数(Q1, Q3)。它可以帮我们分析出数据的差异性…