大数据要怎么学,本文来说说到底要怎么学习它,以及怎么避免大数据学习的误区,以供参考。数据科学特点与大数据学习误区
(1)大数据学习要业务驱动,不要技术驱动:数据科学的核心能力是解决问题。
大数据的核心目标是数据驱动的智能化,要解决具体的问题,不管是科学研究问题,还是商业决策问题,抑或是政府管理问题。
所以学习之前要明确问题,理解问题,所谓问题导向、目标导向,这个明确之后再研究和选择合适的技术加以应用,这样才有针对性,言必hadoop,spark的大数据分析是不严谨的
不同的业务领域需要不同方向理论、技术和工具的支持。如文本、网页要自然语言建模,随时间变化数据流需要序列建模,图像音频和视频多是时空混合建模;大数据处理如采集需要爬虫、倒入导出和预处理等支持,存储需要分布式云存储、云计算资源管理等支持,计算需要分类、预测、描述等模型支持,应用需要可视化、知识库、决策评价等支持。所以是业务决定技术,而不是根据技术来考虑业务,这是大数据学习要避免的第一个误区。
自己建的大数据学习交流群:199427210,群里都是学大数据开发的,如果你正在学习大数据 ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有大数据软件开发相关的),包括我自己整理的一份最新的大数据进阶资料和高级开发教程,欢迎进阶中和进想深入大数据的小伙伴加入。
(2)大数据学习要善用开源,不要重复造轮子:数据科学的技术基因在于开源。IT前沿领域的开源化已成不可逆转的趋势,Android开源让智能手机平民化,让我们跨入了移动互联网时代,智能硬件开源将带领跨入物联网时代,以Hadoop和Spark为代表的大数据开源生态加速了去IOE(IBM、ORACLE、EMC)进程,倒逼传统IT巨头拥抱开源,谷歌和OpenAI联盟的深度学习开源(以Tensorflow,Torch,Caffe等为代表)正在加速人工智能技术的发展。
数据科学的标配语言R和Python更是因开源而生,因开源而繁荣,诺基亚因没把握开源大势而衰落。为什么要开源,这得益于IT发展的工业化和构件化,各大领域的基础技术栈和工具库已经很成熟,下一阶段就是怎么快速组合、快速搭积木、快速产出的问题,不管是linux,anroid还是tensorflow,其基础构件库基本就是利用已有开源库,结合新的技术方法实现,组合构建而成,很少在重复造轮子。
另外,开源这种众包开发模式,是一种集体智慧编程的体现,一个公司无法积聚全球工程师的开发智力,而一个GitHub上的明星开源项目可以,所以要善用开源和集体智慧编程,而不要重复造轮子,这是大数据学习要避免的第二个误区。
(3)大数据学习要以点带面,不贪大求全:数据科学要把握好碎片化与系统性。根据前文的大数据技术体系分析,我们可以看到大数据技术的深度和广度都是传统信息技术难以比拟的。
我们的精力很有限,短时间内很难掌握多个领域的大数据理论和技术,数据科学要把握好碎片化和系统性的关系。
何为碎片化,这个碎片化包括业务层面和技术层面,大数据不只是谷歌,亚马逊,BAT等互联网企业,每一个行业、企业里面都有它去关注数据的痕迹:一条生产线上的实时传感器数据,车辆身上的传感数据,高铁设备的运行状态数据,交通部门的监控数据,医疗机构的病例数据,政府部门的海量数据等等,大数据的业务场景和分析目标是碎片化的,而且相互之间分析目标的差异很大;另外,技术层面来讲,大数据技术就是万金油,一切服务于数据分析和决策的技术都属于这个范畴,其技术体系也是碎片化的。
那怎么把握系统性呢,不同领域的大数据应用有其共性关键技术,其系统技术架构也有相通的地方,如系统的高度可扩展性,能进行横向数据大规模扩张,纵向业务大规模扩展,高容错性和多源异构环境的支持,对原有系统的兼容和集成等等,每个大数据系统都应该考虑上述问题。如何把握大数据的碎片化学习和系统性设计,离不开前面提出的两点误区,建议从应用切入、以点带面,先从一个实际的应用领域需求出发,搞定一个一个技术点,有一定功底之后,再举一反三横向扩展逐步理解其系统性技术。
(4)大数据学习要勇于实践,不要纸上谈兵:数据科学还是数据工程?
大数据只有和特定领域的应用结合起来才能产生价值,数据科学还是数据工程是大数据学习要明确的关键问题,搞学术发paper数据科学OK,但要大数据应用落地,如果把数据科学成果转化为数据工程进行落地应用,难度很大,这也是很多企业质疑数据科学价值的原因。且不说这种转化需要一个过程,从业人员自身也是需要审视思考的。
工业界包括政府管理机构如何引入研究智力,数据分析如何转化和价值变现?数据科学研究人员和企业大数据系统开发工程人员都得想想这些关键问题。
目前数据工程要解决的关键问题主线是数据(Data)>知识(Knowledge)>服务(Service),数据采集和管理,挖掘分析获取知识,知识规律进行决策支持和应用转化为持续服务。解决好这三个问题,才算大数据应用落地,那么从学习角度讲,DWS就是大数据学习要解决问题的总目标,特别要注重数据科学的实践应用能力,而且实践要重于理论。从模型,特征,误差,实验,测试到应用,每一步都要考虑是否能解决现实问题,模型是否具备可解释性,要勇于尝试和迭代,模型和软件包本身不是万能的,大数据应用要注重鲁棒性和实效性,温室模型是没有用的,训练集和测试集就OK了吗?
大数据如何走出实验室和工程化落地,一是不能闭门造车,模型收敛了就想当然万事大吉了;二是要走出实验室充分与业界实际决策问题对接;三是关联关系和因果关系都不能少,不能描述因果关系的模型无助于解决现实问题;四是注重模型的迭代和产品化,持续升级和优化,解决新数据增量学习和模型动态调整的问题。
所以,大数据学习一定要清楚我是在做数据科学还是数据工程,各需要哪些方面的技术能力,现在处于哪一个阶段等,不然为了技术而技术,是难以学好和用好大数据的。
大数据已经火了很久了,一直想了解它学习它结果没时间,过年后终于有时间了,了解了一些资料,结合我自己的情况,初步整理了一个学习路线,有问题的希望大神指点。
学习路线
Linux(shell,高并发架构,lucene,solr)
Hadoop(Hadoop,HDFS,Mapreduce,yarn,hive,hbase,sqoop,zookeeper,flume)
机器学习(R,mahout)
Storm(Storm,kafka,redis)
Spark(scala,spark,spark core,spark sql,spark streaming,spark mllib,spark graphx)
Python(python,spark python)
云计算平台(docker,kvm,openstack)
名词解释
一、Linux
lucene: 全文检索引擎的架构
solr: 基于lucene的全文搜索服务器,实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面。
二、Hadoop
hadoop common
HDFS: 分布式存储系统,包含NameNode,DataNode。NameNode:元数据,DataNode。DataNode:存数数据。
yarn: 可以理解为MapReduce的协调机制,本质就是Hadoop的处理分析机制,分为ResourceManager NodeManager。
MapReduce: 软件框架,编写程序。
Hive: 数据仓库 可以用SQL查询,可以运行Map/Reduce程序。用来计算趋势或者网站日志,不应用于实时查询,需要很长时间返回结果。
HBase: 数据库。非常适合用来做大数据的实时查询。Facebook用Hbase存储消息数据并进行消息实时的分析
ZooKeeper: 针对大型分布式的可靠性协调系统。Hadoop的分布式同步等靠Zookeeper实现,例如多个NameNode,active standby切换。
Sqoop: 数据库相互转移,关系型数据库和HDFS相互转移
Mahout: 可扩展的机器学习和数据挖掘库。用来做推荐挖掘,聚集,分类,频繁项集挖掘。
Chukwa: 开源收集系统,监视大型分布式系统,建立在HDFS和Map/Reduce框架之上。显示、监视、分析结果。
Ambari: 用于配置、管理和监视Hadoop集群,基于Web,界面友好。
二、Cloudera
Cloudera Manager: 管理 监控 诊断 集成
Cloudera CDH:(Cloudera's Distribution,including Apache Hadoop) Cloudera对Hadoop做了相应的改变,发行版本称为CDH。
Cloudera Flume: 日志收集系统,支持在日志系统中定制各类数据发送方,用来收集数据。
Cloudera Impala: 对存储在Apache Hadoop的HDFS,HBase的数据提供直接查询互动的SQL。
Cloudera hue: web管理器,包括hue ui,hui server,hui db。hue提供所有CDH组件的shell界面的接口,可以在hue编写mr。
三、机器学习/R
R: 用于统计分析、绘图的语言和操作环境,目前有Hadoop-R
mahout: 提供可扩展的机器学习领域经典算法的实现,包括聚类、分类、推荐过滤、频繁子项挖掘等,且可通过Hadoop扩展到云中。
四、storm
Storm: 分布式,容错的实时流式计算系统,可以用作实时分析,在线机器学习,信息流处理,连续性计算,分布式RPC,实时处理消息并更新数据库。
Kafka: 高吞吐量的分布式发布订阅消息系统,可以处理消费者规模的网站中的所有动作流数据(浏览,搜索等)。相对Hadoop的日志数据和离线分析,可以实现实时处理。目前通过Hadoop的并行加载机制来统一线上和离线的消息处理
Redis: 由c语言编写,支持网络、可基于内存亦可持久化的日志型、key-value型数据库。
五、Spark
Scala: 一种类似java的完全面向对象的编程语言。
Spark: Spark是在Scala语言中实现的类似于Hadoop MapReduce的通用并行框架,除了Hadoop MapReduce所具有的优点,但不同于MapReduce的是job中间输出结果可以保存在内存中,从而不需要读写HDFS,因此Spark能更好的适用于数据挖掘与机器学习等需要迭代的MapReduce算法。可以和Hadoop文件系统并行运作,用过Mesos的第三方集群框架可以支持此行为。
Spark SQL:
Spark Streaming: 一种构建在Spark上的实时计算框架,扩展了Spark处理大数据流式数据的能力。
Spark MLlib: MLlib是Spark是常用的机器学习算法的实现库,目前(2014.05)支持二元分类,回归,聚类以及协同过滤。同时也包括一个底层的梯度下降优化基础算法。MLlib以来jblas线性代数库,jblas本身以来远程的Fortran程序。
Spark GraphX: GraphX是Spark中用于图和图并行计算的API,可以在Spark之上提供一站式数据解决方案,可以方便且高效地完成图计算的一整套流水作业。
jblas: 一个快速的线性代数库(JAVA)。基于BLAS与LAPACK,矩阵计算实际的行业标准,并使用先进的基础设施等所有的计算程序的ATLAS艺术的实现,使其非常快。
Fortran: 最早出现的计算机高级程序设计语言,广泛应用于科学和工程计算领域。
BLAS: 基础线性代数子程序库,拥有大量已经编写好的关于线性代数运算的程序。
LAPACK: 著名的公开软件,包含了求解科学与工程计算中最常见的数值线性代数问题,如求解线性方程组、线性最小二乘问题、特征值问题和奇异值问题等。
ATLAS: BLAS线性算法库的优化版本。
Spark Python: Spark是由scala语言编写的,但是为了推广和兼容,提供了java和python接口。
大数据学习方法
我的方法很简单的按照下面几步走
一、了解新的技术是什么以及它的作用
二、到技术的官方网站找案例进行简单的实验
三、和自己的项目结合
四、遇到问题到技术网站找相关资料
五、做笔记总结(总结的过程就是1~5)
这是在工作中引进新技术的学习方法,这样做的好处是及解决了工作上的问题又对新技术有了初步的了解,要是想把新技术吃透要在工作之余多有些心了。
要学会多问自己一些为什么?这样你会比别人更加优秀