零基础该怎样去系统学习大数据?知识+内容+教程

大数据作为比较热门的技术,受到越来越多的关注,那么对于一个想进入大数据的朋友来说,最想知道的是:大数据学什么?

大数据技术体系太庞杂了,基础技术覆盖数据采集、数据预处理、分布式存储、NOSQL数据库、多模式计算(批处理、在线处理、实时流处理、内存处理)、多模态计算(图像、文本、视频、音频)、数据仓库、数据挖掘、机器学习、人工智能、深度学习、并行计算、可视化等各种技术范畴和不同的层面。另外大数据应用领域广泛,各领域采用技术的差异性还是比较大的。短时间很难掌握多个领域的大数据理论和技术,建议从应用切入、以点带面,先从一个实际的应用领域需求,搞定一个一个技术点,有一定功底之后,再举一反三横向扩展,这样学习效果就会好很多。大数据技术初探


零基础该怎样去系统学习大数据?知识+内容+教程_第1张图片

从前几年到现在所谓的大数据时代,移动互联网、物联网、云计算、人工智能、机器人、大数据等前沿信息技术领域,逐个火了一遍,什么是大数据,大数据的技术范畴包括那些,估计很多人都是根据自己所熟悉的领域在盲人摸象。

下文从DT(Data technology,数据技术)技术泛型角度来系统地介绍什么是大数据,包括那些核心技术,各领域之间的关系等等:

首先我们说机器学习,机器学习(machine learning),是计算机科学和统计学的交叉学科,核心目标是通过函数映射、数据训练、最优化求解、模型评估等一系列算法实现,让计算机拥有对数据进行自动分类和预测的功能;机器学习领域包括很多智能处理算法,分类、聚类、回归、相关分析等每类下面都有很多算法进行支撑,如SVM,神经网络,Logistic回归,决策树、EM、HMM、贝叶斯网络、随机森林、LDA等,无论是网络排名的十大算法还是二十大算法,都只能说是冰山一角;总之计算机要智能化,机器学习是核心的核心,深度学习、数据挖掘、商业智能、人工智能,大数据等概念的核心技术就是机器学习,机器学习用于图像处理和识别就是机器视觉,机器学习用于模拟人类语言就是自然语言处理,机器视觉和自然语言处理也是支撑人工智能的核心技术,机器学习用于通用的数据分析就是数据挖掘,数据挖掘也是商业智能的核心技术。

深度学习(deep learning),机器学习里面现在比较火的一个子领域,深度学习是已经被研究过几十年的神经网络算法的变种,由于在大数据条件下图像,语音识别等领域的分类和识别上取得了非常好的效果,有望成为人工智能取得突破的核心技术,所以各大研究机构和IT巨头们都投入了大量的人力物力做相关的研究和开发工作。

数据挖掘(data mining),是一个很宽泛的概念,类似于采矿,要从大量石头里面挖出很少的宝石,从海量数据里面挖掘有价值有规律的信息同理。数据挖掘核心技术来自于机器学习领域,如深度学习是机器学习一种比较火的算法,当然也可以用于数据挖掘。还有传统的商业智能(BI)领域也包括数据挖掘,OLAP多维数据分析可以做挖掘分析,甚至Excel基本的统计分析也可以做挖掘。关键是你的技术能否真正挖掘出有用的信息,然后这些信息可以提升指导你的决策,如果是那就算入了数据挖掘的门。

如果你对大数据开发感兴趣,想系统学习大数据的话,可以加入大数据技术学习交流扣扣群:458数字345数字782,欢迎添加,私信管理员,了解课程介绍,获取学习资源

人工智能(artifical intelligence),也是一个很大的概念,终极目标是机器智能化拟人化,机器能完成和人一样的工作,人脑仅凭几十瓦的功率,能够处理种种复杂的问题,怎样看都是很神奇的事情。虽然机器的计算能力比人类强很多,但人类的理解能力,感性的推断,记忆和幻想,心理学等方面的功能,机器是难以比肩的,所以机器要拟人化很难单从技术角度把人工智能讲清楚。人工智能与机器学习的关系,两者的相当一部分技术、算法都是重合的,深度学习在计算机视觉和棋牌走步等领域取得了巨大的成功,比如谷歌自动识别一只猫,最近谷歌的AlpaGo还击败了人类顶级的专业围棋手等。但深度学习在现阶段还不能实现类脑计算,最多达到仿生层面,情感,记忆,认知,经验等人类独有能力机器在短期难以达到。

最后我们才说大数据(big data),大数据本质是一种方法论,一句话概括,就是通过分析和挖掘全量海量的非抽样数据进行辅助决策。上述技术原来是在小规模数据上进行计算处理,大数据时代呢,只是数据变大了,核心技术还是离不开机器学习、数据挖掘等,另外还需考虑海量数据的分布式存储管理和机器学习算法并行处理等核心技术。总之大数据这个概念就是个大框,什么都能往里装,大数据源的采集如果用传感器的话离不开物联网、大数据源的采集用智能手机的话离不开移动互联网,大数据海量数据存储要高扩展就离不开云计算,大数据计算分析采用传统的机器学习、数据挖掘技术会比较慢,需要做并行计算和分布式计算扩展,大数据要互动展示离不开可视化,大数据的基础分析要不要跟传统商业智能结合,金融大数据分析、交通大数据分析、医疗大数据分析、电信大数据分析、电商大数据分析、社交大数据分析,文本大数据、图像大数据、视频大数据…诸如此类等等范围太广…,总之大数据这个框太大,其终极目标是利用上述一系列核心技术实现海量数据条件下的人类深度洞察和决策智能化!这不仅是信息技术的终极目标,也是人类社会发展管理智能化的核心技术驱动力。

零基础该怎样去系统学习大数据?知识+内容+教程_第2张图片

数学知识

数学知识是数据分析师的基础知识。

对于初级数据分析师,了解一些描述统计相关的基础内容,有一定的公式计算能力即可,了解常用统计模型算法则是加分。

对于高级数据分析师,统计模型相关知识是必备能力,线性代数(主要是矩阵计算相关知识)最好也有一定的了解。

而对于数据挖掘工程师,除了统计学以外,各类算法也需要熟练使用,对数学的要求是最高的。

分析工具

对于初级数据分析师,玩转Excel是必须的,数据透视表和公式使用必须熟练,VBA是加分。另外,还要学会一个统计分析工具,SPSS作为入门是比较好的。

对于高级数据分析师,使用分析工具是核心能力,VBA基本必备,SPSS/SAS/R至少要熟练使用其中之一,其他分析工具(如Matlab)视情况而定。

对于数据挖掘工程师……嗯,会用用Excel就行了,主要工作要靠写代码来解决呢。

编程语言

对于初级数据分析师,会写SQL查询,有需要的话写写Hadoop和Hive查询,基本就OK了。

对于高级数据分析师,除了SQL以外,学习Python是很有必要的,用来获取和处理数据都是事半功倍。当然其他编程语言也是可以的。

对于数据挖掘工程师,Hadoop得熟悉,Python/Java/C++至少得熟悉一门,Shell得会用……总之编程语言绝对是数据挖掘工程师的最核心能力了。

业务理解

业务理解说是数据分析师所有工作的基础也不为过,数据的获取方案、指标的选取、乃至最终结论的洞察,都依赖于数据分析师对业务本身的理解。

对于初级数据分析师,主要工作是提取数据和做一些简单图表,以及少量的洞察结论,拥有对业务的基本了解就可以。

对于高级数据分析师,需要对业务有较为深入的了解,能够基于数据,提炼出有效观点,对实际业务能有所帮助。

对于数据挖掘工程师,对业务有基本了解就可以,重点还是需要放在发挥自己的技术能力上。

逻辑思维

这项能力在我之前的文章中提的比较少,这次单独拿出来说一下。

对于初级数据分析师,逻辑思维主要体现在数据分析过程中每一步都有目的性,知道自己需要用什么样的手段,达到什么样的目标。

对于高级数据分析师,逻辑思维主要体现在搭建完整有效的分析框架,了解分析对象之间的关联关系,清楚每一个指标变化的前因后果,会给业务带来的影响。

对于数据挖掘工程师,逻辑思维除了体现在和业务相关的分析工作上,还包括算法逻辑,程序逻辑等,所以对逻辑思维的要求也是最高的。

数据可视化

数据可视化说起来很高大上,其实包括的范围很广,做个PPT里边放上数据图表也可以算是数据可视化,所以我认为这是一项普遍需要的能力。

对于初级数据分析师,能用Excel和PPT做出基本的图表和报告,能清楚的展示数据,就达到目标了。

对于高级数据分析师,需要探寻更好的数据可视化方法,使用更有效的数据可视化工具,根据实际需求做出或简单或复杂,但适合受众观看的数据可视化内容。

对于数据挖掘工程师,了解一些数据可视化工具是有必要的,也要根据需求做一些复杂的可视化图表,但通常不需要考虑太多美化的问题。

协调沟通

对于初级数据分析师,了解业务、寻找数据、讲解报告,都需要和不同部门的人打交道,因此沟通能力很重要。

对于高级数据分析师,需要开始独立带项目,或者和产品做一些合作,因此除了沟通能力以外,还需要一些项目协调能力。

对于数据挖掘工程师,和人沟通技术方面内容偏多,业务方面相对少一些,对沟通协调的要求也相对低一些。

快速学习

无论做数据分析的哪个方向,初级还是高级,都需要有快速学习的能力,学业务逻辑、学行业知识、学技术工具、学分析框架……数据分析领域中有学不完的内容,需要大家有一颗时刻不忘学习的心。

现在还不清楚自己是否适合学习大数据的小伙伴们可以加入我们一起学习

java(Java se,javaweb)

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

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的完全面向对象的编程语言。

jblas:一个快速的线性代数库(JAVA)。基于BLAS与LAPACK,矩阵计算实际的行业标准,并使用先进的基础设施等所有的计算程序的ATLAS艺术的实现,使其非常快。

Spark: Spark是在Scala语言中实现的类似于Hadoop MapReduce的通用并行框架,除了Hadoop MapReduce所具有的优点,但不同于MapReduce的是job中间输出结果可以保存在内存中,从而不需要读写HDFS,因此Spark能更好的适用于数据挖掘与机器学习等需要迭代的MapReduce算法。可以和Hadoop文件系统并行运作,用过Mesos的第三方集群框架可以支持此行为。

Spark SQL: 作为Apache Spark大数据框架的一部分,可用于结构化数据处理并可以执行类似SQL的Spark数据查询

Spark Streaming:一种构建在Spark上的实时计算框架,扩展了Spark处理大数据流式数据的能力。

Spark MLlib: MLlib是Spark是常用的机器学习算法的实现库,目前(2014.05)支持二元分类,回归,聚类以及协同过滤。同时也包括一个底层的梯度下降优化基础算法。MLlib以来jblas线性代数库,jblas本身以来远程的Fortran程序。

Spark GraphX: GraphX是Spark中用于图和图并行计算的API,可以在Spark之上提供一站式数据解决方案,可以方便且高效地完成图计算的一整套流水作业。

Fortran:最早出现的计算机高级程序设计语言,广泛应用于科学和工程计算领域。

BLAS:基础线性代数子程序库,拥有大量已经编写好的关于线性代数运算的程序。

LAPACK:著名的公开软件,包含了求解科学与工程计算中最常见的数值线性代数问题,如求解线性方程组、线性最小二乘问题、特征值问题和奇异值问题等。

ATLAS:BLAS线性算法库的优化版本。

Spark Python:Spark是由scala语言编写的,但是为了推广和兼容,提供了java和python接口。

六、Python

Python: 一种面向对象的、解释型计算机程序设计语言。

七、云计算平台

Docker:开源的应用容器引擎

kvm:(Keyboard Video Mouse)

openstack:开源的云计算管理平台项目

你可能感兴趣的:(零基础该怎样去系统学习大数据?知识+内容+教程)