学大数据需要什么编程基础?大数据学习步骤是什么?

学大数据需要什么编程基础?大数据学习步骤是什么? 大数据是什么? 有很多朋友问过我,大数据到底是什么?一句话来…

学大数据需要什么编程基础?大数据学习步骤是什么?
大数据是什么?

有很多朋友问过我,大数据到底是什么?一句话来概括

针对非软件行业的朋友

根据你平时在超市,加油站,饭店等地方的一些消费行为,通过大数据这个技术,我们可以知道你现在的年龄范围,是否婚配,是否有孩子,孩子大致是几岁,是否有固定住宅,车大致是什么价位的等信息。

针对软件行业的朋友

平时我们写的程序都是在一台机器上运行,处理能力有限,当然,数据量也是有限的。大数据这个技术,其实就是可以实现把我们的代码分布在很多台机器上去并行处理海量的数据,然后从这些海量数据中获取有价值,有意义的信息。

学习大数据需要的基本功

  1. linux基础是必须的,最起码需要掌握linux命令行下的基本操作命令
  2. javase基础【包含mysql】,注意是javase,不是javaee。javaweb那一块的知识针对大数据工程师而言不是必须的

大数据技术板块划分

数据采集

flume 、kafka、 logstash 、filebeat …

数据存储

mysql 、redis 、hbase 、hdfs …

虽然mysql不属于大数据范畴 但是我在这也列出来了,因为你在工作中离不开它

数据查询

hive impala elasticsearch kylin …

数据计算

实时计算

storm sparkstreaming flink …

离线计算

hadoop spark …

其他框架

zookeeper …

其实,学习大数据,就是要学习大数据生态圈周边的各种框架。

学大数据需要什么编程基础?大数据学习步骤是什么?
大数据学习步骤

上面虽然列出来了很多框架,但是最开始学习的时候没必要全部都学,就算是在工作中,这些框架也不一定会全部用到。

下面我就大致列一下,各种框架的一个学习步骤吧:

注意:下面列出来的顺序只是个人建议,可以根据个人实际情况来调整顺序

linux基础和javase基础【包含mysql】

这些是基本功,刚开始也不可能学的很精通,最起码要对linux中的一些基本的命令混个脸熟,后面学习各种框架的时候都会用到,用多了就熟悉了。javase的话建议主要看面向对象,集合,io,多线程,以及jdbc操作即可。

zookeeper

zookeeper是很多大数据框架的基础,中文名称是动物园的意思,因为目前的大数据框架的图标很多都是动物的形状,所以zookeeper其实就是可以管理很多大数据框架的。针对这个框架,主要掌握如何搭建单节点和集群,以及掌握如何在zkcli客户端下对zookeeper的节点进行增删改查操作即可。

hadoop

目前企业中一般都是用hadoop2.x的版本了,所以就没有必要再去学hadoop1.x版本了,hadoop2.x主要包含三大块

hdfs 前期,主要学习hdfs的一些命令即可,上传,下载,删除,移动,查看等命令…

mapreduce 这个需要重点学习下,要理解mr的原理以及代码实现,虽然现在工作中真正写mr的代码次数很少了,但是原理还是要理解的。

yarn 前期了解即可,只需要知道yarn是一个资源调度平台,主要负责给任务分配资源即可,yarn不仅可以给mapreduce任务调度资源,还可以为spark任务调度资源…yarn是一个公共的资源调度平台,所有满足条件的框架都可以使用yarn来进行资源调度。

hive

hive是一个数据仓库,所有的数据都是存储在hdfs上的,具体【数据仓库和数据库】的区别大家可以去网上搜索一下,有很多介绍。其实如果对mysql的使用比较熟悉的话,使用hive也就简单很多了,使用hive主要是写hql,hql是hive的sql语言,非常类似于mysql数据库的sql,后续学习hive的时候主要理解一些hive的语法特性即可。其实hive在执行hql,底层在执行的时候还是执行的mapredce程序。

注意:其实hive本身是很强大的,数据数据仓库的设计在工作中也是很重要的,但是前期学习的时候,主要先学会如何使用就好了。后期可以好好研究一下hive。

hbase

hbase是一个nosql 数据库,是一个key-value类型的数据库,底层的数据存储在hdfs上。在学习hbase的时候主要掌握 row-key的设计,以及列簇的设计。要注意一个特点就是,hbase基于rowkey查询效率很快,可以达到秒级查询,但是基于列簇中的列进行查询,特别是组合查询的时候,如果数据量很大的话,查询性能会很差。

redis

redis也是一个nosql 数据库和key-value类型的数据库,但是这个数据库是纯基于内存的,也就是redis数据库中的数据都是存储在内存中的,所以它的一个特点就是适用于快速读写的应用场景,读写可以达到10W次/秒,但是不适合存储海量数据,毕竟机器的内存是有限的;

当然,redis也支持集群,也可以存储大量数据。在学习redis的时候主要掌握string,list,set,sortedset,hashmap这几种数据类型的区别以及使用,还有pipeline管道,这个在批量入库数据的时候是非常有用的,以及transaction事务功能。

-flume

flume是一个日志采集工具,这个还是比较常用的,最常见的就是采集应用产生的日志文件中的数据。一般有两个流程,一个是flume采集数据存储到kafka中,为了后面使用storm或者sparkstreaming进行实时处理。另一个流程是flume采集的数据落盘到hdfs上,为了后期使用hadoop或者spark进行离线处理。在学习flume的时候其实主要就是学会看flume官网的文档,学习各种组建的配置参数,因为使用flume就是写各种的配置。

-kafka

kafka 是一个消息队列,在工作中常用于实时处理的场景中,作为一个中间缓冲层,例如,flume->kafka->storm/sparkstreaming。学习kafka主要掌握topic,partition,replicate等的概念和原理。storm

storm是一个实时计算框架,和hadoop的区别就是,hadoop是对离线的海量数据进行处理,而storm是对实时新增的每一条数据进行处理,是一条一条的处理,可以保证数据处理的时效性。学习storm主要学习topology的编写,storm并行度的调整,以及storm如何整合kafka实时消费数据。

-spark

spark 现在发展的也很不错,也发展成了一个生态圈,spark里面包含很多技术,spark core,spark steaming,spark mlib,spark graphx。

spark生态圈里面包含的有离线处理spark core,和实时处理spark streaming,在这里需要注意一下,storm和spark streaming ,两个都是实时处理框架,但是主要区别是:storm是真正的一条一条的处理,而spark streaming 是一批一批的处理。

spark中包含很多框架,在刚开始学习的时候主要学习spark core和spark streaming即可。这个一般搞大数据的都会用到。spark mlib和spark graphx 可以等后期工作需要或者有时间了在研究即可。

-elasticsearch

elasticsearch是一个适合海量数据实时查询的全文搜索引擎,支持分布式集群,其实底层是基于lucene的。在查询的时候支持快速模糊查询,求count,distinct,sum,avg等操作,但是不支持join操作。

elasticsearch目前也有一个生态圈,elk(elasticsearch logstash kibana)是一个典型的日志收集,存储,快速查询出图表的一整套解决方案。在学习elasticsearch的时候,前期主要学习如何使用es进行增删改查,es中的index,type,document的概念,以及es中的mapping的设计。

目前暂且列出来这么多吧,大数据生态圈目前还有很多比较好的技术框架,这个就需要等大家以后工作之后再去扩展了。

其实上面列出来的这十几个框架,在学习的时候,要专门挑一两个着重研究一下,最好针对,底层原理,优化,源码等部分有所涉猎,这么的话可以在面试过程中脱颖而出。不要想着把每一个框架都搞精通,目前是不现实的,其实就算

如果能过对上面的框架都大致会使用,并且对某一两个框架研究的比较深的话,其实想去找一份满意的大数据工作也就水到渠成了。

原文地址:https://blog.51cto.com/14459670/2422059

时间: 2024-11-03 05:31:43

学大数据需要什么编程基础?大数据学习步骤是什么?的相关文章

没有任何编程基础可以直接学习python语言吗?学会后能够做什么?

很明确的说 python非常适合没有任何编程基础的人入门.. 目前应用最多的:全栈开发.数据分析.运维开发,今天我们就以这三个重点的岗位来做一下自学Python的规划,希望你在学之前就能有结果的来走得更远. 很多人在问,python学了之后能做些什么? 既然你没有碰过 Python ,不知编程为何物的人,我就不提编程里面的项目名了--创一个小群,供大家学习交流聊天如果有对学python方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学习一起进步呀.也希望大家对学python能够持之以

大数据视频教程下载|零基础大数据就业课程(零到大神一“部”之遥)

零基础大数据就业课程(零到大神一"部"之遥)网盘地址:https://pan.baidu.com/s/1Bn4nVWlfG6xz6qEC-Ua0sQ 密码: tbny备用地址(腾讯微云):https://share.weiyun.com/52QfmKi 密码:njwgdd 课程分2大模块,14个课程,65章,共计856课时! 一.Java模块课程课程一.[大数据必知必会]- Java负基础扫盲篇课程二.[大数据必知必会]- Java OOP面向对象编程课程三.[大数据必知必会]- My

大数据整理:0基础大数据学习的几个问题

大数据将彻底颠覆传统的生产方式生活方式,大数据的蓬勃发展,使许多人想从事大数据相关的工作.大数据就0基础入门的初学者们最关心的问题进行整理回答. 一.大数据的发展前景 1.人才稀缺:未来3至5年,中国需要200万+大数据人才,目前大数据从业人数不足50万,市场需求远远得不到满足: 2.需求增长快速:大数据对接金融.电商.医疗.新零售.物联网.工业.农业.交通和能源等行业,人才需求量持续扩大.2018年大数据行业起薪突破20万每年,高出互联网普通技术开发人员134%,且招聘人数扩大为2017年7.

你得学会并且学得会的Socket编程基础知识

这一篇文章,我将图文并茂地介绍Socket编程的基础知识,我相信,如果你按照步骤做完实验,一定可以对Socket编程有更好地理解. 本文源代码,可以通过这里下载 http://files.cnblogs.com/chenxizhang/SocketWorkshop.rar 第一步:创建解决方案 第二步:创建服务端程序 这里可以选择“Console Application”这个类型,比较方便调试 然后编写如下代码,实现服务器的基本功能 using System; using System.Coll

你得学会并且学得会的Socket编程基础知识(续)——Silverlight客户端

本文将在这个案例的基础上,加入一个特殊场景,利用Silverlight来实现客户端.有的朋友可能会说,其实是一样的吧.请不要急于下结论,有用过Silverlight的朋友都有这种体会,很多在标准.NET Framework编程中能用的技术,到了Silverlight里面,或多或少会有些限制.不幸的是,Socket这个功能就是其中一个.这本身没有什么好不好的问题,Silverlight首先是运行在一个特殊的沙盒中,受到一些限制也是意料之中的,毕竟安全第一嘛 我总结Silverlight中应用Soc

【python之路】【2、编程基础】Python学习中的问题1

[列表中的重复数据,使用for循环遍历列表时,最后只取一次.] 1 #商店里的商品列表 2 com = [ 3 ("iphone",5800), 4 ("macbook",9000), 5 ("coffee",320), 6 ("pythonbook",80), 7 ("bicyle",1500) 8 ] 9 shoplist = []#购物车变量 10 11 salary = input("请输

网络编程基础之TCP学习(二)编程案例

TCP网络编程流程如下: 实现功能:服务器端与客户端成功通讯后返回get! 服务器端程序 #include <netdb.h>#include <sys/socket.h>#include <unistd.h>#include <string.h>#include <stdio.h>#include <stdlib.h>#include <memory.h>#include <signal.h>#include

第二周:神经网络的编程基础----------0、学习目标

1. Build a logistic regression model, structured as a shallow neural network2. Implement the main steps of an ML algorithm, including making predictions, derivative computation, and gradient descent.3. Implement computationally efficient, highly vect

没有基础可以学习大数据吗?0基础怎么学习大数据?给初学者支几招

小白如何学习大数据技术?大数据怎么入门?怎么做大数据分析?数据科学需要学习那些技术?大数据的应用前景等等问题,已成为热门大数据领域热门问题,以下是对新手如何学习大数据技术问题的解答~ 大数据开发学习可以按照以下内容进行学习 第一阶段:JavaSE+MySql+Linux 学习内容:Java 语言入门 → OOP 编程 → Java 常用Api.集合 → IO/NIO → Java 实 用技术 → Mysql 数据库 → 阶段项目实战 → Linux 基础 → shell 编程 学习目标:学习ja