中企动力 > 商学院 > 大数据计算技术
  • ?

    严谨一点说大数据专业和计算机专业有什么区别?哪个更好一些?

    石石石

    展开

    严谨一点说大数据专业和计算机专业有什么区别?哪个更好一些?

    首先严谨一点说,大数据专业是指“数据科学与大数据技术”,而且今天说的计算机专业,也是提指“计算机类”专业。以下简要说明二者的区别与关系:

    一、计算机类属于工学的0809,是大类,还可以细分,其中901的计算机科学与技术,是计算机类专业的鼻祖。其它的902至910都是2000年以后细分增设的。详细专业如下:

    二、计算机科学与技术,国内最早开设的高校是清华大学的电子计算机专业1956年、北京大学1955年的计算数学专业;1956年交通大学(上交前身)也支援电子电气类13人去清华大学(与清华的电子电气类、机械电子类抽取的15名)共同27人组建新专业电子计算机,原计划是1958提毕业,但当时由于国家需要,就1957毕业了,同时交通大学也派出5人赴北京计算机训练班【中科院计算所举办】学习,因56、57年学校西迁,学成学员落户西安。1957年4月17日,教育部批准交通大学(西安)增设电子计算机专业。

    三、真正的大数据专业——数据科学与大数据技术,是2016年教育部第一批新增三所大学,分别是北京大学、对外经济贸易大学、中南大学;2017年新增在32所、到2018年新增248所,其计283所。

    四、关于数据科学与大数据技术专业,早于2016年前,中南大学于2015年就进行过试点招生:计算机科学与技术(大数据方向)。且中南大学有医疗方面的资源,标志性事件:2017年“医疗大数据应用技术国家工程实验室(中南大学)”揭牌,标志“医疗大数据应用技术国家工程实验室(中南大学)”建设正式启动。

    五、虽然数据科学与大数据技术开设的院校比较多,但报考时,依然得参考计算机科学与技术专业强势的院校,其中有两个区域,顺便要说一下,山西、贵州,山西有百度的百度云基地、贵州呢,近两年大数据比较抢眼,苹果数据中心、华为数据中心,这两省的同学,如果不出省门,相对来说会有相关的实践基础,本身大数据是计算机科学、数学、统计学的交叉学科。实践性也特别强。

    以上是我关于两个专业的分析也说明,有不同意见的在下方留言讨论。

    ------------------------------------------------------------

  • ?

    大数据分析你不能不懂的6个核心技术

    伍雁

    展开

    目前,大数据领域每年都会涌现出大量新的技术,成为大数据获取、存储、处理分析或可视化的有效手段。大数据技术能够将大规模数据中隐藏的信息和知识挖掘出来,为人类社会经济活动提供依据,提高各个领域的运行效率,甚至整个社会经济的集约化程度。

    1大数据生命周期

    图1展示了一个典型的大数据技术栈。底层是基础设施,涵盖计算资源、内存与存储和网络互联,具体表现为计算节点、集群、机柜和数据中心。在此之上是数据存储和管理,包括文件系统、数据库和类似YARN的资源管理系统。然后是计算处理层,如hadoop、MapReduce和Spark,以及在此之上的各种不同计算范式,如批处理、流处理和图计算等,包括衍生出编程模型的计算模型,如BSP、GAS 等。数据分析和可视化基于计算处理层。分析包括简单的查询分析、流分析以及更复杂的分析(如机器学习、图计算等)。查询分析多基于表结构和关系函数,流分析基于数据、事件流以及简单的统计分析,而复杂分析则基于更复杂的数据结构与方法,如图、矩阵、迭代计算和线性代数。一般意义的可视化是对分析结果的展示。但是通过交互式可视化,还可以探索性地提问,使分析获得新的线索,形成迭代的分析和可视化。基于大规模数据的实时交互可视化分析以及在这个过程中引入自动化的因素是目前研究的热点。

    有2个领域垂直打通了上述的各层,需要整体、协同地看待。一是编程和管理工具,方向是机器通过学习实现自动最优化、尽量无需编程、无需复杂的配置。另一个领域是数据安全,也是贯穿整个技术栈。除了这两个领域垂直打通各层,还有一些技术方向是跨了多层的,例如“内存计算”事实上覆盖了整个技术栈。

    2.大数据技术生态

    大数据的基本处理流程与传统数据处理流程并无太大差异,主要区别在于:由于大数据要处理大量、非结构化的数据,所以在各处理环节中都可以采用并行处理。目前,Hadoop、MapReduce和Spark等分布式处理方式已经成为大数据bbsitedu处理各环节的通用处理方法。

    Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。Hadoop 是一个数据管理系统,作为数据分析的核心,汇集了结构化和非结构化的数据,这些数据分布在传统的企业数据栈的每一层。Hadoop也是一个大规模并行处理框架,拥有超级计算能力,定位于推动企业级应用的执行。Hadoop又是一个开源社区,主要为解决大数据的问题提供工具和软件。虽然Hadoop提供了很多功能,但仍然应该把它归类为多个组件组成的Hadoop生态圈,这些组件包括数据存储、数据集成、数据处理和其他进行数据分析的专门工具。图2 展示了Hadoop 的生态系统,主要由HDFS、MapReduce、Hbase、Zookeeper、Oozie、Pig、Hive等核心组件构成,另外还包括Sqoop、Flume等框架,用来与其他企业融合。同时,Hadoop 生态系统也在不断增长,新增Mahout、Ambari、Whirr、BigTop 等内容,以提供更新功能。

    图2Hadoop生态系统

    低成本、高可靠、高扩展、高有效、高容错等特性让Hadoop成为最流行的大数据分析系统,然而其赖以生存的HDFS 和MapReduce 组件却让其一度陷入困境——批处理的工作方式让其只适用于离线数据处理,在要求实时性的场景下毫无用武之地。因此,各种基于Hadoop的工具应运而生。为了减少管理成本,提升资源的利用率,有当下众多的资源统一管理调度系统,例如Twitter 的Apache Mesos、Apache 的YARN、Google 的Borg、腾讯搜搜的Torca、Facebook Corona(开源)等。Apache Mesos是Apache孵化器中的一个开源项目,使用ZooKeeper实现容错复制,使用Linux Containers 来隔离任务,支持多种资源计划分配(内存和CPU)。提供高效、跨分布式应用程序和框架的资源隔离和共享,支持Hadoop、MPI、Hypertable、Spark 等。YARN 又被称为MapReduce 2.0,借鉴Mesos,YARN 提出了资源隔离解决方案Container,提供Java 虚拟机内存的隔离。对比MapReduce 1.0,开发人员使用ResourceManager、ApplicationMaster与NodeManager代替了原框架中核心的JobTracker 和TaskTracker。在YARN平台上可以运行多个计算框架,如MR、Tez、Storm、Spark等。

    基于业务对实时的需求,有支持在线处理的Storm、Cloudar Impala、支持迭代计算的Spark 及流处理框架S4。Storm是一个分布式的、容错的实时计算系统,由BackType开发,后被Twitter捕获。Storm属于流处理平台,多用于实时计算并更新数据库。Storm也可被用于“连续计算”(Continuous Computation),对数据流做连续查询,在计算时就将结果以流的形式输出给用户。它还可被用于“分布式RPC”,以并行的方式运行昂贵的运算。Cloudera Impala是由Cloudera开发,一个开源的Massively Parallel Processing(MPP)查询引擎。与Hive 相同的元数据、SQL语法、ODBC 驱动程序和用户接口(HueBeeswax),可以直接在HDFS 或HBase 上提供快速、交互式SQL 查询。Impala是在Dremel的启发下开发的,不再使用缓慢的Hive+MapReduce 批处理,而是通过与商用并行关系数据库中类似的分布式查询引擎(由Query Planner、Query Coordinator 和Query Exec Engine这3部分组成),可以直接从HDFS 或者HBase 中用SELECT、JOIN 和统计函数查询数据,从而大大降低了延迟。

    Hadoop社区正努力扩展现有的计算模式框架和平台,以便解决现有版本在计算性能、计算模式、系统构架和处理能力上的诸多不足,这正是Hadoop2.0 版本“ YARN”的努力目标。各种计算模式还可以与内存计算模式混合,实现高实时性的大数据查询和计算分析。混合计算模式之集大成者当属UC Berkeley AMP Lab 开发的Spark生态系统,如图3所示。Spark 是开源的类Hadoop MapReduce的通用的数据分析集群计算框架,用于构建大规模、低延时的数据分析应用,建立于HDFS之上。Spark提供强大的内存计算引擎,几乎涵盖了所有典型的大数据计算模式,包括迭代计算、批处理计算、内存计算、流式计算(Spark Streaming)、数据查询分析计算(Shark)以及图计算(GraphX)。Spark 使用Scala 作为应用框架,采用基于内存的分布式数据集,优化了迭代式的工作负载以及交互式查询。与Hadoop 不同的是,Spark 和Scala 紧密集成,Scala 像管理本地collective 对象那样管理分布式数据集。Spark支持分布式数据集上的迭代式任务,实际上可以在Hadoop文件系统上与Hadoop一起运行(通过YARN、Mesos等实现)。另外,基于性能、兼容性、数据类型的研究,还有Shark、Phoenix、Apache Accumulo、Apache Drill、Apache Giraph、Apache Hama、Apache Tez、Apache Ambari 等其他开源解决方案。预计未来相当长一段时间内,主流的Hadoop平台改进后将与各种新的计算模式和系统共存,并相互融合,形成新一代的大数据处理系统和平台。

    图3Spark生态系统

    3.大数据采集与预处理

    在大数据的生命周期中,数据采集处于第一个环节。根据MapReduce产生数据的应用系统分类,大数据的采集主要有4种来源:管理信息系统、Web信息系统、物理信息系统、科学实验系统。对于不同的数据集,可能存在不同的结构和模式,如文件、XML 树、关系表等,表现为数据的异构性。对多个异构的数据集,需要做进一步集成处理或整合处理,将来自不同数据集的数据收集、整理、清洗、转换后,生成到一个新的数据集,为后续查询和分析处理提供统一的数据视图。针对管理信息系统中异构数据库集成技术、Web 信息系统中的实体识别技术和DeepWeb集成技术、传感器网络数据融合技术已经有很多研究工作,取得了较大的进展,已经推出了多种数据清洗和质量控制工具,例如,美国SAS公司的Data Flux、美国IBM 公司的Data Stage、美国Informatica 公司的Informatica Power Center。

    4.大数据存储与管理

    传统的数据存储和管理以结构化数据为主,因此关系数据库系统(RDBMS)可以一统天下满足各类应用需求。大数据往往是半结构化和非结构化数据为主,结构化数据为辅,而且各种大数据应用通常是对不同类型的数据内容检索、交叉比对、深度挖掘与综合分析。面对这类应用需求,传统数据库无论在技术上还是功能上都难以为继。因此,近几年出现了oldSQL、NoSQL 与NewSQL 并存的局面。总体上,按数据类型的不同,大数据的存储和管理采用不同的技术路线,大致可以分为3类。第1类主要面对的是大规模的结构化数据。针对这类大数据,通常采用新型数据库集群。它们通过列存储或行列混合存储以及粗粒度索引等技术,结合MPP(Massive Parallel Processing)架构高效的分布式计算模式,实现对PB 量级数据的存储和管理。这类集群具有高性能和高扩展性特点,在企业分析类应用领域已获得广泛应用;第2类主要面对的是半结构化和非结构化数据。应对这类应用场景,基于Hadoop开源体系的系统平台更为擅长。它们通过对Hadoop生态体系的技术扩展和封装,实现对半结构化和非结构化数据的存储和管理;第3类面对的是结构化和非结构化混合的大数据,因此采用MPP 并行数据库集群与Hadoop 集群的混合来实现对百PB 量级、EB量级数据的存储和管理。一方面,用MPP 来管理计算高质量的结构化数据,提供强大的SQL和OLTP型服务;另一方面,用Hadoop实现对半结构化和非结构化数据的处理,以支持诸如内容检索、深度挖掘与综合分析等新型应用。这类混合模式将是大数据存储和管理未来发展的趋势。

    5.大数据计算模式与系统

    计算模式的出现有力推动了大数据技术和应用的发展,使其成为目前大数据处理最为成功、最广为接受使用的主流大数据计算模式。然而,现实世界中的大数据处理问题复杂多样,难以有一种单一的计算模式能涵盖所有不同的大数据计算需求。研究和实际应用中发现,由于MapReduce主要适合于进行大数据线下批处理,在面向低延迟和具有复杂数据关系和复杂计算的大数据问题时有很大的不适应性。因此,近几年来学术界和业界在不断研究并推出多种不同的大数据计算模式。

    所谓大数据计算模式,即根据大数据的不同数据特征和计算特征,从多样性的大数据计算问题和需求中提炼并建立的各种高层抽象(abstraction)或模型(model)。例如,MapReduce 是一个并行计算抽象,加州大学伯克利分校著名的Spark系统中的“分布内存抽象RDD”,CMU 著名的图计算系统GraphLab 中的“图并行抽象”(Graph Parallel Abstraction)等。传统的并行计算方法,主要从体系结构和编程语言的层面定义了一些较为底层的并行计算抽象和模型,但由于大数据处理问题具有很多高层的数据特征和计算特征,因此大数据处理需要更多地结合这些高层特征考虑更为高层的计算模式。

    根据大数据处理多样性的需求和以上不同的特征维度,目前出现了多种典型和重要的大数据计算模式。与这些计算模式相适应,出现了很多对应的大数据计算系统和工具。由于单纯描述计算模式比较抽象和空洞,因此在描述不同计算模式时,将同时给出相应的典型计算系统和工具,如表1所示,这将有助于对计算模式的理解以及对技术发展现状的把握,并进一步有利于在实际大数据处理应用中对合适的计算技术和系统工具的选择使用。

    表1典型大数据计算模式

    6.大数据分析与可视化

    在大数据时代,人们迫切希望在由普通机器组成的大规模集群上实现高性能的以机器学习算法为核心的数据分析,为实际业务提供服务和指导,进而实现数据的最终变现。与传统的在线联机分析处理OLAP不同,对大数据的深度分析主要基于大规模的机器学习技术,一般而言,机器学习模型的训练过程可以归结为最优化定义于大规模训练数据上的目标函数并且通过一个循环迭代的算法实现,如图4所示。因而与传统的OLAP相比较,基于机器学习的大数据分析具有自己独特的特点。

    图4基于机器学习的大数据分析算法目标函数和迭代优化过程

    (1)迭代性:由于用于优化问题通常没有闭式解,因而对模型参数确定并非一次能够完成,需要循环迭代多次逐步逼近最优值点。

    (2)容错性:机器学习的算法设计和模型评价容忍非最优值点的存在,同时多次迭代的特性也允许在循环的过程中产生一些错误,模型的最终收敛不受影响。

    (3)参数收敛的非均匀性:模型中一些参数经过少数几轮迭代后便不再改变,而有些参数则需要很长时间才能达到收敛。

    这些特点决定了理想的大数据分析系统的设计和其他计算系统的设计有很大不同,直接应用传统的分布式计算系统应用于大数据分析,很大比例的资源都浪费在通信、等待、协调等非有效的计算上。

    传统的分布式计算框架MPI(message passing interface,信息传递接口)虽然编程接口灵活功能强大,但由于编程接口复杂且对容错性支持不高,无法支撑在大规模数据上的复杂操作,研究人员转而开发了一系列接口简单容错性强的分布式计算框架服务于大数据分析算法,以MapReduce、Spark和参数服务器ParameterServer等为代表。

    分布式计算框架MapReduce将对数据的处理归结为Map和Reduce两大类操作,从而简化了编程接口并且提高了系统的容错性。但是MapReduce受制于过于简化的数据操作抽象,而且不支持循环迭代,因而对复杂的机器学习算法支持较差,基于MapReduce的分布式机器学习库Mahout需要将迭代运算分解为多个连续的Map 和Reduce 操作,通过读写HDFS文...

  • ?

    一篇文章详解大数据技术和应用场景

    飞扬

    展开

    “本文作者 陈睿 ,优知学院创始人新技术、新趋势往往趋之若鹜却又很难说的透彻,希望这篇文章能让大家完整的理解什么是大数据:该篇包含:大数据、技术、场景应用以及大数据的岗位。

    什么是大数据

    说起大数据,估计大家都觉得只听过概念,但是具体是什么东西,怎么定义,没有一个标准的东西,因为在我们的印象中好像很多公司都叫大数据公司,业务形态则有几百种,感觉不是很好理解,所以我建议还是从字面上来理解大数据,在维克托迈尔-舍恩伯格及肯尼斯库克耶编写的《大数据时代》提到了大数据的4个特征:

    一个是数量大一个是价值大一个是速度快一个是多样性第一个是数量比较大,只有数据体量达到了PB级别以上,才能被称为大数据。1PB等于1024TB,1TB等于1024G,那么1PB等于1024*1024个G的数据。

    第二个是价值大,你如果有1PB以上的全国所有20-35年轻人的上网数据的时候,那么它自然就有了商业价值,比如通过分析这些数据,我们就知道这些人的爱好,进而指导产品的发展方向等等。如果有了全国几百万病人的数据,根据这些数据进行分析就能预测疾病的发生,这些都是大数据的价值。

    第三个就是多样性,如果只有单一的数据,那么这些数据就没有了价值,比如只有单一的个人数据,或者单一的用户提交数据,这些数据还不能称为大数据,所以说大数据还需要是多样性的,比如当前的上网用户中,年龄,学历,爱好,性格等等每个人的特征都不一样,这个也就是大数据的多样性,当然了如果扩展到全国,那么数据的多样性会更强,每个地区,每个时间段,都会存在各种各样的数据多样性。

    第四个是速度快,就是通过算法对数据的逻辑处理速度非常快,1秒定律,可从各种类型的数据中快速获得高价值的信息,这一点也是和传统的数据挖掘技术有着本质的不同。

    大数据的行业应用

    大数据无处不在,大数据应用于各个行业,包括金融、汽车、餐饮、电信、能源、体能和娱乐等在内的社会各行各业都已经融入了大数据的印迹。

    制造业,利用工业大数据提升制造业水平,包括产品故障诊断与预测、分析工艺流程、改进生产工艺,优化生产过程能耗、工业供应链分析与优化、生产计划与排程。

    金融行业,大数据在高频交易、社交情绪分析和信贷风险分析三大金融创新领域发挥重大作用。

    汽车行业,利用大数据和物联网技术的无人驾驶汽车,在不远的未来将走入我们的日常生活。

    互联网行业,借助于大数据技术,可以分析客户行为,进行商品推荐和针对性广告投放。

    电信行业,利用大数据技术实现客户离网分析,及时掌握客户离网倾向,出台客户挽留措施。

    能源行业,随着智能电网的发展,电力公司可以掌握海量的用户用电信息,利用大数据技术分析用户用电模式,可以改进电网运行,合理设计电力需求响应系统,确保电网运行安全。

    物流行业,利用大数据优化物流网络,提高物流效率,降低物流成本。

    城市管理,可以利用大数据实现智能交通、环保监测、城市规划和智能安防。

    生物医学,大数据可以帮助我们实现流行病预测、智慧医疗、健康管理,同时还可以帮助我们解读DNA,了解更多的生命奥秘。

    体育娱乐,大数据可以帮助我们训练球队,决定投拍哪种题财的影视作品,以及预测比赛结果。

    安全领域,政府可以利用大数据技术构建起强大的国家安全保障体系,企业可以利用大数据抵御网络攻击,警察可以借助大数据来预防犯罪。

    个人生活, 大数据还可以应用于个人生活,利用与每个人相关联的“个人大数据”,分析个人生活行为习惯,为其提供更加周到的个性化服务。

    大数据的价值,远远不止于此,大数据对各行各业的渗透,大大推动了社会生产和生活,未来必将产生重大而深远的影响。

    大数据使用的技术

    说起大数据,大数据有三个层数据采集、存储、计算三层。

    第一个是数据采集层,以App、saas为代表的服务。

    大数据基础阶段需掌握的技术有:Linux、Docker、KVM、MySQL基础、Oracle基础、MongoDB、redis以及hadoopmapreduce hdfs yarn等。

    第二个数据存储层,比如云存储,需掌握的技术有:hbase、hive、sqoop等。

    比如:Hadoop作为一个开源的框架,专为离线和大规模数据分析而设计,HDFS作为其核心的存储引擎,已被广泛用于数据存储。HBase,是一个分布式的、面向列的开源数据库,可以认为是hdfs的封装,本质是数据存储、NoSQL数据库。

    HBase是一种Key/Value系统,部署在hdfs上,克服了hdfs在随机读写这个方面的缺点,与hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。

    第三个是数据计算应用层,以数据为基础,为将来的移动社交、交通、教育,金融进行服务,涉及到大数据架构设计阶段需掌握的技术有:Flume分布式、Zookeeper、Kafka等,以及大数据实时计算阶段需掌握的技术有:Mahout、Spark、storm。

    大数据的岗位

    1.数据分析师Data analyst

    指熟悉相关业务,熟练搭建数据分析框架,掌握和使用相关的分析常用工具和基本的分析方法,进行数据搜集、整理、分析,针对数据分析结论给管理销售运营提供指导意义的分析意见。

    2.数据架构师Data architect

    对Hadoop解决方案的整个生命周期进行引导,包括需求分析,平台选择,技术架构设计,应用设计和开发,测试和部署。深入掌握如何编写MapReduce的作业及作业流的管理完成对数据的计算,并能够使用Hadoop提供的通用算法, 熟练掌握Hadoop整个生态系统的组件如: Yarn,HBase、Hive、Pig等重要组件,能够实现对平台监控、辅助运维系统的开发。

    3.大数据工程师Big DataEngineer

    收集和处理大规模的原始数据(包括脚本编写,网页获取,调用APIs,编写SQL查询等);将非结构化数据处理成适合分析的一种形式,然后进行分析;根据所需要的和专案分析商业决策。

    4.数据仓库管理员

    Data warehousemanager:指定并实施信息管理策略;协调和管理的信息管理解决方案;多个项目的范围,计划和优先顺序安排;管理仓库的各个方面,比如数据外包,移动,质量,设计和实施。

    5.数据库管理员Database manager

    提高数据库工具和服务的有效性;确保所有的数据符合法律规定;确保信息得到保护和备份;做定期报告;监控数据库性能;改善使用的技术;建立新的数据库;检测数据录入程序;故障排除。

    6.商业智能分析员Businessintelligence analyst

    就工具,报告或者元数据增强来进行传播信息;进行或协调测试,以确保情报的定义与需求相一致;使用商业智能工具来识别或监测现有和潜在的客户;综合目前的商业只能和趋势数据,来支持采取行动的建议;维护或更新的商业智能工具,数据库,仪表板,系统或方法;及时的管理用户流量的商业情报。

  • ?

    32个算法—大数据最核心的关键技术

    廖绮

    展开

    奥地利符号计算研究所(Research Institute for Symbolic Computation,简称RISC)的Christoph Koutschan博士在自己的页面上发布了一篇文章,提到他做了一个调查,参与者大多数是计算机科学家,他请这些科学家投票选出最重要的算法,以下是这次调查的结果,按照英文名称字母顺序排序。

    1、A* 搜索算法——图形搜索算法,从给定起点到给定终点计算出路径。其中使用了一种启发式的估算,为每个节点估算通过该节点的最佳路径,并以之为各个地点排定次序。算法以得到的次序访问这些节点。因此,A*搜索算法是最佳优先搜索的范例。

    2、集束搜索(又名定向搜索,Beam Search)——最佳优先搜索算法的优化。使用启发式函数评估它检查的每个节点的能力。不过,集束搜索只能在每个深度中发现最前面的m个最符合条件的节点,m是固定数字——集束的宽度。

    3、二分查找(Binary Search)——在线性数组中找特定值的算法,每个步骤去掉一半不符合要求的数据。

    4、分支界定算法(Branch and Bound)——在多种最优化问题中寻找特定最优化解决方案的算法,特别是针对离散、组合的最优化。

    5、Buchberger算法——一种数学算法,可将其视为针对单变量最大公约数求解的欧几里得算法和线性系统中高斯消元法的泛化。

    6、数据压缩——采取特定编码方案,使用更少的字节数(或是其他信息承载单元)对信息编码的过程,又叫来源编码。

    7、Diffie-Hellman密钥交换算法——一种加密协议,允许双方在事先不了解对方的情况下,在不安全的通信信道中,共同建立共享密钥。该密钥以后可与一个对称密码一起,加密后续通讯。

    8、Dijkstra算法——针对没有负值权重边的有向图,计算其中的单一起点最短算法。

    9、离散微分算法(Discrete differentiation)。

    10、动态规划算法(Dynamic Programming)——展示互相覆盖的子问题和最优子架构算法

    11、欧几里得算法(Euclidean algorithm)——计算两个整数的最大公约数。最古老的算法之一,出现在公元前300前欧几里得的《几何原本》。

    12、期望-最大算法(Expectation-maximization algorithm,又名EM-Training)——在统计计算中,期望-最大算法在概率模型中寻找可能性最大的参数估算值,其中模型依赖于未发现的潜在变量。EM在两个步骤中交替计算,第一步是计算期望,利用对隐藏变量的现有估计值,计算其最大可能估计值;第二步是最大化,最大化在第一步上求得的最大可能值来计算参数的值。

    13、快速傅里叶变换(Fast Fourier transform,FFT)——计算离散的傅里叶变换(DFT)及其反转。该算法应用范围很广,从数字信号处理到解决偏微分方程,到快速计算大整数乘积。

    14、梯度下降(Gradient descent)——一种数学上的最优化算法。

    15、哈希算法(Hashing)。

    16、堆排序(Heaps)。

    17、Karatsuba乘法——需要完成上千位整数的乘法的系统中使用,比如计算机代数系统和大数程序库,如果使用长乘法,速度太慢。该算法发现于1962年。

    18、LLL算法(Lenstra-Lenstra-Lovasz lattice reduction)——以格规约(lattice)基数为输入,输出短正交向量基数。LLL算法在以下公共密钥加密方法中有大量使用:背包加密系统(knapsack)、有特定设置的RSA加密等等。

    19、最大流量算法(Maximum flow)——该算法试图从一个流量网络中找到最大的流。它优势被定义为找到这样一个流的值。最大流问题可以看作更复杂的网络流问题的特定情况。最大流与网络中的界面有关,这就是最大流-最小截定理(Max-flow min-cut theorem)。Ford-Fulkerson 能找到一个流网络中的最大流。

    20、合并排序(Merge Sort)。

    21、牛顿法(Newton's method)——求非线性方程(组)零点的一种重要的迭代法。

    22、Q-learning学习算法——这是一种通过学习动作值函数(action-value function)完成的强化学习算法,函数采取在给定状态的给定动作,并计算出期望的效用价值,在此后遵循固定的策略。Q-leanring的优势是,在不需要环境模型的情况下,可以对比可采纳行动的期望效用。

    23、两次筛法(Quadratic Sieve)——现代整数因子分解算法,在实践中,是目前已知第二快的此类算法(仅次于数域筛法Number Field Sieve)。对于110位以下的十位整数,它仍是最快的,而且都认为它比数域筛法更简单。

    24、RANSAC——是“RANdom SAmple Consensus”的缩写。该算法根据一系列观察得到的数据,数据中包含异常值,估算一个数学模型的参数值。其基本假设是:数据包含非异化值,也就是能够通过某些模型参数解释的值,异化值就是那些不符合模型的数据点。

    25、RSA——公钥加密算法。首个适用于以签名作为加密的算法。RSA在电商行业中仍大规模使用,大家也相信它有足够安全长度的公钥。

    26、Schnhage-Strassen算法——在数学中,Schnhage-Strassen算法是用来完成大整数的乘法的快速渐近算法。其算法复杂度为:O(N log(N) log(log(N))),该算法使用了傅里叶变换。

    27、单纯型算法(Simplex Algorithm)——在数学的优化理论中,单纯型算法是常用的技术,用来找到线性规划问题的数值解。线性规划问题包括在一组实变量上的一系列线性不等式组,以及一个等待最大化(或最小化)的固定线性函数。

    28、奇异值分解(Singular value decomposition,简称SVD)——在线性代数中,SVD是重要的实数或复数矩阵的分解方法,在信号处理和统计中有多种应用,比如计算矩阵的伪逆矩阵(以求解最小二乘法问题)、解决超定线性系统(overdetermined linear systems)、矩阵逼近、数值天气预报等等。

    29、求解线性方程组(Solving a system of linear equations)——线性方程组是数学中最古老的问题,它们有很多应用,比如在数字信号处理、线性规划中的估算和预测、数值分析中的非线性问题逼近等等。求解线性方程组,可以使用高斯—约当消去法(Gauss-Jordan elimination),或是柯列斯基分解( Cholesky decomposition)。

    30、Strukturtensor算法——应用于模式识别领域,为所有像素找出一种计算方法,看看该像素是否处于同质区域( homogenous region),看看它是否属于边缘,还是是一个顶点。

    31、合并查找算法(Union-find)——给定一组元素,该算法常常用来把这些元素分为多个分离的、彼此不重合的组。不相交集(disjoint-set)的数据结构可以跟踪这样的切分方法。合并查找算法可以在此种数据结构上完成两个有用的操作:

    查找:判断某特定元素属于哪个组。

    合并:联合或合并两个组为一个组。

    32、维特比算法(Viterbi algorithm)——寻找隐藏状态最有可能序列的动态规划算法,这种序列被称为维特比路径,其结果是一系列可以观察到的事件,特别是在隐藏的Markov模型中。

    以上就是Christoph博士对于最重要的算法的调查结果。你们熟悉哪些算法?又有哪些算法是你们经常使用的?

  • ?

    解密“数据科学与大数据技术”专业

    柯立诚

    展开

    我们生活在一个充满“数据”的时代,打电话、刷微博、聊QQ、用微信,阅读、购物、看病、旅游,都在不断产生新的数据。

    不管你是否认同,大数据时代已经来临,并将深刻地改变着我们的工作和生活,世界已经进入由数据主导的“大时代”。

    近年来,高校新设置的“数据科学与大数据技术”专业变得炙手可热,那么该专业培养目标是什么?学些什么?专业前景如何?对学生又有哪些要求呢?

    热门专业

    2018年3月21日,教育部公布了《2017年度普通高等学校本科专业备案和审批结果》,共有862所高校新增了2311个专业。其中最热门的专业当属当属“数据科学与大数据技术”,共有248所高校申请获批,占新增专业申请的高校数超过1/3。

    根据教育部在2012年发布了《普通高等学校本科专业目录》,“数据科学与大数据技术”并不在其中,属于目录外专业,需要审批设置。该专业最早在2016年获得批准设置,在教育部公布的《2015年度普通高等学校本科专业备案和审批结果》中,有北京大学、对外经济贸易大学、中南大学3所高校获批。

    而在2017年教育部公布的《2016年度普通高等学校本科专业备案和审批结果》中,获批新增“数据科学与大数据技术”专业的高校达到了32所。

    可见,三年来,开设“数据科学与大数据技术”专业的高校数量迅速膨胀,累计达到了284所。

    如此多的高校对它青睐有加,“数据科学与大数据技术”到底是一个什么专业?

    培养目标与学习内容

    “数据科学与大数据技术”专业是培养以计算机科学、统计分析为基础,具备经济、金融、物流、商业、贸易、 管理等相关学科的领域知识,能推动并引领未来全球“互联网 +”、云计算、大数据技术在各领域的深入应用,具有较强的实践创新能力、跨文化交流能力和跨领域研究能力的高素质复合型人才。

    从上述培养目标可以看到,该专业的核心是计算机和统计分析,但需要具备多个领域的相关知识,培养目标也是复合型人才。

    在课程设置上,除了基本的计算机学科和统计学课程,还包括了微观经济学、计量经济学、国际金融、搜索引擎、自然语言处理、数据可视化、机器学习、模式识别以及大数据技术平台等相关课程。

    专业“钱”景

    “数据科学与大数据技术”专业培养的是当下最热门的大数据、云计算、人工智能、算法分析等行业急需的人才。

    全球顶尖管理咨询公司麦肯锡分析报告显示,到2018年,大数据或者数据工作者的岗位需求将激增。其中大数据科学家的缺口在14万到19万之间,对于懂得如何利用大数据做决策的分析师和经理的岗位缺口则将达到150万!

    从国内就业市场来看,根据BOSS直聘发布的《2017春季互联网人才趋势报告》,大数据和人工智能相关岗位出现全行业的旺盛需求,人才供给严重不足。其中,缺口较大的是搜索算法,供给量只能达到需求的44%,还有56%的缺口;推荐算法的缺口比例为50%,算法研究员的为43.9%,图像算法的为43%,深度学习的缺口量排在第十,为33.8%。

    从国家层面上看,”互联网+”已经上升为国家战略,以大数据战略为牵引,以信息安全、传感器、人工智能等为重点,打造新一代信息技术产业集群。2017年7月,国务院印发《新一代人工智能发展规划》,明确提出我国新一代人工智能“三步走”发展战略,人工智能产业要成为新的重要经济增长点,助推我国产业升级和经济转型,并成为世界主要人工智能创新中心。

    在就业“钱景”方面,各大互联网公司都在囤积大数据处理人才,从业人员的薪资待遇也很不错。以基本的Hadoop开发工程师为例,入门月薪已经达到了8K 以上,工作1年月薪可达到 12K 以上,资深的hadoop人才年薪可达到30万—50万。

    热门专业的冷思考

    看到这里,是不是对“数据科学与大数据技术”专业跃跃欲试呢?

    且慢,对于热门专业,我们需要冷思考!

    就像前几年大热的物联网工程专业,很多学校一哄而上,但是专业课程设置不合理,计算机和通信的课程搞成大杂烩,两边的核心内容都没学好。师资也是赶鸭子上架,上课就是念念PPT,考试也是走过场。毕业出来,才发现基础知识不牢靠,后悔也迟了。

    对于高校来说,开设“数据科学与大数据技术”专业,需要有多学科的专业积淀,需要有经验的师资队伍,更需要有行业背景。很多高校只是因为专业热门,就拼拼凑凑开设起来,其实各方面积累很不够,学生报考时需要檫亮眼睛。

    对于学生来说,该专业对数理统计、计算机科学的知识要求很高,数学基础不牢靠的学生需要慎重选择。再者,对于将来当“码农”辛苦加班的日子也要有心理准备哦。

    对于很多同学来说,笔者建议在本科阶段深入学习一门本科专业,如计算机类、数学类、统计学类,然后再考研深造大数据类、人工智能的专业,既具有深厚的底蕴,又具备鲜明的专业特点,才能有更大的发展空间。

    不管怎样,对于专业选择,第一是兴趣,第二还是兴趣,有了兴趣才有学习、深造的动力!

    对了,对人工智能感兴趣的童鞋,“智能科学与技术”专业也是不错的选择哦。这个专业融合了电气、计算机、传感、通讯、控制等众多学科领域,也是培养跨学科的复合型人才,限于篇幅就不多讲了。

    原创不易,如果您感觉此文很有帮助,请鼓励支持下吧!

    ↓↓↓

    狗日的作业!

    最能让青少年成长30部英文电影(下)

    最能让青少年成长30部英文电影(上)

    最适合亲子观看的16部BBC纪录片(建议收藏)!

    这才是中国孩子最需要补的一门课

    这才是中国父母最需要补的一门课

    和青春期的孩子对着干?赢了当下,输了未来!

    不背单词,不上辅导班,能学好英语?这个爸爸的实验结果是……

    让魔都家长扎心的“公民同招”,开错了药方!

    曹杨二中王洋校长访谈录——从一个学生家长的视角

  • ?

    大数据技术十大核心原理

    飞双

    展开

    科学进步越来越多地由数据来推动,海量数据给数据分析既带来了机遇,也构成了新的挑战。大数据往往是利用众多技术和方法,综合源自多个渠道、不同时间的信息而获得的。究竟大数据技术的核心原理是哪几方面呢?

    数据即价值是目前计算机领域极其推崇的观念。数据无论多少都被归结为大数据,数据分析越来越热门,资本也对贴有大数据标签的公司趋之若鹜。如同流动的数字货币一样被一再的评估、追崇。数据能告诉我们,每一个客户的消费倾向,他们想要什么,喜欢什么,每个人的需求有哪些区别,哪些又可以被集合到一起来进行分类。

    数据核心原理:从“流程”核心转变为“数据”核心

    大数据时代,计算模式也发生了转变,从“流程”核心转变为“数据”核心。Hadoop体系的分布式计算框架已经是“数据”为核心的范式。非结构化数据及分析需求,将改变IT系统的升级方式:从简单增量到架构变化。大数据下的新思维——计算模式的转变。

    科学进步越来越多地由数据来推动,海量数据给数据分析既带来了机遇,也构成了新的挑战。大数据往往是利用众多技术和方法,综合源自多个渠道、不同时间的信息而获得的。为了应对大数据带来的挑战,我们需要新的统计思路和计算方法。

    数据价值原理:有功能是价值转变为数据是价值

    大数据真正有意思的是数据变得在线了,这个恰恰是互联网的特点。非互联网时期的产品,功能一定是它的价值,今天互联网的产品,数据一定是它的价值。

    数据能告诉我们,每一个客户的消费倾向,他们想要什么,喜欢什么,每个人的需求有哪些区别,哪些又可以被集合到一起来进行分类。大数据是数据数量上的增加,以至于我们能够实现从量变到质变的过程。

    全样本原理:从抽样转变为需要全部数据样本

    需要全部数据样本而不是抽样,你不知道的事情比你知道的事情更重要,但如果现在数据足够多,它会让人能够看得见、摸得着规律。

    数据这么大、这么多,所以人们觉得有足够的能力把握未来,对不确定状态的一种判断,从而做出自己的决定。这些东西我们听起来都是非常原始的,但是实际上背后的思维方式,和我们今天所讲的大数据是非常像的。

    关注效率原理:由关注精确度转变为关注效率

    关注效率而不是精确度,大数据标志着人类在寻求量化和认识世界的道路上前进了一大步,过去不可计量、存储、分析和共享的很多东西都被数据化了,拥有大量的数据和更多不那么精确的数据为我们理解世界打开了一扇新的大门。大数据能提高生产效率和销售效率,原因是大数据能够让我们知道市场的需要,人的消费需要。大数据让企业的决策更科学,由关注精确度转变为关注效率的提高,大数据分析能提高企业的效率。

    竞争是企业的动力,而效率是企业的生命,效率低与效率高是衡量企来成败的关键。一般来讲,投入与产出比是效率,追求高效率也就是追求高价值。手工、机器、自动机器、智能机器之间效率是不同的,智能机器效率更高,已能代替人的思维劳动。智能机器核心是大数据制动,而大数据制动的速度更快。在快速变化的市场,快速预测、快速决策、快速创新、快速定制、快速生产、快速上市成为企业行动的准则,也就是说,速度就是价值,效率就是价值,而这一切离不开大数据思维。

    关注相关性原理:由因果关系转变为关注相关性

    关注相关性而不是因果关系,社会需要放弃它对因果关系的渴求,而仅需关注相关关系,也就是说只需要知道是什么,而不需要知道为什么。这就推翻了自古以来的惯例,而我们做决定和理解现实的最基本方式也将受到挑战。

    在这个不确定的时代里面,等我们去找到准确的因果关系,再去办事的时候,这个事情早已经不值得办了。所以“大数据”时代的思维有点像回归了工业社会的这种机械思维——机械思维就是说按那个按钮,一定会出现相应的结果,是这样状态。而农业社会往前推,不需要找到中间非常紧密的、明确的因果关系,而只需要找到相关关系,只需要找到迹象就可以了。社会因此放弃了寻找因果关系的传统偏好,开始挖掘相关关系的好处。

    非法在屋内打隔断的建筑物着火的可能性比其他建筑物高很多。纽约市每年接到2.5万宗有关房屋住得过于拥挤的投诉,但市里只有200名处理投诉的巡视员,市长办公室一个分析专家小组觉得大数据可以帮助解决这一需求与资源的落差。该小组建立了一个市内全部90万座建筑物的数据库,并在其中加入市里19个部门所收集到的数据:欠税扣押记录、水电使用异常、缴费拖欠、服务切断、救护车使用、当地犯罪率、鼠患投诉,诸如此类。

    接下来,他们将这一数据库与过去5年中按严重程度排列的建筑物着火记录进行比较,希望找出相关性。果然,建筑物类型和建造年份是与火灾相关的因素。不过,一个没怎么预料到的结果是,获得外砖墙施工许可的建筑物与较低的严重火灾发生率之间存在相关性。利用所有这些数据,该小组建立了一个可以帮助他们确定哪些住房拥挤投诉需要紧急处理的系统。他们所记录的建筑物的各种特征数据都不是导致火灾的原因,但这些数据与火灾隐患的增加或降低存在相关性。这种知识被证明是极具价值的:过去房屋巡视员出现场时签发房屋腾空令的比例只有13%,在采用新办法之后,这个比例上升到了70%——效率大大提高了。

    全世界的商界人士都在高呼大数据时代来临的优势:一家超市如何从一个17岁女孩的购物清单中,发现了她已怀孕的事实;或者将啤酒与尿不湿放在一起销售,神奇地提高了双方的销售额。大数据透露出来的信息有时确实会起颠覆。比如,腾讯一项针对社交网络的统计显示,爱看家庭剧的男人是女性的两倍还多;最关心金价的是中国大妈,但紧随其后的却是90后。而在过去一年,支付宝中无线支付比例排名前十的竟然全部在青海、西藏和内蒙古地区。

    预测原理:从不能预测转变为可以预测

    大数据的核心就是预测,大数据能够预测体现在很多方面。大数据不是要教机器像人一样思考,相反,它是把数学算法运用到海量的数据上来预测事情发生的可能性。正因为在大数据规律面前,每个人的行为都跟别人一样,没有本质变化,所以商家会比消费者更了消费者的行为。

    此外,随着系统接收到的数据越来越多,通过记录找到的最好的预测与模式,可以对系统进行改进。它通常被视为人工智能的一部分,或者更确切地说,被视为一种机器学习。真正的革命并不在于分析数据的机器,而在于数据本身和我们如何运用数据。一旦把统计学和现在大规模的数据融合在一起,将会颠覆很多我们原来的思维。所以现在能够变成数据的东西越来越多,计算和处理数据的能力越来越强,所以大家突然发现这个东西很有意思。所以,大数据能干啥?能干很多很有意思的事情。

    互联网、移动互联网和云计算机保证了大数据实时预测的可能性,也为企业和用户提供了实时预测的信息,相关性预测的信息,让企业和用户抢占先机。由于大数据的全样本性,人和人都是一样的,所以云计算机软件预测的效率和准确性大大提高,有这种迹象,就有这种结果。

    信息找人原理:从人找信息,转变为信息找人

    互联网和大数据的发展,是一个从人找信息,到信息找人的过程。先是人找信息,人找人,信息找信息,现在是信息找人的这样一个时代。信息找人的时代,就是说一方面我们回到了一种最初的,广播模式是信息找人,我们听收音机,我们看电视,它是信息推给我们的,但是有一个缺陷,不知道我们是谁,后来互联网反其道而行,提供搜索引擎技术,让我知道如何找到我所需要的信息,所以搜索引擎是一个很关键的技术。

    大数据还改变了信息优势。按照循证医学,现在治病的第一件事情不是去研究病理学,而是拿过去的数据去研究,相同情况下是如何治疗的。这导致专家和普通人之间的信息优势没有了。原来我相信医生,因为医生知道的多,但现在我可以到谷歌上查一下,知道自己得了什么病。

    谷歌有一个机器翻译的团队,最开始的时候翻译之后的文字根本看不懂,但是现在60%的内容都能读得懂。谷歌机器翻译团队里头有一个笑话,说从团队每离开一个语言学家,翻译质量就会提高。越是专家越搞不明白,但打破常规让数据说话,得到真理的速度反而更快。

    机器懂人原理:由人懂机器转变为机器更懂人

    不是让人更懂机器,而是让机器更懂人,或者说是能够在使用者很笨的情况下,仍然可以使用机器。甚至不是让人懂环境,而是让我们的环境来懂我们,环境来适应人,某种程度上自然环境不能这样讲,但是在数字化环境中已经是这样的一个趋势,就是我们所在的生活世界,越来越趋向于它更适应于我们,更懂我们。哪个企业能够真正做到让机器更懂人,让环境更懂人,让我们随身携带的整个的生活世界更懂得我们的话,那他一定是具有竞争力的了,而“大数据”技术能够助我们一臂之力。

    大数据技术的其中一个核心目标是要从体量巨大、结构繁多的数据中挖掘出隐蔽在背后的规律,从而使数据发挥最大化的价值。由计算机代替人去挖掘信息,获取知识。从各种各样的数据(包括结构化、半结构化和非结构化数据)中快速获取有价值信息的能力,就是大数据技术。大数据机器分析中,半监督学习、集成学习、概率模型等技术尤为重要。

    电子商务智能原理:大数据改变了电子商务模式,让电子商务更智能

    商务智能,在今天大数据时代它获得的重新的定义。例如:传统企业进入互联网,在掌握了“大数据”技术应用途径之后,会发现有一种豁然开朗的感觉,就像在黑屋子里面找东西,找不着,突然碰到了一个开关,发现那么费力的找东西,原来很容易找得到。大数据思维,事实上它不是一个全称的判断,只是对我们所处的时代某一个纬度的描述。

    大数据时代不是说我们这个时代除了大数据什么都没有,哪怕是在互联网和IT领域,它也不是一切,只是说在我们的时代特征里面加上这么一道很明显的光,从而导致我们对以前的生存状态,以及我们个人的生活状态的一个差异化的一种表达。

    当然,同样的技术也可以运用到疾病诊断、推荐治疗措施,甚至是识别潜在犯罪分子上。或者说,在你还不知道的情况下,体检公司、医院提醒你赶紧去做检查,可能会得某些病,商家比你更了解你自己,以及你这样的人在某种情况下会出现的可能变化。就像互联网通过给计算机添加通信功能而改变了世界,大数据也将改变我们生活中最重要的方面,因为它为我们的生活创造了前所未有的可量化的维度。

    定制产品原理:由企业生产产品转变为由客户定制产品

    下一波的改革是大规模定制,为大量客户定制产品和服务,成本低、又兼具个性化。比如消费者希望他买的车有红色、绿色,厂商有能力满足要求,但价格又不至于像手工制作那般让人无法承担。因此,在厂家可以负担得起大规模定制带去的高成本的前提下,要真正做到个性化产品和服务,就必须对客户需求有很好的了解,这背后就需要依靠大数据技术。

    在互联网大数据的时代,商家最后很可能可以针对每一个顾客进行精准的价格歧视。我们现在很多的行为都是比较粗放的,航空公司会给我们里程卡,根据飞行公里数来累计里程,但其实不同顾客所飞行的不同里程对航空公司的利润贡献是不一样的。所以有一天某位顾客可能会收到一封信,“恭喜先生,您已经被我们选为幸运顾客,我们提前把您升级到白金卡。”这说明这个顾客对航空公司的贡献已经够多了。有一天银行说“恭喜您,您的额度又被提高了,”就说明钱花得已经太多了。

    正因为在大数据规律面前,每个人的行为都跟别人一样,没有本质变化。所以商家会比消费者更了消费者的行为。也许你正在想,工作了一年很辛苦,要不要去哪里度假?打开e-Mail,就有航空公司、旅行社的邮件。

    企业产品直接销售给用户,省去了中间商流通环节,使产品的价格可以以出厂价销售,让销费者获得了好处,网上产品便宜成为用户的信念,网购市场形成了。要让用户成为你的产品粉丝,就必须了解用户需要,定制产品成为用户的心愿,也就成为企业发展的新方向。

    本账号提供最新物联网展会活动资讯,和多家物联网企业形成战略合作伙伴,带领用户与物联网行业大咖、各地物联网俱乐部共同来玩转物联网,为行业创造最酷的物联网线下体验和思想交流的平台。

    IOTCOFFEE

  • ?

    干货 | 这是一份完整的大数据处理技术总结与分析

    袁达

    展开

    一 数据分析处理需求分类

    1 事务型处理

    在我们实际生活中,事务型数据处理需求非常常见,例如:淘宝网站交易系统、12306网站火车票交易系统、超市POS系统等都属于事务型数据处理系统。

    这类系统数据处理特点包括以下几点:

    一是事务处理型操作都是细粒度操作,每次事务处理涉及数据量都很小。

    二是计算相对简单,一般只有少数几步操作组成,比如修改某行的某列;

    三是事务型处理操作涉及数据的增、删、改、查,对事务完整性和数据一致性要求非常高。

    四是事务性操作都是实时交互式操作,至少能在几秒内执行完成;

    五是基于以上特点,索引是支撑事务型处理一个非常重要的技术。

    在数据量和并发交易量不大情况下,一般依托单机版关系型数据库,例如ORACLE、MYSQL、SQLSERVER,再加数据复制(DataGurad、 RMAN、MySQL数据复制等)等高可用措施即可满足业务需求。

    在数据量和并发交易量增加情况下,一般可以采用ORALCE RAC集群方式或者是通过硬件升级(采用小型机、大型机等,如银行系统、运营商计费系统、证卷系统)来支撑。

    事务型操作在淘宝、12306等互联网企业中,由于数据量大、访问并发量高,必然采用分布式技术来应对,这样就带来了分布式事务处理问题,而分布式事务处理很难做到高效,因此一般采用根据业务应用特点来开发专用的系统来解决本问题。

    2 数据统计分析

    数据统计主要是被各类企业通过分析自己的销售记录等企业日常的运营数据,以辅助企业管理层来进行运营决策。典型的使用场景有:周报表、月报表等固定时间提供给领导的各类统计报表;市场营销部门,通过各种维度组合进行统计分析,以制定相应的营销策略等。

    数据统计分析特点包括以下几点:

    一是数据统计一般涉及大量数据的聚合运算,每次统计涉及数据量会比较大。

    二是数据统计分析计算相对复杂,例如会涉及大量goupby、 子查询、嵌套查询、窗口函数、聚合函数、排序等;有些复杂统计可能需要编写SQL脚本才能实现。

    三是数据统计分析实时性相对没有事务型操作要求高。但除固定报表外,目前越来越多的用户希望能做做到交互式实时统计;

    传统的数据统计分析主要采用基于MPP并行数据库的数据仓库技术。主要采用维度模型,通过预计算等方法,把数据整理成适合统计分析的结构来实现高性能的数据统计分析,以支持可以通过下钻和上卷操作,实现各种维度组合以及各种粒度的统计分析。

    另外目前在数据统计分析领域,为了满足交互式统计分析需求,基于内存计算的数据库仓库系统也成为一个发展趋势,例如SAP的HANA平台。

    3 数据挖掘

    数据挖掘主要是根据商业目标,采用数据挖掘算法自动从海量数据中发现隐含在海量数据中的规律和知识。

    数据挖掘主要过程是:根据分析挖掘目标,从数据库中把数据提取出来,然后经过ETL组织成适合分析挖掘算法使用宽表,然后利用数据挖掘软件进行挖掘。传统的数据挖掘软件,一般只能支持在单机上进行小规模数据处理,受此限制传统数据分析挖掘一般会采用抽样方式来减少数据分析规模。

    数据挖掘的计算复杂度和灵活度远远超过前两类需求。一是由于数据挖掘问题开放性,导致数据挖掘会涉及大量衍生变量计算,衍生变量多变导致数据预处理计算复杂性;二是很多数据挖掘算法本身就比较复杂,计算量就很大,特别是大量机器学习算法,都是迭代计算,需要通过多次迭代来求最优解,例如K-means聚类算法、PageRank算法等。

    因此总体来讲,数据分析挖掘的特点是:

    1、数据挖掘的整个计算更复杂,一般是由多个步骤组成计算流,多个计算步骤之间存在数据交换,也就是会产生大量中间结果,难以用一条sql语句来表达。

    2、计算应该能够非常灵活表达,很多需要利用高级语言编程实现。

    二 大数据背景下事务型处理系统相关技术

    在google、facebook、taobao等大互联网公司出现之后,这些公司注册和在线用户数量都非长大,因此该公司交易系统需要解决“海量数据+高并发+数据一致性+高可用性”的问题。

    为了解决该问题,从目前资料来看,其实没有一个通用的解决方案,各大公司都会根据自己业务特点定制开发相应的系统,但是常用的思路主要包括以下几点:

    (1)数据库分片,结合业务和数据特点将数据分布在多台机器上。

    (2)利用缓存等机制,尽量利用内存,解决高并发时遇到的随机IO效率问题。

    (3)结合数据复制等技术实现读写分离,以及提高系统可用性。

    (4)大量采用异步处理机制,对应高并发冲击。

    (5)根据实际业务需求,尽量避免分布式事务。

    1相关系统介绍

    1) 阿里CORBAR系统

    阿里COBAR系统是一个基于MYSQL数据库的分布式数据库系统,属于基于分布式数据库中间件的分布式数据库系统。该系统是前身是陈思儒开发的“变形虫”系统(以前调研过),由于陈思儒离开阿里去了盛大,阿里当心“变形虫”稳定性等问题,重新开发该项目。

    该系统主要采用数据库分片思路,实现了:数据拆分、读写分离、复制等功能。由于此系统由于只需要满足事务型操作即可,因此相对真正并行数据库集群(例如TeraData等),此类系统提供操作没有也不需要提供一些复杂跨库处理,因此该系统存在以下限制:

    (1)不支持跨库的join、分页、排序、子查询。

    (2)insert等变更语句必须包括拆分字段等。

    (3)应该不支持跨机事务(以前变形虫不支持)。

    说白了此类系统不具备并行计算能力,基本上相当于数据库路由器!

    另外此类系统的在实际应用的关键问题是,根据什么对数据进行切分,因为切分不好会导致分布式的事务问题。

    2) 阿里OceanBase系统

    该系统也是淘宝为了解决高并发、大数据环境下事务型处理而定制开发的一个系统。该系统主要思路和特点如下:

    (1)他们发现在实际生成环境中,每天更新的数据只占总体数据的1%不到,因此他们把数据分为:基线数据和增量更新数据。

    (2)基线数据是静态数据,采用分布式存储方式进行存储。

    (3)只在一台服务器上存储和处理增量更新数据,并且是在内存中存储和处理更新数据。

    (4)在系统负载轻的时候,把增量更新批量合并到基线数据中。

    (5)数据访问时同时访问基线数据和增量更新数据并合并。

    因此这样好处是:

    (1)读事务和写事务分离

    (2)通过牺牲一点扩展性(写是一个单点),来避免分布式事务处理。

    说明:该系统虽然能处理高并发的事务型处理,号称很牛逼,但其实也只是根据电商的事务处理来定制开发的专用系统,个人认为其技术难度小于oracle等通用型的数据库。该系统无法应用到银行或者12306等,因为其事务处理的逻辑远远比电商商品买卖处理逻辑复杂。

    在目前的大数据时代,一定是基于应用定制才能找到好的解决方案!

    3) 基于Hbase的交易系统

    在hadoop平台下,HBASE数据库是一个分布式KV数据库,属于实时数据库范畴。支付宝目前支付记录就是存储在HBASE数据库中。

    HBASE数据库接口是非SQL接口,而是KV操作接口(基于Key的访问和基于key范围的scan操作),因此HBASE数据库虽然可扩展性非常好,但是由于其接口限制导致该数据库能支持上层应用很窄。基于HBASE应用的设计中,关键点是key的设计,要根据需要支持的应用来设计key的组成。

    可以认为HBASE数据库只支持作为KEY的这一列的索引。虽然目前HBASE有支持二级索引的方案,二级索引维护将会比较麻烦。

    2并发和并行区别

    并发是指同时执行通常不相关的各种任务,例如交易型系统典型属于高并发系统。

    并行是通过将一个很大的计算任务,划分为多个小的计算任务,然后多个小计算任务的并行执行,来缩短该计算任务计算时间。

    两者主要区别在于:

    (1)通讯与协调方面:在并行计算中,由于多个小任务同属一个大的计算任务,因此小任务之间存在依赖关系,小任务之间需要大量通讯和协调;相反,并发中的多个任务之间基本相互独立,任务与任务之间相关性很小。

    (2)容错处理方面:由于并发任务之间相互独立,某个任务执行失败并不会影响其它的任务。但是并行计算中的多个任务属于一个大任务,因此某个子任务的失败,如果不能恢复(粗粒度容错与细粒度容错),则整个任务都会失败。

    3本章总结

    数据量大不一定需要并行计算,虽然数据量大,数据是分布存储,但是如果每次操作基本上还是针对少量数据,因此每次操作基本上都是在一台服务器上完成,不涉及并行计算。只是需要通过数据复制、数据缓存、异步处理等方式来支撑高并发访问量

    三 大数据背景下数据统计分析技术介绍

    随数据量变大,和事务处理不同的是,单个统计分析涉及数据量会非常大,单个统计分析任务涉及数据会分散在多台服务器上,且由于计算量大,采用单台服务器进行计算,会导致计算时间非常长,单个统计分析任务必须采用并行计算方式来加快单个统计分析任务执行速度。

    1并行查询与并行计算技术介绍

    在大数据背景下的数据统计分析技术门类很多,常见的有:

    n MPP并行数据库 : TeraData、GreenPlum、Vertica等。

    n 基于MapReduce并行计算框架的数据仓库:

    HIVE(Hadoop平台) 、Tenzing(Google公司)

    n 基于Hbase的Phoenix系统

    n HadoopDB系统

    n EMC公司的hapt系统

    n MPP分布式查询引擎: Dremel、Impala、Presto、Shard query、Citusdb。

    n 基于SPARK的Shark、基于Dryad的SCOPE、基于Tez的stinger。

    n 基于hadoop+index的JethroData系统

    n 基于内存计算的Druid系统

    这些系统都解决了海量数据下的数据统计分析的问题,并且这些系统另外一个共同特点是都提供了SQL或者类SQL接口。

    为了能够较好研究这些系统,我们需要对并行查询与并行计算的相关技术做一个简要的介绍。

    首先所有的系统都可以分为三个层次: 语义层、并行计算引擎层、分布式存储层。语义层提供一个编程接口让用户表达所需要计算,并负责把该计算翻译成底层并行计算引擎可以执行的执行计划,并由并行计算引擎来执行,最下面一层是分布式存储层。

    对于提供类SQL接口并行计算系统,语义层可以认为是SQL解析层。

    1) 语义层

    SQL语言是一种声名式语言,SQL只是表达了要做什么,而没有表达怎么做。为此,SQL解析层主要作用是:将用户提交的基于SQL的统计分析请求,转化为底层计算引擎层可以执行的执行计划。也就是解决“怎么做”的问题。

    SQL解析层工作主要包括两个大方面:

    (1) 通过语法分析技术来理解要做什么。在关系数据库中,一般会把SQL语言分析后,形成树型结构的执行计划。

    (2) 在语法分析技术上,利用各种优化技术和算法,找出一种最经济物理执行计划。

    优化可以分为两个方面:一是逻辑层面优化、二是物理执行层面优化。

    (1) 逻辑层优化

    逻辑层面个人认为主要是因为同样表达一个分析请求,有的人SQL写的好,有的人SQL写的烂,因此在逻辑层面可以通过一些等价关系代数变换,实现查询重写,将写的比较烂的sql变换为好的写法。

    比较典型优化是:“把投影和过滤下沉,先执行过滤和投影操作”,减少中间结果。

    (2) 物理层优化

    物理层面优化是在逻辑优化后,结合实际物理执行过程,找出最优的物理执行计划。生成物理查询计划的工作包括:

    ü 增加一些操作符: 包括扫描和排序等。

    ü 确定各个操作符实现算法。例如扫描是全表扫描还是利用索引;Join是采用HASH连接、索引连接、合并排序等实现算法中的那一种。

    ü 确定操作符之间的数据流转方法:物化还是流水线方式。

    ü 采用基于代价估算方法确定最优的物理执行计划,目前代价估算主要是以估算该物理计划需要的IO量。另外对于并行数据库,则还要考虑通讯代价,即尽量减少数据在各个机器之间的传递。

    在物理层优化的代价估算过程中,代价估算需要依靠很多统计信息,如表有多大,表中相关列的值分布是什么样子等。传统数据库在数据Load过程中会事先计算好这些统计信息。并行计算中还需要考虑通讯代价。

    需要指出是,由于imapla、Presto、HIVE等系统只是一个查询引擎,它们可以直接查询以普通文件方式存储在HDFS系统上的文件,因此这些系统一般无法使用索引和各种统计信息来进行物理执行计划的优化,这些系统一般只能在逻辑层进行一些基于规则静态优化。根据SHARK论文,SHARK系统支持根据前面一些节点计算获得的信息,来动态优化后面执行计划。

    (3) 物化与流水线执行方法

    一条SQL语句对开发人员而言,感觉只是一次调用,但是实际上在数据库内部,一条SQL语句执行其实是有多个操作符组合而成的的树型结构计算流。如下图:

    针对该计算流有两种执行方式:一是基于物化或者是实体化执行方式,另外一种是基于数据流的执行方式。

    第一种方法的过程是: 把各个操作运算排序,并把每个操作运算的输出的中间结果存储在磁盘上,直到被另外一个操作运算所...

  • ?

    大数据方面的核心技术

    秋水

    展开

    目前,大数据领域每年都会涌现出大量新的技术,成为大数据获取、存储、处理分析或可视化的有效手段。大数据技术能够将大规模数据中隐藏的信息和知识挖掘出来,为人类社会经济活动提供依据,提高各个领域的运行效率,甚至整个社会经济的集约化程度。那么下面我们就说说大数据方面的核心技术有哪些:

    1.大数据生命周期

    底层是基础设施,涵盖计算资源、内存与存储和网络互联,具体表现为计算节点、集群、机柜和数据中心。在此之上是数据存储和管理,包括文件系统、数据库和类似YARN的资源管理系统。然后是计算处理层,如hadoop、MapReduce和Spark,以及在此之上的各种不同计算范式,如批处理、流处理和图计算等,包括衍生出编程模型的计算模型,如BSP、GAS等。

    ·数据分析和可视化基于计算处理层。分析包括简单的查询分析、流分析以及更复杂的分析(如机器学习、图计算等)。查询分析多基于表结构和关系函数,流分析基于数据、事件流以及简单的统计分析,而复杂分析则基于更复杂的数据结构与方法,如图、矩阵、迭代计算和线性代数。一般意义的可视化是对分析结果的展示。但是通过交互式可视化,还可以探索性地提问,使分析获得新的线索,形成迭代的分析和可视化。基于大规模数据的实时交互可视化分析以及在这个过程中引入自动化的因素是目前研究的热点。

    ·2.大数据技术生态

    ·大数据的基本处理流程与传统数据处理流程并无太大差异,主要区别在于:由于大数据要处理大量、非结构化的数据,所以在各处理环节中都可以采用并行处理。目前,Hadoop、MapReduce和Spark等分布式处理方式已经成为大数据处理各环节的通用处理方法。

    ·3.大数据采集与预处理

    在大数据的生命周期中,数据采集处于第一个环节。根据MapReduce产生数据的应用系统分类,大数据的采集主要有4种来源:管理信息系统、Web信息系统、物理信息系统、科学实验系统。对于不同的数据集,可能存在不同的结构和模式,如文件、XML树、关系表等,表现为数据的异构性。对多个异构的数据集,需要做进一步集成处理或整合处理,将来自不同数据集的数据收集、整理、清洗、转换后,生成到一个新的数据集,为后续查询和分析处理提供统一的数据视图。针对管理信息系统中异构数据库集成技术、Web信息系统中的实体识别技术和DeepWeb集成技术、传感器网络数据融合技术已经有很多研究工作,取得了较大的进展,已经推出了多种数据清洗和质量控制工具。

    ·4.大数据存储与管理

    按数据类型的不同,大数据的存储和管理采用不同的技术路线,大致可以分为3类。第1类主要面对的是大规模的结构化数据。针对这类大数据,通常采用新型数据库集群。它们通过列存储或行列混合存储以及粗粒度索引等技术,结合MPP(MassiveParallelProcessing)架构高效的分布式计算模式,实现对PB量级数据的存储和管理。这类集群具有高性能和高扩展性特点,在企业分析类应用领域已获得广泛应用;第2类主要面对的是半结构化和非结构化数据。应对这类应用场景,基于Hadoop开源体系的系统平台更为擅长。它们通过对Hadoop生态体系的技术扩展和封装,实现对半结构化和非结构化数据的存储和管理;第3类面对的是结构化和非结构化混合的大数据,因此采用MPP并行数据库集群与Hadoop集群的混合来实现对百PB量级、EB量级数据的存储和管理。一方面,用MPP来管理计算高质量的结构化数据,提供强大的SQL和OLTP型服务;另一方面,用Hadoop实现对半结构化和非结构化数据的处理,以支持诸如内容检索、深度挖掘与综合分析等新型应用。这类混合模式将是大数据存储和管理未来发展的趋势。

    ·5.大数据计算模式与系统

    ·所谓大数据计算模式,即根据大数据的不同数据特征和计算特征,从多样性的大数据计算问题和需求中提炼并建立的各种高层抽象(abstraction)或模型(model)。例如,MapReduce是一个并行计算抽象,加州大学伯克利分校著名的Spark系统中的“分布内存抽象RDD”,CMU著名的图计算系统GraphLab中的“图并行抽象”(GraphParallelAbstraction)等。传统的并行计算方法,主要从体系结构和编程语言的层面定义了一些较为底层的并行计算抽象和模型,但由于大数据处理问题具有很多高层的数据特征和计算特征,因此大数据处理需要更多地结合这些高层特征考虑更为高层的计算模式。

    根据大数据处理多样性的需求和以上不同的特征维度,目前出现了多种典型和重要的大数据计算模式。与这些计算模式相适应,出现了很多对应的大数据计算系统和工具。由于单纯描述计算模式比较抽象和空洞,因此在描述不同计算模式时,将同时给出相应的典型计算系统和工具。

    ·6.大数据分析与可视化

    大规模数据的可视化主要是基于并行算法设计的技术,合理利用有限的计算资源,高效地处理和分析特定数据集的特性。通常情况下,大规模数据可视化的技术会结合多分辨率表示等方法,以获得足够的互动性能。在科学大规模数据的并行可视化工作中,主要涉及数据流线化、任务并行化、管道并行化和数据并行化4种基本技术。微软公司在其云计算平台Azure上开发了大规模机器学习可视化平台(AzureMachine Learning),将大数据分析任务形式为有向无环图并以数据流图的方式向用户展示,取得了比较好的效果。在国内,阿里巴巴旗下的大数据分析平台御膳房也采用了类似的方式,为业务人员提供的互动式大数据分析平台。

    最后要感谢这个优秀的平台,可以让我们相互交流,如果想进一步学习交流,可以加群460570824,希望大家可以一起学习进步!

  • ?

    人人都在说的大数据到底是什么?(技术层)

    寄容

    展开

    前沿技术普及系列·写在前面

    不知道大家有没有和象牙妹儿一样的感觉,便是最近1年很多AI产品铺天盖地的来到了我们的生活,比如某些家的智能陪伴音响、翻译棒、智能机器人、AR拍照手机等等。

    这里面背后的前沿技术大数据、云计算、区块链、物联网、 5G、数字化…前几年甚至到现在听着还很遥远,但却已有不少在冲击着商业的世界,渗透进我们的生活!

    如何拨开层层浓雾,抵达未来的彼岸?如何把握技术的钥匙,启开未来商业世界的大门!

    大象互联网圈发起主办的第二届中国【郑州】开发者大会不但关注技术·商业的融合,也关注着前沿技术的分享。

    因此,从今天起,大象互联网圈公众号将目光聚焦在大数据、云计算、物联网IOT、人工智能AI、区块链、VR/AR等板块,一一从概念层、目前行业发展状况、企业实际应用层、技术层、岗位前景等为大家带来干货的普及,快来和象牙儿妹一块围观吧!

    上一篇:人人都在说的大数据到底是什么?(概念层)

    本文由“壹伴编辑器”提供技术支持

    提到大数据技术,最基础和核心的仍是大数据的分析和计算。在2017年,大数据分析和计算技术仍旧在飞速的发展,无论老势力Hadoop还是当红小生Spark,亦或是人工智能,都在继续自己的发展和迭代。

    目前绝大部分传统数据计算和数据分析服务均是基于批量数据处理模型:使用ETL系统或OLTP系统进行构造数据存储,在线的数据服务通过构造SQL语言访问上述数据存储并取得分析结果。这套数据处理的方法伴随着关系型数据库在工业界的演进而被广泛采用。

    本文将分别讨论大数据技术涉及到的技术框架、平台以及未来的发展趋势。

    本文由“壹伴编辑器”提供技术支持

    1.批处理框架

    传统的批量数据处理模型通常基于如下处理模型:

    1.使用ETL系统或者OLTP系统构造原始的数据存储,以提供后续的数据服务进行数据分析和数据计算。用户装载数据,系统根据自己的存储和计算情况,对于装载的数据进行索引构建等一些列查询优化工作。

    因此,对于批量计算,数据一定需要加载到计算机系统,后续计算系统才在数据加载完成后方能进行计算。

    2.用户或系统主动发起一个计算作用并向上述数据系统进行请求。此时计算系统开始调度(启动)计算节点进行大量数据计算,该过程的计算量可能巨大,耗时长达数分钟乃至数小时。

    同时,由于数据累计的不可及时性,上述计算过程的数据一定是历史数据,无法保证数据的实时性。

    3.计算结果返回,计算作业完成后将数据以结果集形式返回用户,或者可能由于计算结果数量巨大保存着数据计算系统中,用户进行再次数据集成到其他系统。一旦数据结果巨大,整体的数据集成过程漫长,耗时可能长达数分钟乃至数小时。

    典型代表:Hadoop

    Hadoop是Apache的一个开源项目,是可以提供开源、可靠、可扩展的分布式计算工具。它主要包括HDFS和MapReduce两个组件,分别用于解决大数据的存储和计算。

    HDFS是独立的分布式文件系统,为MapReduce计算框架提供存储服务,具有较高的容错性和高可用性,基于块存储以流数据模式进行访问,数据节点之间项目备份。默认存储块大小为64M,用户也可以自定义大小。

    HDFS是基于主从结构的分布式文件系统,结构上包括NameNode目录管理、DataNode的数据存储和Client的访问客户端3部分。

    NameNode主要负责系统的命名空间、集群的配置管理以及存储块的复制;DataNode是分布式文件系统存储的基本单元;Client为分布式文件系统的应用程序。

    对于数据存储,HDFS采用的是多副本的方式来存储数据,即Client将数据首先通过NameNode获取数据将要存储在哪些DataNode上,之后这些存储到最新数据的DataNode将变更数据以同步或异步方式同步到其他DataNode上。

    在Hadoop3.0之后,采用Erasure Coding可以大大的降低数据存储空间的占用。对于冷数据,可以采用EC来保存,这样才能降低存储数据的花销,而需要时,还可以通过CPU计算来读取这些数。

    MapReduce是一种分布式计算框架,适用于离线大数据计算。采用函数式编程模式,利用Map和Reduce函数来实现复杂的并行计算,主要功能是对一个任务进行分解,以及对结果进行综合汇总。

    具体来说,MapReduce是将那些没有经过处理的海量数据进行数据分片,即分解成多个小数据集;每个Map并行地处理每一个数据集中的数据,然后将结果存储为,并把key值相同的数据进行归并发送到Reduce处理。

    本文由“壹伴编辑器”提供技术支持

    2.流计算框架

    不同于批量计算模型,流式计算更加强调计算数据流和低时延,流式计算数据处理模型如下:

    1.使用实时集成工具,将数据实时变化传输到流式数据存储(即消息队列,如RabbitMQ);此时数据的传输编程实时化,将长时间累积大量的数据平摊到每个时间点不停地小批量实时传输,因此数据集成的时延得以保证。

    2.数据计算环节在流式和批量处理模型差距更大,由于数据集成从累计变成实时,不同于批量计算等待数据集成全部就绪后才启动计算作业,流式计算作业是一种常驻计算服务,一旦启动将一直处于等待事件触发的状态,一旦小批量数据进入流式数据存储,流计算立刻计算并迅速得到结果。

    3.不同于批量计算结果数据需要等待数据计算结果完成后,批量将数据传输到在线系统;流式计算作业在每次小批量数据计算后可以立刻将数据写入在线系统,无需等待整个数据的计算结果,可以立刻将数据结果投递到在线系统,进一步做到实时计算结果的实时化展现。

    典型代表:Spark

    Spark是一个快速且通用的集群计算平台。它包含Spark Core、Spark SQL、Spark Streaming、MLlib以及Graphx组件。

    Spark SQL是处理结构化数据的库,它支持通过SQL查询数据。Spark Streming是实时数据流处理组件。MLlib是一个包含通用机器学习的包。GraphX是处理图的库,并进行图的并行计算一样。

    Spark提出了弹性分布式数据集的概念(Resilient Distributed Dataset),简称RDD,每个RDD都被分为多个分区,这些分区运行在集群的不同节点上。一般数据操作分为3个步骤:创建RDD、转换已有的RDD以及调用RDD操作进行求值。

    在Spark中,计算建模为有向无环图(DAG),其中每个顶点表示弹性分布式数据集(RDD),每个边表示RDD的操作。

    RDD是划分为各(内存中或者交换到磁盘上)分区的对象集合。在DAG上,从顶点A到顶点B的边缘E意味着RDD B是RDD A上执行操作E的结果。有两种操作:转换和动作。

    转换(例如;映射、过滤器、连接)对RDD执行操作并产生新的RDD。

    本文由“壹伴编辑器”提供技术支持

    3.交互式分析框架

    在解决了大数据的可靠存储和高效计算后,如何为数据分析人员提供便利日益受到关注,而最便利的分析方式莫过于交互式查询。

    这几年交互式分析技术发展迅速,目前这一领域知名的平台有十余个,包括Google开发的Dremel和PowerDrill,Facebook开发的Presto,Hadoop服务商Cloudera和HortonWorks分别开发的Impala和Stinger,以及Apache项目Hive、Drill、Tajo、Kylin、MRQL等。

    一些批处理和流计算平台如Spark和Flink也分别内置了交互式分析框架。由于SQL已被业界广泛接受,目前的交互式分析框架都支持用类似SQL的语言进行查询。早期的交互式分析平台建立在Hadoop的基础上,被称作SQL-on-Hadoop。

    后来的分析平台改用Spark、Storm等引擎,不过SQL-on-Hadoop的称呼还是沿用了下来。SQL-on-Hadoop也指为分布式数据存储提供SQL查询功能。

    典型代表:Hive

    ApacheHive是最早出现的架构在Hadoop基础之上的大规模数据仓库,由Facebook设计并开源。Hive的基本思想是,通过定义模式信息,把HDFS中的文件组织成类似传统数据库的存储系统。

    Hive保持着Hadoop所提供的可扩展性和灵活性。Hive支持熟悉的关系数据库概念,比如表、列和分区,包含对非结构化数据一定程度的SQL支持。它支持所有主要的原语类型(如整数、浮点数、字符串)和复杂类型(如字典、列表、结构)。

    它还支持使用类似SQL的声明性语言HiveQueryLanguage(HiveQL)表达的查询,任何熟悉SQL的人都很容易理解它。HiveQL被编译为MapReduce过程执行。下图说明如何通过MapReduce实现JOIN和GROUPBY。

    部分HiveQL操作的实现方式

    Hive与传统关系数据库对比如下:

    Hive的主要弱点是由于建立在MapReduce的基础上,性能受到限制。很多交互式分析平台基于对Hive的改进和扩展,包括Stinger、Presto、Kylin等。其中Kylin是中国团队提交到Apache上的项目,其与众不同的地方是提供多维分析(OLAP)能力。

    Kylin对多维分析可能用到的度量进行预计算,供查询时直接访问,由此提供快速查询和高并发能力。Kylin在eBay、百度、京东、网易、美团均有应用。

    本文由“壹伴编辑器”提供技术支持

    5.其他类型的框架

    除了上面介绍的几种类型的框架外,还有一些目前还不太热门但具有重要潜力的框架类型。图计算是DAG之外的另一种迭代式计算模型,它以图论为基础对现实世界建模和计算,擅长表达数据之间的关联性,适用于PageRank计算、社交网络分析、推荐系统及机器学习。这一类框架有GooglePregel、ApacheGiraph、ApacheHama、PowerGraph、,其中PowerGraph是这一领域目前最杰出的代表。很多图数据库也内置图计算框架。

    另一类是增量计算框架,探讨如何只对部分新增数据进行计算来极大提升计算过程的效率,可应用到数据增量或周期性更新的场合。这一类框架包括GooglePercolator、MicrosoftKineograph、阿里Galaxy等。

    另外还有像

    ApacheIgnite、ApacheGeode(GemFire的开源版本)这样的高性能事务处理框架。

    本文由“壹伴编辑器”提供技术支持

    6.总结与展望

    从Hadoop横空出世到现在10余年的时间中,大数据分布式计算技术得到了迅猛发展。不过由于历史尚短,这方面的技术远未成熟。各种框架都还在不断改进,并相互竞争。

    性能优化毫无疑问是大数据计算框架改进的重点方向之一。而性能的提高很大程度上取决于内存的有效利用。这包括前面提到的内存计算,现已在各种类型的框架中广泛采用。

    拥抱机器学习和人工智能也是大数据计算的潮流之一。Spark和Flink分别推出机器学习库SparkML和FlinkML。更多的平台在第三方大数据计算框架上提供机器学习,如Mahout、Oryx及一干Apache孵化项目SystemML、HiveMall、PredictionIO、SAMOA、MADLib。

    在同一平台上支持多种框架也是发展趋势之一,尤其对于那些开发实力较为雄厚的社区。

    Spark以批处理模型为核心,实现了交互式分析框架SparkSQL、流计算框架SparkStreaming(及正在实现的StructuredStreaming)、图计算框架GraphX、机器学习库SparkML。

    本文由“壹伴编辑器”提供技术支持

    7.学习资料

    最后介绍一下大数据计算方面的学习资料。

    论坛

    首推知乎、Quora、StackOverflow,运气好的话开发者亲自给你解答。其他值得关注的网站或论坛包括炼数成金、人大经济论坛、CSDN、博客园、云栖社区、360大数据、推酷、伯乐在线、小象学院等。

    微信订阅号

    InfoQ是最权威的,其他还有THU数据派、大数据杂谈、CSDN大数据、数据猿、Hadoop技术博文等,各人根据偏好取舍。

    官方网站文档

    若要进行系统的学习,则首先应参考官方网站文档。不少大数据平台的官方文档内容都比较详实,胜过多数教材。

    书籍

    国外O\'Reilly、Manning两家出版社在大数据领域出版了不少优秀书籍,特别是Manning的InAction系列和O\'Reilly的DefinitiveGuide系列。

    本篇关于大数据的技术层面分析就介绍到这,下一篇我们将对大数据的最终价值体现——大数据实践进行分析介绍。

    END

    第二届中国【郑州】开发者大会

    线上报名通道全面开放

    本次大会将开设从数字化到大数据落地专场,现已开放报名通道,门票分为49.9普通票和VIP票两种,其中VIP票权益非常丰富,票价为199元且仅限200张,下面是两种票的权益对比:

  • ?

    这五种大数据计算框架,你一定要知道!

    解脱

    展开

    随着这些年全世界数据的几何式增长,数据的存储和运算都将成为世界级的难题。之前小鸟给大家介绍过一些分布式文件系统,解决的是大数据存储的问题,今天小鸟给大家介绍一些分布式计算框架:

    Hadoop框架

    提起大数据,第一个想起的肯定是Hadoop,因为Hadoop是目前世界上应用最广泛的大数据工具,他凭借极高的容错率和极低的硬件价格,在大数据市场上风生水起。Hadoop还是第一个在开源社区上引发高度关注的批处理框架,他提出的Map和Reduce的计算模式简洁而优雅。迄今为止,Hadoop已经成为了一个广阔的生态圈,实现了大量算法和组件。由于Hadoop的计算任务需要在集群的多个节点上多次读写,因此在速度上会稍显劣势,但是其吞吐量也同样是其他框架所不能匹敌的。

    Storm框架

    与Hadoop的批处理模式不同,Storm采用的是流计算框架,由Twitter开源并且托管在GitHub上。与Hadoop类似的是,Storm也提出了两个计算角色,分别为Spout和Bolt。

    如果说Hadoop是水桶,只能一桶一桶的去井里扛,那么Storm就是水龙头,只要打开就可以源源不断的出水。Storm支持的语言也比较多,Java、Ruby、Python等语言都能很好的支持。由于Storm是流计算框架,因此使用的是内存,延迟上有极大的优势,但是Storm不会持久化数据。

    Samza框架

    Smaza也是一种流计算框架,但他目前只支持JVM语言,灵活度上略显不足,并且Samza必须和Kafka共同使用。但是响应的,其也继承了Kafka的低延时、分区、避免回压等优势。对于已经有Hadoop+Kafka工作环境的团队来说,Samza是一个不错的选择,并且Samza在多个团队使用的时候能体现良好的性能。

    Spark框架

    Spark属于前两种框架形式的集合体,是一种混合式的计算框架。它既有自带的实时流处理工具,也可以和Hadoop集成,代替其中的MapReduce,甚至Spark还可以单独拿出来部署集群,但是还得借助HDFS等分布式存储系统。Spark的强大之处在于其运算速度,与Storm类似,Spark也是基于内存的,并且在内存满负载的时候,硬盘也能运算,运算结果表示,Spark的速度大约为Hadoop的一百倍,并且其成本可能比Hadoop更低。但是Spark目前还没有像Hadoop哪有拥有上万级别的集群,因此现阶段的Spark和Hadoop搭配起来使用更加合适。

    Flink框架

    Flink也是一种混合式的计算框架,但是在设计初始,Fink的侧重点在于处理流式数据,这与Spark的设计初衷恰恰相反,而在市场需求的驱使下,两者都在朝着更多的兼容性发展。Flink目前不是很成熟,更多情况下Flink还是起到一个借鉴的作用。

    以上就是现在比较主流的大数据运算框架的介绍了,欢迎大家收藏转发。关注小鸟,获取更多大数据级相关技术的资讯与教程。

大数据计算技术

所有视频需要登录后,才能观看

请先登录您的帐号,即可完整播放,如果您尚未注册帐号,请先点击注册。

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP