数极客首页

想要成为大数据工程师需要掌握的知识(一)

关于
高速展开

大数据行业来说,行业人才的稀缺目前已成为抑致行业展开

的重要要素
。人才的稀缺性外加上诱人的高额薪资,使得互联网行业很多技术人员纷繁
想要转型进入大数据范畴
,成为数据科学家、大数据工程师等等。今天,我们将为大家引见
大数据工程师所需控制
的技艺
,让小同伴
们有个参照。

国际数据公司IDC预测,到2020年,企业基于大数据计算剖析

平台的支出将突破

5000亿美圆
大数据处置

计划

在未来

四年中,辅佐

全球企业分享大约1.6万亿美圆
新增收入的数据红利。数联寻英近日发布的首份《大数据人才报告》显现
,目前全国大数据人才只需

46万,未来

3到5年人才缺口达150万之多。

依据

麦肯锡报告,仅仅在美国市场,2018年大数据人才和高级剖析

专家的人才缺口将高达19万。此外美国企业还需求
150万位能够

提出正确问题、运用大数据剖析

结果的大数据相关管理人才。 关于
高速展开

大数据行业来说,行业人才的稀缺目前已成为抑致行业展开

的重要要素
。人才的稀缺性外加上诱人的高额薪资,使得互联网行业很多技术人员纷繁
想要转型进入大数据范畴
,成为数据科学家、大数据工程师等等。

今天,我们将为大家引见
大数据工程师所需控制
的技艺
,让小同伴
们有个参照。 先来看一个常见的大数据基础

平台架构图。

想要成为大数据工程师需求控制的学问(一)

想要成为大数据工程师需求控制的学问(一)

一、大数据通用处

理平台

1、Spark Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,具有
Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果能够

保管
在内存中,从而不再需求
读写HDFS,因而

Spark能更好地适用于数据挖掘

与机器学习等需求
迭代的MapReduce的算法。

想要成为大数据工程师需求控制的学问(一)

? 能运转
在100+的结点上,并抵达

秒级延迟。

? 运用
基于内存的Spark作为执行引擎,具有高效和容错的特性。

? 能集成Spark的批处置
和交互查询。

? 为完成
复杂的算法提供和批处置
相似

的简单接口。

MLlib 是Spark对常用的机器学习算法的完成
库,同时包括相关的测试和数据生成器。MLlib 目前支持四种常见的机器学习问题:二元分类,回归,聚类以及协同过滤,同时也包括一个底层的梯度降落
优化基础

算法。 下面是Spark学习脑图。

想要成为大数据工程师需求控制的学问(一)

2、Flink

Flink 是一个开源的针对批量数据和流数据的处置
引擎,曾经
展开

为 ASF 的顶级项目之一。Flink 的中心
是一个提供了数据分发以及并行化计算的流数据处置
引擎,曾经
支持了 API 化的 SQL 查询,包括图操作和机器学习的相关算法。Flink 是一个针对流数据和批数据的散布

式处置
引擎。它主要是由 Java 代码完成
。目前主要还是依托
开源社区的贡献

而展开

。对 Flink 而言,其所要处置
的主要场景就是流数据,批数据只是流数据的一个极限惯例
而已。再换句话说,Flink 会把一切
任务当成流来处置
,这也是其最大的特性
。Flink 能够

支持本地的快速迭代,以及一些环形的迭代任务。并且 Flink 能够

定制化内存管理。

3、Hadoop

Hadoop是一个由Apache基金会所开发的散布

式系统基础

架构。 用户能够

在不了解

散布

式底层细节的状况

下,开发散布

式程序。充沛

应用
集群的才干

中止

高速运算和存储。 Hadoop完成
了一个散布

式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特性
,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合

那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的央求

,能够

以流的方式
访问(streaming access)文件系统中的数据。 其中,

? HDFS (散布

式文件系统)

? Mapreduce(计算框架)

? Yarn(资源管理平台)

? Pig(piglatin 语句到 mapreduce 的映射)

? Hive(数据仓库,提供 SQL)

? Mahout(机器学习算法的 mapreduce 完成
库)

二、散布

式存储

HDFS Hadoop散布

式文件系统(HDFS)被设计成适合

运转
在通用硬件(commodity hardware)上的散布

式文件系统。它和现有的散布

式文件系统有很多共同点。但同时,它和其他的散布

式文件系统的区别也是很显然
的。HDFS是一个高度容错性的系统,适合

部署在低价
的机器上。HDFS能提供高吞吐量的数据访问,十分

适合

大范围
数据集上的应用。HDFS放宽了一部分

POSIX约束,来完成
流式读取文件系统数据的目的。

想要成为大数据工程师需求控制的学问(一)

Yarn Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源调和

者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在应用
率、资源统一管理和数据共享等方面带来了庞大

益处

。 YARN的基本

思想是将JobTracker的两个主要功用
(资源管理和作业调度/监控)分别

,主要办法

是创建

一个全局的ResourceManager(RM)和若干个针对应用程序的ApplicationMaster(AM)。这里的应用程序是指传统的MapReduce作业或作业的DAG(有向无环图)。

Mesos Mesos是Apache下的开源散布

式资源管理框架,它被称为是散布

式系统的内核。Mesos最初是由加州大学伯克利分校的AMPLab开发的,后在Twier得到普遍
运用
。 Mesos的来源
于Google的数据中心资源管理系统Borg。Twier从Google的Borg系统中得到启示
,然后就开发一个相似

的资源管理系统来辅佐

他们摆脱可怕的“失败之鲸”。后来他们留意
到加州大学伯克利分校AMPLab正在开发的名为Mesos的项目,这个项目的担任
人是Ben Hindman,Ben是加州大学伯克利分校的博士研讨
生。后来Ben Hindman参与

了Twier,担任
开发和部署Mesos。往常

Mesos管理着Twier超越
30,0000台效劳
器上的应用部署,“失败之鲸”已成往事。其他公司纷至沓来,也部署了Mesos,比如

Airbnb(空中食宿网)、eBay(电子港湾)和Netflix。

四、数据剖析

/数据仓库(SQL类)

1、Pig

Apache Pig 是一个高级过程言语
,适合

于运用
Hadoop 和 MapReduce 平台来查询大型半结构

化数据集。经过
允许对散布

式数据集中止

相似

SQL 的查询,Pig 能够

简化 Hadoop 的运用
。本文将探求

Pig 背后的言语
,并在一个简单的 Hadoop 集群中发现其用处

2、Hive

hive是基于Hadoop的一个数据仓库工具,能够

将结构

化的数据文件映射为一张数据库表,并提供简单的sql查询功用
,能够

将sql语句转换为MapReduce任务中止

运转
。 其优点是学习本钱
低,能够

经过
类SQL语句快速完成
简单的MapReduce统计,不用
开发特地
的MapReduce应用,十分

适合

数据仓库的统计剖析

3、kylin

Apache Kylin?是一个开源的散布

式剖析

引擎,提供Hadoop之上的SQL查询接口及多维剖析

(OLAP)才干

以支持超大范围
数据,最初由eBay Inc. 开发并贡献

至开源社区。它能在亚秒内查询庞大

的Hive表。

Apache Kylin 最初由ebay开发,现曾经
开源至Apache软件基金会。它是Hadoop之上的SQL查询接口,是一种高性能的SQL on Hadoop工具。它能在亚秒内查询庞大

的Hive表。

4、Spark SQL

SparkSQL的前身是Shark,给熟习
RDBMS但又不了解

MapReduce的技术人员提供快速上手的工具,Hive应运而生,它是当时独一
运转
在Hadoop上的SQL-on-Hadoop工具。但是MapReduce计算过程中大量的中间磁盘落地过程耗费

了大量的I/O,降低的运转
效率,为了进步
SQL-on-Hadoop的效率,大量的SQL-on-Hadoop工具开端
产生,其中表现较为突出的是:

MapR的Drill

Cloudera的Impala

Shark

其中Shark是伯克利实验室Spark生态环境的组件之一,它修正
了下图所示的右下角的内存管理、物理计划

、执行三个模块,并使之能运转
在Spark引擎上,从而使得SQL查询的速度得到10-100倍的提升。

5、Spark DataFrame

Spark发布了最新的1.3.0版本,其中最重要的变化,便是DataFrame这个API的推出。DataFrame让Spark具备了处置
大范围
结构

化数据的才干

,在比原有的RDD转化方式易用的前提下,计算性能更还快了两倍。这一个小小的API,隐含着Spark希望大一统「大数据江湖」的野心和决计
。DataFrame像是一条分离

一切
主流数据源并自动转化为可并行处置
格式的水渠,经过
它Spark能取悦大数据生态链上的一切
玩家,无论是善用R的数据科学家,习用

SQL的商业剖析

师,还是在意效率和实时性的统计工程师。

6、Impala

Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。已有的Hive系统固然
也提供了SQL语义,但由于Hive底层执行运用
的是MapReduce引擎,依然

是一个批处置
过程,难以满足查询的交互性。相比之下,Impala的最大特性
也是最大卖点就是它的快速。

7、Phoenix

Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan,并编排执行以生成规范

的JDBC结果集。直接运用
HBase API、协同处置
器与自定义过滤器,关于
简单查询来说,其性能量级是毫秒,关于
百万级别的行数来说,其性能量级是秒。更多参考官网。

8、ELK Stack

ELK Stack 是 Elasticsearch、Logstash、Kibana 三个开源软件的组合。在实时数据检索和剖析

场所
,三者通常是配合共用,而且又都先后归于 Elastic.co 公司名下,故有此简称。

8.1 ElasticSearch

ElasticSearch是一个基于Lucene的搜索效劳
器。它提供了一个散布

式多用户才干

的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache允许

条款下的开放源码发布,是当前盛行
的企业级搜索引擎。设计用于云计算中,能够

抵达

实时搜索,稳定,牢靠

,快速,装置

运用
便当

8.2 Logstash

Logstash是一个完好

开源的工具,他能够

对你的日志中止

搜集
、剖析

,并将其存储供以后运用
(如,搜索),您能够

运用
它。logstash带有一个web界面,搜索和展示

一切
日志。

8.3 Kibana

kibana 也是一个开源和免费的工具,他能够

辅佐

您汇总、剖析

和搜索重要数据日志并提供友好的web界面。他能够

为 Logstash 和 ElasticSearch 提供的日志剖析

的 Web 界面。

五、音讯

队列

1、 Kafka(纯日志类,大吞吐量)

是一款散布

式音讯

发布和订阅的系统,具有高性能和高吞吐率。换个说法即Kafka是一个散布

式的,可划分的,冗余备份的耐久
性的日志效劳
。它主要用于处置
生动

的流式数据。

2、RocketMQ

散布

式音讯

队列,是一款散布

式、队列模型的音讯

中间件。

3、ZeroMQ

是一种基于音讯

队列的多线程网络库,其对套接字类型、衔接
处置
、帧、致使

路由的底层细节中止

笼统
,提供逾越
多种传输协议的套接字。ZeroMQ是网络通讯
中新的一层,介于应用层和传输层之间(依照

TCP/IP划分),其是一个可伸缩层,可并行运转
,分散在散布

式系统间。

4、ActiveMQ

开源的音讯

队列软件,是JMS音讯

通讯
规范

的一个完成
,运转
在JVM下,支持多种言语
,如JAVA,C++,C#。

5、RabBItMQ

是一个在AMQP基础

上完好
的,可复用的企业音讯

系统。它能够

用于大型软件系统各个模块之间的高效通讯
,支持高并发,支持可扩展。

六、流式计算

1、Storm/JStorm

对比

Hadoop的批处置
,Storm是个实时的、散布

式以及具备高容错的计算系统。同Hadoop一样Storm也能够

处置
大批量的数据,但是
Storm在保证高牢靠

性的前提下还能够

让处置
中止

的愈加
实时;也就是说,一切
的信息都会被处置
。Storm同样还具备容错和散布

计算这些特性,这就让Storm能够

扩展到不同的机器上中止

大批量的数据处置
。他同样还有以下的这些特性:

· 易于扩展:关于
扩展,随同

着业务的展开

,我们的数据量、计算量可能会越来越大,所以希望这个系统是可扩展的。你只需求
添加机器和改动
对应的topology(拓扑)设置。Storm运用
Hadoop Zookeeper中止

集群调和

,这样能够

充沛

的保证大型集群的良好运转

· 每条信息的处置
都能够

得到保证。

· Storm集群管理简易。

· Storm的容错机能:一旦topology递交,Storm会不时

运转
它直到topology被废弃
或者被关闭。而在执行中呈现
错误时,也会由Storm重新分配任务。这是散布

式系统中通用问题。一个节点挂了不能影响我的应用。

· 低延迟。都说了是实时计算系统了,延迟是一定要低的。

· 固然

通常运用
Java,Storm中的topology能够

用任何言语
设计。

2、Spark Streaming

Spark Streaming是一种构建在Spark上的实时计算框架,它扩展了Spark处置
大范围
流式数据的才干

Spark Streaming的优势在于:

· 能运转
在100+的结点上,并抵达

秒级延迟。

· 运用
基于内存的Spark作为执行引擎,具有高效和容错的特性。

· 能集成Spark的批处置
和交互查询。

· 为完成
复杂的算法提供和批处置
相似

的简单接口。

想要成为大数据工程师需求控制的学问(一)

Spark on Yarn启动后,由Spark AppMaster把Receiver作为一个Task提交给某一个Spark Executor;Receive启动后输入数据,生成数据块,然后通知Spark AppMaster;Spark AppMaster会依据

数据块生成相应的Job,并把Job的Task提交给闲暇
Spark Executor 执行。图中蓝色的粗箭头显现
被处置
的数据流,输入数据流能够

是磁盘、网络和HDFS等,输出能够

是HDFS,数据库等。

3、Flink

Flink 是一个针对流数据和批数据的散布

式处置
引擎。它主要是由 Java 代码完成
。对 Flink 而言,其所要处置
的主要场景就是流数据,批数据只是流数据的一个极限惯例
而已。再换句话说,Flink 会把一切
任务当成流来处置
,这也是其最大的特性
。Flink 能够

支持本地的快速迭代,以及一些环形的迭代任务。并且 Flink 能够

定制化内存管理。在这点,假定

要对比

Flink 和 Spark 的话,Flink 并没有将内存完好

交给应用层。这也是为什么 Spark 相关于
Flink,更容易呈现
OOM 的缘由
(out of memory)。就框架自身

与应用场景来说,Flink 更相似

与 Storm。

想要成为大数据工程师需求控制的学问(一)

七、日志搜集

1、Scribe

Scribe是Facebook开源的日志搜集
系统,在Facebook内部曾经
得到的应用。它能够

从各种日志源上搜集
日志,存储到一个中央存储系统(能够

是NFS,散布

式文件系统等)上,以便于中止

集中统计剖析

处置

想要成为大数据工程师需求控制的学问(一)

2、Flume

Flume是Cloudera提供的一个高可用的,高牢靠

的,散布

式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于搜集
数据;同时,Flume提供对数据中止

简单处置
,并写到各种数据接受

方(可定制)的才干

想要成为大数据工程师需求控制的学问(一)

编程言语

1、Java

Java是一门面向对象编程言语
,不只
吸收了C++言语
的各种优点,还摒弃了C++里难以了解

的多继承、指针等概念,因而

Java言语
具有功用
强大和简单易用两个特征。Java言语
作为静态面向对象编程言语
的代表,极好地完成
了面向对象理论,允许程序员以文雅
的思想
方式中止

复杂的编程。

Java具有简单性、面向对象、散布

式、强壮

性、安全

性、平台独立与可移植性、多线程、动态性等特性
。Java能够

编写桌面应用程序、Web应用程序、散布

式系统和嵌入式系统应用程序等 。

2、Python

Python是地道
的自由

软件, 源代码和解释器CPython遵照
GPL(GNU General Public License)协议 。

Python语法简约
明晰
,特征
之一是强迫
用空白符(white space)作为语句缩进。

Python具有丰厚
和强大的库。它常被昵称为胶水言语
,能够

把用其他言语
制造
的各种模块(特别
是C/C++)很轻松地分离

在一同
。常见的一种应用情形是,运用
Python快速生成程序的原型(有时致使

是程序的最终界面),然后对其中[2] 有特别央求

的部分

,用更合适

的言语
改写,比如

3D游戏中的图形渲染模块,性能央求

特别高,就能够

用C/C++重写,然后
封装为Python能够

调用的扩展类库。需求
留意
的是在您运用
扩展类库时可能需求
思索
平台问题,某些可能不提供跨平台的完成

想要成为大数据工程师需求控制的学问(一)

R是一种用于统计计算的编程言语
,由奥克兰大学的Ross Ihaka 和 Robert Gentleman发明

。往常
被普遍
地运用
于统计剖析

、数据挖掘

等方向。

R是用于统计剖析

、绘图的言语
和操作环境。R是属于GNU系统的一个自由

、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。

R 是统计范畴
普遍
运用
的降生
于1980年左右的 S 言语
的一个分支。R是S言语
的一种完成
。S言语
是由 AT&T贝尔实验室开发的一种用来中止

数据探求

、统计剖析

、作图的解释型言语
。最初S言语
的完成
版本主要是S-PLUS。S-PLUS是一个商业软件,它基于S言语
,并由MathSoft公司的统计科学部进一步完善。后来Auckland大学的Robert Gentleman 和 Ross Ihaka 及其他意愿
人员开发了一个R系统。R的运用
与S-PLUS有很多相似

之处,两个软件有一定的兼容性。S-PLUS的运用
手册,只需
经过不多的修正
就能成为 R的运用
手册。所以有人说:R,是S-PLUS的一个“克隆”。但是请不要忘了:R is free。

4、Ruby

Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本言语
,在20世纪90年代由日自己

松本行弘(Yukihiro Matsumoto)开发,恪守

GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada以及 Lisp 言语

Ruby显然
比其他相似

的编程言语
(如Perl或Python)年轻,又由于
Ruby是日自己

发明

的,所以早期的非日文资料

和程序都比较

贫乏,所以在网上依然

能够

找到相似

“Ruby的资料

太少”之类的批判
。约于2000年,Ruby开端
进入美国,英文的资料

开端
展开

。Ruby归根结底源于Perl和Python两类言语
,与C,C++,C#,java是不同大类。

5、Scala

Scala是一门多范式的编程言语
,一种类

似java的编程言语
[1] ,设计初衷是完成
可伸缩的言语
[2] 、并集成面向对象编程和函数式编程的各种特性。Scala编程言语
抓住了很多开发者的眼球。假定

你粗略阅读
Scala的网站,你会觉得Scala是一种地道
的面向对象编程言语
,而又无缝地分别

了命令式编程和函数式编程作风

数据剖析

挖掘

1、MATLAB

MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据剖析

以及数值计算的高级技术计算言语
和交互式环境,主要包括MATLAB和Simulink两大部分

MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值剖析

、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功用
集成在一个易于运用
的视窗环境中,为科学研讨
、工程设计以及必需
中止

有效数值计算的众多科学范畴
提供了一种全面的处置

计划

,并在很大水平

上摆脱了传统非交互式程序设计言语
(如C、Fortran)的编辑方式

,代表了当今国际科学计算软件的先进水平

MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面数一数二
。MATLAB能够

中止

矩阵运算、绘制函数和数据、完成
算法、创建

用户界面、衔接
其他编程言语
的程序等,主要应用于工程计算、控制设计、信号处置
与通讯、图像处置
、信号检测、金融建模设计与剖析

等范畴

2、SPSS

SPSS(Statistical Product and Service Solutions),“统计产品与效劳
处置

计划

”软件。最初软件全称为“社会科学统计软件包”(SolutionsStatistical Package for the Social Sciences),但是随着SPSS产品效劳
范畴
的扩展
和效劳
深度的增加,SPSS公司已于2000年正式将英文全称更改为“统计产品与效劳
处置

计划

”,这标志着SPSS的战略方向正在做出严重
调整。SPSS为IBM公司推出的一系列用于统计学剖析

运算、数据挖掘

、预测剖析

和决策支持任务的软件产品及相关效劳
的总称,有Windows和Mac OS X等版本。

SPSS是世界上最早的统计剖析

软件,由美国斯坦福大学的三位研讨
生Norman H. Nie、C. Hadlai (Tex) Hull 和 Dale H. Bent于1968年研讨
开发胜利

,同时成立了SPSS公司,并于1975年成立法人组织、在芝加哥组建了SPSS总部。

2009年7月28日,IBM公司宣布将用12亿美圆
现金收购

统计剖析

软件提供商SPSS公司。往常
SPSS已出至版本22.0,而且更名为IBM SPSS。迄今,SPSS公司已有40余年的生长
历史。

3、SAS

SAS(全称STATISTICAL ANALYSIS SYSTEM,简称SAS)是全球最大的软件公司之一,是由美国NORTH CAROLINA州立大学1966年开发的统计剖析

软件。

1976年SAS软件研讨
所(SAS INSTITUTE INC。)成立,开端
中止

SAS系统的维护、开发、销售和培训工作。期间阅历
了许多版本,并经过多年来的完善和展开

,SAS系统在国际上已被誉为统计剖析

的规范

软件,在各个范畴
得到普遍
应用。

依据

StuQ 发布的大数据工程师技艺
图谱来看,想要成为大数据工程师,除了以上提到的学问
点之外,还需求
控制
数据可视化、机器学习、算法和云计算等多个学问
点。今天先为大家引见
到这里,下一篇文章我们将会继续为你引见

文 | 林肯公园

发表评论

评论已关闭。

相关文章