想涉足荒野大数据在大学城要打好哪些基础

想学大数据?先打好分布式系统的基础
我的图书馆
想学大数据?先打好分布式系统的基础
这是 中兴大数据第200篇原创文章分布式系统是大数据的基础,大数据是分布式系统的最佳实践。本文将介绍分布式系统对数据的基本处理方法,包括数据的分布方式和对数据副本进行控制的协议和算法。这些算法也是大数据各类组件技术的基础。分布式系统定义分布式系统是若干独立计算机的集合,但这些计算机系统集合从用户的使用角度来说,则是一个单一的应用系统。组建一个分布式系统具备五个关键目标:资源的可访问性:用户能够方便的访问远程资源,并且可以以一种受控的方式与其他用户共享资源;透明性:资源在网络上的分布对用户不可见,用户的使用体验就是在一个入口做操作;开放性:系统通过一整套标准化的接口来提供服务,任何第三方系统都可以通过该标准接口接入该系统,并使用其提供的服务;可扩展性:系统在规模上可以扩展,可以方便的增加资源来为更多的用户提供服务。容错性:系统可以从部分失效中自动恢复,而且不会严重的影响整体性能。特别是,当故障发生时,分布式系统应该在进行故障恢复的同时依然可以提供基本的操作能力。也就是说,它应该能容忍错误,在发生错误时某种程度上可以继续操作。整个系统由分布在不同位置或者服务器上的节点和进程组成,这二者是分布式系统的基本元素,而节点/进程间的通信是分布式系统的核心。节点/进程间通过命名服务和同步来相互协作。一致性和复制是分布式系统要解决的二个重要问题,对数据进行复制是为了增强系统的可靠性或提高性能。而实现数据复制的主要难题是保证各个副本的一致性。分布式系统体系结构把分布式系统的逻辑组织结构看作软件组件来分析其体系结构,则通常分布式系统可以划分为:基于分层的体系架构:组件组成不同的层,各层的请求自顶向下依次调用,而请求结果则从下往上。如下图“基于分层的体系架构”所示,TCP/IP协议的模型是这种体系架构的经典。基于分层的体系架构基于对象的体系架构:这是一种很松散的组织结构,每个对象是一个组件,组件间通过远程过程调用机制来交互。如下图“基于对象的体系架构”所示,大型软件多采用本架构。基于对象的体系架构基于数据的体系架构:组件间的通信通过一个公用的数据仓库。如下图“基于数据的体系架构”所示,基于WEB的分布式系统大多数是以数据为中心的。基于数据的体系架构基于事件的体系架构:组件间的通信是通过事件来传播的,进程间是松耦合的。如下图“基于事件的体系架构”所示,通常的发布/订阅系统都属于这类。基于事件的体系架构分布式系统演进最出名的分布式计算模型就是Internet,它是所有分布式技术的基础,从电子商务到云计算到面向服务到虚拟化到大数据。所有的分布式计算模型都有一个相同的特性:他们是一群协同工作的网络计算机。总体上说,整体分布式系统的演进是从封闭到开放的过程,是一个不断标准化的过程。早期是美国国防部先进研究项目局(DARPA)的内部网络和一些私企的远程过程调用(RPC)系统,慢慢的TCP/IP协议的发展和被广泛应用。最终夯实了分布式系统的基础。每个厂商和标准组织都在发展自己的远程过程调用(RPC)系统,这使得任何一家公司都无法创建一个通用的分布式计算标准。1990年代中期,Internet协议替代了这些早期的尝试,并成为今天分布式计算的基础。整个演进过程如下图所示。分布式计算演进过程典型的分布式系统案例如下:电信通讯网络:电话网络和蜂窝网络计算机网络,诸如Internet无线传感器网络网络应用:广域网和点对点网络在线游戏和虚拟现实社区分布式数据库网络文件系统实时控制系统:飞机控制系统工业控制系统并行计算:科学计算,包括集群计算和网格计算计算机图形的分布式渲染分布式系统关键协议和算法在分布式系统中计算节点和存储节点可以在同一台物理机器上,也可以位于不同的物理机器。如果计算节点和存储节点位于不同的物理机器则计算的数据需要通过网络传输,此种方式的开销很大,甚至网络带宽会成为系统的总体瓶颈。另一种思路是,将计算尽量调度到与存储节点在同一台物理机器上的计算节点上进行,这称之为本地化计算。本地化计算是计算调度的一种重要优化,其体现了一种重要的分布式调度思想:“移动数据不如移动计算”,通俗说就是计算跟着数据走。当数据分布到多个节点后,为了保证数据的安全和可靠性,必须对每份数据都有备份,也就是数据的副本。对分布式系统来说,副本数据的复制(维持多副本)和保证副本的一致性是其重点要解决的两个问题。进行数据复制主要是为了提升系统的可靠性和性能。如果一个文件系统已实现数据复制,则当一个副本被破坏后,文件系统只需要转换到另一个数据副本就可继续运转,从而使得系统更加可靠。同样,当分布式系统需要在服务器数量和地理区域上进行扩展时,复制对于提高性能也是非常重要的,通过对服务器进行复制,让他们分担工作负荷,就可以提高性能。虽然复制能提升系统可靠性和性能,但是复制是有代价的。首先,维持多副本需要更多的存储空间,所有副本的更新需要更多的网络带宽,另外,多个副本可能导致一致性方面的问题,一旦某个副本被修改了,那么它将不同于其他所有的副本。因此,必须对所有副本进行同样的修改以确保一致性。综上,一个分布式系统的关键协议和算法主要有两类:如何拆解分布式系统的输入数据,即数据的分布方式;数据的副本是如何创建的,并且如何保证其一致性。数据分布方式对系统的输入数据进行分解并分布到不同的节点的方式就是数据的分布方式,通常用下面的方法:a) 哈希方式哈希方式是最常见的数据分布方式,其方法是按照数据的某一特征计算哈希值,并将哈希值与机器中的机器建立映射关系,从而将不同哈希值的数据分布到不同的机器上。所谓数据特征可以是key-value 系统中的 key,也可以是其他与应用业务逻辑相关的值。下图“哈希算法数据分布示意图”给出了哈希方式分数据的一个例子,将数据按哈希值分配到3个节点上。哈希算法数据分布示意图b) 按数据范围分布按数据范围分布是另一个常见的数据分布式,将数据按特征值的值域范围划分为不同的区间,使得集群中每台(组)服务器处理不同区间的数据。下图“按数据范围分布的示意图”展示了这种数据发布方式。按数据范围分布的示意图c) 按数据量分布按数据量分布数据与具体的数据特征无关,而是将数据视为一个顺序增长的文件,并将这个文件按照某一较为固定的大小划分为若干数据块(chunk),不同的数据块分布到不同的服务器上。下图“按数据量分布的示意图”就是一个简单的样例。按数据量分布的示意图d) 一致性哈希使用一个哈希函数计算数据或数据特征的哈希值,令该哈希函数的输出值域为一个封闭的环,即哈希函数输出的最大值是最小值的前序。将节点随机分布到这个环上,每个节点负责处理从自己开始顺时针至下一个节点的全部哈希值域上的数据。下图“一致性哈希分布示意图”是一个简单的示例。一致性哈希分布示意图数据副本控制协议副本控制协议指按一定的协议流程控制副本数据的读写行为,使得副本满足一定的可用性和一致性要求的分布式协议。副本控制协议要具有一定的容错能力,从而保证系统具有一定的可用性。在分布式系统中通常有两种方法:a) 中心化副本控制协议中心化副本控制协议的基本思路是由一个中心节点协调副本数据的更新、维护副本之间的一致性。中心化副本控制协议的优点是协议相对较为简单,所有的副本相关的控制由中心节点完成,并发控制由中心节点完成,从而使得一个分布式并发控制问题,简化为一个单机并发控制问题。中心化副本控制协议通用架构如下图“中心化副本控制协议示意图”:这类协议优点是设计简单,但是存在中心节点使得有一定的中心节点异常造成的不可用问题。中心化副本控制协议示意图最常用的中心化副本控制协议就是primary-secondary协议。类似通常的Master-Slave协议,Primary是主节点,Secondary是若干副节点。这种协议中,副本被分为两种:Primary的副本,通常只有一个;除Primary 以外的副本都作为Secondary 副本。维护Primary副本的节点作为中心节点,中心节点负责维护数据的更新、并发控制、协调副本的一致性等控制管理工作。b) 去中心化副本控制协议去中心化副本控制协议没有中心节点,协议中所有的节点都是完全对等的,节点之间通过平等协商达到一致。从而去中心化协议没有因为中心化节点异常而带来的停服务等问题。去中心化协议的最大的缺点是协议过程通常比较复杂。不再就去中心化副本控制协议做进一步详细分析。去中心化副本控制协议通用架构如下图“去中心化副本控制协议示意图”:这类协议的优点是个别节点异常不影响整个系统,缺点是协议流程复杂,实现和处理效率均降低。去中心化副本控制协议示意图Paxos是唯一在工程中得到应用的强一致性去中心化副本控制协议。Paxos协议算法是Lamport于1990年提出的一种基于消息传递的一致性算法。由于算法难以理解起初并没有引起人们的重视。06年Google的三篇论文中的chubby锁服务使用paxos作为chubby cell中的一致性算法,Paxos的人气从此一路狂飙。Paxos 协议是少数在工程实践中证实的强一致性、高可用的去中心化分布式协议。Paxos 协议算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。一个典型的场景是,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点都执行相同的操作序列,那么他们最后能得到一个一致的状态。为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致,是分布式计算中的重要问题。基于Paxos 协议中,有一组完全对等的参与节点(称为 accpetor),这组节点各自就某一事件做出决议,如果某个决议获得了超过半数节点的同意则生效。Paxos 协议中只要有超过一半的节点正常,就可以工作,能很好对抗宕机、网络分化等异常情况。分布式系统和大数据大数据作为分布式系统的最佳实践,其核心是利用多台计算机组成的分布式系统来协同解决单台计算机所不能解决的大数据的计算、存储等问题。大数据和传统数据分析的最大的区别就在于问题的规模,即计算、存储的数据量的区别。大数据将传统的单机数据分析问题使用分布式来解决,首先要解决的就是如何将问题拆解为可以使用多机分布式解决,使得分布式系统中的每台机器负责原问题的一个子集。由于无论是计算还是存储,其问题输入对象都是数据,所以如何拆解大数据依然是大数据系统的基本问题。大数据系统采用的数据处理方式如下图所示:大数据系统的数据处理方式对于开源大数据系统Hadoop的各个组件来说,其普遍采用中心化副本控制协议来简化系统的设计和实现,但是为了保证系统的可靠性,又在其分布式协调系统ZooKeeper中采用类似Paxos的去中心化协议选出Primary节点。在完成Primary节点的选举后,系统就转为中心化的副本控制协议,即由Primary节点负责同步更新操作到Secondary。这样就保证了Primary节点的可靠性。综合起来,我们可以看到,无论是分布式系统还是大数据系统,其本质都是如何对数据做合理和高效的处理。本文介绍了作为大数据基础的分布式系统对数据的基本处理方法,包括数据的分布方式和对数据副本进行控制的协议和算法。这些算法也是大数据各类组件技术的基础。
TA的最新馆藏花溪大学城. 想要成为大数据工程师?你需要掌握以下知识
想要成为大数据工程师?你需要掌握以下知识
来源:花溪大学城&&&&&&发布时间:日&&&&&&浏览量:56
& 目前全国大数据人才只有46万,未来3到5年人才缺口达150万之多。& 今天,我们将为大家介绍大数据工程师所需掌握的技能,让小伙伴们有个参照。 先来看一个常见的大数据基础平台架构图。& 从这张大数据架构图上来看,我们发现,一个普通的大数据基础平台架构中,分为数据集成层、文件存储层、数据存储层、编程模型层和数据分析层,然后再到上层应用。大数据基础平台架构中,往往还会有数据挖掘层和数据可视化层等。&& 下面为大家一一细表。& 一、大数据通用处理平台&1、Spark&Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。& 其中,RDD是Spark的核心,RDD,全称为Resilient Distributed Datasets,是一个容错的、并行的数据结构,可以让用户显式地将数据存储到磁盘和内存中,并能控制数据的分区。同时,RDD还提供了一组丰富的操作来操作这些数据。在这些操作中,诸如map、flatMap、filter等转换操作实现了monad模式,很好地契合了Scala的集合操作。除此之外,RDD还提供了诸如join、groupBy、reduceByKey等更为方便的操作(注意,reduceByKey是action,而非transformation),以支持常见的数据运算。&Spark SQL是Spark的一个组件,用于结构化数据的计算。Spark SQL提供了一个称为DataFrames的编程抽象,DataFrames可以充当分布式SQL查询引擎。&Spark Streaming是建立在Spark上的实时计算框架,通过它提供的丰富的API、基于内存的高速执行引擎,用户可以结合流式、批处理和交互试查询应用。 Spark Streaming是一种构建在Spark上的实时计算框架,它扩展了Spark处理大规模流式数据的能力。 Spark Streaming的优势在于:能运行在100+的结点上,并达到秒级延迟。使用基于内存的Spark作为执行引擎,具有高效和容错的特性。能集成Spark的批处理和交互查询。为实现复杂的算法提供和批处理类似的简单接口。& MLlib&是Spark对常用的机器学习算法的实现库,同时包括相关的测试和数据生成器。MLlib 目前支持四种常见的机器学习问题:二元分类,回归,聚类以及协同过滤,同时也包括一个底层的梯度下降优化基础算法。& 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开发的,后在Twitter得到广泛使用。 Mesos的起源于Google的数据中心资源管理系统Borg。Twitter从Google的Borg系统中得到启发,然后就开发一个类似的资源管理系统来帮助他们摆脱可怕的“失败之鲸”。后来他们注意到加州大学伯克利分校AMPLab正在开发的名为Mesos的项目,这个项目的负责人是Ben Hindman,Ben是加州大学伯克利分校的博士研究生。后来Ben Hindman加入了Twitter,负责开发和部署Mesos。现在Mesos管理着Twitter超过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(TM)是一个开源的分布式分析引擎,提供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的DrillCloudera的ImpalaShark& 其中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 Streaming总体架构& 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,分布式文件系统等)上,以便于进行集中统计分析处理。& 它为日志的“分布式收集,统一处理”提供了一个可扩展的,高容错的方案。当中央存储系统的网络或者机器出现故障时,scribe会将日志转存到本地或者另一个位置,当中央存储系统恢复后,scribe会将转存的日志重新传输给中央存储系统。其通常与Hadoop结合使用,scribe用于向HDFS中push日志,而Hadoop通过MapReduce作业进行定期处理。& 2、Flume& Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。& 当前Flume有两个版本Flume 0.9X版本的统称Flume-og,Flume1.X版本的统称Flume-ng。由于Flume-ng经过重大重构,与Flume-og有很大不同,使用时请注意区分。& 编程语言& 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可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。& 3、R& 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的使用手册& 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总部。& 3、SAS& SAS(全称STATISTICAL ANALYSIS SYSTEM,简称SAS)是全球最大的软件公司之一,是由美国NORTH CAROLINA州立大学1966年开发的统计分析软件。1976年SAS软件研究所(SAS INSTITUTE INC。)成立,开始进行SAS系统的维护、开发、销售和培训工作。期间经历了许多版本,并经过多年来的完善和发展,SAS系统在国际上已被誉为统计分析的标准软件,在各个领域得到广泛应用。
技术支持: 

我要回帖

更多关于 广州大学城gis数据 的文章

 

随机推荐