Google 内部工具:MapReduce; 替代品:Apache Hadoop、Spark

想要在上千台机器组成的大集群上、并行处理上 TB 级别的海量数据集,就要用到这类大规模数据处理工具了。

MapReduce,就是这类工具的先驱。Jeff Dean 等人 2004

年提出了这个分布式计算架构,最早在 Google 内部用来处理大规模数据的并行计算。Jeff Dean 还亲自为它撰写过使用指南。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wbuWRPCj-1647704837816)(//upload-images.jianshu.io/upload_images/18452536-7f8b1a13576c5d14.png?imageMogr2/auto-orient/strip|imageView2/2/w/400/format/webp)]

而 Apache Hadoop 这个开源替代品,也是根据 Jeff Dean 当年的论文自行实现而成,能提供与 MapReduce 文件系统类似的功能。

如果想要更快的数据处理速度,还有 Apache Spark 供你选择。相对于 Hadoop 的 MapReduce 会在运行完工作后将中介数据存放到磁盘中,Spark 使用了存储器内运算技术,能在数据尚未写入硬盘时即在存储器内分析运算。

序列化工具

Google 内部:Protocol Buffer; 外部替代品:Protobuf、Thrift、Avro

这一组工具用于结构化数据序列化,上面这些,都是 xml 替代品,比它更小、更快、也更简单。

Protocol Buffer 和 Protobuf 都是 Google 开发的序列化格式(Serialization Format),github 上可以找到这个项目的源代码。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5j0RKg3X-1647704837817)(//upload-images.jianshu.io/upload_images/18452536-3239a29bf7184916.jpeg?imageMogr2/auto-orient/strip|imageView2/2/w/660/format/webp)]

比起 XML 和 JSON,Protobuf 更小、更快,也更简洁,很适合做数据存储或 RPC 数据交换格式。只需要定义一次数据结构,就可以利用各种不同语言或者从各种不同数据流中对结构化数据进行轻松读写。

完全撇开 Google,也不是就没有别的选择了。其他厂商也有类似的序列化方案。

比如 Facebook 开发的 Thrift ,它与 Protobuf 基本一样。

Avro 同样也有 schema(也就是程序中结构化数据的定义),但是实现方式跟 Protobuf 和 Thrift 有很大区别。

由于数据不需要额外的标注,Avro 在序列化大量相同的数据时会比 Protobuf 和 Thrift 更有效率。不过在编码大量变化的数据时,因为 schema 会随数据一同存储,Avro 的效率会退化到 JSON 和 MessagePack 的级别。

看来在核心技术工具上,重回人间的前 Google 人还是有许多不错的选择的。

基础设施

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oJcOz43E-1647704837817)(//upload-images.jianshu.io/upload_images/18452536-b33794d959194b87.jpeg?imageMogr2/auto-orient/strip|imageView2/2/w/720/format/webp)]

大型集群管理系统

Google 内部:Borg;外部替代品:Kubernetes、Apache Mesos、HashiCorp Nomad

大型集群管理系统用于管理云平台中多个主机上的容器化的应用。

Borg 是 Google 内部的大型集群管理系统,现如今应用最广泛的服务编配系统 Kubernetes 就脱胎于 Borg。

Borg 让开发者能够不必操心资源管理的问题,做到跨多个数据中心的资源利用率最大化。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qPMXaMSI-1647704837818)(//upload-images.jianshu.io/upload_images/18452536-639c6f3b89670956.jpeg?imageMogr2/auto-orient/strip|imageView2/2/w/720/format/webp)]

没有 Borg 十五年的经验,也就不会有 Kubernetes。虽然作者把它放在开源 / 真实世界这一栏里,但事实上 Kubernetes 也是由 Google 设计并参与开发的。

Kubernetes 使用 Go 语言编写, 是一个大而全的解决方案,服务调度、网络、存储、安全通通一手抓,而且本身的架构也非常好,在上面做二次开发非常容易。

HashiCorp Nomad 同样是一个比较常见的开源调度程序,架构简单,能将资源管理器和调度程序的功能集成到一个系统中。Nomad 也是分布式的,高可用且易操作。但显然 Kubernetes 的功能会更丰富。

至于 Mesos,它仅仅是一个调度系统,无法直接使用,要配合各种 Mesos framework 来实现各类功能。

存储

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UctbDjkj-1647704837821)(//upload-images.jianshu.io/upload_images/18452536-1867e87d14ae9d13.jpeg?imageMogr2/auto-orient/strip|imageView2/2/w/720/format/webp)]

当然,Google 内部工具也不是所有的都能找到完美的替代品。

至少在存储这件事情上,就有网友不赞同原作者观点。他认为这份清单在一定程度上具有误导性,某些替代品根本达不到 Google 内部工具的水平。

比如将 Colossus 和 HDFS 对比是在开玩笑,相比之下,HDFS 就像是一个玩具。要说对比,它智能和十年前已经退役的 GFS 相当。

但 HDFS 恐怕是开源软件中 Colossus 最好的替代品,对于 “通用,大型,分布式文件系统” 的使用情况,很难找到有比 HDFS 更好的了。

其他开发工具

最后

下面是有几位Android行业大佬对应上方技术点整理的一些进阶资料。希望能够帮助到大家提升技术

高级UI,自定义View

UI这块知识是现今使用者最多的。当年火爆一时的Android入门培训,学会这小块知识就能随便找到不错的工作了。

不过很显然现在远远不够了,拒绝无休止的CV,亲自去项目实战,读源码,研究原理吧!

不过很显然现在远远不够了,拒绝无休止的CV,亲自去项目实战,读源码,研究原理吧!

[外链图片转存中…(img-33H4t6We-1647704837823)]

Googler高级工程师打造“厂外生存指南”,程序员感叹,圆我大厂梦相关推荐

  1. 最佳开发工具大全!前谷歌工程师两年打造“厂外生存指南”,登上GitHub热榜

    晓查 栗子 方驭洋 发自 凹非寺  量子位 报道 | 公众号 QbitAI 一位曾经的谷歌工程师,花费两年时间,辛苦整理了一份清单. 这个名为"xg2xg"的清单,原本是这位前谷歌 ...

  2. Wwise 快速上手指南: 程序员篇(v2016.1)

    Wwise 快速上手指南: 程序员篇(v2016.1) https://gameinstitute.qq.com/community/detail/107700 Wwise 快速上手指南: 程序员篇 ...

  3. 某程序员感叹:4年开发,年包才40多万

    某程序员感叹:4年开发,年包才40多万! 职场论坛脉脉上看到一个热帖,发帖人称:为什么大家工资那么高,三五年都六七十万了?我二本计算机专业,四年前端开发,找个年包40万多点就顶头了. 大厂工作好多年薪 ...

  4. 月薪2千到年薪百万,厂妹到高盛程序员,她书写了一个女孩的史诗

    她的人生是一场真实的打怪进阶,让人在佩服之余忍不住检讨自己. --遇言姐 不久前,孙玲在公众号上更新了自己的状态-- 她在去年8月底被高盛录用,已经移居盐湖城开始新工作. 遇言姐一直都在关注孙玲这个妹 ...

  5. 颈椎病康复指南-程序员专用

    颈椎病康复指南 颈椎病是一个不良的生活方式造成的疾病,现在发生率很高,因为过去我们的生活方式,很少看电脑,很少看手机,而现在看电脑.看手机成了大家的一个生活的一个常态,在工作时候看,在上班上下班路上也 ...

  6. 关于OPPO手机的生存和程序员的发展

    关于程序员私下讨论最多的话题,除了哪个编程最牛逼之外,哪款品牌的手机最牛逼也是我们谈论最多的话题之一吧!有的喜欢罗永浩,自然就是锤粉:有的喜欢苹果,称它为工业时代最优美的艺术品:当然,我想也有很多的人 ...

  7. 低学历者生存困难 程序员尤其明显

    高考刚过,我也不知道写什么,因为我的读者和粉丝早已经过了这个年纪,高考可能是中国普通孩子唯一改变命运和阶层的机会. 今天再来回顾一下,之前写的一篇传播很广也被骂的很惨的一篇文,所谓有争论的文,才是有价 ...

  8. 防瞎指南----程序员如何保护自己的眼睛

    这篇文章由一个老程序员所整理,作者工作(编码)10年来,视力一直比较稳定,下面是他分享给广大程序员的护眼经验. 1.修改Visual Studio/SQL Server Management Stud ...

  9. 坊间传言:程序员可以先在大厂镀金,以后去中小厂毫无压力,基本不会被卡,事实果真如此吗?

    近日,一个大厂程序员发帖抱怨:谁说的大厂镀金?信了你们的鬼话,从大厂裸辞两个多月,一个offer都没拿到.早知道前几年就选虾皮了,给的钱还多八万. 楼主总结了自己今年的面试情况: 虾皮一面挂,阿里二面 ...

  10. 自己动手,打造一款适合 Python 程序员的 Html5 音乐播放器

    近期断断续续读了一些 Web Audio API 和 WebRTC API 的文档,发现了很多好玩的东西,有一种"忽入桃花源"的感觉.这一款 Html5 音乐播放器,就是基于 We ...

最新文章

  1. Jenkins中的高速流水线 Shared Pipeline
  2. MERGE批量增删查改数据
  3. 数组树/fenwicktree/Binary Indexed Tree
  4. 使用python和树莓派实现远程监控
  5. JavaScript——XMLHttpResquest的简单封装
  6. 最大子数组和Python解法
  7. 为中国游牧蒙古人造像
  8. Apache2.2.8、php5.2.6、mysql5、phpMyAdmin2.11.6在Windows 下的安装和配置
  9. c#使用SHA256算法实现对文件的加密和解密
  10. IAT-Hook 劫持进程Api调用
  11. qq游戏大厅中解析不安装apk的研究
  12. 手机只能上QQ不能看网页
  13. 裸辞两个月,海投一个月,从 Android 转战 Web 前端的求职之路
  14. 蒟蒻刷洛谷(11月7日到11月13日)
  15. 计算机课程微信可以教吗,这样操作都可以?教你用微信远程控制电脑!
  16. Linux命令简写与全称
  17. 关于电脑安装新硬盘,出现无法是识别设备,03F0问题解答。
  18. Snapde和常用的CSV文件编辑器对比
  19. 高等数学(拉格朗日乘子法):NOI 2012 骑行川藏
  20. Win10 LTSC 2021的BUG处理

热门文章

  1. cocos2d - JS Sprite 镜像反转显示 ( Flipped )
  2. lucas–kanade_Lucas–Kanade光流算法
  3. java日志脱敏_java 日志脱敏框架 sensitive,优雅的打印脱敏日志
  4. java 夏令时_Java里面的夏令时
  5. 博通的网卡linux驱动,CentosRedhat下bcm43142博通无线网卡linux驱动
  6. KNN算法优缺点总结,以及机器学习流程的总结
  7. RFC请求注解(Request for Comments)介绍|internet最重要的文献资源
  8. 卷积神经网络(三)-ZF-Net和VGG-Nets
  9. MIMO检测之ZF,MMSE,ML算法matlab代码
  10. 使用labelme遇到path is on mount 'C:', start on mount 'D:'