水滴石穿、坚持不懈,必能有所精进
在跟随这门课程学习的过程中,我增长了很多大数据相关的知识,对于大数据技术和相关开源组件,也有了更深的了解。今天正好可以借着这个机会,来记录下自己的一点心得体会,也跟你分享一下我的学习思路,咱们一起聊一聊。
为什么我要来学这门课?
大数据在最近十几年非常红火,大数据技术及组件层出不穷。对于新入门大数据行业的人来说,会有一种进入少林藏经阁,却不知从哪里学起的感觉。对于已经进入行业两三年的人来说,也会有一种技术不断更新迭代,何时是个尽头的苦恼。
之前我在极客时间参加了《大数据训练营》的学习,课程结束,老师介绍了如何在大数据行业持续精进的方法,其中提到了一个关键,就是去读大数据技术背后的论文。
了解大数据的人都清楚,大数据技术的兴起,绕不开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产生。因此,好的架构设计需要充分考虑各种依赖条件,并做好依赖条件失效时的应对之策,只有这样,才能保证系统的稳健运行。不只考虑系统内部,还要考虑数据流的上下游。
任何大数据组件都不是孤立存在的,而是更大系统的一部分。因此,在设计系统时,我们要同时考虑到数据流的上下游,这样才能更好地融入大的生态,或者建立起自己的生态。任何系统都是多种要素的均衡。
任何一个系统都不可能做到面面俱到,能做到有几个亮点,没有大的短板就足够了。大数据技术众多,类似的技术和组件也不少,我们通常都是根据自己的使用场景,结合各种技术的优缺点来进行选择。而我们很难能保证,同样出现的几个技术或组件,一个就能做到力压其他所有。我们在设计自己的系统时,实际上也是要有所兼顾、有所放弃的。
大数据技术种类繁杂,涉及的知识多如牛毛,我们只有拿出水滴石穿的劲头,一步一个脚印,持续学习,稳扎稳打,不懈努力。同时,在学习一类新的技术时,仔细琢磨,直探本质,才能做到触类旁通,事半功倍。
水滴石穿、坚持不懈,必能有所精进相关推荐
- 社科院与杜兰大学金融管理硕士项目—人生的每一条路都可以看作是正确的路
成年人的世界里没有什么是容易的.生活中经常听到人说:早知道现在过得这么辛苦,当年真应该好好读书:早知道这个行业这么难出头,当年真不应该踏入这一行:早知道爱人这么不靠谱,当年不跟他结婚就好了--有时候生 ...
- 坚持不懈,直到成功-I will persist. I will win.
I will persist until I succeed. 坚持不懈.直到成功. In the Orient young bulls are tested for the fight arena ...
- (羊皮卷三) 坚持不懈,直到成功
我很喜欢的文章,我将它记录在此,以时刻警醒自己,同时也希望正在阅读的你一起喜欢.每一个字符都是亲手敲击出来的.它属于自己,也属于你.亲若喜欢,不必客气,请顺手拿走. 谨以此文献给所有寻找人生价值的人. ...
- Autosar精进有道
本文框架 0. 前言 1. 成长的五个阶段 1.1 了解功能 1.2 实现功能 1.3 问题解决 1.4 代码精进 1.5 架构优化 2. 2W1H工作法 0. 前言 如果你是初入汽车电子行业从事软件 ...
- Go modules基础精进,六大核心概念全解析(下)
Go 语言做开发时,路径是如何定义的?Go Mudules又为此带来了哪些改变?本文将会全面介绍Go Modules六大核心概念,包括了设计理念与兼容性原则等,掌握这些技术点对于管理和维护Go 模块有 ...
- 免费公开课 | 数据科学家,从入门到精进!【今晚福利】
<哈佛商业评论>宣布,"数据科学家"是二十一世纪最性感的职业.数据科学家究竟是一群怎样的人?各行各业高薪难求的他们又是如何开启自己的职业生涯的? 滴滴 ~福利卡!!! ...
- 写给工程师的十条精进原则
来自:美团技术团队 引言 时间回到8年前,我人生中的第一份实习工作,是在某互联网公司的无线搜索部做一个C++工程师.当时的我可谓意气风发,想要大干一场,结果第一次上线就写了人生中第一个Casestud ...
- 代码精进之路 码农到工匠pdf_VBA代码解决方案第065讲试看内容
下面是我根据自己20多年的VBA实际利用经验,编写的四部教程,这些是较大块的"积木",可以独立的完成某些或者某类系统的过程,欢迎有需要的朋友联络(WeChat:NZ9668)分享. ...
- JavaScript精进篇
JavaScript是所有前端框架中最基础的框架,在工作了两年以后又重新回到了这里.过去两年里用的最多的前端框架是jquery,因为它简单易上手,而jquery就是封装了JavaScript.重新系统 ...
最新文章
- RTS寻路相关资料收集
- html怎么添加图片幻灯,使用CSS3实现的超酷幻灯图片效果
- python xlrd模块_python之xlrd模块
- 电脑坏了,疑似主板故障
- 创新大赛成就创业梦想 超30%入榜应用获投资意向
- JAVA中对集合排序
- 微信小程序实现在线画板
- zbrush中减面操作
- SQL 求同比 环比
- 生僻字看不懂很尴尬?知道手机中的这个功能,瞬间发现:太简单
- 新手入坑杭电百题2000-2099
- Unity编辑器录屏神器:Unity Recorder
- 双十一必备销售看板:附完整模板素材
- 装X与务实并存!iPad越狱必装插件汇总
- 什么是permit-inside功能
- 最新小储云商城V1.782免授权源码
- 第五人格服务器正在维护中怎么办,第五人格新联动刚来就出问题,紧急停服维护,这得补偿多少?...
- 【复杂网络社团结构研究】拉普拉斯矩阵定义及性质详细推导
- 张量网络算法基础(七、张量网络中的有效哈密顿思想)
- 2020-10-24立下目标可好