大数据工程师需要掌握哪些技能?

作为一名大数据工程师,你至少应该具备以下技能:

A JVM语言:目前JVM语言类在大数据生态中的比重非常大,说它某种程度上是垄断也不为过。这里推荐你学习Java或者Scala。至于Clojure之类的语言,入门不容易,但是不建议你使用。另外,现在是“母亲对孩子很珍贵”的时代,一个大数据框架会带来其编程语言的普及,比如Docker to Go,Kafka to Scala。所以我建议你至少要精通一门JVM语言。值得一提的是,我们必须了解这种语言的多线程模型和内存模型。很多大数据框架的处理模式其实和语言层面的多线程处理模型差不多,只是大数据框架把它们扩展到了多机分布式层面。

计算处理框架:严格来说,这分为离线批处理和流式处理。流式是未来的趋势,建议你学学。实际上离线批处理已经快过时了,其批处理思想无法处理无限数据集,所以应用范围日益缩小。事实上,Google已经在公司内部正式放弃了以MapReduce为代表的离线处理。所以想学大数据工程,掌握一个实时流处理框架是很有必要的。目前主流的框架有:Apache Samza、Apache Storm、Apache Spark Streaming和近年来风头正劲的Apache Flink。当然,Apache Kafka也推出了自己的流处理框架:Kafka Streams。

分布式存储框架:虽然MapReduce有些过时,但Hadoop的另一个基石HDFS仍然强大,它是开源社区中最受欢迎的分布式存储。你绝对应该花时间去学习。如果想深入研究,还必须阅读Google的GFS论文([URL =]/media/research . Google . com/en//archive/GFS-sosp 2003 . pdf[/URL])。当然,开源世界里有很多分布式存储,中国阿里巴巴的OceanBase也是很优秀的一个。

资源调度框架:Docker在过去的一两年里大受欢迎。每个公司都在努力开发基于Docker的容器解决方案。最著名的开源容器调度框架是K8S,但它也因Hadoop的YARN和Apache Mesos而闻名。后两者不仅可以调度集装箱集群,还可以调度非集装箱集群,值得借鉴。

分布式协调框架:在所有主流的大数据分布式框架中都有一些通用的功能需要实现,比如服务发现、领袖选举、分布式锁、KV存储等等。这些功能也催生了分布式协调框架的发展。最老最有名的是Apache Zookeeper,还有一些新的包括Consul,etcd等等。学习大数据工程,分布式协调框架是不可忽视的,某种程度上需要深入了解。

KV数据库:memcache和Redis比较典型,尤其是Redis发展很快。其简洁的API设计和高性能的TPS越来越受到用户的青睐。就算不学大数据,学Redis也是有好处的。

列存储数据库:我花了很长时间研究Oracle,但不得不承认关系型数据库已经逐渐淡出人们的视野,rdbms的替代品太多了。针对行存储不适合大数据即席查询的缺点,人们开发了列存储,典型的列存储数据库是开源社区的HBASE。实际上,上述存储的概念也是来自Google的一篇论文:Google BigTable。有兴趣的话,最好读一下:

消息队列:作为大数据工程处理中“削峰填谷”的主要系统,消息队列必不可少。目前该领域有很多解决方案,包括ActiveMQ和Kafka。国内阿里也开放了RocketMQ。其中阿帕奇卡夫卡是最好的。卡夫卡的很多设计思想特别适合分布式的流数据处理。难怪《卡夫卡》的原著作者杰伊·克雷普斯是实时流媒体的顶级大神。