云计算的应用无处不在,学术云能为大学研究人员、教授和学生提供计算资源,让他们以及外面的研究人员/开发人员可以更轻松、快速地接入所需资源集群,为自己的研究工作服务;而开发/测试云可使开发人员以前所未有的方便及更低的成本、更短的周期,构建、升级和测试应用程序。
游戏云和社交媒体云在防火墙后面构建一个云平台,在享受灵活性和规模的同时,能够有更大的掌控能力和安全性;在提供BYO移动服务方面,云计算也是一个非常好的架构,可以促进应用在内部或向外部客户的交付;另外,云计算已经成为目前灾难恢复的一个重要模式,它不仅可以建立故障备份点,还保持了“随增长付费”的服务优势,这样企业可以更快速地响应商机,同时保证高回报。
此外,云计算基础架构还可以帮助应对不同行业的变化。有些变化是由于行业特点而产生,如零售业在节假日销售旺季会出现销售的突飞猛进。当然,行业变化多种多样,有些是周期性、可预测的, 如世界杯或奥运会,还有些是不可预测的,如重要新闻事件或博客站点。在这种情况下,需要针对预期的高峰情况构建基础架构。而在平时,这些容量大部分都被闲置,云计算能够让这些已经部署的基础架构产生更大的效益。
云计算大数据工程师而言,您至少要掌握以下技能:
linux基础
因为大数据体系,基本都是开源软件,这些开源软件都是在开源的linux系统上运行的,所以你必须会基本的linux操作,比如用户管理,权限,shell编程之类的一门JVM系语言:
当前大数据生态JVM系语言类的比重极大,某种程度上说是垄断也不为过。这里我推荐大家学习Java或Scala,至于Clojure这样的语言上手不易,其实并不推荐大家使用。另外,如今是“母以子贵”的年代,某个大数据框架会带火它的编程语言的流行,比如Docker之于Go、Kafka之于Scala。
因此这里建议您至少要精通一门JVM系的语言。值得一提的,一定要弄懂这门语言的多线程模型和内存模型,很多大数据框架的处理模式其实在语言层面和多线程处理模型是类似的,只是大数据框架把它们引申到了多机分布式这个层面。
建议:学习Java或Scala
计算处理框架:
严格来说,这分为离线批处理和流式处理。流式处理是未来的趋势,建议大家一定要去学习;而离线批处理其实已经快过时了,它的分批处理思想无法处理无穷数据集,因此其适用范围日益缩校事实上,Google已经在公司内部正式废弃了以MapReduce为代表的离线处理。
因此如果要学习大数据工程,掌握一门实时流式处理框架是必须的。当下主流的框架包括:Apache Samza, Apache Storm, Apache Spark Streaming以及最近一年风头正劲的Apache Flink。当然Apache Kafka也推出了它自己的流式处理框架:Kafka Streams
建议:学习Flink、Spark Streaming或Kafka Streams中的一个。
分布式存储框架:
虽说MapReduce有些过时了,但Hadoop的另一个基石HDFS依然坚挺,并且是开源社区最受欢迎的分布式存储,绝对您花时间去学习。
资源调度框架:
Docker可是整整火了最近一两年。各个公司都在发力基于Docker的容器解决方案,最有名的开源容器调度框架就是K8S了,但同样著名的还有Hadoop的YARN和Apache Mesos。后两者不仅可以调度容器集群,还可以调度非容器集群,非常值得我们学习。
分布式协调框架:
有一些通用的功能在所有主流大数据分布式框架中都需要实现,比如服务发现、领导者选举、分布式锁、KV存储等。这些功能也就催生了分布式协调框架的发展。最古老也是最有名的当属Apache Zookeeper了,新一些的包括Consul,etcd等。学习大数据工程,分布式协调框架是不能不了解的, 某种程度上还要深入了解。
列式存储数据库:
曾经花了很长的时间学习Oracle,但不得不承认当下关系型数据库已经慢慢地淡出了人们的视野,有太多的方案可以替代rdbms了。人们针对行式存储不适用于大数据ad-hoc查询这种弊端开发出了列式存储,典型的列式存储数据库就是开源社区的HBASE。
消息队列:
大数据工程处理中消息队列作为“削峰填谷”的主力系统是必不可少的,当前该领域内的解决方案有很多,包括ActiveMQ,Kafka等。国内阿里也开源了RocketMQ。这其中的翘楚当属Apache Kafka了。Kafka的很多设计思想都特别契合分布流式数据处理的设计理念。这也难怪,Kafka的原作者Jay Kreps可是当今实时流式处理方面的顶级大神。
建议:学习Kafka,不仅仅好找工作,还能触类旁通进一步理解基于备份日志方式的数据处理范型。
本文地址:http://www.45fan.com/a/question/100259.html