怎样进行大数据库学习入门 pdf的入门级学习

想从事大数据、海量数据处理相关的工作,如何自学打基础?
按投票排序
想做数据处理尤其是大数据量处理的相关工作必须兼具计算机科学基础和统计基础。现在有一个高大上的职业叫数据科学家,有人说数据科学家就是一个比程序员更懂统计的统计学家,一个比统计学家更会编程的程序员。觉得说得很形象。考虑到你还是在读本科生,有很多知识和课程还需要作为基础来学习和巩固。基础中的基础:线性代数,概率论核心知识:数理统计预测模型机器学习计算机:数学软件:强大矩阵运算和优化功能的matlab,专而精的mathematica。语言:python(很流行的科学语言,潜力也很大,ipython这样交互式环境十分有利),fortran(强大的计算语言,充分优化的现成代码),R(相比于matlab,java,c,R是个高富帅)可视化这是数据分析各类语言使用度的图表,R占的比例还是相当高啊。想利用现在动辄TB级的数据大显身手,光靠excel可不够啊。你真的需要写很多代码…这是数据分析各类语言使用度的图表,R占的比例还是相当高啊。想利用现在动辄TB级的数据大显身手,光靠excel可不够啊。你真的需要写很多代码…统计:时间序列分析
应用回归(很简单,亦很实用)
多元统计分析强烈推荐:
和哈佛的学生一起学习Data Science。课后问题的材料:网络课程同样有丰富的资源:机器学习类:数据分析类:编程类:相关问题:水平有限,欢迎补充。另外我制作了一个个人网站 和专栏
希望激发更多人对data science 的兴趣。
海量数据分成两块,一是系统建设技术,二,海量数据应用。先说系统建设,现在主流的技术是HADOOP,主要基于mapreduce的分布式框架。目前可以先学习这个。但是我的观点,在分布式系统出来之前,主要是集中式架构,如DB2,oracle。为什么现在用分布式架构,那是因为现在集中式架构受限于IO性能,出来速度慢,如果又一种硬件技术,可以很快地处理海量数据,性能上能满足需求,那么集中式架构优于分布式架构,因为集中式架构稳定,运维压力小。现在的集中式架构要么性能达不到要求,要么就是过于昂贵。我期待一种技术出现,可以非常快地传输和处理数据,那么集中式架构将再次进入人们眼球。再说海量数据应用。海量数据应用主要是数据挖掘和机器算法。具体有不同的应用场景,如个性化搜索和推荐,社交网络发现,精准营销,精准广告,实时最优路径,人工智能等等。看你想做系统支撑技术还是与业务结合的应用技术。如果现在学系统建设技术,可以读下如下书籍:如果学数据挖掘和机器算法,推荐先看数据挖掘导论,统计分析原理,Mahout,R,MATLAB
1. 自己装个小集群跑hadoop/hive,可以到cloudera网站上下现成的打包虚拟机。看看hadoop in action. 这本书比权威指南容易懂很多。2. 装个cassandra什么的玩玩,在上面架个小项目,比如留言板什么的。。3. 读一些著名的paper,nosql的或者mapreduce。4. 看看apache hadoop家族的其他几个项目,比如zookeeper,pig,了解一下生态圈到这里为止你大概有个概念,知道bigdata怎么回事了找个开源项目,看看ticket list,看看能不能自己修。。能的话看看能不能混进项目组个人觉得,大数据要靠实践多一点。在真的上百上千节点的cluster上跑hadoop和自己虚拟机架的完全不同。cluster上跑各种奇葩的事情单机都是碰不到的。。就好比dba靠读书考证很难牛屄一样。所以最终还是要找个公司实战。。不过如果上面几个都做到的花,基本上应聘大数据公司问题不大了。----------------------------------做大数据平台工作现在满一周年多几天,再看上面的答案觉得说得不是很到位。在国内的环境下,似乎还是Hadoop用得更多,其他更fancy的东西比如presto/spark什么的,湾区也算是新鲜事物,并不是很多公司都在用(也有原因是真的适用的公司也不算太多了)。更实际节省的做法是,学Hadoop,至少要了解系统架构和数据的流向,比如怎么partition,怎么shuffle,combiner怎么work之类的大概念,对入门人士面试官大多也就是面这些,不会问太深,再深入的问题,是留给有行业经验的人的。对刚入门想入行的人,知道上面这些,再写写类似Word Count(大数据版的helloworld),之类的有个实际概念,就可以找公司面着玩看了。其他东西可以都了解个皮毛,跟上社群的演进。大数据更多是工程的东西,不是那么学术,多看看比深挖一个对初学者更有好处。每个工具被发明,都是解决一个特定问题的,大数据没有一个产品是万能的,都是解决某个特定问题来的,看到新鲜事物就想想为什么需要这样的工具,背后有什么需求。比如有了Hive为什么facebook还要搞Presto;为什么Hadoop 2.0要做Yarn。看的时候多想想这个,视野就会更开阔。建议如果想深入学习,没有什么比找个真的做相关行业的公司来的靠谱了。工程的东西,尤其是这样新鲜出炉的工程领域,光看书看资料是没有任何用处的,你很难了解每个技术背后的关键,也很难了解实践中会遇到的问题。我之前打杂过的实验室,到处找客户免费用他们的产品,每个出去的学生都会义务跟雇主推荐实验室的产品,为什么,因为没有真的在PB级别的数据上跑,你就不知道哪里设计有问题。你深入看一个项目,就会发现,其实用得技术没什么新鲜深奥的,比如你看Hive或者Presto,会发现用到的技术,在Query引擎领域只能算是入门级的知识,传统数据库厂商都用了几十年了。真正好玩的是,每个Feature设计是如何切入大数据这个背景的。所以说,没有比找一家公司真的干一段时间更能让你了解大数据的了。当然请别被忽悠去拿大数据做噱头的公司了。现在有些公司招聘,就算不用hadoop也会往上写,反正去了老板会说,现在数据不够,以后肯定会需要Hadoop的。以上都是关于平台方向的,数据方向的我完全不懂。
可以考虑学一些基本的理论知识。比如 Stanford 开的那个网上的 machine learning 的公开课,结合一些好的入门教材,对基本概念有所了解。R. O. Duda, P. E. Hart, and D. G. Stork. Pattern classification. Wiley, New York, 2nd ed edition, 2001. T. Hastie, R. Tibshirani, and J. H. Friedman. The elements of statistical learning: data mining, inference, and prediction. Springer series in statistics. Springer, New York, NY, 2nd ed edition, 2009.实际应用技术,编程这样的,还是要找公司,有实践才行。如果找不好合适公司,就打好基础吧。
我觉得首先是看看Google的几篇论文吧,包括GFS、MapReduce、BigTable和chubby等,建立一个理论的基础。然后就是系统学习并使用下hadoop这个系统,最好能深入代码,理解思想!同样的可以关注一些目前热门的Nosql的开源项目,比如Mongodb和Redis,好好学习下别人的思想和代码!关注一些相关方向的会议的论文,关注一些业界的博客,比如淘宝核心系统博客 和NoSqlFan 不过感觉这方面的能力是实践出来的,找机会进公司实习或做相关项目,肯定会收获很大!
看你要跟到哪个程度,更具体的那个方向:第一层:搞Google那个套路的,云计算方向的,hadoop那些搞搞,就可以去一些公司忽悠工作了。第二层:搞一些社交网络,多媒体等海量数据的存储分析处理,侧重数据挖掘,以后可能能够在这个领域做点名堂。第三层:在上面两层的数据的基础上,做PB级别“以上”规模,侧重“实时”海量数据分析,能够对在线业务做海量数据支撑的。 可能搞出商业和专业(技术)方面的重量级的。
我个人在这个行业混,是看到了需求,但个方面,还没有现成的:思想,方法,系统。 以后类似有Google M/R之类的,包含方法和系统甚至开发运维环境的东西出现。
从我个人的理解看:思想要变,并行计算的一些思想要引入比如Pipeline+Partitioning+M/R;算法要变:侧重常数事件复杂度的或者logn以下的;做业务的思想要变:比如实时要一个一定范围最优的解比一个一天后给一个全局范围的解跟重要等等等等等等等等等等。
我也在做这方面的,大家交流哦。
好吧,我来说一下我的看法吧首先我由各种编程语言的背景——matlab,R,java,C/C++,python,网络编程等我又一定的数学基础——高数,线代,概率论,统计学等我又一定的算法基础——经典算法,神经网络,部分预测算法,群智能算法等但这些目前来讲都不那么重要,但慢慢要用到Step 1:大数据理论,方法和技术大数据理论——啥都不说,人家问你什么是大数据时,你能够讲到别人知道什么是大数据大数据方法——然后别人问你,那怎么实现呢?嗯,继续讲:说的是方法(就好像归并排序算法:分,并)。到目前外行人理解无障碍大数据技术——多嘴的人继续问:用的技术。这阶段只是基础,不涉及任何技术细节,慢慢看慢慢总结,积累对“大数据”这个词的理解。Step 2:大数据思维Bang~这是继Step 1量变发展而来的质变:学了那么久“大数据”,把你扔到制造业,你怎么办?我想,这就是“学泛”的作用吧,并不是学到什么具体东西,而是学到了对待事物的思维。就像知友讨论的:中有提到这个我也朦朦的不懂 @.@----------------------------------------------------------------------以下阶段我还没开始=_=,不好误导大家Step 3:大数据技术基础Step 4:大数据技术进阶Step 5:打实战Step 6:大融合我现在也在学习之中~~这只是我自己为自己打算的学习历程,欢迎给出各种建议~~
没有大数据,自学大数据处理技术,那就是屠龙之技
这其实是要看你要做那个发明新锤子的人,还是利用锤子的人前者,自学是完全没有出路的,好好找个相关实验室,找个大牛带你,潜心做几年研究,紧跟最新的paper,最好再出国读个博士。后者的话,学不学差不多,关键是领域相关知识要透彻,根本不在于你会熟练使用MapReduce,Spark,Dryad,PowerGraph还是啥,码农的活你总可以找别人干。真正的Data Scientist永远首先是领域专家,掌握好锤子的特性(其实可以理解为数学好),让别人替你敲锤子!说来心酸,这个领域从来都是有的人负责摸石头,有的人负责过河
大数据不比桌面开发,买个电脑就能玩。大数据要真的有大数据才能玩,有了大数据还得有相对应的规模的服务器集群。你怎么自学?给你个建议,你去有大数据应用的公司工作,先不去做大数据(前提你能做别的,Web,移动,测试,随便什么,有一技之长),曲线救国,去了以后想办法给大数据团队提供一些力所能及的帮助和支持,多请教学习。混熟了调岗。
大家说的都很好,我其实外行,就说两句外行话。学一点其它领域的东西,越远越好。有时候创造性思维来自跨界的知识。训练自己抓住事务本质和核心的能力,训练自己从不同角度看问题的能力,训练自己从数据里面培养直觉的能力。要知道数据处理不是学会那些工具就能做好的,思维方式最重要。
看Netflix prize各个队的实验报告,比如:
学了很多理论知识之后还必须跟实际操作结合去做DataCastle上面的竞赛题吧~一般都是公司在实际运作中遇到的问题,然后放到这个竞赛平台上来让专业的人解决在做竞赛中才能知道哪些需要更多的补充
看看这个网站,把你需要学的东西全列在里面了
一点补充:"大数据"在自己有限的硬件资源下也是可以玩玩的。数据的应用需要对数据有"感觉"。是要在不断的实践、阅读、理解中摸索、升华出来的。太多市面上顶着Analyst、Scientist名号的伪码农搞出些本末倒置的结论。当然,也有可能是他有个没啥"感觉"的领导指示他这么干的,而他本人又不太好意思拒绝。
hadoop mapreduce等等这个家族的框架可以看一下,不过我觉着big data实践胜于理论,而个人又很难有条件实践
现在开始又没有太多基础的话,可以从hadoop以及nosql开始
既然大家都说了这么多宝贵的意见,那么我说点实操性质的吧,我也曾实习过
在一家做大数据的公司,叫数据堂。他们有专门的技术部门,有人培训,能够通过实操获得对大数据的理解,并掌握一定的技术知识,希望对你有帮助!
要进行大数据挖掘,必须看《欺骗的艺术》您所在的位置: &
数据库入门级之算法【三】
数据库入门级之算法【三】
之前我们跟随笔者重温了数据结构中的查询算法和部分排序算法,现在我们继续跟随笔者继续学习一些基本的排序算法。
之前我们跟随笔者重温了数据结构中的和部分,现在我们继续跟随笔者继续学习一些基本的排序算法。
使用条件:可对比大小的集合。
算法思想:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
举例编程:int b[10]={77,1,65,13,81,93,10,5,23,17}
&void&SimpleSelect(int&b[10]) &{ &&&&&int& &&&&&int&i; &&&&&for(i=0;i&9;i++) &&&&&{ &&&&&&&&&for(int&j=i+1;j&9;j++) &&&&&&&&&{ &&&&&&&&&&&&&if(b[i]&b[j]) &&&&&&&&&&&&&{ &&&&&&&&&&&&&&&&&temp=b[i]; &&&&&&&&&&&&&&&&&b[i]=b[j]; &&&&&&&&&&&&&&&&&b[j]= &&&&&&&&&&&&&} &&&&&&&&&} &&&&&} &&&&&cout&&&the&sort&is:&; &&&&&for(int&i=0;i&10;i++) &&&&&{ &&&&&&&&&cout&&b[i]&&&&&; &&&&&} &&&&&cout&& &} &
性能分析:时间复杂度为O(n^2)
使用条件:可对比大小的集合。
算法思想:其实堆排序是简单选择排序的一种进化,它最主要是减少比较的次数。什么是堆?若将序列对应看成一个完全二叉树,完全二叉树中所有非终端节点的值均不大于(或者不小于)其左右孩子节点的值,可以称作为堆。由堆的性质可以知道堆顶是一个最大关键字(或者最小关键字)。在输出堆顶后,使剩下的元素又建成一个堆,然后在输出对顶。如此反复执行,便能得到一个有序序列,这个过程成便是堆排序。
堆排序主要分为两个步骤:
从无序序列建堆。
输出对顶元素,在调成一个新堆。
举例编程:int b[10]={77,1,65,13,81,93,10,5,23,17}
&void&HeapSort(int&b[10]) &{ &&&&&void&HeapAdjuest(int&b[10],int&min,int&max); &&&&&void&Sawp(int&*a,int&*b); &&&&&int&i; &&&&&&&&&&for(i=9/2;i&=0;i--) &&&&&{ &&&&&&&&&HeapAdjuest(b,i,9); &&&&&} &&&&&&&&&&for(i=9;i&0;i--) &&&&&{ &&&&&&&&&Sawp(&b[i],&b[0]); &&&&&&&&&HeapAdjuest(b,0,i-1); &&&&&} &} &&&&void&HeapAdjuest(int&b[10],int&min,int&max) &{ &&&&&if(max&=min)return&; &&&&&int& &&&&&temp=b[min]; &&&&&int&j; &&&&&&&&&&for(j=2*j&=j*=2) &&&&&{ &&&&&&&&&&&&&&&&&&if(j&max&&b[j]&b[j+1]) &&&&&&&&&{ &&&&&&&&&&&&&j++; &&&&&&&&&} &&&&&&&&&&&&&&&&&&if(temp&b[j]) &&&&&&&&&{ &&&&&&&&&&&&&break; &&&&&&&&&} &&&&&&&&&&&&&&&&&&b[min]=b[j]; &&&&&&&&&min=j; &&&&&&&&&} &&&&&b[min]= &} &&void&Sawp(int&*a,int&*b) &{ &&&&&int& &&&&&temp=*a; &&&&&*a=*b; &&&&&*b= &} &
性能分析:时间复杂度时间复杂度O(nlogn)
归并算法又称2路归并算法
使用条件:可对比大小的集合。
算法思想:假设初始序列含有n个记录,则可看成n个有序的子序列,每个子序列长度为1,然后两两归并,得到[n/2]个长度为2或者为1(这里长度为1可能这里序列长度是奇数,那么最后一个序列就落单了,所以长度为1);在两两归并,如此重复,直至得到一个长度为n的有序序列为止。
举例编程:int b[10]={77,1,65,13,81,93,10,5,23,17}
&void&MergeSort(int&b[10],int&d[10],int&min,int&max) &{ &&&&&&&&&&int&c[10]; &&&&&void&Merge(int&c[10],int&d[10],int&min,int&mid,int&max); &&&&&if(min==max)d[min]=b[min]; &&&&&else&&&&&{ &&&&&&&&&&&&&&&&&&int&mid=(min+max)/2; &&&&&&&&&&&&&&&&&&MergeSort(b,c,min,mid); &&&&&&&&&&&&&&&&&&MergeSort(b,c,mid+1,max); &&&&&&&&&&&&&&&&&&Merge(c,d,min,mid,max); &&&&&} &} &&void&Merge(int&c[10],int&d[10],int&min,int&mid,int&max) &{ &&&&&int&i,j,k; &&&&&for(i=j=min,k=mid+1;j&=mid&&k&=i++) &&&&&{ &&&&&&&&&if(c[j]&c[k]) &&&&&&&&&{ &&&&&&&&&&&&&d[i]=c[k]; &&&&&&&&&&&&&k++; &&&&&&&&&} &&&&&&&&&else&&&&&&&&&{ &&&&&&&&&&&&&d[i]=c[j]; &&&&&&&&&&&&&j++; &&&&&&&&&} &&&&&} &&&&&if(j&=mid) &&&&&{ &&&&&&&&&for(;j&=j++,i++) &&&&&&&&&{ &&&&&&&&&&&&&d[i]=c[j]; &&&&&&&&&} &&&&&} &&&&&if(k&=max) &&&&&{ &&&&&&&&&&for(;k&=k++,i++) &&&&&&&&&{ &&&&&&&&&&&&&d[i]=c[k]; &&&&&&&&&} &&&&&} &} &
性能分析:时间复杂度O(nlogn)
因为不同的排序方法适应不同的应用换进和要求,选择合适的排序方法考虑以下因素:
待排序的记录数n
对其稳定性要求
时间和辅助空间复杂度
那么这么多排序算法,到底什么时候用什么样的算法呢?
如果n比较小(例如n&=50),可采用直接插入排序或者简单选择排序。
如果序列初始状态基本有序,则可选用直接插入排序,冒泡排序。
如果n比价大,则可采用时间复杂度为O(nlogn)的算法:快速排序,堆排序,归并排序。
快速排序被认为目前基于比较的内部排序中最好的方法。当带排序的关键字随机分布时,快速排序平均时间最短。 不稳定
堆排序所需要的辅助空间小于快速排序,并且不会出现快速排序可能出现的最坏情况。 但还是比较不稳定
归并排序,比较稳定,但是归并排序一般不提倡使用,实用性很差,占用的辅助空间肯能个比较大。
原文链接:/couhujia/archive//1994996.html
【编辑推荐】
【责任编辑: TEL:(010)】
关于&&的更多文章
MongoDB的转变也正是10gen的转变,Dwight Merriman在一份声明中
数据库产品
数据库综合
数据库新闻
如何利用分析在恰当的时机为合适的人员提供内容访问权,帮助制定更好的决策。
IBM大数据讲堂
企业内容管理方案在资产密集型行业的实践
连线IBM大数据专家
获取详实大数据解决方案请致电
400-810-1818 转 2385
维基百科将切换到另外一款开源数据库MariaDB
作为甲骨文公司的基石,Oracle数据库一直占据着数据库
MySQL众多的管理工具,是广大DBA管理好数据库的利器。
本专题将带领大家走入MongoDB的世界,MongoDB是一个基
在软件领域,很少能有像《人月神话》一样具有深远影响力并且畅销不衰的著作。Brooks博士为人们管理复杂项目提供了最具洞察力的见
51CTO旗下网站【电子商务,数据分析】入门级讨论,做好互联网,意识很重要_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
【电子商务,数据分析】入门级讨论,做好互联网,意识很重要
做​好​数​据​,​是​做​好​产​品​的​基​础​,​好​好​打​基​础​吧
阅读已结束,如果下载本文需要使用
想免费下载本文?
你可能喜欢想从事大数据、海量数据处理相关的工作,如何自学打基础?
按投票排序
想做数据处理尤其是大数据量处理的相关工作必须兼具计算机科学基础和统计基础。现在有一个高大上的职业叫数据科学家,有人说数据科学家就是一个比程序员更懂统计的统计学家,一个比统计学家更会编程的程序员。觉得说得很形象。考虑到你还是在读本科生,有很多知识和课程还需要作为基础来学习和巩固。基础中的基础:线性代数,概率论核心知识:数理统计预测模型机器学习计算机:数学软件:强大矩阵运算和优化功能的matlab,专而精的mathematica。语言:python(很流行的科学语言,潜力也很大,ipython这样交互式环境十分有利),fortran(强大的计算语言,充分优化的现成代码),R(相比于matlab,java,c,R是个高富帅)可视化这是数据分析各类语言使用度的图表,R占的比例还是相当高啊。想利用现在动辄TB级的数据大显身手,光靠excel可不够啊。你真的需要写很多代码…这是数据分析各类语言使用度的图表,R占的比例还是相当高啊。想利用现在动辄TB级的数据大显身手,光靠excel可不够啊。你真的需要写很多代码…统计:时间序列分析
应用回归(很简单,亦很实用)
多元统计分析强烈推荐:
和哈佛的学生一起学习Data Science。课后问题的材料:网络课程同样有丰富的资源:机器学习类:数据分析类:编程类:相关问题:水平有限,欢迎补充。另外我制作了一个个人网站 和专栏
希望激发更多人对data science 的兴趣。
海量数据分成两块,一是系统建设技术,二,海量数据应用。先说系统建设,现在主流的技术是HADOOP,主要基于mapreduce的分布式框架。目前可以先学习这个。但是我的观点,在分布式系统出来之前,主要是集中式架构,如DB2,oracle。为什么现在用分布式架构,那是因为现在集中式架构受限于IO性能,出来速度慢,如果又一种硬件技术,可以很快地处理海量数据,性能上能满足需求,那么集中式架构优于分布式架构,因为集中式架构稳定,运维压力小。现在的集中式架构要么性能达不到要求,要么就是过于昂贵。我期待一种技术出现,可以非常快地传输和处理数据,那么集中式架构将再次进入人们眼球。再说海量数据应用。海量数据应用主要是数据挖掘和机器算法。具体有不同的应用场景,如个性化搜索和推荐,社交网络发现,精准营销,精准广告,实时最优路径,人工智能等等。看你想做系统支撑技术还是与业务结合的应用技术。如果现在学系统建设技术,可以读下如下书籍:如果学数据挖掘和机器算法,推荐先看数据挖掘导论,统计分析原理,Mahout,R,MATLAB
1. 自己装个小集群跑hadoop/hive,可以到cloudera网站上下现成的打包虚拟机。看看hadoop in action. 这本书比权威指南容易懂很多。2. 装个cassandra什么的玩玩,在上面架个小项目,比如留言板什么的。。3. 读一些著名的paper,nosql的或者mapreduce。4. 看看apache hadoop家族的其他几个项目,比如zookeeper,pig,了解一下生态圈到这里为止你大概有个概念,知道bigdata怎么回事了找个开源项目,看看ticket list,看看能不能自己修。。能的话看看能不能混进项目组个人觉得,大数据要靠实践多一点。在真的上百上千节点的cluster上跑hadoop和自己虚拟机架的完全不同。cluster上跑各种奇葩的事情单机都是碰不到的。。就好比dba靠读书考证很难牛屄一样。所以最终还是要找个公司实战。。不过如果上面几个都做到的花,基本上应聘大数据公司问题不大了。----------------------------------做大数据平台工作现在满一周年多几天,再看上面的答案觉得说得不是很到位。在国内的环境下,似乎还是Hadoop用得更多,其他更fancy的东西比如presto/spark什么的,湾区也算是新鲜事物,并不是很多公司都在用(也有原因是真的适用的公司也不算太多了)。更实际节省的做法是,学Hadoop,至少要了解系统架构和数据的流向,比如怎么partition,怎么shuffle,combiner怎么work之类的大概念,对入门人士面试官大多也就是面这些,不会问太深,再深入的问题,是留给有行业经验的人的。对刚入门想入行的人,知道上面这些,再写写类似Word Count(大数据版的helloworld),之类的有个实际概念,就可以找公司面着玩看了。其他东西可以都了解个皮毛,跟上社群的演进。大数据更多是工程的东西,不是那么学术,多看看比深挖一个对初学者更有好处。每个工具被发明,都是解决一个特定问题的,大数据没有一个产品是万能的,都是解决某个特定问题来的,看到新鲜事物就想想为什么需要这样的工具,背后有什么需求。比如有了Hive为什么facebook还要搞Presto;为什么Hadoop 2.0要做Yarn。看的时候多想想这个,视野就会更开阔。建议如果想深入学习,没有什么比找个真的做相关行业的公司来的靠谱了。工程的东西,尤其是这样新鲜出炉的工程领域,光看书看资料是没有任何用处的,你很难了解每个技术背后的关键,也很难了解实践中会遇到的问题。我之前打杂过的实验室,到处找客户免费用他们的产品,每个出去的学生都会义务跟雇主推荐实验室的产品,为什么,因为没有真的在PB级别的数据上跑,你就不知道哪里设计有问题。你深入看一个项目,就会发现,其实用得技术没什么新鲜深奥的,比如你看Hive或者Presto,会发现用到的技术,在Query引擎领域只能算是入门级的知识,传统数据库厂商都用了几十年了。真正好玩的是,每个Feature设计是如何切入大数据这个背景的。所以说,没有比找一家公司真的干一段时间更能让你了解大数据的了。当然请别被忽悠去拿大数据做噱头的公司了。现在有些公司招聘,就算不用hadoop也会往上写,反正去了老板会说,现在数据不够,以后肯定会需要Hadoop的。以上都是关于平台方向的,数据方向的我完全不懂。
可以考虑学一些基本的理论知识。比如 Stanford 开的那个网上的 machine learning 的公开课,结合一些好的入门教材,对基本概念有所了解。R. O. Duda, P. E. Hart, and D. G. Stork. Pattern classification. Wiley, New York, 2nd ed edition, 2001. T. Hastie, R. Tibshirani, and J. H. Friedman. The elements of statistical learning: data mining, inference, and prediction. Springer series in statistics. Springer, New York, NY, 2nd ed edition, 2009.实际应用技术,编程这样的,还是要找公司,有实践才行。如果找不好合适公司,就打好基础吧。
我觉得首先是看看Google的几篇论文吧,包括GFS、MapReduce、BigTable和chubby等,建立一个理论的基础。然后就是系统学习并使用下hadoop这个系统,最好能深入代码,理解思想!同样的可以关注一些目前热门的Nosql的开源项目,比如Mongodb和Redis,好好学习下别人的思想和代码!关注一些相关方向的会议的论文,关注一些业界的博客,比如淘宝核心系统博客 和NoSqlFan 不过感觉这方面的能力是实践出来的,找机会进公司实习或做相关项目,肯定会收获很大!
看你要跟到哪个程度,更具体的那个方向:第一层:搞Google那个套路的,云计算方向的,hadoop那些搞搞,就可以去一些公司忽悠工作了。第二层:搞一些社交网络,多媒体等海量数据的存储分析处理,侧重数据挖掘,以后可能能够在这个领域做点名堂。第三层:在上面两层的数据的基础上,做PB级别“以上”规模,侧重“实时”海量数据分析,能够对在线业务做海量数据支撑的。 可能搞出商业和专业(技术)方面的重量级的。
我个人在这个行业混,是看到了需求,但个方面,还没有现成的:思想,方法,系统。 以后类似有Google M/R之类的,包含方法和系统甚至开发运维环境的东西出现。
从我个人的理解看:思想要变,并行计算的一些思想要引入比如Pipeline+Partitioning+M/R;算法要变:侧重常数事件复杂度的或者logn以下的;做业务的思想要变:比如实时要一个一定范围最优的解比一个一天后给一个全局范围的解跟重要等等等等等等等等等等。
我也在做这方面的,大家交流哦。
好吧,我来说一下我的看法吧首先我由各种编程语言的背景——matlab,R,java,C/C++,python,网络编程等我又一定的数学基础——高数,线代,概率论,统计学等我又一定的算法基础——经典算法,神经网络,部分预测算法,群智能算法等但这些目前来讲都不那么重要,但慢慢要用到Step 1:大数据理论,方法和技术大数据理论——啥都不说,人家问你什么是大数据时,你能够讲到别人知道什么是大数据大数据方法——然后别人问你,那怎么实现呢?嗯,继续讲:说的是方法(就好像归并排序算法:分,并)。到目前外行人理解无障碍大数据技术——多嘴的人继续问:用的技术。这阶段只是基础,不涉及任何技术细节,慢慢看慢慢总结,积累对“大数据”这个词的理解。Step 2:大数据思维Bang~这是继Step 1量变发展而来的质变:学了那么久“大数据”,把你扔到制造业,你怎么办?我想,这就是“学泛”的作用吧,并不是学到什么具体东西,而是学到了对待事物的思维。就像知友讨论的:中有提到这个我也朦朦的不懂 @.@----------------------------------------------------------------------以下阶段我还没开始=_=,不好误导大家Step 3:大数据技术基础Step 4:大数据技术进阶Step 5:打实战Step 6:大融合我现在也在学习之中~~这只是我自己为自己打算的学习历程,欢迎给出各种建议~~
没有大数据,自学大数据处理技术,那就是屠龙之技
这其实是要看你要做那个发明新锤子的人,还是利用锤子的人前者,自学是完全没有出路的,好好找个相关实验室,找个大牛带你,潜心做几年研究,紧跟最新的paper,最好再出国读个博士。后者的话,学不学差不多,关键是领域相关知识要透彻,根本不在于你会熟练使用MapReduce,Spark,Dryad,PowerGraph还是啥,码农的活你总可以找别人干。真正的Data Scientist永远首先是领域专家,掌握好锤子的特性(其实可以理解为数学好),让别人替你敲锤子!说来心酸,这个领域从来都是有的人负责摸石头,有的人负责过河
大数据不比桌面开发,买个电脑就能玩。大数据要真的有大数据才能玩,有了大数据还得有相对应的规模的服务器集群。你怎么自学?给你个建议,你去有大数据应用的公司工作,先不去做大数据(前提你能做别的,Web,移动,测试,随便什么,有一技之长),曲线救国,去了以后想办法给大数据团队提供一些力所能及的帮助和支持,多请教学习。混熟了调岗。
大家说的都很好,我其实外行,就说两句外行话。学一点其它领域的东西,越远越好。有时候创造性思维来自跨界的知识。训练自己抓住事务本质和核心的能力,训练自己从不同角度看问题的能力,训练自己从数据里面培养直觉的能力。要知道数据处理不是学会那些工具就能做好的,思维方式最重要。
看Netflix prize各个队的实验报告,比如:
学了很多理论知识之后还必须跟实际操作结合去做DataCastle上面的竞赛题吧~一般都是公司在实际运作中遇到的问题,然后放到这个竞赛平台上来让专业的人解决在做竞赛中才能知道哪些需要更多的补充
看看这个网站,把你需要学的东西全列在里面了
一点补充:"大数据"在自己有限的硬件资源下也是可以玩玩的。数据的应用需要对数据有"感觉"。是要在不断的实践、阅读、理解中摸索、升华出来的。太多市面上顶着Analyst、Scientist名号的伪码农搞出些本末倒置的结论。当然,也有可能是他有个没啥"感觉"的领导指示他这么干的,而他本人又不太好意思拒绝。
hadoop mapreduce等等这个家族的框架可以看一下,不过我觉着big data实践胜于理论,而个人又很难有条件实践
现在开始又没有太多基础的话,可以从hadoop以及nosql开始
既然大家都说了这么多宝贵的意见,那么我说点实操性质的吧,我也曾实习过
在一家做大数据的公司,叫数据堂。他们有专门的技术部门,有人培训,能够通过实操获得对大数据的理解,并掌握一定的技术知识,希望对你有帮助!
要进行大数据挖掘,必须看《欺骗的艺术》

我要回帖

更多关于 oracle数据库学习入门 的文章

 

随机推荐