实战大数据(Hadoop+Spark+Flink):从平台构建到交互式数据分析(离线/实时)
上QQ阅读APP看书,第一时间看更新

1.3 大数据工程师的技能树

一般将从事大数据平台构建以及海量数据采集、存储、计算等工作的技术人员称为大数据工程师,工作中的典型应用包含离线计算、实时计算、即席查询、数仓构建、用户画像、个性化推荐、反欺诈等。大数据领域才发展几年,专业人才比较缺乏,高端人才更是企业争抢的对象。至2025年大数据人才缺口将达到200万。大数据当前正处在落地应用阶段,大数据工程师未来的发展空间比较大,薪资待遇较好,从事大数据工作是个不错的选择。

上一节讲解了大数据平台的技术分层,理清了大数据技术架构逻辑。本节结合大数据技术架构与企业实际应用,梳理出大数据工程师需要掌握的技能,包括大数据主流开发语言、大数据平台的构建、大数据采集、大数据存储与交换、大数据离线和实时计算。

1.3.1 大数据主流开发语言

大数据开发与传统的Web开发类似,都需要基于一种程序开发语言开发应用。大数据生态圈的绝大多数技术组件的源代码都是使用Java语言开发的,比如Zookeeper、Hadoop、Hive、HBase、Flume、Sqoop、Flink等,而且在大数据开发过程中经常涉及源代码的阅读与使用,所以Java语言是从事大数据项目开发的必备语言,也是大数据开发的主流语言。当然除了Java语言,Python语言也可以用于大数据开发工作,Python语言主要侧重业务数据的分析和挖掘。

1.3.2 大数据平台的构建

无论大数据离线计算还是实时计算,都是基于大数据平台,所以大数据开发人员必须掌握大数据平台构建的技能。大数据平台一般是指Hadoop集群,Hadoop集群包含HDFS分布式文件系统和YARN资源管理系统。HDFS解决了海量数据的分布式存储问题,YARN解决了MapReduce分布式计算的资源调度问题,除了MapReduce,还有Spark和Flink等流式计算框架都可以运行在YARN上。当然,在Hadoop集群搭建的过程中,还需要搭建Zookeeper分布式协调服务,用来实现HDFS集群和YARN集群的高可用。因此,大数据工程师要掌握Zookeeper、HDFS以及YARN分布式集群的构建。

1.3.3 大数据采集

大数据最重要的是数据,没有数据其他的就无从谈起。大数据项目开发的首要任务就是采集海量数据,这就需要开发者具备海量数据采集的能力。在实际工作中,数据一般有两种来源,一种来自日志文件,一种来自数据库。每种数据源的采集技术有很多种,一般使用Flume、Logstash、Filebeat等工具采集日志文件数据,使用Sqoop、Canal等工具采集数据库中的数据。在本书中,项目的数据源来自日志文件,所以可以选择企业较为常用的采集工具Flume。因此,大数据工程师需要掌握Flume等大数据采集技术。

1.3.4 大数据存储与交换

前面已经构建起Hadoop大数据平台,HDFS分布式文件系统解决了海量数据存储的问题,但是HDFS并不支持数据的随机查询与更新,而HBase数据库构建在HDFS之上,既解决了海量数据存储又能实现数据的实时随机查询与更新,满足线上用户的服务需求。在大数据离线或实时计算项目中,经常需要使用Kafka消息队列作为实时的数据中转服务,对来自各个平台的数据(如来自物联网的数据、数据库的数据、移动App的数据等)进行流转,达到分享和交换数据的目的。因此,大数据工程师需要掌握HBase和Kafka等大数据存储交换技术。

1.3.5 大数据离线计算

Hadoop的出现,一方面使用HDFS解决了海量数据存储的问题,另一方面使用MapReduce解决了海量数据分布式计算的问题,当然MapReduce是离线计算框架,仅支持离线计算,但也解决了企业大部分的应用场景,在大数据项目开发的过程中离不开离线计算。当然除了MapReduce支持离线计算,本书后面提到的Hive、Spark Core、Spark SQL、Flink DataSet等技术都支持离线计算。因此,大数据工程师需要掌握MapReduce、Hive、Spark Core、Spark SQL、Flink DataSet等大数据离线计算技术。

1.3.6 大数据实时计算

离线计算解决了大数据批处理的应用问题,但随着社会的发展,企业和用户对服务的响应速度要求越来越高,离线计算难免存在数据反馈不及时的情况,很难适应越来越多的急需实时数据做决策的应用场景,所以实时计算就得到了快速的发展。大数据发展至今出现了很多实时计算框架,本书重点讲解当前比较流行、企业使用较为广泛的Spark Streaming和Flink DataStream等实时计算模型。因此,大数据工程师需要掌握Spark Streaming、Flink DataStream等大数据实时计算技术。