先上一张大数据技术学习的必备技能图: 入门学习需要掌握的基本技能: 1、Java 2、Linux命令 3、HDFS 4、MapReduce 5、Hadoop 6、Hive 7、ZooKeeper 8、HBase 9、Redis 10、Flume 11、SSM 12、Kafka 13、Scala 14、Spark 15、MongoDB 16、Python与数据分析等等。 我们所说的大数据培训学习,一般是指大数据开发。大数据开发需要学习的东西可以参考一下加米谷大数据培训0基础学习的课程,具体描述可见guan网: 第一阶段:Java设计与编程思想 第二阶段:Web前端开发 第三阶段:JavaEE进阶 第四阶段:大数据基础 第五阶段:HDFS分布式文件系统 第六阶段:MapReduce分布式计算模型 第七阶段:Yarn分布式资源管理器 第八阶段:Zookeeper分布式协调服务 第九阶段:Hbase分布式数据库 第十阶段:Hive分布式数据仓库 第十一阶段:FlumeNG分布式数据采集系统 第十二阶段:Sqoop大数据迁移系统 第十三阶段:Scala大数据黄金语言 第十四阶段:kafka分布式总线系统 第十五阶段:SparkCore大数据计算基石 第十六阶段:SparkSQL数据挖掘利器 第十七阶段:SparkStreaming流失计算平台 第十八阶段:SparkMllib机器学习平台 第十九阶段:SparkGraphx图计算平台 第二十阶段:大数据项目实战 学习要根据自身情况来定,如果你是零基础,那就必须先从基础Java开始学起(大数据支持很多开发语言,但企业用的最多的还是JAVA),接下来学习数据结构、Linux系统操作、关系型数据库,夯实基础之后,再进入大数据的学习,具体可以按照如下体系: 第一阶段 COREJAVA(加的需重点熟练掌握,其他掌握) Java基础 数据类型,运算符、循环,算法,顺序结构程序设计,程序结构,数组及多维数组 面向对象 构造方法、控制符、封装 继承 多态 抽象类、接口 常用类 集合Collection、list HashSet、TreeSet、Collection 集合类Map 异常,File 文件流 数据流和对象流 线程(理解即可) 网络通信(理解即可) 第二阶段 数据结构 关系型数据库 Linux系统操作 Linux操作系统概述,安装Linux操作系统,图形界面操作基础,Linux字符界面基础,字符界面操作进阶,用户、组群和权限管理,文件系统管理,软件包管理与系统备份,Linux网络配置(主要掌握Linux操作系统的理论基础和服务器配置实践知识,同时通过大量实验,着重培养动手能力。了解Linux操作系统在行业中的重要地位和广泛的使用范围。在学习Linux的基础上,加深对服务器操作系统的认识和实践配置能力。加深对计算机网络基础知识的理解,并在实践中加以应用。掌握Linux操作系统的安装、命令行操作、用户管理、磁盘管理、文件系统管理、软件包管理、进程管理、系统监测和系统故障排除。掌握Linux操作系统的网络配置、DNS、DHCP、HTTP、FTP、SMTP和POP3服务的配置与管理。为更深一步学习其它网络操作系统和软件系统开发奠定坚实的基础。与此同时,如果大家有时间把javaweb及框架学习一番,会让你的大数据学习更自由一些) 重点掌握: 常见算法 数据库表设计,SQL语句,Linux常见命令 第三阶段 Hadoop阶段 离线分析阶段 实时计算阶段 重点掌握: Hadoop基础,HDFS,MapReduce,分布式集群,Hive,Hbase,Sqoop ,Pig,Storm实时数据处理平台,Spark平台 以上就是笔者总结学习阶段,如果还想了解更多的知识,还可以关注一些如大数据cn这类公众号,建议每个想要学习大数据的人,按照这个学习阶段循序渐进,不断完善自己的知识架构,提升自身的理论知识,然后找一个合适的项目,跟着团队去做项目,积累自己的经验,相信会在大数据的舞台上展现出很好的自己! 这是一个非常好的问题,作为一名IT从业者,同时也是一名教育工作者,我来回答一下。 大数据经过多年的发展,已经逐渐形成了一个比较庞大且系统的知识体系,整体的技术成熟度也已经比较高了,所以当前学习大数据技术也会有一个比较好的学习体验。 由于大数据涉及到的内容比较多,而且大数据技术与行业领域也有比较紧密的联系,所以在学习大数据的时候,既可以从技术角度出发,也可以立足行业来学习大数据。对于学生来说,可以从大数据技术体系来学习,而对于职场人来说,可以结合自身的行业和岗位任务来学习大数据。 不论是学生还是职场人,要想学习大数据都需要掌握以下几个基本内容: 第一:计算机基础知识。计算机基础知识对于学习大数据技术是非常重要的,其中操作系统、编程语言和数据库这三方面知识是一定要学习的。编程语言可以从Python开始学起,而且如果未来要从事专业的大数据开发,也可以从Java开始学起。计算机基础知识的学习具有一定的难度,学习过程中要重视实验的作用。 第二:数学和统计学基础知识。大数据技术体系的核心目的是数据价值化,数据价值化的过程一定离不开数据分析,所以作为数据分析基础的数学和统计学知识就比较重要了。数学和统计学基础对于大数据从业者未来的成长空间有比较重要的影响,所以一定要重视这两个方面知识的学习。 第三:大数据平台基础。大数据开发和大数据分析都离不开大数据平台的支撑,大数据平台涉及到分布式存储和分布式计算等基础性功能,掌握大数据平台也会对于大数据技术体系形成较深的认知程度。对于初学者来说,可以从Hadoop和Spark开始学起。 我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。 如果有互联网、大数据、人工智能等方面的问题,或者是考研方面的问题,都可以在评论区留言,或者私信我! 对于大数据想必了解过的人和想要学习大数据的童鞋都是有所了解的,知道大数据培训相关的一些学习内容都有个大概的了解,但是对于大数据培训学习内容的一些比较详细的内容还是有所差距的,我们学习大数据的主要目的就是未来以后可以到大企业去做相关的工作,拿到客观的薪资。那么这就需要我们了解企业对于大数据技术的需求是什么,大数据培训机构大数据课程内容是否包含这些内容。接下来带大家简单了解一下。 第一阶段Java语言基础,此阶段是大数据刚入门阶段,主要是学习一些Java语言的概念、字符、流程控制等。 第二阶段Javaee核心了解并熟悉一些HTML、CSS的基础知识,JavaWeb和数据库,Linux基础,Linux操作系统基础原理、虚拟机使用与Linux搭建、Shell脚本编程、Linux权限管理等基本的Linux使用知识,通过实际操作学会使用。 第五阶段Hadoop生态体系,Hadoop是大数据的重中之重,无论是整体的生态系统、还是各种原理、使用、部署,都是大数据工程师工作中的核心,这一部分必须详细解读同时辅以实战学习。 第六阶段Spark生态体系,这也是是大数据非常核心的一部分内容,在这一时期需要了解Scala语言的使用、各种数据结构、同时还要深度讲解spark的一系列核心概念比如结构、安装、运行、理论概念等。 2021大数据学习路线图: 想要学好大数据需掌握以下技术: 1。Java编程技术 Java编程技术是大数据学习的基础,Java是一种强类型语言,拥有极高的跨平台能力,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等,是大数据工程师最喜欢的编程工具,因此,想学好大数据,掌握Java基础是必不可少的! 2。Linux命令 对于大数据开发通常是在Linux环境下进行的,相比Linux操作系统,Windows操作系统是封闭的操作系统,开源的大数据软件很受限制,因此,想从事大数据开发相关工作,还需掌握Linux基础操作命令。 3。Hadoop Hadoop是大数据开发的重要框架,其核心是HDFS和MapReduce,HDFS为海量的数据提供了存储,MapReduce为海量的数据提供了计算,因此,需要重点掌握,除此之外,还需要掌握Hadoop集群、Hadoop集群管理、YARN以及Hadoop高级管理等相关技术与操作! 4。Hive Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行,十分适合数据仓库的统计分析。对于Hive需掌握其安装、应用及高级操作等。 5。Avro与Protobuf Avro与Protobuf均是数据序列化系统,可以提供丰富的数据结构类型,十分适合做数据存储,还可进行不同语言之间相互通信的数据交换格式,学习大数据,需掌握其具体用法。 6。ZooKeeper ZooKeeper是Hadoop和Hbase的重要组件,是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组件服务等,在大数据开发中要掌握ZooKeeper的常用命令及功能的实现方法。 7。HBase HBase是一个分布式的、面向列的开源数据库,它不同于一般的关系数据库,更适合于非结构化数据存储的数据库,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,大数据开发需掌握HBase基础知识、应用、架构以及高级用法等。 8。phoenix phoenix是用Java编写的基于JDBCAPI操作HBase的开源SQL引擎,其具有动态列、散列加载、查询服务器、追踪、事务、用户自定义函数、二级索引、命名空间映射、数据收集、行时间戳列、分页查询、跳跃查询、视图以及多租户的特性,大数据开发需掌握其原理和使用方法。 9。Redis Redis是一个keyvalue存储系统,其出现很大程度补偿了memcached这类keyvalue存储的不足,在部分场合可以对关系数据库起到很好的补充作用,它提供了Java,CC,C,PHP,Java,Perl,ObjectC,Python,Ruby,Erlang等客户端,使用很方便,大数据开发需掌握Redis的安装、配置及相关使用方法。 10。Flume Flume是一款高可用、高可靠、分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。大数据开发需掌握其安装、配置以及相关使用方法。 11。SSM SSM框架是由Spring、SpringMVC、MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架。大数据开发需分别掌握Spring、SpringMVC、MyBatis三种框架的同时,再使用SSM进行整合操作。 12。Kafka Kafka是一种高吞吐量的分布式发布订阅消息系统,其在大数据开发应用上的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。大数据开发需掌握Kafka架构原理及各组件的作用和使用方法及相关功能的实现! 13。Scala Scala是一门多范式的编程语言,大数据开发重要框架Spark是采用Scala语言设计的,想要学好Spark框架,拥有Scala基础是必不可少的,因此,大数据开发需掌握Scala编程基础知识! 14。Spark Spark是专为大规模数据处理而设计的快速通用的计算引擎,其提供了一个全面、统一的框架用于管理各种不同性质的数据集和数据源的大数据处理的需求,大数据开发需掌握Spark基础、SparkJob、SparkRDD、sparkjob部署与资源分配、Sparkshuffle、Spark内存管理、Spark广播变量、SparkSQL、SparkStreaming以及SparkML等相关知识。 15。Azkaban Azkaban是一个批量工作流任务调度器,可用于在一个工作流内以一个特定的顺序运行一组工作和流程,可以利用Azkaban来完成大数据的任务调度,大数据开发需掌握Azkaban的相关配置及语法规则。想学习好大数据可以关注公众号程序员大牛有视频资源分享一起学习 16。Python与数据分析 Python是面向对象的编程语言,拥有丰富的库,使用简单,应用广泛,在大数据领域也有所应用,主要可用于数据采集、数据分析以及数据可视化等,因此,大数据开发需学习一定的Python知识。 17。Solr与Es搜索引擎 海量数据建立搜索引擎,方便用户搜索数据。 18。爬虫技术 爬取重要数据存储分析。 19。根据用户喜好,推荐各种算法,需要用户了解一些算法知识,数学知识等,这个对软件学习人员要求就较高了。 总之,大数据需要学习的技术很多,在这里不一一举例说明了,技术的更新迭代也比较快。学到老活到老,没有学的完技术,只有一直不懈努力。 谢谢邀请!大数据包括大数据开发、大数据分析挖掘、数据工程师(大数据运维)几个方向,不过在企业经常会职能交叉。学习内容:Linux基础PythonJavaScala编程语言选择一种MySQLOracle数据库Hadoop及其套件Hive数据仓库Spark开发,包括流开发StormFlink实时处理。。。。。。 1)简单点评: 发展不错,需求不少,不过需求中主要是数据分析相关岗位,牵涉到算法建模等高级内容的话实际上不适合刚毕业的不同本科学生。建议普通本科或专科学生从数据分析入行,掌握Python,以后逐步向高级数据分析师、数据挖掘工程师、人工智能开发工程师方向走, 2)发展前景: 大数据类职位需求增幅仅次于AI岗位。眼下,几乎所有互联网企业均把数据人才列为团队标配。许多公司在数据层面增加投入,大量招募具有算法和建模能力的人才,力求通过数据沉淀与挖掘更好地推进产品的迭代。数据架构师、数据分析师成为企业争抢对象,过去一年招聘需求提高150以上。2017,互联网公司对AI和数据人才的争抢活跃度提高了30以上,企业间相互挖角行为变得更加频繁,人才争夺激烈程度全面升级。物联网、智慧城市、增强现实(AR)与虚拟现实(VR)、区块链技术、语音识别、人工智能、数字汇流是大数据未来应用的七大发展方向。 3)行业定位: 4)面向专业: 计算机、数学与统计、物理、电子、通信工程、物联网、网络工程等相关专业大专以上学生。推荐中上游学生学习。 5)薪酬分析: 数据来源:职友网 更多资讯请关注笔者头条号语凡提,向智慧化身阿凡提致敬,致力于分享大数据数据分析人工智能视频! 纵观近几年的互联网发展趋势,看到大数据被炒得火热,也想要涉足大数据领域,学习一些大数据技术。技术很重要,人才自然是不可或缺的,想要你想成为的大数据技术人才,就必须要经历学习技术的枯燥乏味的过程。 首先你需要先认识到一个问题,想要涉足大数据领域,肯定是有一定难度的,但有句话说的好当你感觉特别累的时候,也就是说明你在走上坡路。虽然困难,但只要你想学习,万事皆有可能。 要找准自己的定位,先了解自己的实力,然后从容应对以后的学习途径。对于大数据技术自己是真的喜欢吗?面对冗杂的代码,复杂的数据,自己是否能奈的住性子一直坚持下去?自己之前接触过大数据技术吗?之前接触过编程知识吗?是否已经熟练掌握了一门编程语言? 现实中就业危机的问题依然严峻,紧绷的神经时刻提醒着要不断的提升自己。学习的越多,越能够感受到知识海洋的浩瀚。相比于将大量零碎的技术名词缩写塞进昏沉的大脑,手指无意识地敲出几行代码,培养以计算机思维解决问题才是更重要的。 工欲善其事,必先利其器,不断涌现的新技术,本质上是新工具对旧工具的迭代更新,如果我们不能掌握其中的规律,很容易浮于表层,难以触类旁通,在很多非科班出生的同学身上,这个问题尤其明显。 数据结构,概率论,线性代数,设计模式,这些子学科是构成大数据技术的坚强基石,是前人无数智慧的结晶。 至于具体要用什么样的方式来学大数据,这个主要是看自己的选择了,专业的学习方式会帮助更快进入学习氛围中,再就是看自己的学习能力和感兴趣程度了。 我有幸做了七八年的大数据吧,从技术角度谈谈自己的看法,大数据都有哪个领域,都需要学习什么技术。 第一,首先要把这些大数据都可靠的存储起来,经过多年的发展,hdfs已经成了一个数据存储的标准。当然还有其他的存储,比如kudu,hbase等,都是适合不同领域的存储。 第二,既然有了这么多的数据,我们可以开始基于这些数据做计算了,于是从最早的MapReduce到后来的hive,spark,都是做批处理的。 第三,由于像hive这些基于MapReduce的引擎处理速度过慢,于是有了基于内存的olap查询引擎,比如impala,presto。 第四,由于批处理一般都是天级别或者小时级别的,为了更快的处理数据,于是有了sparkstreaming或者flink这样的流处理引擎。 第五,由于没有一个软件能覆盖住所有场景。所以针对不同的领域,有了一些特有的软件,来解决特定场景下的问题,比如基于时间序列的聚合分析查询数据库,inflexdbopentsdb等。采用预聚合数据以提高查询的druid或者kylin等, 第六,还有其他用于数据削峰和消费订阅的消息队列,比如kafka和其他各种mq 第七,还有一些其他的组件,比如用于资源管理的yarn,协调一致性的zookeeper等。 第八,由于hdfs处理小文件问题不太好,还有为了解决大数据update和insert等问题,引入了数据湖的概念,比如hudi,iceberg等等。 第九,业务方面,我们基于大数据做一些计算,给公司的运营提供数据支撑。做一些推荐,给用户做个性化推荐。机器学习,报警监控等等。 附一张大数据技术图谱,你可以参考下 大数据作为当下互联网编程语言培训热门明星学科,大数据培训需要学习的内容很多,培训学习除了会有大数据技术知识的学习,同时还会在学习的过程中阶段性的插入一些相关企业项目进行实操学习,大数据主要的学习内容为: 1、基础部分:JAVA语言和LINUX系统。 2、大数据技术部分:HADOOP、HIVE、OOZIE、WEB、FLUME、PYTHON、HBASE、KAFKA、SCALA、SPARK、SPARK调优等,覆盖前沿技术:Hadoop,Spark,Flink,实时数据处理、离线数据处理、机器学习。 3、实训项目:一般包括JAVA项目,大数据项目,企业大数据平台等,大数据企业的商业项目直接为学员所用,一线大牛工程师亲自指导实战开发,业务覆盖电商、在线教育、旅游、新闻、智慧城市等主流行业,全程贯穿项目实战。 另外,在选择大数据培训机构时,要选择专业做大数据的,还要考虑机构的课程设置、讲师团队、硬件设施、实训项目等多方面条件。 2020大数据学习路线图: 前言 要从事计算机行业的工作,不管是什么工作,开发、测试、还是算法等,都是要有一门自己比较熟练的编程语言,编程语言可以是C语言、Java、C等,只要是和你后续工作所相关的就可以(后续用到其他语言的话,你有一门语言基础了,学起来就快了)。一般初学者入门语言大多都会选择Java、C语言、C或者Python,而且现在网上有很多好的视频,可以供初学者学习使用。关于学习视频或者资料的选择,知乎或者百度等都有很多讲解了,也可以跟师兄师姐咨询,这样可以少走很多弯路,当然,有人说,走一些弯路总是有好处的,但是我这里说的弯路不是说不犯错误,不调bug,而是指学习资料以及一些知识点的偏重点,这样可以尽量节约一部分时间,刚开始时,总会有点迷,而且当你真正投入进去学习时,会发现时间总是不够用。 我前面是做的Java后端,后续才转的大数据,所以一些Java开发所需要的东西自己也有学习过,也都是按照正常的路线走的,JavaSE阶段,然后数据库,SSM框架,接着做了一些网上找的项目,之后发现对大数据比较感兴趣,就开始找大数据相关的资料学习,看视频,看博客,敲代码,前期大概花了34个月吧(公众号的这些资料就是我当时看过的),也是一步步艰难走过来的,刚刚开始接触大数据相关的东西时,一度怀疑这么多东西自己能否学得完,是不是能用得到,学完又忘了,忘了又回头看,不过还好,坚持过来了,还好没有放弃,工作也还ok,找的大数据开发岗,待遇也还不错吧。 下面就说一下我自己从Java开发到大数据开发的曲折学习之路(狗头保命。jpg)。 因为我现在是做大数据相关的工作了,所以Java后端涉及到的一些SSM框架等知识点我就不介绍了,毕竟后续一段时间也没有做了。自己看过的大数据学习相关的视频资料大概是200G300G吧,从LinuxHadoopSpark项目,还有就是一些面试文档,面经等。一些视频看了两遍或者更多,跟着学,跟着敲代码,做项目,准备面试。 涉及到需要学习的东西包括:JavaSE,数据结构与算法(计算机行业必备),MySQL,Redis,ES(数据库这些可以看项目,也可以自己熟练一两个),Linux,Shell(这个可以后期补),Hadoop,Zookeeper,Hive,Flume,Kafka,HBase,Scala(Spark是Scala写的,会Scala做相关的项目会更容易入手),Spark,Flink(这个是找工作时有面试官问过几次liao不liao解,所以找完工作才开始接触学习),相关项目。编程语言阶段学习 如果是零基础的话,建议还是从视频开始入门比较好,毕竟一上来就看教材,这样有些代码的来龙去脉可能不是很了解。如果是有一些编程语言基础的话,从视频开始也会更简单,一些for、while循环你都知道了,学起来也会快很多。 JavaSE我是选择的某马刘意的为主,因为刚刚开始学Java看过一本从《Java从入门到精通》,没什么感觉,后续又在看了某课网的Java初级视频,还是没感觉出来啥(当时就有点怀疑自己了),可能有点没进入状态。 还好后续找了某马刘意老师的JavaSE视频(我是看的2015年版本,那时候19版还没出),觉得他讲的真的是很好很详细,每个知识点都会有例子,也都会带你敲代码,做测试,可能前面有C语言基础,然后也看过Java的一些语法,所以学起来还是比较顺利,后面的IO流、多线程等知识点时,也有看书看博客,或者看看其他老师的课程,讲解的可能自己比较容易接受就可以,反正都是多尝试(下面会给出视频链接),尽量懂一些,后续可以回头来复习。JavaSE相关的视频,先看一遍,后续有时间建议再看一遍,而且这些经典的视频,看两遍真的是享受。 如果有一定基础了的,JavaSE前面七八天的视频可以加速看,但是不懂的一定要停下开仔细想想,零基础的还是尽量不要加速吧,慢慢来稳些。后面的视频建议还是跟着视频来,尽量不要加速,代码尽量都敲一敲,第一遍基本上一个月到一个半月可以结束。 JavaSE可以说是很基础也很重要的东西,主要重点包括面向对象、集合(List、Map等),IO流,StringStringBuilderStringBuffer、反射、多线程,这些最好是都要熟悉一些,面试也是重点。 JavaSE之后,如果你是要走前端或后端开发路线的话,可以跟着一些网上的视频继续学习,这里我就不多做介绍了。 分割线,Scala可以后续Spark阶段再接触学习 Scala的学习,Scala是一门多范式(multiparadigm)的编程语言,Scala支持面向对象和函数式编程,最主要的是后续Spark的内容需要用到Scala,所以前面学习了JavaSE,到Spark学习之前,再把Scala学习一波,美滋滋,而且Scala可以和Java进行无缝对接,混合使用,更是爽歪歪。后续Spark学习时基本都是用的Scala,也可能是和Java结合使用,所以Spark之前建议还是先学一波Scala,而且Scala用起来真是很舒服(wordcount一行代码搞定),适合迭代式计算,对数据处理有很大帮助,不过Scala看代码很容易看懂,但是学起来还是挺难的,比如样例类(caseclass)用起来真是nice,但是隐式转换学起来就相对比较难。学习Scala的建议:1。学习scala特有的语法,2。搞清楚scala和java区别,3。了解如何规范的使用scala。Scala对学习Spark是很重要的(后面Flink也是要用),虽然现在很多公司还是用Java开发比较多,而且Spark是Scala写的,如果要读源码,会Scala还是很重要的(至少要看得懂代码)。 Scala主要重点包括:隐式转换和隐式参数、模式匹配、函数式编程。这里我看的是某硅谷韩老师的Scala视频,韩老师讲的真的很不错,五星推荐,哈哈。 也许有人会觉得Python也是需要的,但是学习阶段,可能用Java还是比较多,面试也基本都是问Java相关的内容,所以Python后续工作会用到的话,再看看Python的内容吧。大数据框架阶段学习 大数据这方面的知识点自己可以说真的是从零开始的,刚刚开始学那会Linux基本都没用过,心里那个虚啊,而且时间也紧迫,想起来都是一把辛酸泪。 刚刚开始学的时候,看了厦门大学林子雨的《大数据技术原理与应用》课程,可能这个课程是面对上课的,所以看了一些,感觉对自己帮助不是很大(并不是说课程不好,可能不太适合自己,如果是要了解理论知识,很透彻,但是俺时间紧迫啊),所以就继续在网上找视频,然后发现某硅谷的培训视频很多人去参加,而且知识点也很齐全,大数据相关组件都有讲课,还有一些项目比较好,所以就找了它相关的视频,当时看的是2018年的,所以视频不算旧。 来一张推荐系统架构的图,先看看 一般来说,FlumeKafka对数据进行采集聚合传输,一方面Spark对实时数据进行处理,传输给相应的数据处理模块(比如实时数据处理的算法模块,Spark也有提供常见的机器学习算法的程序库),另一方面采集的数据也可以放入数据库(HBase、MongoDB等)中,后续MapReduce对离线数据进行离线处理,数据处理完毕用于后续的使用,数据采集处理的流程大概就是这样。如果是推荐系统,实时推荐会给用户产生实时的推荐结果,让用户进行查阅选择,比如你在界面浏览了或者看了新的物品,然后刷新下界面,可能给你展示的东西就有一些变成跟你刚刚浏览的相关了。离线推荐的话主要是对离线数据进行处理,为物品或种类做出相似的推荐,如果后续用户搜索相应的物品时,给用户展示相应的产品。 大数据学习路线:LinuxHadoopZookeeperHiveFlumeKafkaHBaseScalaSpark项目Flink(如果需要学习Storm,在Spark前面学习)一、Linux(基本操作) 一般我们使用的都是虚拟机来进行操作,所以要安装VM(VirtualMachine),我使用的是CentOS,所以VM和CentOS都要跟着安装好,跟着视频操作,一定要动手实践,将一些Linux基本命令熟练掌握,一些VIM编辑器的命令也要会用,做相应的一些配置,使用SecureCRT来做远程登录操作(也可以使用其他的,自己顺手就行)。再强调一遍,基本操作命令尽量熟练一点,如果一下记不住,打印一些常用的,自己看看,多用多实践,慢慢就会用了。还有一些软件包的下载安装卸载等,跟着操作一遍,熟悉下,后续都会使用,Shell编程可以后续补。二、Hadoop(重点中的重点) Hadoop是一个分布式系统基础框架,用于主要解决海量数据的存储和海量数据的分析计算问题,也可以说Hadoop是后续整个集群环境的基础,很多框架的使用都是会依赖于Hadoop。主要是由HDFS、MapReduce、YARN组成。这个部分安装Hadoop,Hadoop的三个主要组成部分是重点,对他们的概念要理解出来,知道他们是做什么的,搭建集群环境,伪分布式模式和完全分布式模式的搭建,重要的是完全分布式的搭建,这些部分一定要自己动手实践,自己搭建集群,仔细仔细再仔细,Hadoop的NameNode,DataNode,YARN的启动关闭命令一定要知道,以及他们的启动关闭顺序要记住,不要搞混。后续视频会有一些案例操作,跟着写代码,做测试,把基本环境都配置好,后续这个集群(完全分布式需要三台虚拟机)要一直使用。三、Zookeeper Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。分布式安装ZK,对ZK有一定的了解就可以了,了解它的应用场景,以及内部原理,跟着做一些操作,基本上有一些了解即可。四、Hive(重点) Hive是基于Hadoop的数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。Hive的安装,它的数据类型,以及它的数据定义、数据操作有较好的了解,怎么操作表(创建表、删除表,创建什么类型的表,他们有什么不同),怎么操作数据(加载数据,下载数据,对不同的表进行数据操作),对数据的查询一定要进行实践操作,以及对压缩方式和存储格式要有一些了解,用到时不懂也可以去查,最好是能理解清楚。这部分有什么面试可能会问,所以视频后续的面试讲解可以看看,理解清楚。五、Flume Flume是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。对于Flume,对它的组成架构,以及对FlumeAgent的内部原理要理解清楚,Source、Channel、Sink一定要知道它们的各种类型以及作用,有哪些拓扑结构是常见常用的,例如一对一,单Source、多Channel、多Sink等,它们有什么作用,要理解清楚。还有一个重点,就是对Flume的配置文件一定要了解清楚,不懂的可以上官网查看案例,对于不同的情况,它的配置文件要做相应的修改,才能对数据进行采集处理,视频中的实践案例一定要跟着做。六、Kafka(重点) Kafka是一个分布式消息队列,用来缓存数据的。比如说实时计算中可以通过FlumeKafka对数据进行采集处理之后,SparkStreaming再使用Kafka相应的Topic中的数据,用于后续的计算使用。对于Kafka,要理解Kafka的架构,什么是Kafka,为什么需要Kafka,应用场景。基本的命令行操作要掌握,比如怎么创建删除Topic,怎么通过生产者生成数据,消费者怎么消费数据等基本操作,官网也是有一些案例可以查阅的。七、HBase(重点) HBase是一个分布式的、基于列存储的开源数据库。HBase适合存储PB级别的海量数据,也可以说HBase是很适合大数据的存储的,它是基于列式存储数据的,列族下面可以有非常多的列,列族在创建表的时候就必须指定。所以对HBase的数据结构要有一定的理解,特别是RowKey的设计部分(因为面试被问到过,咳咳,所以点一下),对于它的原理要了解,一些基本操作也要都会,比如创建表,对表的操作,基本的API使用等。八、Spark(重点中的重点) Spark是快速、易用、通用的大数据分析引擎。一说到Spark,就有一种哪哪都是重点感觉,哈哈。 Spark的组成可以看下图 Spark是基于内存计算的,对于数据的处理速度要比MapReduce快很多很多,而且数据挖掘这些都是要对数据做迭代式计算,MapReduce对数据的处理方式也不适合,而Spark是可以进行迭代式计算,很适合数据挖掘等场景。Spark的SparkSQL能够对结构化数据进行处理,SparkSQL的DataFrame或DataSet可以作为分布式SQL查询引擎的作用,可以直接使用Hive上的表,对数据进行处理。SparkStreaming主要用于对应用场景中的实时流数据进行处理,支持多种数据源,DStream是SparkStreaming的基础抽象,由一系列RDD组成,每个RDD中存放着一定时间段的数据,再对数据进行处理,而且是基于内存计算,速度快,所以很适合实时数据的处理。SparkMLlib提供常见的机器学习(ML)功能的程序库。包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据导入等额外的支持功能。对Spark的核心组件、部署模式(主要是Standalone模式和YARN模式)、通讯架构、任务调度要有一定了解(面试问到了可以说一波),SparkShuffle要好好理解,还有内存管理要知道,对Spark的内核原理一定要好好理解,不仅面试可能要用,以后工作也是有帮助的。九、Flink(重点中的重点) Flink是一个框架和分布式处理引擎,用于对无界(有开始无结束)和有界(有开始有结束)数据流进行有状态计算。现在主要是阿里系公司使用的比较多,很多公司使用的还是Spark居多,而且Flink基本上都是和Spark很多功能大体上一样的,但是以后Flink和Spark孰强孰弱还有待时间的考验,不过Flink近几年越来越火了这是事实,所以如果有时间有精力的话,可以学一学Flink相关的内容也是很不错的。Spark和Flink主要都是在数据处理方面应用,在数据处理方面的话,离线数据处理:Flink暂时比不上Spark,SparkSQL优点在于可以和Hive进行无缝连接,SparkSQL可以直接使用Hive中的表;Flink暂时做不到这一步,因为官方不支持这一操作,Flink只能将数据读取成自己的表,不能直接使用Hive中的表。对于实时数据的处理:Flink和Spark可以说是平分秋色吧,而且Flink是以事件为驱动对数据进行处理,而Spark是以时间为驱动对数据进行处理,在一些应用场景中,也许Flink的效果比Spark的效果还要好些,因为Flink对数据更加的敏感。比如一秒钟如果触发了成千上万个事件,那么时间驱动型就很难对数据做细致的计算,而事件驱动型可以以事件为单位,一个个事件进行处理,相比而言延迟更低,处理效果更好。现在使用Flink的公司越来越多,有时间学习下,也算是有个准备。项目阶段 其实某硅谷的视频里面有很多大数据相关的项目,而且都是文档配代码的,B站上也有视频,学习期间可以跟着视频做两到三个项目,自己理清思路,把项目理解透彻,还是可以学到很多东西的。 根据自己情况,选择两到三个项目重点跟着做,理解透彻一点大数据项目实战 某硅谷的视频里面有很多大数据相关的项目,而且都是文档配代码的,学习期间可以跟着视频做两到三个项目,自己理清思路,把项目理解透彻,还是可以学到很多东西的。根据自己情况,选择两到三个项目重点跟着做,理解透彻一点。相关项目文档资料我已经放到网盘,GongZhongHao回复相应关键字获取领取方式。 相关项目、涉及技术框架及其B站链接(B站链接主要是为了有些小伙伴网盘速度限制,这样就下载文档资料即可)书籍 书籍部分直接云盘链接保存即可,这里我放两张Java开发和大数据开发我自己的书单(很多,路漫漫,吾将上下而求索) Java后端书架: 大数据书架: 大概就这些,看完就需要很久了,大部分我也是需要的时候看相应的部分,所以有时间可以好好看下,不然就需要哪一部分看哪一部分,有助于学习即可。最后 大数据开发也是需要编程基础的,并不是学会使用这些框架怎么样就可以了,所以对于编程语言,数据结构与算法,计算机网络这些基础也是要的,这些基础知识也有助于自己以后的发展,如果是应届生校招的话,面试基本上都是JavaSE和数据结构与算法等的知识点,还有大数据组件相关的知识点,以及对项目的理解,这些都是要自己面试前准备好的,多看面经,多找面试题看,面几次,心里有谱了,后续面试就好了。 不管是从事什么样的计算机相关的岗位,编程都是很重要的,数据结构与算法特别重要,还有就是leetcode等编程网站刷题,提升自己的编程思维,后续笔试面试都要要的。 要将一行行代码看做一叠叠rmb,但是一行行代码能不能转换成一叠叠rmb,自己就一定要:坚持,多敲代码;多敲代码,坚持;坚持。