我有java基础,想学习大数据,该怎么开始?以下是我的疑惑 举报 理由 举报 取消 看网上是说先学习Hadoop,但是发现了spark,说是比Hadoop优秀,我很疑惑现在该怎么入手,Hadoop与spark又该学哪个?还是两个都学,先后顺序又是怎么样。希望各位能顺便推荐一些教学视频和中文书籍以及一些学习网站!谢谢了 2017年6月17日 10 条回复 1144 次浏览 Hadoop,Spark,数据
回复 ( 10 )
首先,我先申明:任何以『做大数据好像挣得多』为名学习数据科学相关的内容都是不谨慎,而且难以有回报的。而且,任何『只要学会一两种工具就能做大数据』的想法也都是盲目的,难有成效的。
从目前我遇到过的面试者和看过的简历来看,凡是没有过大数据项目经验的人,简历写出花来都是扯淡。部署一个集群,装一个Hive,HBase什么的根本就不叫大数据(有的公司甚至部署Hadoop只用HDFS,每天处理5GB数据,这是我面过的一个人告诉我的他的工作经验)。一次处理1个TB以下的数据都不叫大数据(我还在权衡,是不是要提高这个量级)。
大数据是建立在数据科学基础上的,对编程、算法,分布式计算、统计学,线性代数,机器学习,系统构架都有比较高的要求。而且要看英文就像看中文一样(这条很重要,我一般对于不积极主动看英文资料的人没有什么太大的期待)。
我的建议是不要管什么Hadoop,Spark。把基础打牢,只要编程技巧和算法精通,能看英文文献,顺便学点概率统计,随便去哪个公司都能应聘大数据的岗位,等有了项目环境,上手Hadoop或者Spark还不是分分钟的事~
更新
======
针对评论,我稍微补充几点:
1、关于没有相关工具的经验,难以找到合适的工作的问题
这不是很正常么?看好招聘的要求,人家要有经验的,你没经验,不是肯定碰壁么!问题是你想做的工作如果是日常使用、维护Hadoop,这不叫做大数据,这叫做运维。结合自己的兴趣和能力,在自己求职的时候为自己定位,才能找到令人满意的工作。
2、关于很多公司数据量不是特别大的问题
这样的公司不是做大数据的,别去。他们不过是跟风,忽悠股东,忽悠媒体的,说不定哪天就把这个部门废了,你自己还啥都没学到。
3、还是关于大数据的『大』的问题
大的几个维度业界通常用4个V来衡量,Volume、Variety、Value、Velocity,也就是体积大、变化大、价值大、速度大。很多工具(包括Hadoop,Spark等)都是为了解决这4个大问题才设计的。你没有满足4V的数据,一是没必要用这种工具;二是即使用了因为没有真实的场景,你也难以理解这其中的难点(好吧,就算是坐运维,部署3台机器和部署1000台机器用的方法和手段都是不同的),你学到的是单机版的Hadoop,生产中真正需要人来解决的问题你都不会遇到。
PS:关于如何开始以及如何提高,我的观点是学好编程,打好基础,数学、英语要牛逼(三本的那位同学,既然起点已经落后是不是要更加努力一些呢?)。还在上学的学生通常对于学好编程的理解很浅显。科班出身当然是优势,不过你要去GitHub去找一个Star数10000以上的小型项目(类似Flask这种,而不是Django这种,在Github的搜索栏里输入『stars:>10000』可以搜索star数超过10000的项目),去读一下源码就知道我说的学好编程是什么意思了。自己写不出这样的项目,还不能叫做学好了编程。
谢邀
先学Hadoop吧,然后学一下scala,最后学spark。
切忌盲从,我建议两者你都要学一下,毕竟hadoop里的yarn和hdfs在spark中也用得到,而且mapreduce的思想和经典设计在其他框架中都会用得到。而spark是目前业界比较火爆的,就业什么的也比较不错的样子。
顺序的话,如果时间充足的话我个人建议先学hadoop,如果时间不多,那么先学习spark好了。当然这也是我个人的看法,你可以参考一下
先熟悉 shell,python。然后学习各种相关的开源框架,然后找个地方实习,在真实的业务场景下做一些实际的项目。
找个互联网公司去实习
我觉得还是应该把线性代数、矩阵论、数值计算、概率论、微积分等基础学科的水平学到统计学专业的水平,不是装一个软件就会大数据了,Excel也可以。更不是电脑装个word就会写书了。其实我想说的是,现在大多数人都集中于数据采集,而真正分析挖掘的人很少。打个比方,这就跟种地一样,数据采集的是农民,最苦最累不挣钱。但是你要会深加工,把小麦做成面包,这就不一样了。
毋庸置疑,大数据已然是现在互联网的时代.
马云说过:未来最大的能源是数据,未来互联网是大数据据时代!
(我觉得马云这个人最有意思的一点就是有些超前的思想,总能很好的看清某些事物的发展趋势,提出些新颖的词来)
再看看昨天双11阿里巴巴CEO张勇的部分演讲:
(趋势很明显了)
至于学习路线当然是两个都学啦,先Hadoop再学Spark,学习Spark前最好先学Scala语言,虽然JAVA也能写但用JAVA写过的人知道写完之后有多臃肿,当然Python也是不错的选择。
这些技术的实践性都很强,理论和新概念也比较多,所有一定要多动手,多看相关的技术博文。
下面是我在学习Hadoop和Spark过程中积累的一些干货,希望能帮到你:
首先推荐的当然官方文档啦
微信公众号类:
(格式:公众号名 — 公众号,这些公众号几乎每天都有大数据相关技术的发展或应用方面的干货分享,晚点再补上二维码)
Hadoop大数据应用 — hadoop_dashuju
Hadoop技术博文 — iteblog_hadoop
CSDN大数据 — csdnbigdata
中国大数据 — cstorbigdata
小象 — ChinaHadoop
hadoop123 — hadoop-123
(公众号主人是《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》和《Hadoop技术内幕:深入解析YARN架构设计与实现原理》的作者)
微博推荐平台 — wbrecom(分享一些微博推荐系统的技术干货)
星环科技 — transwarp-sh
(星环科技是国内拥有Hadoop这一“大数据”核心技术的公司,致力于大数据基础软件的研发)
云计算头条 — chinacloudnj
(好的文章一定要收藏起来,建议使用印象笔记,有道云笔记或相类似的工具来收藏这些文章,定时分类给文章加上标签,需要时才好方便查找)
比如这样:(嗯 我的有段时间没清理分类了 哈哈)
网站类:
Hadoop/Spark:
中国云计算-云计算资料和交流中心
Memect: Memory Connected
董的博客
搜Hadoop和Spark
(最近做的项目在这里得到了很多帮助,感谢感谢!!!)
Scala:
Scala Tour
学习过程中时间分配也很重要,一定要好好分配时间,时间分配得好你就感觉我今天又学了好多知识,而不是整天忙来忙去都感觉什么都没学到。
有新的干货再分享吧,共勉!!!
不管是大数据还是普通数据,如果你要从事这个行业,就要了解数据相关知识或产品。
先说一下整个(大)数据的处理流程:1. 数据采集;2. 数据预处理;3. 数据存储;4. 数据挖掘分析; 5. 结果展示;
这里只简单说一下题主说的大数据/Hadoop相关的处理技术,如果想深入可以自行google。
1. 数据采集:即从各种应用,数据源把数据收集起来,从负载均衡,可扩展性,目前使用比较多的是scribe(facebook出品),如果你的应用里面使用log4j,它可以很完美的跟它结合。它可以把数据直接存到HDFS上面。
2,数据预处理:过滤一些脏数据,数据的格式转化,数据合并等,如果数据存在HDFS上面可以直接使用Hadoop进行处理,其实Hadoop很简单,它封装一个最简单的并且较通用的并行计算模型,MapReduce,主要把这个原理搞清楚,剩下的就是java知识了。
3. 数据存储:处理之后的数据一般还是放在hdfs上,这时候就需要了解Hadoop的生态圈产品,比如Hive,Impala,Pig等;可以在预处理后的数据存为Hive等支持的格式,这样后期可以通过相关接口进行查询。
4. 数据挖掘分析:这是大数据处理的高潮,这个需要各种专业知识了,各种报表是最普遍的,也是最简单的,给老板展示各种报表结果,这时可使用Hadoop编写算法,或者直接使用Hive QL进行查询;假如需要深入数据挖掘:就需要用到关联算法,回归模型等,就需要你具备统计学方面的知识;到这个阶段可以学scale,spark,mahout,当然还有专业分析工具如:SAS,R等;但是这些就只是工具,基础算法必须掌握。
5. 结果展示:各种前端报表系统,可以使用html5或者excel都可以,自己看着办。
另外:学习最好的资料都在官方网站,里面都有quick start的文档,是最好的入门资料。
别人做大数据是因为本来就是做数据分析的……数据量大了软件处理慢……于是有了hadoop,spark这样的解决方案来帮助处理数据。不要主次颠倒,数据分析才是核心啊,软件只是一个解决方案。别人用excel照样能做,你能么?或者你的意思是想做运维?运维可不止是装软件这么简单哦。
接触大数据不久,在我看来,大数据千万不要只看规模,对分布式存储计算,5G跟10T本质上又有什么区别呢?另外这˙个要看个人的方向吧,比如你要做大数据的基础架构,你要对hdfs,mr, hive, spark, storm 各种工具熟悉,知道内部原理,有问题能够解决;如果你要做一个数据工程师,做仓库,BI,你就要会用之前提及的这些工具,同时对ods, dw的理念、建模、etl深入,另外,bi层要有所输出,报表,数据分析,数据挖掘,总而言之,对预测、决策等提供一些前瞻性的支持,体现出数据本身的价值。