无压锅炉⼤数据开发⼯程师,必须掌握的开发流程图是这样的 1、⼤数据流程图
2、⼤数据各个环节主要技术
Sqoop:(发⾳:skup)作为⼀款开源的离线数据传输⼯具,主要⽤于Hadoop(Hive) 与传统数据库(MySql,PostgreSQL)间的数据传递。它可以将⼀个关系数据库中数据导⼊Hadoop的HDFS中,
也可以将HDFS中的数据导⼊关系型数据库中。
Flume:实时数据采集的⼀个开源框架,它是Cloudera提供的⼀个⾼可⽤⽤的、⾼可靠、分布式的海量⽇志采集、聚合和传输的系统。⽬前已经是Apache的顶级⼦项⽬。使⽤Flume可以收集诸如⽇志、时间等数据 并将这些数据集中存储起来供下游使⽤(尤其是数据流框架,例如Storm)。和Flume类似的另⼀个框架是Scribe(FaceBook开源的⽇志收集系统,它为⽇志的分布式收集、统⼀处理提供⼀个可扩展的、⾼容错的简单⽅案)
Kafka:通常来说Flume采集数据的速度和下游处理的速度通常不同步,因此实时平台架构都会⽤⼀个消息中间件来缓冲,⽽这⽅⾯最为流⾏和应⽤最为⼴泛的⽆疑是Kafka。它是由LinkedIn开发的⼀个分布式消息系统,
以其可以⽔平扩展和⾼吞吐率⽽被⼴泛使⽤。⽬前主流的开源分布式处理系统(如Storm和Spark等)
都⽀持与Kafka 集成。
Kafka是⼀个基于分布式的消息发布-订阅系统,特点是速度快、可扩展且持久。与其他消息发布-订阅系统类似,Kafka可在主题中保存消息的信息。⽣产者向主题写⼊数据,消费者从主题中读取数据。
作为⼀个分布式的、分区的、低延迟的、冗余的⽇志提交服务。和Kafka类似消息中间件开源产品还包括RabbiMQ、ActiveMQ、ZeroMQ 等。
MapReduce:
MapReduce是Google公司的核⼼计算模型,它将运⾏于⼤规模集上的复杂并⾏计算过程⾼度抽象为两个函数:map和reduce。MapReduce最伟⼤之处在于其将处理⼤数据的能⼒赋予了普通开发⼈员,
以⾄于普通开发⼈员即使不会任何的分布式编程知识,也能将⾃⼰的程序运⾏在分布式系统上处理海量数据。
Hive: MapReduce将处理⼤数据的能⼒赋予了普通开发⼈员,⽽Hive进⼀步将处理和分析⼤数据的能⼒赋予了实际的数据使⽤⼈员(数据开发⼯程师、数据分析师、算法⼯程师、和业务分析⼈员)。
Hive是由Facebook开发并贡献给Hadoop开源社区的,是⼀个建⽴在Hadoop体系结构上的⼀层SQL抽象。Hive提供了⼀些对Hadoop⽂件中数据集进⾏处理、查询、分析的⼯具。它⽀持类似于传统RDBMS的SQL语⾔
的查询语⾔,⼀帮助那些熟悉SQL的⽤户处理和查询Hodoop在的数据,该查询语⾔称为Hive SQL。Hive SQL实际上先被SQL解析器解析,然后被Hive框架解析成⼀个MapReduce可执⾏计划,
并按照该计划⽣产MapReduce任务后交给Hadoop集处理。 Spark:尽管MapReduce和Hive能完成海量数据的⼤多数批处理⼯作,并且在打数据时代称为企业⼤数据处理的⾸选技术,但是其数据查询的延迟⼀直被诟病,⽽且也⾮常不适合迭代计算和DAG(有限⽆环图)计算。
由于Spark具有可伸缩、基于内存计算能特点,且可以直接读写Hadoop上任何格式的数据,较好地满⾜了数据即时查询和迭代分析的需求,因此变得越来越流⾏。
Spark是UC Berkeley AMP Lab(加州⼤学伯克利分校的 AMP实验室)所开源的类Hadoop MapReduce的通⽤并⾏框架,它拥有Hadoop MapReduce所具有的优点,但不同MapReduce的是,
Job中间输出结果可以保存在内存中,从⽽不需要再读写HDFS ,因此能更好适⽤于数据挖掘和机器
学习等需要迭代的MapReduce算法。aioo111
Spark也提供类Live的SQL接⼝,即Spark SQL,来⽅便数据⼈员处理和分析数据。
Spark还有⽤于处理实时数据的流计算框架Spark Streaming,其基本原理是将实时流数据分成⼩的时间⽚段(秒或⼏百毫秒),以类似Spark离线批处理的⽅式来处理这⼩部分数据。
Storm:MapReduce、Hive和Spark是离线和准实时数据处理的主要⼯具,⽽Storm是实时处理数据的。
Storm是Twitter开源的⼀个类似于Hadoop的实时数据处理框架。Storm对于实时计算的意义相当于Hadoop对于批处理的意义。Hadoop 提供了Map和Reduce原语,使对数据进⾏批处理变得⾮常简单和优美。
同样,Storm也对数据的实时计算提供了简单的Spout和Bolt原语。Storm集表⾯上和Hadoop集⾮常像,但是在Hadoop上⾯运⾏的是MapReduce的Job,⽽在Storm上⾯运⾏的是Topology(拓扑)。
Storm拓扑任务和Hadoop MapReduce任务⼀个⾮常关键的区别在于:1个MapReduce Job最终会结束,⽽1⼀个Topology永远运⾏(除⾮显⽰的杀掉它,),所以实际上Storm等实时任务的资源使⽤相⽐离线
MapReduce任务等要⼤很多,因为离线任务运⾏完就释放掉所使⽤的计算、内存等资源,⽽Storm等实时任务必须⼀直占有直到被显式的杀掉。
Storm具有低延迟、分布式、可扩展、⾼容错等特性,可以保证消息不丢失,⽬前Storm, 类Storm或基于Storm抽象的框架技术是实时处理、流处理领域主要采⽤的技术。
Flink:在数据处理领域,批处理任务和实时流计算任务⼀般被认为是两种不同的任务,⼀个数据项⽬⼀般会被设计为只能处理其中⼀种任务,例如Storm只⽀持流处理任务,⽽MapReduce, Hive只⽀持批处理任务。
Apache Flink是⼀个同时⾯向分布式实时流处理和批量数据处理的开源数据平台,它能基于同⼀个Flink运⾏时(Flink Runtime),提供⽀持流处理和批处理两种类型应⽤的功能。Flink在实现流处理和批处理时,
与传统的⼀些⽅案完全不同,它从另⼀个视⾓看待流处理和批处理,将⼆者统⼀起来。Flink完全⽀持流处理,批处理被作为⼀种特殊的流处理,只是它的数据流被定义为有界的⽽已。基于同⼀个Flink运⾏时,
Flink分别提供了流处理和批处理API,⽽这两种API也是实现上层⾯向流处理、批处理类型应⽤框架的基础。
Beam:Google开源的Beam在Flink基础上更进了⼀步,不但希望统⼀批处理和流处理,⽽且希望统⼀⼤数据处理范式和标准。Apache Beam项⽬重点在于数据处理的的编程范式和接⼝定义,并不涉及具体执⾏引擎
的实现。Apache Beam希望基于Beam开发的数据处理程序可以执⾏在任意的分布式计算引擎上。
Apache Beam主要由Beam SDK和Beam Runner组成,Beam SDK定义了开发分布式数据处理任务业务逻辑的API接⼝,⽣成的分布式数据处理任务Pipeline交给具体的Beam Runner执⾏引擎。Apache Flink
⽬前⽀持的API是由Java语⾔实现的,它⽀持的底层执⾏引擎包括Apache Flink、Apache Spark和Google Cloud Flatform。
2.2、数据存储主要技术
HDFS:Hadoop Distributed File System,简称FDFS,是⼀个分布式⽂件系统。它有⼀定⾼度的容错性和⾼吞吐量的数据访问,⾮常适合⼤规模数据集上的应⽤。HDFS提供了⼀个⾼容错性和⾼吞吐量的海量数据存储解决⽅案。
在Hadoop的整个架构中,HDFS在MapReduce任务处理过程在中提供了对⽂件操作的和存储的的⽀
持,MapReduce在HDFS基础上实现了任务的分发、跟踪和执⾏等⼯作,并收集结果,两者相互作⽤,共同完成了
Hadoop分布式集的主要任务。
HBase:HBase是⼀种构建在HDFS之上的分布式、⾯向列族的存储系统。在需要实时读写并随机访问超⼤规模数据集等场景
下,HBase⽬前是市场上主流的技术选择。
HBase技术来源于Google论⽂《Bigtable :⼀个结构化数据的分布式存储系统》。如同Bigtable利⽤了Google File System提供的分布式数据存储⽅式⼀样,HBase在HDFS之上提供了类似于Bigtable的能⼒。
HBase解决了传递数据库的单点性能极限。实际上,传统的数据库解决⽅案,尤其是关系型数据库也可以通过复制和分区的⽅法来提⾼单点性能极限,但这些都是后知后觉的,安装和维护都⾮常复杂。
⽽HBase从另⼀个⾓度处理伸缩性的问题,即通过线性⽅式从下到上增加节点来进⾏扩展。
HBase 不是关系型数据库,也不⽀持SQL,它的特性如下:
1、⼤:⼀个表可以有上亿上,上百万列。
2、⾯向列:⾯向列表(簇)的存储和权限控制,列(簇)独⽴检索。
3、稀疏:为空(null)的列不占⽤存储空间,因此表可以设计的⾮常稀疏。
搁物架4、⽆模式::每⼀⾏都有⼀个可以排序的主键和任意多的列。列可以根据需求动态增加,同⼀张表中不同的⾏可以有截然不同的列。
5、数据多版本:每个单元的数据可以有多个版本,默认情况下,版本号字段分开,它是单元格插⼊时的时间戳。
点火加热装置
6、数据类型单⼀:HBase中数据都是字符串,没有类型。
2.3、数据应⽤主要技术
数据有很多应⽤⽅式,如固定报表、即时分析、数据服务、数据分析、数据挖掘和机器学习等。下⾯说下即时分析Drill框架、数据分析R语⾔、机器学习TensorFlow框架。
Drill:Apache Drill是⼀个开源实时⼤数据分布式查询引擎,⽬前已成为Apache的顶级项⽬。Drill开源
版本的Google Dremel。Dremel是Google的“交互式”数据分析系统,可以组建成规模上千的集,处理PB级别的数据。
MapReduce处理数据⼀般在分钟甚⾄⼩时级别,⽽Dremel将处理时间缩短⾄秒级,即Drill是对MapReduce的有⼒补充。Drill兼容ANSI SQL语法作为接⼝,⽀持本地⽂件、HDFS、Hive、HBase、MongoDb作为
存储的数据查询。⽂件格式⽀持Parquet、CSV、TSV以及Json这种⽆模式(schema-free)数据。所有这些数据都像传统数据库的表查询⼀样进⾏快速实时查询。
R语⾔:R是⼀种开源的数据分析解决⽅案。R流⾏原因如下:
1、R是⾃由软件:完全免费、开源。可在官⽅⽹站及其镜像中下载任何有关的安装程序、源代码、程序包及其源代码、⽂档资料,标准的安装⽂件⾃⾝就带有许多模块和内嵌统计函数,安装好后可以直接实现许多
常⽤的统计功能。想系统学习⼤数据的话,可以加⼊⼤数据技术学习扣扣君⽺:522189307
打塞机2、R是⼀种可编程的语⾔:作为⼀个开放的统计编程环境,R语⾔的语法通俗易懂,⽽且⽬前⼤多数新的统计⽅法和技术都可以在R中到。
3、R具有很强的互动性:除了图形输出在另外的窗⼝,它的熟⼊输出都是在⼀个窗⼝进⾏的,输⼊语法中如果有错马上会在窗⼝中给出提⽰,对以前输⼊过的命令有记忆功能,可以随时再现、编辑、修改以满⾜
⽤户的需要,输出的图形可以直接保存为JPG、BMP、PNG等图⽚格式,还可以直接保存为PDF⽂件。此外,R语⾔和其它编程语⾔和数据库直接有很好的接⼝。
TensorFlow:TensorFlow是⼀个⾮常灵活的框架,它能够运⾏在个⼈电脑或服务器的单个/多个cpu和GPU上,甚⾄是移动设备上,它最早是为了研究机器学习和深度神经⽹络⽽开发的,后来因为通⽤⽽开源。
TensorFlow是基于数据流图的处理框架,TensorFlow节点表⽰数学运算,边表⽰运算节点之间的数据交互。TensorFlow从字母意义上来讲有两层含义:⼀是Tensor代表的是节点之间传递的数据,通常这个数据
是⼀个多维度矩阵(multidimensional data arrays)或⼀维向量;⼆是Flow指的数据流,形象理解就是数据按照流的形式进⼊数据运算图的各个节点。
3、数据相关从业者和⾓⾊
热回收
4、数据埋点
后台数据库和⽇志⽂件⼀般只能满⾜常规的统计分析,对于具体的产品和项⽬来说,⼀般还要根据项⽬的⽬标和分析需求进⾏针对性的“数据埋点”⼯作,所谓埋点:就是在额外的正常功能逻辑上添加针对性的逻辑统计,即期望的
事件是否发⽣,发⽣后应该记录那些信息,⽐如⽤户在当前页⾯是否⽤⿏标滚动页⾯、有关的页⾯区域是否曝光了、当前的⽤户操作的的时间是多少、停留时长多少、这些都需要前端⼯程师进⾏针对性的埋点才能满⾜有关的分析需求。
数据埋点⼯作⼀般由产品经理和分析师预先确定分析需求,然后由数据开发团队对接前端和后端开发完成具体的埋点⼯作。