大数据学习路线那个最好

JAVA 大数据学习路线 - qq_的博客 - CSDN博客
JAVA 大数据学习路线
多线程 (多了解java.util.conconrrent包的类)集合框架IO反射(如何实现根据传入的Class实例来构造对象、实现两个类中相同名称的实例域之间的自动赋值 。。)泛型( 如何使用,如何实现常用类的参数类型)。设计模式(暂时不建议看,看了也是浪费时间。等有一定的代码、项目经验时候,再去研读。多跟团队里面的牛人请教,重在实践。想要用好,至少得看3遍-分不同时期)NIO (相比传统的IO,性能有很大提升。目前用的比较多的是各种Buffer类)
工具(必备)
maven(项目构建与依赖管理)git (版本控制)
别人造好的轮子
Guava(Google的java工具类)
好用的开源框架
joda(java时间处理,已经加到java8中,即java8以后建议用最新的时间类,java8之前最好用的joda)common-pool2(抽象的对象池实现)dbcp(建立在common-pool2之上的java数据库连接池实现)log4j(抽象的日志框架,实现层我们用的logback)json (fasterxml.jackson 不仅仅可以序列化、反序列化对象。 一些好用的注解,可以解决很棘手的问题)接口要用的技术 (mybatis,spring,springboot等)
大数据相关技术:
序列化机制(Msgpack,protobuf,Avro等)消息队列 (redis、kafka)Hadoop (基础中的基础,几乎整个大数据的生态圈都与之有关)hbase (Hadoop数据仓库,实现列式存储)hive (后台封装MapReduce,提供类SQL查询)impala (基于内存,提供类SQL查询。 较快)parquet (优化的列式存储格式)Solr/ES (提供全文搜索)spark (性能可观)
相关文章推荐微信公众号AbeggCenter
Copyright &
云何数据网 - 天津云何数据处理有限公司 津ICP备号-1你的大数据学习路线-KAFKA技术分享
你的大数据学习路线作者:KAFKA技术分享发表时间 : 引言最近有很多人问我如何学习大数据?我也是思考了很多时日才动笔写下此文。一方面我自己还只是大数据学习中的一个小学生,贸然动笔怕贻笑大方;另一方面大数据本身领域博大精深,其涵盖领域之广技术种类之多确实很难用一篇文章囊括。怎奈“下雨天打孩子,闲着也是闲着”,况笔者一直坚持写技术类的博客,今天也请允许我写一点务虚类的东西吧。 本文的目的是希望给所有大数据初学者规划一条比较清晰的学习路线,帮助它们开启大数据学习之旅。鉴于大数据领域内的技术绚丽繁复,每位大数据初学者都应该根据自己的实际情况制定专属的学习路径。
要说当下IT行业什么最火?ABC无出其右。所谓ABC者,AI + Big Data + Cloud也,即人工智能、大数据和云计算(云平台)。每个领域目前都有行业领袖在引领前行,今天我们来讨论下大数据这个方向。
大数据,即Big Data,关于它的定义很多,我这里不再赘述了。最权威的莫属IBM的定义,读者可以自行查阅。既然本文关注如何学习大数据,那么我们首先就要定义大数据领域内的不同角色设定。这样各位才能根据自身实际情况找准自己的定位从而开启学习过程。角色
以我的愚见,当下大数据行业有两类角色:大数据工程大数据分析 这两类角色相互依存但又独立运作,何意?没有大数据工程,大数据分析便无从谈起;但倘若没有大数据分析,我也实在想不出大数据工程存在的理由。这就类似于结婚和谈恋爱——恋爱的目的是为了结婚,且不以结婚为目的的谈恋爱都是耍流氓。
具体来说,大数据工程需要解决数据的定义、收集、计算与保存的工作,因此大数据工程师们在设计和部署这样的系统时首要考虑的是数据高可用的问题,即大数据工程系统需要实时地为下游业务系统或分析系统提供数据服务;而大数据分析角色定位于如何利用数据——即从大数据工程系统中接收到数据之后如何为企业或组织提供有产出的数据分析,并且确实能够帮助到公司进行业务改善或提升服务水平,所以对于大数据分析师来说,他们首要解决的问题是发现并利用数据的价值,具体可能包括:趋势分析、模型建立以及预测分析等。
简单总结一下,大数据工程角色需要考虑数据的收集、计算(或是处理)和保存;大数据分析角色则是执行数据的高级计算。我们属于哪种角色?既然我们了解了大数据领域内的角色分类,下面自然就需要“对号入座”确定自己的定位,这样才能有的放矢地开始大数据学习。在考虑这个问题时,我们需要参考两方面的因素:专业知识背景行业经验
这里的专业知识背景不是指代学历、院校这种背景,而是你对某些IT技术的了解程度。即使你不是计算机专业出身,只要你对C语言有一腔热血,怕是C之父Dennis Ritchie也不敢小瞧你。因此,这里的专业知识其实就只有两个:计算机专业知识,比如操作系统,编程语言,计算机运行原理等数学知识,这里指代的是高等数学,比如微积分、概率统计、线性代数和离散数学等, 不是x * x + y * y = 1画出来是什么图形这样的数学
而行业经验指的是你相关领域内的工作经验,具体可以分为三档:菜鸟有一定经验的工程师资深专家——现在在大数据领域有个更cool的名字:数据科学家,比如前百度首席数据科学家:吴恩达博士 Okay,现在我们就可以根据上面的分类来定义自己的角色。比如拿笔者来说,我对自己的定位是:“我是一个计算机专业毕业的工程师,有一定数学基础(特别是在微积分和线性代数方面),但数理统计和概率论部分是我的弱项。”另外最好别打肿脸充胖子,如果之前没什么经验,承认自己是菜鸟也没事,关键是找准自己的定位。
确定自己的定位后,我们需要对应到特定的大数据角色,以下是一些基本法则:如果您具有良好的编程基础且深入了解计算机的交互方式以及互联网底层技术原理,但数学和统计学掌握不深,那么大数据工程可能是您今后学习的方向如果你有一定的编程基础(掌握一些高级语言,如Python等)同时又很强的数学功底,那么大数据分析是您今天努力的方向学习路线不管您属于以上哪种角色,有一些大数据理论知识是您必须要掌握的,他们包括但不限于:数据分片与路由:挑一个典型的分区算法去学习,比如一致性哈希算法(https://en.wikipedia.org/wiki/Consistent_hashing)备份机制与一致性:学习国内被奉为“圣经”但在国外也就一般的CAP理论(https://en.wikipedia.org/wiki/CAP_theorem)幂等性(Idempotent):很多分布式系统状态管理的基石//what-is-an-idempotent-function/各种一致性模型:强一致性、弱一致性、最终一致性备份机制:主从的叫法已经不怎么流行了,当前更cool的叫法是Leader-Follower模式共识协议:国内通常翻译成一致性协议(consensus protocol)。学习常见的几种:Paxos和Raft算法和数据结构LSM:学习和B+树的区别以及优势是什么压缩算法:找一个主流的压缩算法进行了解,比如Snappy, LZ4。另外Facebook最近开源了新一代的压缩算法:ZStandard,据说完爆一切主流压缩算法Bloom Filter过滤器:大数据下O(1)的过滤器 无论是学习大数据工程还是大数据分析,这些理论知识都是必要的,因为它们是设计很多分布式系统必备的技能。下面我们就针对不同的角色设计不同的学习路线:大数据工程师对于大数据工程师而言,您至少要掌握以下技能:一门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中的一个熟读Google大神的这篇文章:《The world beyond batch: Streaming 101》,地址是/ideas/the-world-beyond-batch-streaming-101分布式存储框架:虽说MapReduce有些过时了,但Hadoop的另一个基石HDFS依然坚挺,并且是开源社区最受欢迎的分布式存储,绝对您花时间去学习。如果想深入研究的话,Google的GFS论文也是一定要读的(/media//en//archive/gfs-sosp2003.pdf)。当然开源世界中还有很多的分布式存储,国内阿里巴巴的OceanBase也是很优秀的一个。笔者建议:学习HDFS资源调度框架:Docker可是整整火了最近一两年。各个公司都在发力基于Docker的容器解决方案,最有名的开源容器调度框架就是K8S了,但同样著名的还有Hadoop的YARN和Apache Mesos。后两者不仅可以调度容器集群,还可以调度非容器集群,非常值得我们学习。笔者建议:学习YARN分布式协调框架:有一些通用的功能在所有主流大数据分布式框架中都需要实现,比如服务发现、领导者选举、分布式锁、KV存储等。这些功能也就催生了分布式协调框架的发展。最古老也是最有名的当属Apache Zookeeper了,新一些的包括Consul,etcd等。学习大数据工程,分布式协调框架是不能不了解的, 某种程度上还要深入了解。笔者建议:学习Zookeeper——太多大数据框架都需要它了,比如Kafka, Storm, HBase等KV数据库:典型的就是memcache和Redis了,特别是Redis简直是发展神速。其简洁的API设计和高性能的TPS日益得到广大用户的青睐。即使是不学习大数据,学学Redis都是大有裨益的。笔者建议:学习Redis,如果C语言功底好的,最好熟读源码,反正源码也不多列式存储数据库:笔者曾经花了很长的时间学习Oracle,但不得不承认当下关系型数据库已经慢慢地淡出了人们的视野,有太多的方案可以替代rdbms了。人们针对行式存储不适用于大数据ad-hoc查询这种弊端开发出了列式存储,典型的列式存储数据库就是开源社区的HBASE。实际上列式存储的概念也是出自Google的一篇论文:Google BigTable,有兴趣的话大家最好读一下:/media//en//archive/bigtable-osdi06.pdf笔者建议:学习HBASE,这是目前应用最广泛的开源列式存储消息队列:大数据工程处理中消息队列作为“削峰填谷”的主力系统是必不可少的,当前该领域内的解决方案有很多,包括ActiveMQ,Kafka等。国内阿里也开源了RocketMQ。这其中的翘楚当属Apache Kafka了。Kafka的很多设计思想都特别契合分布流式数据处理的设计理念。这也难怪,Kafka的原作者Jay Kreps可是当今实时流式处理方面的顶级大神。笔者建议:学习Kafka,不仅仅好找工作(几乎所有大数据招聘简历都要求会Kafka:-) ),还能触类旁通进一步理解基于备份日志方式的数据处理范型大数据分析师或数据科学家要想成为一个数据科学家,您至少要掌握以下技能:数学功底:微积分是严格要掌握的。不一定要掌握多元微积分,但一元微积分是必须要熟练掌握并使用的。另外线性代数一定要精通,特别是矩阵的运算、向量空间、秩等概念。当前机器学习框架中很多计算都需要用到矩阵的乘法、转置或是求逆。虽然很多框架都直接提供了这样的工具,但我们至少要了解内部的原型原理,比如如何高效判断一个矩阵是否存在逆矩阵并如何计算等。重温同济版《高等数学》,有条件可以去Coursea学习宾夕法尼亚大学的微积分课程推荐学习Strang的线性代数:《Introduction to Linear Algebra》——这是最经典的教材,没有之一!数理统计:概率论和各种统计学方法要做到基本掌握,比如贝叶斯概率如何计算?概率分布是怎么回事?虽不要求精通,但对相关背景和术语一定要了解找一本《概率论》重新学习下交互式数据分析框架:这里并不是指SQL或数据库查询,而是像Apache Hive或Apache Kylin这样的分析交互框架。开源社区中有很多这样类似的框架,可以使用传统的数据分析方式对大数据进行数据分析或数据挖掘。笔者有过使用经验的是Hive和Kylin。不过Hive特别是Hive1是基于MapReduce的,性能并非特别出色,而Kylin采用数据立方体的概念结合星型模型,可以做到很低延时的分析速度,况且Kylin是第一个研发团队主力是中国人的Apache孵化项目,因此日益受到广泛的关注。首先学习Hive,有时间的话了解一下Kylin以及背后的数据挖掘思想机器学习框架:机器学习当前真是火爆宇宙了,人人都提机器学习和AI,但笔者一直认为机器学习恰似几年前的云计算一样,目前虽然火爆,但没有实际的落地项目,可能还需要几年的时间才能逐渐成熟。不过在现在就开始储备机器学习的知识总是没有坏处的。说到机器学习的框架,大家耳熟能详的有很多种, 信手拈来的就包括TensorFlow、Caffe8、Keras9、CNTK10、Torch711等,其中又以TensorFlow领衔。笔者当前建议大家选取其中的一个框架进行学习,但以我对这些框架的了解,这些框架大多很方便地封装了各种机器学习算法提供给用户使用,但对于底层算法的了解其实并没有太多可学习之处。因此笔者还是建议可以从机器学习算法的原理来进行学习,比如:Udacity的课程是非常入门级的机器学习课程,笔者推荐大家订阅这个课程:/courses/ud120目前机器学习领域最NB的入门课程:吴恩达博士的Machine Learning学习Python的scikit-learn库http://scikit-learn.org/stable/找一本书籍来看,国内有周志华的《机器学习》,国内可以期待吴恩达的新书:《Machine Learning Yearning》最后如果你觉得掌握得差不多了,可以尝试挑战Kaggle了:/总结以上就是我对大数据学习路线的一些思考和建议,希望对读者朋友们有所帮助。相关文章猜你喜欢银川发布篮球技巧教学游侠看世界游侠看世界咕噜美国通#统计代码大数据学习路线(自己制定的,从零开始)
<span type="1" blog_id="1744115" userid='
分享到朋友圈
喜欢我的文章,请分享到朋友圈大数据技术学习路线指南大数据技术学习路线指南mengsil百家号  大数据的领域非常广泛,往往使想要开始学习大数据及相关技术的人望而生畏。大数据技术的种类众多,这同样使得初学者难以选择从何处下手。本文将为你开始学习大数据的征程以及在大数据产业领域找到工作指明道路,提供帮助。  如何开始学习大数据?  人们想开始学习大数据的时候,最常问我的问题是,“我应该学Hadoop(hadoop是一款开源软件,主要用于分布式存储和计算,他由HDFS和MapReduce计算框架组成的,他们分别是Google的GFS和MapReduce的开源实现。由于hadoop的易用性和可扩展性,因此成为最近流行的海量数据处理框架。), 分布式计算,Kafka(Kafka是由LinkedIn开发的一个分布式基于发布/订阅的消息系统),NoSQL(泛指非关系型的数据库)还是Spark(Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处)?”  而我通常只有一个答案:“这取决于你究竟想做什么。”  与大数据相关的工作?  (1)大数据系统研发工程师:负责大数据系统研发工作,包括大规模非结构化数据业务模型构建、大数据存储、数据库架构设计以及数据库详细设计、优化数据库构架、解决数据库中心建设设计问题。他们还负责集群的日常运作、系统的监测和配置、Hadoop与其他系统的集成。  (2)大数据应用开发工程师:负责搭建大数据应用平台、开发分析应用程序。他们熟悉工具或算法、编程、包装、优化或者部署不同的MapReduce事务。他们以大数据技术为核心,研发各种基于大数据技术的应用程序及行业解决方案。  (3)大数据分析师:运用算法来解决分析问题,并且从事数据挖掘工作。他们最大的本事就是能够让数据道出真相;此外,他们还拥有某个领域的专长,帮助开发数据产品,推动数据解决方案的不断更新。  (4)数据可视化工程师:具备良好的沟通能力与团队精神,责任心强,拥有优秀的解决问题的能力。他们负责在收集到的高质量数据中,利用图形化的工具及手段的应用,一目了然地揭示数据中的复杂信息,帮助企业更好的进行大数据应用开发,发现大数据背后的巨大财富。  你适合大数据什么方向呢?  现在我们已经了解了行业中可供选择的职业种类,让我们想办法来确定哪个领域适合你。这样,我们才能确定你在这个行业中的位置。通常来说,基于你的教育背景和行业经验可以进行分类。  例1:“我是一名计算机科学毕业生,不过没有坚实的数学技巧。”  你对计算机科学或者数学有兴趣,但是之前没有相关经验,你将被定义为一个新人。  例2:“我是一个计算机科学毕业生,目前正从事数据库开发工作。”  你的兴趣在计算机科学方向,你适合计算机工程师(数据相关工程)的角色。  大数据学习之路  核心是,大部分大数据技术都是用Java或Scala编写的。但是别担心,如果你不想用这些语言编写代码,那么你可以选择Python或者R,因为大部分的大数据技术现在都支持Python和R。  因此,你可以从上述任何一种语言开始。 我建议选择Python或Java。  接下来,你需要熟悉云端工作。 这是因为如果你没有在云端处理大数据,没有人会认真对待。 请尝试在AWS,softlayer或任何其他云端供应商上练习小型数据集。 他们大多数都有一个免费的层次,让学生练习。如果你想的话,你可以暂时跳过此步骤,但请务必在进行任何面试之前在云端工作。  接下来,你需要了解一个分布式文件系统。最流行的分布式文件系统就是Hadoop分布式文件系统。在这个阶段你还可以学习一些你发现与你所在领域相关的NoSQL数据库。本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。mengsil百家号最近更新:简介:分享价值,提供最新信息。作者最新文章相关文章

我要回帖

 

随机推荐