大数据开发实战:数据流图及相关数据技术

  一、大数据流程图

    

 

  二、大数据各个环节主要技术

    

  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算法。

        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.二、数据存储主要技术

    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,它的特性以下:

        一、大:一个表能够有上亿上,上百万列。

        二、面向列:面向列表(簇)的存储和权限控制,列(簇)独立检索。

        三、稀疏:为空(null)的列不占用存储空间,所以表能够设计的很是稀疏。

        四、无模式::每一行都有一个能够排序的主键和任意多的列。列能够根据需求动态增长,同一张表中不一样的行能够有大相径庭的列。

        五、数据多版本:每一个单元的数据能够有多个版本,默认状况下,版本号字段分开,它是单元格插入时的时间戳。

        六、数据类型单一:HBase中数据都是字符串,没有类型。

        

   2.三、数据应用主要技术

    数据有不少应用方式,如固定报表、即时分析、数据服务、数据分析、数据挖掘和机器学习等。下面说下即时分析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流行缘由以下:

        一、R是自由软件:彻底免费、开源。可在官方网站及其镜像中下载任何有关的安装程序、源代码、程序包及其源代码、文档资料,标准的安装文件自身就带有许多模块和内嵌统计函数,安装好后能够直接实现许多

          经常使用的统计功能。

        二、R是一种可编程的语言:做为一个开放的统计编程环境,R语言的语法通俗易懂,并且目前大多数新的统计方法和技术均可以在R中找到。

        三、R具备很强的互动性:除了图形输出在另外的窗口,它的熟入输出都是在一个窗口进行的,输入语法中若是有错立刻会在窗口中给出提示,对之前输入过的命令有记忆功能,能够随时再现、编辑、修改以知足

          用户的须要,输出的图形能够直接保存为JPG、BMP、PNG等图片格式,还能够直接保存为PDF文件。此外,R语言和其它编程语言和数据库直接有很好的接口。

 

    TensorFlow:TensorFlow是一个很是灵活的框架,它可以运行在我的电脑或服务器的单个/多个cpu和GPU上,甚至是移动设备上,它最先是为了研究机器学习和深度神经网络而开发的,后来由于通用而开源。

          TensorFlow是基于数据流图的处理框架,TensorFlow节点表示数学运算,边表示运算节点之间的数据交互。TensorFlow从字母意义上来说有两层含义:一是Tensor表明的是节点之间传递的数据,一般这个数据

          是一个多维度矩阵(multidimensional data arrays)或一维向量;二是Flow指的数据流,形象理解就是数据按照流的形式进入数据运算图的各个节点。

 

  三、数据相关从业者和角色

    

    

    

    

 

  四、数据埋点

    后台数据库和日志文件通常只能知足常规的统计分析,对于具体的产品和项目来讲,通常还要根据项目的目标和分析需求进行针对性的“数据埋点”工做,所谓埋点:就是在额外的正常功能逻辑上添加针对性的逻辑统计,即指望的

  事件是否发生,发生后应该记录那些信息,好比用户在当前页面是否用鼠标滚动页面、有关的页面区域是否曝光了、当前的用户操做的的时间是多少、停留时长多少、这些都须要前端工程师进行针对性的埋点才能知足有关的分析需求。

    数据埋点工做通常由产品经理和分析师预先肯定分析需求,而后由数据开发团队对接前端和后端开发完成具体的埋点工做。

 

  参考资料:《离线和实时大数据开发实战》

相关文章
相关标签/搜索