在跟随这门课程学习的过程中,我增长了很多大数据相关的知识,对于大数据技术和相关开源组件,也有了更深的了解。今天正好可以借着这个机会,来记录下自己的一点心得体会,也跟你分享一下我的学习思路,咱们一起聊一聊。

为什么我要来学这门课?

大数据在最近十几年非常红火,大数据技术及组件层出不穷。对于新入门大数据行业的人来说,会有一种进入少林藏经阁,却不知从哪里学起的感觉。对于已经进入行业两三年的人来说,也会有一种技术不断更新迭代,何时是个尽头的苦恼。

之前我在极客时间参加了《大数据训练营》的学习,课程结束,老师介绍了如何在大数据行业持续精进的方法,其中提到了一个关键,就是去读大数据技术背后的论文。

了解大数据的人都清楚,大数据技术的兴起,绕不开Google在十几年前发表的三篇论文。而第一代大数据技术,我们如雷贯耳的HDFS、HBase、MapReduce,也正是基于这三篇论文实现的。大数据技术的迭代,背后也正是知名高校或大公司发表的相关论文。没有这些论文,这些技术也无从谈起。

当然,我们也都知道,论文可以说是知识浓缩后的精华。随便一段论文内容,也包含着大量的信息,想要读懂,极为不易。幸运的是,极客时间开设了一门课程,就是徐文浩老师的《大数据经典论文解读》课。我发现后,也是第一时间下单购买了课程,希望能在老师的带领下,深入理解大数据技术背后的这些论文。

学习课程的一些心得

老师在课程的第2讲“学习方法:建立你的大数据知识网络”中讲到,大数据技术从大的方面来讲,主要分为分布式系统、存储引擎、计算引擎。大数据技术,本身就是与传统数据处理技术不一样,最大的区别根源就在于这个“大”字上。

任何一个大数据系统,本质也是一个分布式系统。因此,我主要是从分布式系统的几个特点,来关注一篇论文的技术点。另外,任何一个系统,自然也有它本身突出的功能点。所以,我主要就是根据以下四点来学习一篇论文的:

  • 可靠性(高可用);
  • 可扩展性(可伸缩);
  • 可维护性(容错性);
  • 功能。

这里呢,我也拿GFS和Kafka来做个示例。

GFS

就拿老师讲述GFS的那三讲来说,三节课都是在分析这篇论文《The Google File System》。GFS在架构上,分别提供了目录服务的Master,以及存储服务的chunkserver,它们类似HDFS的NameNode和DataNode。

数据在chunkserver的存储默认是三个副本,天然是具备高可用的。而整个系统要提供高可用的服务,就得确保Master的高可用,于是GFS就通过Shadow Master来实现。当Master故障时,Shadow Master会利用异步复制过来的数据,提供服务。

在可扩展性方面,因为GFS是存储引擎,主要提供存储服务,所以增加chunkserver,也就增加了扩展性。GFS是通过负载均衡技术,来使不同存储节点的磁盘利用率趋于平均水平。

另外在容错方面,GFS是通过重放Checkpoint之后的操作日志,实现了Master重启后可快速恢复的目标。当然,Backup Master也保障了即使硬件故障,也无需担心。

除了上述三点,GFS也有一些功能,值得我们了解学习。比如,单Master设计简单,不用考虑选举问题;数据写入流程确保了数据一致性;流水线式网络数据传输,避免了网络瓶颈;控制流和数据流分离;Snapshot复制指令,优化了文件复制性能。

Kafka

Kafka是大数据领域很知名的一个组件,老师也花了两讲的时间带我们进行了分析。Kafka的高可用,就在于每一个Topic分区,存在多个数据副本。即使当前的Leader出现了故障,我们也可以快速从ISR列表中选择一个新的分区作为Leader,来对外提供服务。

而在扩展性方面,Kafka的集群可动态调整Broker的数量。在容错方面,Kafka的多副本分区,加上合适的配置,就很好地保障了当部分节点故障时,数据的一致性。

此外,Kafka还有这些特性:单Partition读写;通过日志文件持久化数据,并使用索引文件和数据文件分开存储;对于消费者的负载均衡;保证消息在Partition的顺序;作为Kappa架构的重要组件,实现流批一体。

最后的一点感悟

其实,通过学习这门课,我也有几点感触,想要分享给你,如果也能跟你产生一些共鸣或者可以带来一些启发,就太好了。

  • 好的系统就是在资源有限的情况下想出的优秀解决方案。
    这些经典论文有的发表于十多年前,有的是几年前。虽然技术不断更新迭代,软硬件都在飞速发展,但是在任何时候,资源都是有限的。在这种情况下,更能体现出好架构的价值。这些经典论文和知名开源系统,正是呈现给我们很多这样的解决方案。

  • 充分考虑系统的各种依赖条件。
    作为软件工程师或者架构师,我们也需要考虑到各种依赖。在《数据密集型应用系统设计》一书讲到,Bug都是源于我们软件的依赖条件未能得到满足。我们通常假设这些依赖条件成立,但是,任何事情都不是绝对的,特别是硬件资源。硬件的故障、资源的竞争等等,这些都可能导致Bug产生。因此,好的架构设计需要充分考虑各种依赖条件,并做好依赖条件失效时的应对之策,只有这样,才能保证系统的稳健运行。

  • 不只考虑系统内部,还要考虑数据流的上下游。
    任何大数据组件都不是孤立存在的,而是更大系统的一部分。因此,在设计系统时,我们要同时考虑到数据流的上下游,这样才能更好地融入大的生态,或者建立起自己的生态。

  • 任何系统都是多种要素的均衡。
    任何一个系统都不可能做到面面俱到,能做到有几个亮点,没有大的短板就足够了。大数据技术众多,类似的技术和组件也不少,我们通常都是根据自己的使用场景,结合各种技术的优缺点来进行选择。而我们很难能保证,同样出现的几个技术或组件,一个就能做到力压其他所有。我们在设计自己的系统时,实际上也是要有所兼顾、有所放弃的。

大数据技术种类繁杂,涉及的知识多如牛毛,我们只有拿出水滴石穿的劲头,一步一个脚印,持续学习,稳扎稳打,不懈努力。同时,在学习一类新的技术时,仔细琢磨,直探本质,才能做到触类旁通,事半功倍。

水滴石穿、坚持不懈,必能有所精进相关推荐

  1. 社科院与杜兰大学金融管理硕士项目—人生的每一条路都可以看作是正确的路

    成年人的世界里没有什么是容易的.生活中经常听到人说:早知道现在过得这么辛苦,当年真应该好好读书:早知道这个行业这么难出头,当年真不应该踏入这一行:早知道爱人这么不靠谱,当年不跟他结婚就好了--有时候生 ...

  2. 坚持不懈,直到成功-I will persist. I will win.

    I will persist until I succeed. 坚持不懈.直到成功. In the Orient young bulls are tested for the fight arena ...

  3. (羊皮卷三) 坚持不懈,直到成功

    我很喜欢的文章,我将它记录在此,以时刻警醒自己,同时也希望正在阅读的你一起喜欢.每一个字符都是亲手敲击出来的.它属于自己,也属于你.亲若喜欢,不必客气,请顺手拿走. 谨以此文献给所有寻找人生价值的人. ...

  4. Autosar精进有道

    本文框架 0. 前言 1. 成长的五个阶段 1.1 了解功能 1.2 实现功能 1.3 问题解决 1.4 代码精进 1.5 架构优化 2. 2W1H工作法 0. 前言 如果你是初入汽车电子行业从事软件 ...

  5. Go modules基础精进,六大核心概念全解析(下)

    Go 语言做开发时,路径是如何定义的?Go Mudules又为此带来了哪些改变?本文将会全面介绍Go Modules六大核心概念,包括了设计理念与兼容性原则等,掌握这些技术点对于管理和维护Go 模块有 ...

  6. 免费公开课 | 数据科学家,从入门到精进!【今晚福利】

    <哈佛商业评论>宣布,"数据科学家"是二十一世纪最性感的职业.数据科学家究竟是一群怎样的人?各行各业高薪难求的他们又是如何开启自己的职业生涯的? 滴滴 ~福利卡!!! ...

  7. 写给工程师的十条精进原则

    来自:美团技术团队 引言 时间回到8年前,我人生中的第一份实习工作,是在某互联网公司的无线搜索部做一个C++工程师.当时的我可谓意气风发,想要大干一场,结果第一次上线就写了人生中第一个Casestud ...

  8. 代码精进之路 码农到工匠pdf_VBA代码解决方案第065讲试看内容

    下面是我根据自己20多年的VBA实际利用经验,编写的四部教程,这些是较大块的"积木",可以独立的完成某些或者某类系统的过程,欢迎有需要的朋友联络(WeChat:NZ9668)分享. ...

  9. JavaScript精进篇

    JavaScript是所有前端框架中最基础的框架,在工作了两年以后又重新回到了这里.过去两年里用的最多的前端框架是jquery,因为它简单易上手,而jquery就是封装了JavaScript.重新系统 ...

最新文章

  1. RTS寻路相关资料收集
  2. html怎么添加图片幻灯,使用CSS3实现的超酷幻灯图片效果
  3. python xlrd模块_python之xlrd模块
  4. 电脑坏了,疑似主板故障
  5. 创新大赛成就创业梦想 超30%入榜应用获投资意向
  6. JAVA中对集合排序
  7. 微信小程序实现在线画板
  8. zbrush中减面操作
  9. SQL 求同比 环比
  10. 生僻字看不懂很尴尬?知道手机中的这个功能,瞬间发现:太简单
  11. 新手入坑杭电百题2000-2099
  12. Unity编辑器录屏神器:Unity Recorder
  13. 双十一必备销售看板:附完整模板素材
  14. 装X与务实并存!iPad越狱必装插件汇总
  15. 什么是permit-inside功能
  16. 最新小储云商城V1.782免授权源码
  17. 第五人格服务器正在维护中怎么办,第五人格新联动刚来就出问题,紧急停服维护,这得补偿多少?...
  18. 【复杂网络社团结构研究】拉普拉斯矩阵定义及性质详细推导
  19. 张量网络算法基础(七、张量网络中的有效哈密顿思想)
  20. 2020-10-24立下目标可好

热门文章

  1. subline快捷键教程
  2. 深入解读SPC在质量分析中的应用,附demo
  3. 关于医院检验科仪器对LIS条码识别率偏低的原因调查
  4. WiFiduino+blinker+小爱同学打造智慧卧室
  5. 基于深度学习的道路交通标志数字识别
  6. Simple Koch curve
  7. CSS3 实现 60 FPS (60帧)动画效果
  8. 火爆成都的特色美食小吃,这些你尝过哪些?
  9. Windows10 安装OpenSSH服务器 解决0x80072ee6错误
  10. 使用JVM命令查询故障