天天看点

如何更有效率的去学习大数据!

这段时间有很多人问小编如何学习大数据? 

既然这么多人问我,那就写篇文章,告诉大家,当然写这篇文章也是经过思考的,不是提笔就写,先介绍下我的基本情况,第一小编本人只是大数据中学习的小学生而已,不是什么大牛,也不是什么技术牛逼的神人,如果贸然动笔肯定会贻笑大方;另一方面大数据它本身领域博大精深,涵盖之广,技术种类之多确实很难用一篇文章说明。

文章的目的就是希望给所有学习大数据规划一条比较清晰的学习路线,能够帮助这些学习者开启大数据学习之旅。面对大数据这种领域,技术肯定绚丽繁复,每一个大数据学习者都必须根据自己的情况制定学习制度。

当今程序员行业什么最赚钱或者说什么最火?ABC无出其右。可以理解为ABC三者,AI + Big Data + Cloud,便是人工智能、大数据和云计算。各自领域都有行业领导者技术牛逼在引领前行,那么今天小编就带大家来讨论下大数据这个方向。

大数据,英文名为Big Data,关于它的定义很多,大家也可以百度,我在这里就不说了。最权威的必须是IBM的定义,大家可以自行查阅。本篇文章是写如何学习大数据,所以咱们们就要定义大数据领域内的不同角色。这样大家才能根据自身情况对号入座,在大数据学习的路上开启学习之路。

如何更有效率的去学习大数据!

角色划分:

小编根据当下大数据行业分为两类角色:

1、大数据工程

2、大数据分析

这两种角色相互产生交集又独立运作,如果没有大数据超级工程,大数据分析这个角色便无任何意义;没有大数据分析,大数据工程也没有存在的意义和理由。这就相当于结婚和恋爱,恋爱的最终是目标就是结婚,不以结婚为目的的恋爱就是是耍流氓,哈哈,道理都一样。

大数据工程需要的是处理数据的定义、收集、计算与保存工作,所以大数据建设者们在设计和部署这样的系统时首先考虑的应该是数据高可用的问题,这段话可以理解为大数据工程系统需要随时地为分析系统提供数据服务;

而大数据分析角色的定位于如何利用数据,可以理解成从大数据工程系统中接收到的数据之后,如何为企业提供数据分析,并且能够帮助到企业或者公司进行业务改善和提升服务水平的目的,因此对于大数据分析师来说,首要解决的问题是发现并且利用数据的价值,具体包括:趋势分析、模型建立以及预测分析等。

如何更有效率的去学习大数据!

我们属于哪种角色?

前面大家跟随小编了解了大数据领域内的角色,下面那咱们就要对号入座了。这样才能更好的开始大数据学习。根据自身经验,我把它分为三个级别:

  • ·菜鸟
  • ·有一定经验的工程师
  • ·资深专家

根据上面的三个级别, 确定自己的定位后,那就定位到大数据角色,下面是一些基本法则:

·如果具有良好的编程基础,也有过深入了解计算机的交互和互联网底层技术原理,但是数学和统计学掌握不熟悉,所以大数据工程可能就是你以后的学习的方向

· 如果有一定的编程基础(掌握高级语言,例如:python),同时又有牛逼的数学功底,那么大数据分析就是你努力发展的方向。

如何更有效率的去学习大数据!

大数据学习路线:

先别管你是属于以上哪类角色,大数据理论基础知识是必须要掌握的,他们只是包括但是不限于:

  • 数据分片与路由:挑一个典型的分区算法去学习,比如一致性哈希算法
  • 备份机制与一致性:
  • ·学习CAP理论
  • ·幂等性:现在很多的分布式系统状态管理的基石
  • ·各种一致性模型,例如:强一致性、弱一致性、最终一致
  • ·备份机制:主从的叫法已经不怎么流行了,当前更cool的叫法是Leader-Follower模式
  • ·共识协议:在咱们国家通常翻译成一致性协议。只要学习常见的几种就可以:Paxos或者Raft
  • ·算法和数据结构
  • ·LSM:学习和B+树的区别以及优势。
  • ·压缩算法:1,找一个主流的压缩算法进行了解,例如Snappy, LZ4。
  • ·Bloom Filter过滤器

不管是学习大数据工程还是大数据分析,上面描述的理论知识都是必要掌握的,因为它们是设计很多分布式系统必备的技能。下面我们就针对不同的角色设计不同的学习路线:

如何更有效率的去学习大数据!

合格的大数据工程师:

当一名合格的大数据工程师,至少要掌握以下技能:

  • 一门JVM系语言 ,建议先学习Java或Scala
  • ·计算处理框架:严格来说,这分为离线批处理和流式处理,建议学习Flink、Spark Streaming或Kafka Streams中的一个
  • ·分布式存储框架:建议学习HDFS
  • ·资源调度框架:建议学习YARN
  • ·分布式协调框架:建议学习Zookeeper——太多大数据框架都需要它了,比如Kafka, Storm, HBase等
  • ·KV数据库:典型的就是memcache和Redis了,特别是Redis简直是发展神速,建议学习Redis,如果C语言功底好的,最好熟读源码,反正源码也不多。
  • 列式存储数据库:建议学习HBASE,这是目前应用最广泛的开源列式存储
  • ·消息队列:大数据工程处理中消息队列作为“削峰填谷”的主力系统是必不可少的,当前该领域内的解决方案有很多,包括ActiveMQ,Kafka等。建议学习Kafka,不仅仅好找工作,还能触类旁通进一步理解基于备份日志方式的数据处理范型
如何更有效率的去学习大数据!

大数据分析师:

要想成为一个数据科学家,您至少要掌握以下技能:

  • 数学功底:微积分是严格要掌握的。一元微积分是必须要熟练掌握并使用的。线性代数要精通,矩阵的运算、向量空间、秩等概念。
  • ·回顾同济版《高等数学》,有能力的可以去Coursea学习宾夕法尼亚大学的微积分课程
  • ·推荐学习Strang的线性代数:《Introduction to Linear Algebra》
  • 数理统计:概率论和各种统计学方法要做到基本掌握,找一本《概率论》重新学习下
  • 交互式数据分析框架:这里指的是Apache Hive或Apache Kylin这样的分析交互框架,首先学习Hive,有时间的话了解一下Kylin以及背后的数据挖掘思想
  • ·机器学习框架:小编还是建议可以从机器学习算法的原理来进行学习,看到机器学习的框架,我觉得大家应该能想到很多种, 比如TensorFlow、Caffe8、Keras9、CNTK10、Torch711等,这里领衔的是TensorFlow。小编建议大家选取其中的一个框架进行学习。
  • ·Udacity的课程是非常入门级的机器学习课程。
  • ·目前机器学习领域最NB的入门课程:吴恩达博士的Machine Learning
  • ·学习Python的scikit-learn
  • ·吴恩达的新书:《Machine Learning Yearning》
  • ·上述都了解了可以尝试挑战Kaggle。
  • 我要推荐下我自己建的大数据开发学习群:119599574,专注大数据分析方法,大数据编程,大数据仓库,大数据案例,人工智能,数据挖掘都是纯干货分享都是学大数据开发的,如果你正在学习大数据,欢迎初学和进阶中的小伙伴。

继续阅读