大数据(Big Data),是一个描述大量高速,复杂和可变数据的术语,需要先进的技术来实现信息的捕获,存储,分发,管理和分析。
大数据是指无法在可承受的时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
数据分析是基于商业目的,有目的的进行收集、整理、加工和分析数据,提炼有价值信息的过程。
目前的数据相关岗位主要是分为二个方向,大数据工程和数据分析。
常说的大数据分析就是属于大数据工程方面的,主要是针对海量的数据处理(比如100PB的数据体量),另外是针对的是离线数据仓库和实时数据仓库做开发,技术体系主要是hadoop,hive,spark,flink等…
第二个方面就是数据分析,针对的数据量不大,可以使用Excel,Python来实现。由于技术含量较低,企业要求也会低一些,如果对算法掌握的不错,可以从事数据挖掘,AI等方向的工作。
从大数据开发的工作内容来看大数据开发主要分为:负责大数据的大数据挖掘、数据清洗、数据建模工作。
大数据挖掘主要负责处理和大数据应用,结合大数据可视化分析工程师,挖掘出价值的数据,为企业提供业务发展支持。
大数据开发工程师偏重建设和优化系统。
大数据挖掘类工作主要是编写一些Hadoop、Spark的应用程序;大数据开发是对大数据处理系统本身进行开发。
大数据开发工作的话通常大公司里才有,一般他们都会搞自己的系统或者再对开源的做些二次开发。
戳我了解更多大数据开发学习路线
大数据开发学习有一定难度,零基础入门首先要学习Java语言打基础,一般而言,Java学习SE、EE,需要一段时间;然后进入大数据技术体系的学习,主要学习Hadoop、Spark、Storm等。
除此之外,学习大数据开发需要学习的内容包括三大部分,分别是:
目前,一个大数据工程师的月薪轻松过万,一个有几年工作经验的工程师薪酬在40万~160万元之间不等,而更顶尖的大数据技术人才则是年薪轻松超百万。
Java语言是基础,可以编写Web应用、桌面应用、分布式系统、嵌入式系统应用等。Java语言有很多优点,它的跨平台能力赢得了很多工程师的喜爱。
大数据开发一般在Linux环境下进行。大数据工程师使用的命令主要在三方面:查看进程,包括CPU、内存;排查故障,定位问题;排除系统慢的原因等。
Hadoop中使用最多的是HDFS集群和MapReduce框架。HDFS存储数据,并优化存取过程。
MapReduce方便了工程师编写应用程序。
HBase可以随机、实时读写大数据,更适合于非结构化数据存储,核心是分布式的、面向列的Apache HBase数据库。HBase作为Hadoop的数据看,它的应用、架构和高级用法对大数据开发来说非常重要。
Hive作为Hadoop的一个数据仓库工具,方便了数据汇总和统计分析。
ZooKeeper是Hadoop和Hbase的重要组件,可以协调为分布式应用程序。ZooKeeper的功能主要有:配置维护、域名服务、分布式同步、组件服务。
Phoenix是一种开源的sql引擎,是用Java语言编写的。
Avro、Protobuf是适合做数据存储的数据序列化系统,有较丰富的数据结构类型,可以在多种不同的语言间进行通信。
Apache Cassandra是运行在服务器或者云基础设施上的可以为数据提供完美平台的数据库,具有高性能、可扩展性、高线性。
Cassandra支持数据中心间互相复制,低延迟、不受断电影响。它的数据模型有列索引、高性能视图和内置缓存。
Kafka可以通过集群来提供实时的消息的分布式发布订阅消息系统,具有很高的吞吐量,主要是利用Hadoop的并行加载来统一线上、离线的消息处理。
Spark是专为大规模数据处理而设计的快速通用的计算引擎,其提供了一个全面、统一的框架用于管理各种不同性质的数据集和数据源的大数据处理的需求,大数据开发需掌握Spark基础、SparkJob、Spark RDD、spark job部署与资源分配、Spark shuffle、Spark内存管理、Spark广播变量、Spark SQL、Spark Streaming以及Spark ML等相关知识。
Flume是海量日志处理系统,具有高可用、高可靠、分布式的特点,可以对日志进行采集、聚合和传输。Flume可以定制数据发送方来收集数据,也可以对数据简单处理后写到数据接收方。
如果你有Java基础,忽略第一部分的Java基础课,其他的按照课表安排依次学习即可。
戳我了解更多大数据开发学习路线