最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

大数据公司 LiveRamp 上云记(二):哪些功能可以直接迁移,哪些需要重新设计?

  • 2020-02-20
  • 本文字数:1993 字

    阅读完需:约 7 分钟

大数据公司 LiveRamp 上云记(二):哪些功能可以直接迁移,哪些需要重新设计?

踏上征途

在上一篇文章中我们讨论了迁移到云也就是 GCP(谷歌云计算平台)的原因。一旦确定了迁移,我们就开始问自己三个问题:


  1. 我们的云架构在第一天会是什么样子?云平台的确可以让我们做很多令人兴奋的事情,但我们究竟希望自己的 MVP 看起来如何呢?

  2. 我们该如何实现?构建一个全新的云环境很容易,但是要把一个现有的基础设施平稳迁移到云上就没有那么容易了。

  3. 我们的环境在一年后又会是什么样子?我们知道自己的基础设施不会在第一天就很完美,这没关系,但我们希望会在接下来成功。


我会在这里详细讨论第一个问题。

MVP 架构

单单要求开发团队迁移到云上已经很困难了,而在迁移过程中又不断要求他们重新设计原有的应用程序,这就给整个过程带来了很大的不确定性。所以当我们不能在 GCP 中找到适合我们基础设施的替代品时,我们会尽量避免重新设计原有架构。


即便这样,GCP 上的很多功能已经很棒了,也为我们的基础设施提供了一些足够直接的转换方式,我们也觉得在迁移时进行这些切换是非常适合的。


首先,我们保留的部分:


  • 我们的本地环境有一个单逻辑内部网络。内部服务通过私有 IP 进行通信,大部分通过 Hashicorp Consul 进行协调。我们认为保留这一点对应用程序团队至关重要,至少在迁移期间是这样的。通过使用专用互连共享VPC网络,我们为开发人员提供了一个就像本地数据中心扩展一样的云。

  • Liveramp 的大数据处理核心 ETL 和连接管道都运行在 Cloudera Hapdoop 平台上。这一点不会改变,至少目前不会。

  • 尽管本文的重点不是我们的安全和数据隐私决策,但它们与我们做的每一件事都息息相关。我们的运营团队保留了对数据权限和网络规则的控制权。云平台让开发人员更加强大,但也使他们更容易做出非常愚蠢的决定。只有当你知道你不能意外泄露客户数据时,你才能更容易进行安全快速的开发。


那我们又需要改变那些部分呢?有很多,但这里将重点关注下面的三种技术:



在本地数据中心,我们很自然地选择 Hadoop HDFS 来保存持久数据。虽然我们的 HDFS 集群在迁移时仍然运行良好,但无停机或无中断的维护和升级要求让我们倍感压力。随着公司的发展,我们能够跟产品团队协调的停机时间也越来越短,直到再也无法在规定停机时间内完成升级。我们知道我们想使用 GCS(谷歌云存储),只有这样才可以保持作为开发团队的灵活性。


在本地数据中心,我们使用 Chef 管理所有的虚拟机。我们在 Chef 中嵌入了很多逻辑,也尝试在云平台中使用 Chef 管理虚拟机,但是效果不佳。再加上 Docker 和 Kubernetes 为我们提供了非常好的使用体验,我们最终在新环境里完全放弃了 Chef。


最后一点,我们认为 Google 的 BigTable 可以很好地替代我们自主研发的键值数据存储。放弃一个已经使用了这么久的工具的确令人难过,但只有这样才能让我们专注于那些新的令人兴奋的挑战。

云上 Hadoop

接下来,我将着重介绍一下我们的 Hadoop 基础设施,包括过去和现在。我会简要介绍一下我们的基础设施,以及我们在 GCP 上的构建。


下面是我们本地 Hadoop 集群的一个高度简化视图:



为保持简洁,该图省略了 Journal Nodes、ZooKeeper 和 Cloudera 管理角色。值得一提的是,该生产环境集群能够:


  • 在不同开发团队之间共享;

  • 在不随负载扩展的物理节点上运行;

  • 从网关虚拟机启动作业;

  • 将所有数据存储在一个 HDFS 联邦中(4 个 HA NameNode 对);

  • 自 2009 年以来持续运行(除了某些系统升级的时段)。


毫无疑问,HDFS 是最具可伸缩性的本地文件系统,但与云原生的对象存储(S3,GCS)相比仍有一些缺点。例如,数据会随着实例的销毁而丢失(除非你还保留了持久磁盘记录)。在设计云集群时,我们知道有以下需求:


  • 能够长期运行的临时集群(有问题?结束当前集群重启一个开始就好);

  • GCS 中所有重要的数据;

  • 按应用程序团队隔离集群;

  • 快速自动伸缩;

  • 从 GKE(谷歌 Kubernetes 引擎)发起工作任务。


所以,我们得到了如下所示的设计:



上图包含了很多内容,让我们逐个分析:


  • 不同的集群按应用程序团队运行在不同的子网中;

  • 工作任务从 GKE 发起而不是从虚拟机发起。每个 pod 中只包含一个应用程序,不再需要手动将应用程序打包到虚拟机上;

  • HDFS 仍然存在,但只有很少的一部分:YARN 使用 HDFS 保存 JobConf、分布式 Cache 和应用程序日志。但所有的应用程序数据都存储在 GCS 上;

  • 因为几乎不怎么使用 HDFS,所以我们只需要几个数据节点。大多数 worker 节点只是节点管理器。它们可以根据应用程序负载快速伸缩。


我会在另一篇文章中更详细地讨论这个问题,但重点是,临时的去数据化基础设施让我们在配置和机器类型上迭代的速度比在物理机器上快了 1000 倍。


这些决定为我们的迁移提供了一个起点。在下一篇文章中,我将讨论迁移的实现细节问题,重点讨论如何在吞吐量有限的情况下处理数据复制。


原文链接:


https://liveramp.com/engineering/migrating-a-big-data-environment-to-the-cloud-part-2/


相关阅读:


大数据公司 LiveRamp 上云记(一):为什么选择 GCP?


2020-02-20 10:061215

评论

发布
暂无评论
发现更多内容

Qt | 关于Qt Creator打开项目编译不过的问题

YOLO.

qt 7月月更

次轮Okaleido Tiger即将登录Binance NFT,引发社区热议

鳄鱼视界

客户案例 | 关注老年用户体验,银行APP适老化改造要避虚就实

易观分析

用户体验 银行app 老龄化

Bootstrap的导航元素和Well详解【前端Bootstrap框架】

恒山其若陋兮

7月月更

数据资产管理的概念

奔向架构师

数据资产 7月月更

为啥国内大厂都把云计算当成香饽饽,这个万亿市场你真的了解吗

雨果

DaaS数据即服务

音乐体验天花板!14个网易云音乐的情感化设计细节

张姣发

创新 交互设计 网易云音乐

Mybatis中LRU缓存实现

ue4

mybatis LRU mybatis源码

Prometheus 运维工具 Promtool (三)Debug 功能

耳东@Erdong

Prometheus 7月月更 Promtool

Okaleido Tiger 7.27日登录Binance NFT,首轮已获不俗成绩

EOSdreamer111

【函数式编程实战】(八) 如何将你的代码重构

小明Java问道之路

设计模式 函数式编程 7月月更 签约计划第三季 Lambda表达式

【函数式编程实战】(九) Optional实战大全

小明Java问道之路

java8 Optional Stream API 7月月更 签约计划第三季

传统车企数字化转型如何打通最后一公里?

雨果

车联网 DaaS数据即服务

一骑入秦川——浅聊Beego AutoRouter是如何工作

Regan Yue

Go 源码刨析 Go web 签约计划第三季 Beego

关于 StatefulWidget,你不得不知道的原理和要点!

岛上码农

flutter ios 前端 安卓开发 签约计划第三季

聊聊自动化测试的度量指标

老张

自动化测试 质量度量

Plato Farm有望通过Elephant Swap,进一步向外拓展生态

鳄鱼视界

C# 中的转译字符'/b'

陈言必行

7月月更

Okaleido Tiger 7.27日登录Binance NFT,首轮已获不俗成绩

BlockChain先知

Plato Farm通过LaaS协议Elephant Swap,为社区用户带来全新体验

股市老人

Plato Farm全新玩法,套利ePLATO稳获超高收益

EOSdreamer111

缓存一致性与内存屏障

蝉沐风

volatile 内存屏障 缓存一致性 MESI

C# 窗体应用常用基础控件讲解(适合萌新)

IC00

C# 7月月更

提前批到底影不影响正式批?

KEY.L

7月月更

React 学习记录2📝

程序员海军

React 7月月更

平成千字文(へいせいせんじもん)    (平成12年9月10日 石渡 明 作)  宇宙広遠 銀河永久 日月運行 不乱無休 地球公転 季節変移 黄道星座 太陽年周 故郷群島 南熱北冷 海洋温暖 気候順良 青空飛雲 諸野深緑 湖泉静息 谷川清流 春桜一面 新芽

贾献华

7月月更

小程序怎样助力智能家居生态新模式

Geek_99967b

物联网

2200字详细讲解计算机网络的“流量管理员”:QoS 服务质量

wljslmz

流量控制 QoS 网络技术 7月月更

【函数式编程实战】(七) Collection在Java8和9中的增强

小明Java问道之路

Lambda collection Stream API 7月月更 签约计划第三季

模块8(消息队列存储消息数据的mysql表格)

Geek_701557

次轮Okaleido Tiger即将登录Binance NFT,引发社区热议

股市老人

大数据公司 LiveRamp 上云记(二):哪些功能可以直接迁移,哪些需要重新设计?_大数据_Benjamin Podgursky_InfoQ精选文章