写点什么

大数据公司 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:061320

评论

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

码农必备?清华大学开源了一款写代码神器!

Jackpop

API渗透测试的基本流程及关键点

阿泽🧸

11月月更 API渗透测试

正则表达式学习笔记(二)

lxmoe

正则表达式 学习笔记 11月月更

Java | IO流文件专属流

陌上

Java 编程 11月月更

Java | IO流数据流和标准输出流

陌上

Java 编程 11月月更

Python冷知识:如何找出新版本增加或删除了哪些标准库?

Python猫

Python

面试中如何才能拿到阿里 P7 的职级?

Java永远的神

Java 阿里巴巴 程序员 架构师 程序员晋升

【愚公系列】2022年11月 微信小程序-页面配置

愚公搬代码

11月月更

复杂时序逻辑电路

梦笔生花

Verilog 11月月更 时序逻辑

正则表达式学习笔记(一)

lxmoe

正则表达式 学习笔记 11月月更

算法题学习---判断一个链表是否为回文结构

桑榆

算法题 11月月更

【LeetCode】找到最高海拔Java题解

Albert

算法 LeetCode 11月月更

三面头条 + 四面阿里 + 五面腾讯拿 offer 分享面经总结

程序知音

java面试 大厂面试 java架构 后端技术 Java面试八股文

美团技术官手写的精品SpringBoot笔记,涵盖99%知识点,强到离谱

小小怪下士

Java spring 程序员 springboot

Spring 5(六)新功能

浅辄

Spring5 JUnit 11月月更

用户特征分析的方法

穿过生命散发芬芳

11月月更 用户特征分析

K8S环境的Jenkin性能问题处理

程序员欣宸

Kubernetes jenkins 11月月更

这一次,带你深入浅出Go语言切片和数组

闫同学

Go 11月月更

云原生系列 【轻松入门容器基础操作】

叶秋学长

云原生 沙箱实验 11月月更 操作手册

极客时间运维进阶训练营第四周作业

9527

2022年最新版68道Redis面试题,20000字干货,赶紧收藏起来备用!

钟奕礼

Java 程序员 java程序员 java面试 java编程

10道不得不会的 SpringBoot 面试题

JavaPub

Java 后端 springboot

[力扣] 剑指 Offer 第四天 - 数组中重复的数字

陈明勇

Go 数据结构与算法 力扣 11月月更

10道不得不会的 Java容器 面试题

JavaPub

Java 面试 后端

Java | IO流缓冲流和转换流

陌上

Java 编程 11月月更

【C语言】int 关键字

謓泽

11月月更

Meta开源新工具啊,Git地位危险了?

Jackpop

计算机网络:VLAN基本概念与原理

timerring

计算机网络 VLAN 11月月更

【LeetCode】无重复字符的最长子串题解

Albert

算法 LeetCode 11月月更

3年Java研发,突击30天,从14K变成了30K

程序知音

Java java面试 大厂面试 java架构 后端技术

拿下大厂?这几道jvm面试题必须要懂

钟奕礼

Java 程序员 java面试 java编程

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