现阶段大数据如火如荼,不少人想要学习大数据,可是却不了解大数据,也不知道该从哪开始学起的同窗,但愿这篇文章可以帮到大家。
java
这些是基本功,刚开始也不可能学的很精通,最起码要对linux中的一些基本的命令混个脸熟,后面学习各类框架的时候都会用到,用多了就熟悉了。javase的话建议主要看面向对象,集合,io,多线程,以及jdbc操做便可。mysql的话要熟悉最基础的增删改查。
mysql
zookeeper是一个分布式应用程序协服务,通常为分布式应用提供一致性服务,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。中文名称是动物园的意思,由于目前的大数据框架的图标不少都是动物的形状,因此zookeeper其实就是能够管理不少大数据框架的。针对这个框架,主要掌握如何搭建单节点和集群,以及掌握如何在zkcli客户端下对zookeeper的节点进行增删改查操做便可。想要深刻的话能够研究一下zookeeper的Paxos算法。
linux
目前企业中通常都是用hadoop2.x的版本了,因此就没有必要再去学hadoop1.x版本了,hadoop2.x主要包含三大块:程序员
hive是一个数据仓库,全部的数据都是存储在hdfs上的,具体【数据仓库和数据库】的区别你们能够去网上搜索一下,有不少介绍。其实若是对mysql的使用比较熟悉的话,使用hive也就简单不少了,使用hive主要是写hql,hql是hive的sql语言,很是相似于mysql数据库的sql,后续学习hive的时候主要理解一些hive的语法特性便可。其实hive在执行hql,底层在执行的时候仍是执行的mapredce程序。
注意:其实hive自己是很强大的,数据仓库的设计在工做中也是很重要的,可是前期学习的时候,主要先学会如何使用就行了。后期能够好好研究一下hive。
面试
hbase是一个在国内很火的nosql 数据库,是一个key-value类型的数据库,底层的数据存储在hdfs上。在学习hbase的时候主要掌握 row-key的设计,以及列簇的设计。要注意一个特色就是,hbase基于rowkey查询效率很快,能够达到秒级查询,可是基于列簇中的列进行查询,特别是组合查询的时候,若是数据量很大的话,查询性能会不好。
redis
一般学到这里就能够找一两个离线项目练练手了,把上面学习的知识都串一下,加深理解,让本身对于各个组件之间的配合使用有一个整体的了解(这点很是重要)。关于这种项目网上、淘宝上有不少资源。
算法
redis也是一个nosql 数据库和key-value类型的数据库,可是这个数据库是纯基于内存的,也就是redis数据库中的数据都是存储在内存中的,因此它的一个特色就是适用于快速读写的应用场景,读写能够达到10W次/秒,可是不适合存储海量数据,毕竟机器的内存是有限的,固然,redis也支持集群,也能够存储大量数据。在学习redis的时候主要掌握string,list,set,sortedset,hashmap这几种数据类型的区别以及使用,还有pipeline管道,这个在批量入库数据的时候是很是有用的,以及transaction事务功能。
sql
flume是一个日志采集工具,这个仍是比较经常使用的,最多见的就是采集应用产生的日志文件中的数据。通常有两个流程,一个是flume采集数据存储到kafka中,为了后面使用storm或者sparkstreaming进行实时处理。另外一个流程是flume采集的数据落盘到hdfs上,为了后期使用hadoop或者spark进行离线处理。在学习flume的时候其实主要就是学会看flume官网的文档,学习各类组建的配置参数,由于使用flume就是写各类的配置。
数据库
kafka 是一个很是优秀的消息队列,几乎全部作大数据的公司都会使用到Kafka,在工做中经常使用于做为一个中间缓冲层,例如,flume->kafka->storm/sparkstreaming。学习kafka主要掌握topic,partition,replicate等的概念和原理。若是有时间的话能够好好研究Kafka的源码,至关重要!
编程
Scala是一门基于JVM的编程语言,不只支持面向对象编程,并且还支持面向过程,具有了Java的全部特性,同时本身还支持强大的函数式编程,Spark和Kafka都是使用Scala编写,这也是咱们须要学习它的一大缘由,由于想要深刻理解Spark和Kafka,必需要剖析其源码。能够预见将来Scala语言将在大数据领域大放光彩。
Spark 通过前几年的迅速发展,现在已经成了不少企业的首选大数据计算框架,也发展成了一个生态圈,spark里面包含不少技术,spark core,spark steaming,spark mlib,spark graphx。
spark生态圈里面包含的有离线处理spark core,和实时处理spark streaming,在这里须要注意一下,storm和spark streaming ,两个都是实时处理框架,可是主要区别是:storm是真正的一条一条的处理,而spark streaming 是一批一批的处理。
spark中包含不少框架,在刚开始学习的时候主要学习spark core和spark streaming便可。这个通常搞大数据的都会用到。有时间的话能够好好读读Spark的源码,提高本身的理解深度。spark mlib和spark graphx 能够等后期工做须要或者有时间了在研究便可。
Spark学习完后必定要找几个项目练手,最好是一个离线项目一个实时项目,好让你对于整个开发流程有了必定的认识。
至此你应该具有了做为初级大数据开发工程师的水平,开始找工做去吧!
注意:对于上面的各项技术而言,要挑一到两个深刻剖析其核心原理,研读其源码,这样在面试中会更有竞争力。
Git对于程序员来讲绝对是一门利器,不只能够方便管理本身的代码,并且还能够进行多人协助开发,早学早受用!
GitHub也是个好东西啊,这上面有不少不少优秀的开源项目,还有不少你意想不到的实用软件和资料,是程序员的大宝藏啊,你能够为上面的开源项目贡献本身的代码,也能够建立上传本身的项目代码,这都是之后面试中的加分项。把刷朋友圈的时间用来刷GitHub吧,相信你会发现另外一个世界。
Markdown是一种可使用普通文本编辑器编写的标记语言,经过简单的标记语法,它可使普通文本内容具备必定的格式。使用了Markdown后你再不须要为文章的样式而耗费时间了,专一于内容的创做,不得不说Markdown让我爱上了写做(推荐一款马克飞象编辑器,能够同步印象笔记,写出来的东西有一种简洁美,超级喜欢)!
咋一看你估计有点蒙,但确实这是一项很是有用的技能,在学习的时候把手机开启免打扰,什么微信、短信、电话(列个白名单)通通屏蔽,再找个不容易受打扰的环境,瞬间学习效率提高了好几倍,你最宝贵的东西就是你的注意力,不要让他轻易的被他人收割!
这项技能的前提就是你得认同你的时间比金钱更重要,我一直以为买书是一件性价比高到离谱的事情,由于别人几个月甚至几年的时间被你花几十块钱就买过来了,而对于做者而言也不亏,由于他的时间能够被出售N屡次,因此这是一个共赢的好事情。对于付费课程来讲也是同样的道理,好的课程可让你节省大量的时间,而这节省出来的时间在你心目中值多少钱呢?