扎心!天天写代码,方向真的对吗?

“每个人的时刻都是有限的,在有限的时刻里挑选一项值得投入的技能会变得尤为重要。”

笔者从 2008 年开端作业到现在也有 12 个年初了,一路走来都在和数据打交道,做过许多大数据底层结构内核的开发(Hadoop,Pig,Hive,Tez,Spark),也做过多年上层数据核算结构(Livy, Zeppelin)以及数据运用开发,包含数据处理,数据剖析以及机器学习。现在是 Apache Member 以及多个 Apache 项目的 PMC 。2018 年参加阿里巴巴实时核算团队专心在 Flink 的研制。

今日我想结合自己曩昔的作业经向来聊聊怎么评价一项技能是否值得学习。我一直在大数据这个圈子,从开端的 Hadoop 到后来的 Hadoop 生态项目 Pig,Hive,Tez,然后又到新一代的核算引擎 Spark ,再到最近在做的 Flink ,大数据核算引擎贯穿我的整个作业生计。我个人来说是比较走运的,在每个阶段都在做比较火的技能,其时更多的是凭着自己的爱好和直觉在挑选技能类型。现在回过头来看我觉得需求从下面 3 个大的纬度来评价一项技能是否值得学习。

1、技能深度
2、生态广度
3、进化才能

扎心!天天写代码,方向真的对吗?

01 技能深度

技能深度是指这项技能的根基是否厚实,护城河是否够宽够深,是否很简略被其他技能所代替。浅显的来说便是这项技能是否处理了其他技能所不能处理的有重要价值的问题。这里有两个关键:

1、这个问题没有人能解,是这项技能首要处理了这个问题。
2、处理这个问题能够带来严重价值。

拿我作业生计开端阶段学习的 Hadoop 为例。其时 Hadoop 刚出来的时分是一项革命性的技能,由于其时除了 Google 声称自己内部有一套 GFS 和 MapReduce 体系外,业界其他公司都没有一套完好的海量数据处理方案。而跟着互联网技能的开展,数据量日积月累,处理海量数据的才能火烧眉毛。Hadoop 的诞生正好处理了这一当务之急。

跟着技能的开展, Hadoop 的处理海量数据才能的优势渐渐被人习气,相反 Hadoop 存在的缺点被人不断诟病(功用差,MapReduce 编写杂乱等等)。而这时分Spark应运而生,处理了 Hadoop MapReduce 核算引擎的恶疾。Spark 远超过 Hadoop 的核算功用以及极端高雅简略的 API 投合了其时用户的需求,受到了广阔大数据工程师的热捧。

现在我在阿里巴巴从事的是关于 Flink 的研制作业,首要原因是我看到了工业界对实时性的需求以及 Flink 在实时核算这个范畴的霸主位置。之前大数据遇到的最大应战在于数据规划大(所以咱们会称之为“大数据”),经过工业界多年的尽力和实践,规划大这个问题根本现已处理了。接下来几年,更大的应战在于速度,也便是实时性。而大数据的实时性并不是指简略的传输数据或许处理数据的实时性,而是从端到端的实时,任何一个过程速度慢了,就影响整个大数据体系的实时性。

在 Flink 看来, Everything is stream 。Flink 的以 Stream 为中心的架构是业界绝无仅有的,由此而发生的功用优越,高扩展性,端到端 Exactly Once 等特性,更是使得 Flink 在流核算范畴是名副其实的王者。

现在干流的流核算引擎有 3 个:Flink、Storm 和 SparkStreaming 。

扎心!天天写代码,方向真的对吗?

注:Spark Streaming 只能挑选查找字词,理论上这样的比照是不谨慎的。但作为趋势,咱们更重视的是其改变曲线,实践影响应该不大。

从上面的 Google trends 曲线能够看出,Flink 处在一个快速增长期, Storm 的热度在逐年下降,而 Spark Streaming 简直进入了渠道期。这就证明了 Flink 在流核算范畴的根基之深,现在来看还没有谁能够逾越 Flink 在流核算范畴的霸主位置。

02 生态广度

一项技能只要技能深度是不行的,由于一项技能只能专心于做好一件作业,假如要处理实践生活中的杂乱问题,必定要和其他技能整合联动,这就要求这项技能具有满足宽的生态广度。生态的广度有 2 个纬度能够衡量:

1、上下游生态。上下游生态指从数据流的视点来说的数据上下游。
2、笔直范畴生态。笔直范畴生态是指某个细分范畴或许运用场景的整合。

扎心!天天写代码,方向真的对吗?

当 Hadoop 刚出来的时分只要 2 个根本的组件:HDFS 和 MapReduce ,别离处理了海量存储和分布式核算的问题。但跟着开展,需求处理的问题越来越杂乱,HDFS 和 MapReduce 现已不能很便利的处理一些杂乱问题,这时分 Hadoop 的其他生态项目应运而生,比方 Pig,Hive,HBase 等等从笔直范畴生态这个视点处理了 Hadoop 不简略或许不能处理的问题。

Spark 亦是如此,一开端的 Spark 是要替换本来的 MapReduce 核算引擎,后来 Spark 开展了各种言语接口,各种上层结构,比方 Spark SQL,Spark Structured Streaming,MLlib,GraphX 等等,大大丰厚了 Spark 的运用场景,扩展了Spark的笔直范畴生态。Spark 对各种 Data Source 的支撑,更是让 Spark 这个核算引擎和存储结成了联盟,建立了强壮的上下游生态体系,为端到端的处理方案奠定了根底。

我现在做的 Flink 项目的生态依然处于起步阶段,其时我参加阿里巴巴正不只仅是看到了 Flink 作为流核算引擎的霸主位置,更是由于看到了 Flink 生态的时机。咱们假如从我的作业生计来看,会发现少许改变,我在从一开端专心于大数据的中心结构层渐渐在往周边生态项目开展。一个首要的原因是我对整个大数据职业的判别:大数据上半场战役会集在底层结构,现在现已挨近结尾,未来的底层大数据生态圈中将不再有那么多的新的技能和结构,每个细分范畴都将优胜劣汰,走向老练,愈加会集化。下半场战役的要点讲从底层走向上层,走向生态。之前的大数据立异更倾向于 IAAS 和 PAAS ,未来你将看到更多 SAAS 类型的大数据产品和立异。

扎心!天天写代码,方向真的对吗?

每次谈到大数据的生态,我都拿出上面这张图。这张图根本上把你日常需求处理的大数据场景都包含进来。从最左面的数据生产者,到数据搜集,数据处理,然后再到数据运用(BI + AI)。你会发现 Flink 能够运用在每一个过程。不只涉及到大数据,也涉及到 AI ,可是 Flink 的强项在于流核算处理,在其他范畴的生态仍在起步阶段,我个人正在做的作业便是完善 Flink 在上面这张图上端到端的才能。

03 进化才能

一项技能假如技能深度和生态广度都没有问题,那么至少阐明这项技能在当下是值得学习的。可是出资一项技能还需求从时刻这个纬度上考量。你必定不期望自己学习的技能很快就被筛选,每年都要去学习一项新技能。所以一项值得出资学习的技能必定需求具有耐久的进化才能。

我开端学的 Hadoop 到现在现已 10 多年了,现在依然被广泛运用着。尽管现在有许多公有云厂商在抢占 Hadoop 的商场,但你不得不供认假如一家公司要建立一个大数据部分,榜首件事恐怕便是建一个 Hadoop 集群吧。当咱们现在议论 Hadoop 的时分,他现已不是最初的 Hadoop 了,他更多的是 Hadoop 生态圈的总称。咱们有空能够看看 Cloudera CPO Arun 的这篇文章【1】,我对其间的观念十分认同。

【1】:
https://medium.com/@acmurthy/hadoop-is-dead-long-live-hadoop-f22069b264ac

Spark 项目就更不必多说了。Spark 经过 14,15 年迸发,现在现已进入平稳期。可是 Spark 仍在进化,仍在拥抱改变。Spark on K8s 便是 Spark 拥抱云原生的最好佐证。现在 Spark 社区炙手可热的Delta,MLFlow 更是 Spark 的强壮的进化才能的佐证。现在的 Spark 也不只仅是当年要替代 MapReduce 的那个 Spark ,更多是一个适用于多种场景的通用核算引擎。

我从 18 年参加阿里巴巴到现在差不多 1 年半时刻,在这一年半的时刻了,我正好见证了 Flink 的进化才能。

首要 Flink 经过几个大版别的发布,融入了 Blink 的大部分功用,将 Flink SQL 的才能提升了一大截。

其次 Flink 对 K8s 的支撑,对 Python 的支撑,对 AI 的支撑都在向人们证明这Flink本身强壮的进化才能。

小 Tips

除了以上的 3 大维度,在这里我还想共享下我在评价一项新技能时分的一些小技巧。

1、运用 Google trends 。Google trends 能很好的反映一项技能的开展势头,上面说到的趋势图很好的比较了 3 大流核算引擎 Flink , Spark Streaming 和 Storm ,咱们不难得出结论:Flink 是流核算范畴的王者。

2、检查 GitHub 上的awesome。一项技能受欢迎的一个目标是 GitHub 上的 awesome list,你能够看看这个 awesome list 的 GitHub star 数。此外你能够抽一个周末的时刻看看这个 awesome list 上的内容,由于上面根本上是关于这项技能的精华内容,经过这些内容你大致能够判别出这项技能的价值。

3、看看技能网站上是否有一些技能布道者为这项技能背书(我个人常常会看medium.com)。技能圈里一般有这样一群人,他们对技能很执着,也很有档次。假如一项技能真的很好,那么就会有技能布道者无偿的为这项技能背书,共享怎么这项技能的运用心得。

04 总结

每个人的时刻都是有限的,在有限的时刻里挑选一项值得投入的技能会变得尤为重要。

以上是我对怎么评价一项技能是否值得学习的一些考虑,也算是对我自己工作生计在技能选型方面的一个小小的总结和回忆,期望我的这些考虑能对咱们的作业生计有所协助。

作者介绍:

章剑锋(简锋),开源界老兵,Github ID:@zjffdu,Apache Member,曾上任于 Hortonworks,现在在阿里巴巴核算渠道工作部任高档技能专家,并一起担任 Apache Tez、Livy 、Zeppelin 三个开源项目的 PMC ,以及 Apache Pig 的 Committer。有幸很早就触摸了大数据和开源,期望能够在开源范畴为大数据和数据科学做点奉献。