大数据高性能数据库计算知识缺乏怎么办

大数据入门的四个必备常识
我的图书馆
大数据入门的四个必备常识
一、大数据分析的五个基本方面1,可视化分析大数据分析的使用者有大数据分析专家,同时还有普通用户,但是他们二者对于大数据分析最基本的要求就是可视化分析,因为可视化分析能够直观的呈现大数据特点,同时能够非常容易被读者所接受,就如同看图说话一样简单明了。2,数据挖掘算法大数据分析的理论核心就是数据挖掘算法,各种数据挖掘的算法基于不同的数据类型和格式才能更加科学的呈现出数据本身具备的特点,也正是因为这些被全世界统计学家所公认的各种统计方法(可以称之为真理)才能深入数据内部,挖掘出公认的价值。另外一个方面也是因为有这些数据挖掘的算法才能更快速的处理大数据,如果一个算法得花上好几年才能得出结论,那大数据的价值也就无从说起了。3,预测性分析能力大数据分析最终要的应用领域之一就是预测性分析,从大数据中挖掘出特点,通过科学的建立模型,之后便可以通过模型带入新的数据,从而预测未来的数据。4,语义引擎大数据分析广泛应用于网络数据挖掘,可从用户的搜索关键词、标签关键词、或其他输入语义,分析,判断用户需求,从而实现更好的用户体验和广告匹配。5,数据质量和数据管理大数据分析离不开数据质量和数据管理,高质量的数据和有效的数据管理,无论是在学术研究还是在商业应用领域,都能够保证分析结果的真实和有价值。 大数据分析的基础就是以上五个方面,当然更加深入大数据分析的话,还有很多很多更加有特点的、更加深入的、更加专业的大数据分析方法。二、如何选择适合的数据分析工具要明白分析什么数据,大数据要分析的数据类型主要有四大类:交易数据(TRANSACTION DATA)大数据平台能够获取时间跨度更大、更海量的结构化交易数据,这样就可以对更广泛的交易数据类型进行分析,不仅仅包括POS或电子商务购物数据,还包括行为交易数据,例如Web服务器记录的互联网点击流数据日志。人为数据(HUMAN-GENERATED DATA)非结构数据广泛存在于电子邮件、文档、图片、音频、视频,以及通过博客、维基,尤其是社交媒体产生的数据流。这些数据为使用文本分析功能进行分析提供了丰富的数据源泉。移动数据(MOBILE DATA)能够上网的智能手机和平板越来越普遍。这些移动设备上的App都能够追踪和沟通无数事件,从App内的交易数据(如搜索产品的记录事件)到个人信息资料或状态报告事件(如地点变更即报告一个新的地理编码)。机器和传感器数据(MACHINE AND SENSOR DATA)这包括功能设备创建或生成的数据,例如智能电表、智能温度控制器、工厂机器和连接互联网的家用电器。这些设备可以配置为与互联网络中的其他节点通信,还可以自动向中央服务器传输数据,这样就可以对数据进行分析。机器和传感器数据是来自新兴的物联网(IoT)所产生的主要例子。来自物联网的数据可以用于构建分析模型,连续监测预测性行为(如当传感器值表示有问题时进行识别),提供规定的指令(如警示技术人员在真正出问题之前检查设备)。数据分析工具达到哪些要求和目的?能应用高级的分析算法和模型提供分析以大数据平台为引擎,比如Hadoop或其他高性能分析系统能够适用于多种数据源的结构化和非结构化数据随着用于分析模型的数据的增加,能够实现扩展分析模型可以,或者已经集成到数据可视化工具能够和其他技术集成另外,工具必须包含必备的一些功能,包括集成算法和支持数据挖掘技术,包括(但不限于):集群和细分:把一个大的实体分割拥有共同特征的小团体。比如分析收集来的客户,确定更细分的目标市场。分类:把数据组织进预定类别。比如根据细分模型决定客户改如何进行分类。恢复:用于恢复从属变量和一个及一个以上独立变量之间的关系,帮助决定从属变量如何根据独立变量的变化而变化。比如使用地理数据、净收入、夏日平均温度和占地面积预测财产的未来走向。联合和项目集挖掘:在大数据集中寻找变量之间的相关关系。比如它可以帮助呼叫中心代表提供基于呼叫者客户细分、关系和投诉类型的更精准的信息。相似性和联系:用于非直接的集群算法。相似性积分算法可用于决定备用集群中实体的相似性。神经网络:用于机器学习的非直接分析。人们通过数据分析工具了解什么数据科学家们,他们想使用更复杂的数据类型实现更复杂的分析,熟知如何设计,如何应用基础模型来评估内在倾向性或偏差。业务分析师,他们更像是随性的用户,想要用数据来实现主动数据发现,或者实现现有信息和部分预测分析的可视化。企业经理,他们想要了解模型和结论。IT开发人员,他们为以上所有类用户提供支持。如何选择最适合的大数据分析软件分析师的专业知识和技能。有些工具的目标受众是新手用户,有的是专业数据分析师,有的则是针对这两种受众设计的。分析多样性。根据不同的用户案例和应用,企业用户可能需要支持不同类型的分析功能,使用特定类型的建模(例如回归、聚类、分割、行为建模和决策树)。这些功能已经能够广泛支持高水平、不同形式的分析建模,但是还是有一些厂商投入数十年的精力,调整不同版本的算法,增加更加高级的功能。理解哪些模型与企业面临的问题最相关,根据产品如何最好地满足用户的业务需求进行产品评估,这些都非常重要。数据范围分析。要分析的数据范围涉及很多方面,如结构化和非结构化信息,传统的本地数据库和数据仓库、基于云端的数据源,大数据平台(如Hadoop)上的数据管理等。但是,不同产品对非传统数据湖(在Hadoop内或其他用于提供横向扩展的NoSQL数据管理系统内)上的数据管理提供的支持程度不一。如何选择产品,企业必须考虑获取和处理数据量及数据种类的特定需求。协作。企业规模越大,越有可能需要跨部门、在诸多分析师之间分享分析、模型和应用。企业如果有很多分析师分布在各部门,对结果如何进行解释和分析,可能会需要增加更多的共享模型和协作的方法。许可证书和维护预算。几乎所有厂商的产品都分不同的版本,购买费用和整个运营成本各不相同。许可证书费用与特性、功能、对分析数据的量或者产品可使用的节点数的限制成正比。易用性。没有统计背景的商业分析师是否也能够轻松地开发分析和应用呢?确定产品是否提供了方便开发和分析的可视化方法。非结构化数据使用率。确认产品能够使用不同类型的非结构化数据(文档、电子邮件、图像、视频、演示文稿、社交媒体渠道信息等),并且能够解析和利用收到的信息。可扩展性和可伸缩性。随着数据量的不断增长和数据管理平台的不断扩展,要评估不同的分析产品如何跟随处理与存储容量的增长而增长。三、如何区分三个大数据热门职业——数据科学家、数据工程师、数据分析师随着大数据的愈演愈热,相关大数据的职业也成为热门,给人才发展带来带来了很多机会。数据科学家、数据工程师、数据分析师已经成为大数据行业最热门的职位。它们是如何定义的?具体是做什么工作的?需要哪些技能?让我们一起来看看吧。这3个职业是如何定位的?数据科学家是个什么样的存在数据科学家是指能采用科学方法、运用数据挖掘工具对复杂多量的数字、符号、文字、网址、音频或视频等信息进行数字化重现与认识,并能寻找新的数据洞察的工程师或专家(不同于统计学家或分析师)。数据工程师是如何定义的数据工程师一般被定义成“深刻理解统计学科的明星软件工程师”。如果你正为一个商业问题烦恼,那么你需要一个数据工程师。他们的核心价值在于他们借由清晰数据创建数据管道的能力。充分了解文件系统,分布式计算与数据库是成为一位优秀数据工程师的必要技能。 数据工程师对演算法有相当好的理解。因此,数据工程师理应能运行基本数据模型。商业需求的高端化催生了演算高度复杂化的需求。很多时候,这些需求超过了数据工程师掌握知识范围,这个时候你就需要打电话寻求数据科学家的帮助。数据分析师该如何理解数据分析师指的是不同行业中,专门从事行业数据搜集、整理、分析,并依据数据做出行业研究、评估和预测的专业人员。他们知道如何提出正确的问题,非常善于数据分析,数据可视化和数据呈现。这3个职业具体有什么职责数据科学家的工作职责数据科学家倾向于用探索数据的方式来看待周围的世界。把大量散乱的数据变成结构化的可供分析的数据,还要找出丰富的数据源,整合其他可能不完整的数据源,并清理成结果数据集。新的竞争环境中,挑战不断地变化,新数据不断地流入,数据科学家需要帮助决策者穿梭于各种分析,从临时数据分析到持续的数据交互分析。当他们有所发现,便交流他们的发现,建议新的业务方向。他们很有创造力的展示视觉化的信息,也让找到的模式清晰而有说服力。把蕴含在数据中的规律建议给Boss,从而影响产品,流程和决策。数据工程师的工作职责分析历史、预测未来、优化选择,这是大数据工程师在“玩数据”时最重要的三大任务。通过这三个工作方向,他们帮助企业做出更好的商业决策。大数据工程师一个很重要的工作,就是通过分析数据来找出过去事件的特征。比如,腾讯的数据团队正在搭建一个数据仓库,把公司所有网络平台上数量庞大、不规整的数据信息进行梳理,总结出可供查询的特征,来支持公司各类业务对数据的需求,包括广告投放、游戏开发、社交网络等。找出过去事件的特征,最大的作用是可以帮助企业更好地认识消费者。通过分析用户以往的行为轨迹,就能够了解这个人,并预测他的行为。通过引入关键因素,大数据工程师可以预测未来的消费趋势。在阿里妈妈的营销平台上,工程师正试图通过引入气象数据来帮助淘宝卖家做生意。比如今年夏天不热,很可能某些产品就没有去年畅销,除了空调、电扇,背心、游泳衣等都可能会受其影响。那么我们就会建立气象数据和销售数据之间的关系,找到与之相关的品类,提前警示卖家周转库存。根据不同企业的业务性质,大数据工程师可以通过数据分析来达到不同的目的。以腾讯来说,能反映大数据工程师工作的最简单直接的例子就是选项测试(AB Test),即帮助产品经理在A、B两个备选方案中做出选择。在过去,决策者只能依据经验进行判断,但如今大数据工程师可以通过大范围地实时测试—比如,在社交网络产品的例子中,让一半用户看到A界面,另一半使用B界面,观察统计一段时间内的点击率和转化率,以此帮助市场部做出最终选择。数据分析师的工作职责互联网本身具有数字化和互动性的特征,这种属性特征给数据搜集、整理、研究带来了革命性的突破。以往“原子世界”中数据分析师要花较高的成本(资金、资源和时间)获取支撑研究、分析的数据,数据的丰富性、全面性、连续性和及时性都比互联网时代差很多。与传统的数据分析师相比,互联网时代的数据分析师面临的不是数据匮乏,而是数据过剩。因此,互联网时代的数据分析师必须学会借助技术手段进行高效的数据处理。更为重要的是,互联网时代的数据分析师要不断在数据研究的方法论方面进行创新和突破。就行业而言,数据分析师的价值与此类似。就新闻出版行业而言,无论在任何时代,媒体运营者能否准确、详细和及时地了解受众状况和变化趋势,都是媒体成败的关键。此外,对于新闻出版等内容产业来说,更为关键的是,数据分析师可以发挥内容消费者数据分析的职能,这是支撑新闻出版机构改善客户服务的关键职能。想要从事这3个职业需要掌握什么技能?A. 数据科学家需要掌握的技能1,计算机科学一般来说,数据科学家大多要求具备编程、计算机科学相关的专业背景。简单来说,就是对处理大数据所必需的hadoop、Mahout等大规模并行处理技术与机器学习相关的技能。2,数学、统计、数据挖掘等除了数学、统计方面的素养之外,还需要具备使用SPSS、SAS等主流统计分析软件的技能。其中,面向统计分析的开源编程语言及其运行环境“R”最近备受瞩目。R的强项不仅在于其包含了丰富的统计分析库,而且具备将结果进行可视化的高品质图表生成功能,并可以通过简单的命令来运行。此外,它还具备称为CRAN(The Comprehensive R Archive Network)的包扩展机制,通过导入扩展包就可以使用标准状态下所不支持的函数和数据集。3,数据可视化(Visualization)信息的质量很大程度上依赖于其表达方式。对数字罗列所组成的数据中所包含的意义进行分析,开发Web原型,使用外部API将图表、地图、Dashboard等其他服务统一起来,从而使分析结果可视化,这是对于数据科学家来说十分重要的技能之一。B. 数据工程师需要掌握的技能1,数学及统计学相关的背景对于大数据工程师的要求都是希望是统计学和数学背景的硕士或博士学历。缺乏理论背景的数据工作者,更容易进入一个技能上的危险区域(Danger Zone)—一堆数字,按照不同的数据模型和算法总能捯饬出一些结果来,但如果你不知道那代表什么,就并不是真正有意义的结果,并且那样的结果还容易误导你。只有具备一定的理论知识,才能理解模型、复用模型甚至创新模型,来解决实际问题。2,计算机编码能力实际开发能力和大规模的数据处理能力是作为大数据工程师的一些必备要素。因为许多数据的价值来自于挖掘的过程,你必须亲自动手才能发现金子的价值。举例来说,现在人们在社交网络上所产生的许多记录都是非结构化的数据,如何从这些毫无头绪的文字、语音、图像甚至视频中攫取有意义的信息就需要大数据工程师亲自挖掘。即使在某些团队中,大数据工程师的职责以商业分析为主,但也要熟悉计算机处理大数据的方式。3,对特定应用领域或行业的知识大数据工程师这个角色很重要的一点是,不能脱离市场,因为大数据只有和特定领域的应用结合起来才能产生价值。所以,在某个或多个垂直行业的经历能为应聘者积累对行业的认知,对于之后成为大数据工程师有很大帮助,因此这也是应聘这个岗位时较有说服力的加分项。C. 数据分析师需要掌握的技能1、懂业务。从事数据分析工作的前提就会需要懂业务,即熟悉行业知识、公司业务及流程,最好有自己独到的见解,若脱离行业认知和公司业务背景,分析的结果只会是脱了线的风筝,没有太大的使用价值。2、懂管理。一方面是搭建数据分析框架的要求,比如确定分析思路就需要用到营销、管理等理论知识来指导,如果不熟悉管理理论,就很难搭建数据分析的框架,后续的数据分析也很难进行。另一方面的作用是针对数据分析结论提出有指导意义的分析建议。3、懂分析。指掌握数据分析基本原理与一些有效的数据分析方法,并能灵活运用到实践工作中,以便有效的开展数据分析。基本的分析方法有:对比分析法、分组分析法、交叉分析法、结构分析法、漏斗图分析法、综合评价分析法、因素分析法、矩阵关联分析法等。高级的分析方法有:相关分析法、回归分析法、聚类分析法、判别分析法、主成分分析法、因子分析法、对应分析法、时间序列等。4、懂工具。指掌握数据分析相关的常用工具。数据分析方法是理论,而数据分析工具就是实现数据分析方法理论的工具,面对越来越庞大的数据,我们不能依靠计算器进行分析,必须依靠强大的数据分析工具帮我们完成数据分析工作。5、懂设计。懂设计是指运用图表有效表达数据分析师的分析观点,使分析结果一目了然。图表的设计是门大学问,如图形的选择、版式的设计、颜色的搭配等等,都需要掌握一定的设计原则。四、从菜鸟成为数据科学家的 9步养成方案首先,各个公司对数据科学家的定义各不相同,当前还没有统一的定义。但在一般情况下,一个数据科学家结合了软件工程师与统计学家的技能,并且在他或者她希望工作的领域投入了大量行业知识。大约90%的数据科学家至少有大学教育经历,甚至到博士以及获得博士学位,当然,他们获得的学位的领域非常广泛。一些招聘者甚至发现人文专业的人们有所需的创造力,他们能教别人一些关键技能。因此,排除一个数据科学的学位计划(世界各地的著名大学雨后春笋般的出现着),你需要采取什么措施,成为一个数据科学家?复习你的数学和统计技能。一个好的数据科学家必须能够理解数据告诉你的内容,做到这一点,你必须有扎实的基本线性代数,对算法和统计技能的理解。在某些特定场合可能需要高等数学,但这是一个好的开始场合。了解机器学习的概念。机器学习是下一个新兴词,却和大数据有着千丝万缕的联系。机器学习使用人工智能算法将数据转化为价值,并且无需显式编程。学习代码。数据科学家必须知道如何调整代码,以便告诉计算机如何分析数据。从一个开放源码的语言如Python那里开始吧。了解数据库、数据池及分布式存储。数据存储在数据库、数据池或整个分布式网络中。以及如何建设这些数据的存储库取决于你如何访问、使用、并分析这些数据。如果当你建设你的数据存储时没有整体架构或者超前规划,那后续对你的影响将十分深远。学习数据修改和数据清洗技术。数据修改是将原始数据到另一种更容易访问和分析的格式。数据清理有助于消除重复和“坏”数据。两者都是数据科学家工具箱中的必备工具。了解良好的数据可视化和报告的基本知识。你不必成为一个平面设计师,但你确实需要深谙如何创建数据报告,便于外行的人比如你的经理或CEO可以理解。添加更多的工具到您的工具箱。一旦你掌握了以上技巧,是时候扩大你的数据科学工具箱了,包括Hadoop、R语言和Spark。这些工具的使用经验和知识将让你处于大量数据科学求职者之上。练习。在你在新的领域有一个工作之前,你如何练习成为数据科学家?使用开源代码开发一个你喜欢的项目、参加比赛、成为网络工作数据科学家、参加训练营、志愿者或实习生。最好的数据科学家在数据领域将拥有经验和直觉,能够展示自己的作品,以成为应聘者。成为社区的一员。跟着同行业中的思想领袖,阅读行业博客和网站,参与,提出问题,并随时了解时事新闻和理论。
馆藏&55429
TA的最新馆藏
喜欢该文的人也喜欢大数据与高性能计算
ISSN &&CN 10-1321/G2
大数据与高性能计算
清华大学计算机科学与技术系 北京 100084
Big Data and High Performance Computing
Chen Wenguang
Department of Computer Science and Technology, Tsinghua University, Beijing 100084, China
(613 KB) &
摘要&大数据和高性能计算都是计算机技术发展的产物。高性能计算主要采用模拟方法,被称作科学发现的第三范式;大数据主要从数据中总结规律,即使在对研究对象缺乏深入理解的情况下也可以发现一定的相关性,被称作科学发现的第四范式。从研究范式、主要应用类型以及计算机软硬件系统的角度对大数据与高性能计算的关系展开阐述。
作者相关文章
Abstract:Both big data and high performance computing (HPC) are based on the computer technologies. The main methodology of HPC is simulation, which is called the third paradigm of scientific discovery. Big data explore data for correlations even without much knowledge on the object of study, which is called the fourth paradigm of scientific discovery. Big data and HPC with several aspects were compared, such as the research paradigm, main application domain and underlying hardware/software systems.
基金资助:&
链接本文: &
Goklany I M. The Improving State of the World: Why We&re Living Longer, Healthier, More Comfortable Lives on a Cleaner Planet. Washington: Cato Institute, 2006
Hey H, Tansley S, Tolle K. The Fourth Paradigm: Data-Intensive Scientific Discovery. Washington: Microsoft Research, 2009
National Science Foundation Advisory Committee for Cyber infrastructure Task Force on Grand Challenges Final Report. https://www.nsf.gov/cise/aci/taskforces/TaskForceReport_randChallenges.pdf, 2011
Kyrola A, Blelloch G, Guestrin C. GraphChi: large-scale graph computation on just a PC. Proceedings of the 10th USENIX Symposium on Operating Systems Design and Implementation, Hollywood, CA, USA, 2012
Xu W, Huang L, Fox A, et al. Detecting large-scale system problems by mining console logs. Proceedings of the 22nd ACM Symposium on Operating Systems Principles, Big Sky, Montana, USA, 2009
陈振冲, 贺田田. [J]. 大数据, ): 2016058-.
吴力波. [J]. 大数据, ): 2016057-.
张金芳, 胡晓惠, 张慧, 王瑞, 李海昌. [J]. 大数据, ): 2016053-.
张澄, 赵晨. [J]. 大数据, ): 2016056-.
朱扬勇, 熊贇. [J]. 大数据, ): 2016059-.
贵芳, 李廉, 杨静, 武永卫. [J]. 大数据, ): 2016040-.
李超, 林霄, 孙卫强, 胡卫生. [J]. 大数据, ): 2016041-.
梁吉业, 钱宇华, 李德玉, 胡清华. [J]. 大数据, ): 2016038-.
孙傲冰, 季统凯. [J]. 大数据, ): 2016043-.
司光亚, 高翔, 刘洋, 吴琳. [J]. 大数据, ): 2016042-.
高富平, 余超. [J]. 大数据, ): 2016046-.
单志广, 房毓菲. [J]. 大数据, ): 2016025-.
曾嘉, 刘诗凯, 袁明轩. [J]. 大数据, ): 2016034-.
华岗, 顾德道, 刘良华, 田 沄, 许海燕, 方丹丹. [J]. 大数据, ): 2016026-.
洪学海, 范灵俊, 洪筱楠, 李国杰. [J]. 大数据, ): 2016027-.
本论文下载/浏览情况
版权所有 & 2015
《大数据》编辑部
地址:北京市丰台区成寿寺路11号邮电出版大厦8层 邮编:100078 电话:(010)0/5475 传真:(010)
本系统由设计开发京ICP备号-12提升大数据数据分析性能的方法及技术(一)
时间: 19:51:50
&&&& 阅读:350
&&&& 评论:
&&&& 收藏:0
标签:关于此文
  最近在忙着准备校招的相关复习,所以也整理了一下上学期上课时候的学到的一些知识。刚好发现当时还写了一篇类似于文献综述性质的文章,就在这里贴出来。题材是关于大数据的,也是比较火热的一个话题,虽然现在接触的项目与大数据不太有关联,可能以后也不一定从事这方面的工作吧。就IT行业的研究成果来讲国外期刊无论是发表速度还是质量都是高于国内,所以参考的大部分都是当时最新在核心期刊上发表的论文,参考文献在最后一一列出。因为文章没有多少自己的创新点,仅仅是最新、最热技术或者分析的一个总结,所以放上来仅仅是对大数据相关前景做一个阶段性汇总。篇幅较长,可能会有几篇。
1 大数据概述
1.1 大数据的产生
  我们正处于一个信息化的时代。在信息化时代,我们认为[1]数据就是金钱、就是成功的根基。借助于电脑和卫星等科技的帮助,我们能够收集大量的数据。起初,我们利用电脑和各式各样的存储技术来存储各种形态的数据。然而,随着时间的推移,大量的异构的数据存储构成的数据集就变的异常的庞大。
  随着因特网在全球范围的普及,数据量变的如此的巨大,以至于使用现有的数据管理方法或者传统的数据处理应用很难应付。上述所提到的大规模、大体量的数据集我们就称之为大数据。
1.1.1 大数据的形成
  大数据就是一类复杂且庞大的数据集合,传统的数据管理工具或者应用已经无法胜任其数据的处理工作。数据之所以会大规模的增长[1],其中一个原因就在于通过对一些具有单一关联的大型数据集的分析,产生的额外的信息资源。这些通过分析产生的信息资源利用的案例可以在&景点的商业发展趋势的预测&、&研究成果质量的预测&、&疾病的预防&、&打击犯罪&和&预测实时交通拥塞程度&等场景下看到。
1.2&大数据的发展趋势和挑战
  大数据通常是和云计算、数据挖掘、机器学习密不可分的。大数据的分析主要涉及到以下的四个方面[2]:数据管理和结构支撑、开发模型和评测、可视化和用户接口、商业模型。
1.2.1&大数据的发展
  图1[2]显示了传统的大数据工作流分析经历的一些阶段。数据以数据库,数据流,数据集合以及数据仓库等方式来建模。数据的数量级以及数据的多样性要求在处理之前要进行数据的集成、清洗以及过滤等工作,以保证其后续工作的开展。数据分析过程中最耗时、耗力的就是[2]数据的准备阶段。通常会遇到的一个问题就是需要分析的数据会使得现有的分析系统达到饱和。因此,分析大规模的数据时必须考虑到数据存储、过滤、移植和检索的效率。
  分析处理这些大数据之所以面临挑战的另一个原因是[2]数据形式的多样性。正如图2所示,数据主要有四种形式。而如今大部分的数据,既不是结构化的数据,也不是半结构化的数据。
  下面将讨论数据的速率[2](图3)。这里所说的速率,主要是讨论数据到达的时间问题。在某些应用中,数据的到达以及处理形式可能是成批的,但是在其他的应用中可能数据就需要以连续不断的或者实时的形式展现。一些时候需要对这些数据进行及时的处理和响应。例如为数据中心提供实时的数据活动的管理。
1.2.2 大数据的挑战
  大数据已经成为一个炙手可热的话题,但是不可否认,大数据仍然面临一系列的挑战。尤其是现阶段广泛使用的流数据(下面会重点讨论)。
  数据的多样性[2]:如何去应对始终呈增长趋势的数据。尤其是当数据以非结构化的形式产生的时候,如何从大量该类型的数据中快速有效的读取出用户所需要的数据。如何从流式数据中聚集并读取数据中的潜在关联性。
  数据的存储:如何从非结构化的数据中快速提取并存储重要的信息?如何优化存储的结构,使得存储在其中的数据能够被高效率的检索?现存的文件系统能否有效的满足大数据分析所要求的性能?
  数据的集成:需要新的协议和接口来满足不同形态和不同来源的数据。
  数据处理和资源管理:需要设计出应用于流式数据的最优模型。需要设计出协同文件系统达到最高效能的处理引擎。
2 数据流挖掘概述
  传统的数据处理的方法[3],对于那些建立在特定数据集上的离线的数据,以及批量到达的数据显得相对有效。但是随着时代的发展和处理任务的更迭,有时候,我们的任务所处理的对象是流式数据,或者在线的实时产生的数据。越来越多的实时应用程序需要动态的处理基于流式数据的一些查询请求。若在这样的请求中,在运用传统的方法,那么无论是对于空间占用还是效率来说,可能花销都是比较大的。现在先对流式数据的一些概念加以阐释。下述内容主要也将针对流式数据展开。
2.1 流式数据概述
  为了能够在数据仓库中提取出一些新的潜在信息,我们已经掌握了一些系列数据挖掘的技术。但是[4]如今,当我们试图从大量的流式数据中以一种合适、高效的方法来提取我们所需要的信息时,出现了一系列的挑战。
2.2 流式数据发展及挑战
  在处理流式数据挖掘的时候,我们不能无视静态数据和流式数据之间的区别。我们知道,静态数据是预先存储在固定的设备上,供查询和分析,一边找到潜在的价值。但是,由于流式数据连续性特性,很显然无法完全存储不断进入应用的流式数据,而且,应用通常也要求我们要在极短的时间内对请求做出相应,这与处理静态数据来比,时间显然要短得多。因此流式数据的挖掘处理主要面对内存管理、数据结构和资源分配方面的挑战。
3 流式数据工具集
表1[3]列出了大数据(包括流式数据、批量数据等形式)处理所需要的工具集,包括大数据处理的所需要的库、平台和框架引擎。
MapReduce, Spark, H2O
Batch, Streaming
Storm, Samza, S4
表1& 大数据处理工具集
  因为本文主要针对性地调研了流式数据相关方面的内容,因此下面的分析也主要集中于流式数据相关工具集(SAMOA),对于MLlib仅简单介绍。关于匹配引擎和框架的内容将在下一章节具体分析。
3.1 MLlib库
  MLlib[3]是一个与Spark几乎同时段出现的产物,MLlib是一个机器学习的库文件。其作为一款常驻内存的分布式处理引擎,广受欢迎并且被许多大数据应用程序所使用。MLlib兼容批量数据和流式数据。MLlib的设计初衷就是为了使用户能够在利用该库的基础上创建自己的算法。Spark.ml提供了一系列统一的接口与MLlib合作创建、扩展以及应用一些机器学习的算法。MLlib支持很多有助于数据处理和模型评估的数学和统计学方法。现在很多的模型都很好的使用了MLlib库,包括分类模型、迭代模型、评价模型、集群以及降维等。
3.2 SAMOA平台
3.2.1 SAMOA平台概述
  Samoa(Scalable Advanced Massive Online Analysis)是一种流数据挖掘的平台。该平台为[5]最常用的数据挖掘和机器学习的任务(如:分类、集群、迭代以及抽象等等)提供了一系列分布式的流式处理算法。它的优势在于提供了接口,这使得其能很好的被利用在多种分布式系统,结合一些流式处理引擎(Storm、S4、Samza)。Samoa用Java语言编写,是一个开源的平台,可以在[6]http://samoa-project.net上获取使用。图4描述了平台与引擎之间的关系。
  我们既可以将SAMOA看作是一个框架也可以将其看作是一个库(跟上面提到的MLlib类似)。
  作为框架,它允许算法的开发人员从底层的硬件设备中抽象,达到代码重用的目的。上文提到,它的优势[5]在于提供了能用在多种分布式系统上的接口,并适配多种流式处理引擎。通过设计了一个基于现代DSPE必要元素的最小化的应用程序接口API。这些接口使得可以很方便的将其绑定到新的引擎上面。SAMOA通过API和部署的方式,隐藏了DSPE的底部细节和底层差异。
  图5和图6具体给出了SAMOA的项目架构。作为库,SAMOA包含了为在分布式机器上进行流式数据机器学习所设计的算法的实现。为&分类&这一步的操作,提供了Vertical Hoeffding Tree (VHT)算法,对于集群,其包含了基于CluStream的算法。
  Samoa平台在科学研究和实际生产生活的部署中都占有一席之地。
3.2.2 SAMOA算法架构
  在SAMOA中,算法[5]被看作有向图上的节点进行消息传递的,这些节点之间通过数据流的形式传递消息。在图7表示的有向图拓扑中,每个节点都是一个通过流来发送和接收消息的处理器。每一个处理机都是节点执行算法的载体[7]。一个数据流可以有一个源节点,但是可以有多个目的节点(类似于PUB/SUB模型)有向图的拓扑是通过一个拓扑建立器的工具来生成的,它连接各部分用户的代码到SAMOA平台上,并且在后台做相应的处理和备份工作。图8则是从集群角度来描述了对应的算法架构。
4 流式数据框架
  流式处理平台[8]使得应用程序能够对源源不断进入系统的数据进行分析和处理。现实生活中有许多借助于流式大数据来实现其系统目标的案例。例如,在医院系统中,我们可以通过检测病人的生理构造的变化情况,来预测是否应该为病人进行实时的生命体征状态监控。这些功能的实现都离不开数据框架的支持,下面将对流式数据中采用的主流框架进行分析,并在某些性能方面与应用于其他数据结构的框架进行对比。
4.1 Storm框架
  如果[9]只能用一句话来形容storm或者来介绍storm,那么用&分布式实时计算系统&来概括则再好不过了。Storm是一个开源的实时计算系统,它提供了一系列的基本元素用于进行计算。
4.1.1 Storm概述
  Apache Storm[10]是一款免费的开源分布式实时计算系统。Storm能够可靠的处理大量的流式数据。现在Storm所做的工作,好比就是Hadoop在批处理数据阶段所做的工作。Storm简单易用,可以兼容任何的编程语言。Storm是一个由一系列用户所编写的消息和应用程序代码所组成的平台。Storm中非常重要的一个概念就是&流&。所谓的&流&就是许许多多无界的数据的元组组成的序列。用户可以通过使用Storm提供的两个概念(spout、bolt),将一组已经存在的流(例如:twitter的消息)传递到新的流(例如:趋势信息)中去。spout和bolt都提供了接口,用户必须实现这些接口来完成自己的逻辑功能的实现。
4.1.2 Storm相关概念
  在图4关于SAMOA中已经接触到了storm数据流,现在对图9的数据流加以分析。
  Spout就是数据源也称消息源。Storm对于原始数据输入来源并不加以严格的限制。这取决于用户自己编写的代码,无论是来自于队列、来自于数据库、来自于网站还是其他的任何来源。例如。一个spot可能从队列中读取元组然后形成输入流,也可能使用twitter的接口,然后将一系列从twitter获取的数据作为输入。然后这些数据然后被传递给一个或者多个bolt处理。
  对于bolt来说,它将接收多个输入流,然后做一些处理工作,并且可能产生一组新的流式数据。一些复杂的流式数据的传递处理过程可能会经历多步骤并且需要不止一个bolt的配合才能够完成。通过将一个大的任务分散成若干个小的任务块,每个bolt可以集中处理单个相对规模较小的任务,从而也会产生较快的响应。使用多个bolt也可以同时带来较高的性能,因为storm可以提供多个源数据给bolt处理以加快其处理的进程和处理的效率。
  Spout和bolt都被打包成Topology[8]。Topology就是用户提交给storm执行的一个操作单元。为了能够在storm上面进行实时的计算,首先要创建topology。这个topology就是一个计算图。在其中,每个节点不是bolt就是spout,这些节点都包含了一个逻辑处理,并且图中的箭头表示了数据是如何在不同的节点之间流动的。节点之间的操作都是并发进行的。直到用户主动去终止一个拓扑或者出现崩溃,否则拓扑会一直在运行。当然,如果系统检测到某个spout或者bolt崩溃,那么会结束这单个的spout或者bolt。
  结合上述storm中一个拓扑topology的组成部分,图10给出了strom中的一些角色关系。
  表2列出了Hadoop与Strom中角色关系的对比。
JobTracker
TaskTracker
Supervisor
Mapper/Reducer
Spout/Bolt
表2& Hadoop与Storm系统角色对比
  Hadoop主要是针对于批量数据的大数据处理框架,虽然针对目标不同,但是通过对比还是能轻易的得出Storm各部分角色在框架中所起的作用。
  Nimbus:任务调度和资源分配。
  Supervisor:接受任务,启动和停止属于自己管理的worker进程。
  Worker:运行具体处理组件逻辑的进程。
  Task:worker中每一个spout/bolt的线程称为一个task。在storm0.8之后,task不再与物理线程对应,同一个spout/bolt的task可能会共享一个物理线程,该线程称为executor。
  4.1.3节中,我们会结合于上面的表格针对Strom具体说明不同的节点运行的角色以及它们是如何相互配合的。
4.1.3 Storm架构
  在一个Storm集群中主要有两种类型的节点[8]。主节点和处理节点。
  主节点运行一个称之为Nimbus的进程。其负责在集群中部署代码、分派任务、监视任务的进展情况以及回报崩溃的情况。它也同时运行一个UI进程。UI即用户界面,它提供了一个网站给用户以实时观测集群的状态以及管理拓扑和拓扑上的节点。在目前的Storm版本中,会有这样的情况出现:即当主节点崩溃后,处理节点仍然在工作,但是重新配置集群等操作在此期间就是无法进行了,除非我们去重启主节点。也许未来的Strom版本会对这一问题进行改进。
  进程节点,运行一个称之为Supervisor的进程。这个Supervisor一直在监听者分派给这台机器的任务。它根据需求动态的开始和停止工作。这个需求是基于主节点分派给这台机器的任务。在一个进程节点中的若干个任务,都执行一系列的拓扑。例如一个或多个spout和bolt、metrics。鉴于此情况。一个拓扑topology很可能是分布在一个集群的若干个机器之间。进程节点同样也运行一个LogViewer进程,该进程可以用来查看网站上的浏览日志。
  主节点与进程节点之间的协同工作是通过Zookeeper集群来完成的。在Zookeeper中可以存储和检索有关分配任务情况、进程处理健康状态以及集群的状态。
  用户需要手动的将应用程序的代码打包成jar包,并且传递给主节点。将jar包分派给进程节点的工作进程是通过进程节点和主节点之间的直连网络来实现的。图11就展现了Storm架构的主要组成部分。
  通常当需要较高的执行性能时,可以通过strom向集群里增加一些节点,同理当不需要的时候,可以实时的移走这些多余的节点,从而达到动态处理的效果。一言以蔽之,Strom赋予用户往平台上增加节点的功能。
4.1.4 Storm集群应用
  在自动化计算领域,我们最常见的就是使用监控、分析、计划、执行(MAPE)这样一个循环往复的过程来控制一个系统。通过上述的循环过程使得Strom变得灵活而且可扩展。例如:Strom集群规模的增长和收缩都是基于拓扑结构的需要。首先用传感器来检测Storm集群的工作状态。MAPE的环路然后监测传感器的输出,分析数据的内容查处问题所在,然后找出补救的措施,执行新的选择算法。这个过程最终以动态修改集群的原有配置(通过Effector实现),使其适应新环境下的新需求而结束。图12给出了MAPE的执行流程。
  监测:监测一个Storm集群系统可以作用于多个层面。进程节点将提供系统级的信息,包括处理器的使用情况、内存的使用、磁盘使用和网络接口状况。平台自身也是一个数据监测源。Storm本身也提供平台状况信息,包含正在工作的节点的数量和状态、拓扑以及元组数。最后,监测的数据也可以用应用层面提供。例如,一个拓扑检查自动计算系统的日志文件可以汇报其冲突率。监控输出的结果集是一个metrics。
  分析:分析阶段通过查验一系列的metrics,来给出结论,判断是否当前的状态是正常的。例如:判断过去5分钟内处理器的平均占用率是否低于百分之七十?当然,其他的复杂的运算情形也是需要考虑在内的,包括结合平台状况、系统性能来分析metrics。在Storm集群中分析阶段需要给出的结论是当前的状态是(1)良好的(2)需要新的进程节点(3)存在过多的进程节点等等。
  计划:当前面的分析阶段给出的结论是现在Storm集群存在问题时,必须在计划阶段给出处理的办法。如果需要一个进程节点,那么计划阶段就会立即告知执行阶段此请求,并且要求提供一个已经装有Storm的虚拟机。但是及时加入了新的节点,当前的执行任务不会重新被分配执行,这种情况下,拓扑就不是最优化的。只有当上一个分析阶段指出之一状况时,计划阶段会通知执行阶段重新分派任务,这样,刚刚被加进来的节点就能被利用了。如果当前的进程节点过多,就会销毁一部分。
  执行:最后一个阶段就是执行计划阶段所需求的任务。在Storm集群中最主要的就是三方面的任务:第一、添加一个虚拟机,并配置相关的strom软件。第二、重构拓扑结构。第三、删除多余的虚拟机。这一阶段执行的时间可能不仅仅是几秒钟而已,因此必须做好相对应的监控工作,防止引起不必要的灾难。
4.2 Spark框架
  Spark[11]是一个高速、通用的集群计算系统。它为Java、Scala、Python以及R语言都提供了应用程序接口。它也是最佳的支持通用执行图的引擎。不仅如此,Spark也提供了非常丰富的插件工具,其中包括为SQL设计的Spark SQL、结构化的数据处理工具、机器学习库MLlib、图像处理工具GraphX和Spark Streaming。
4.2.1 Spark概述
  Spark起源于加利福尼亚大学伯克利分校[3]。设计Sprak的目的就是为了解决许多Hadoop MapReduce处理框架所遗留下来的一些问题。Spark项目引进了一个新的概念:弹性分布式数据集(RDD)。该数据集使得数据在集群节点之间的存储和处理直接在内存中进行,从而极大的加快了效率。同时,也创建了一个有向无环图(DAG)实现其容错机制。当集群中的某一个节点崩溃后,可以转由另一个节点来接手处理原来节点所负责的事物。Spark最大的特点和优势就是减少了I/O读写所耗费的时间。在2014年sort benchmark上Spark刷新了记录。使用206个节点在23分钟之内成功排序了100TB的数据。而之前的记录则是由MapReduce保持的(使用210个节点在72分钟内排序同样数量的数据)。Spark兼容Hadoop的组件(如HDFS和Hive)并且可以使用YARN运行在Hadoop上。
4.2.2 Spark架构
  Spark的架构图如图13[12]所示。
  下面将对几个重要的概念进行说明:
  MLlib:在3.1节已经讲到,此处不再赘述。
  Spark SQL:Spark SQL是一个Spark为结构化处理所设计的模块。它提供了一个编程的抽象叫DataFrames[13]。当然也可以作为分布式的SQL查询引擎。Spark SQL也可以从已存在的Hive中读取数据。DataFrames则是以列形式组织起来的分布式的数据集。在概念它等同于关系数据库中的一张表或者R/Python语言中的数据框架,但是它又比前者的性能优越。我们可以从几个方面来构造DataFrames:结构化的数据文件、Hive表格、已存在的数据库或者已存在的RDD。DataFrames的API兼容Scala、java、Python和R语言。
  GraphX:GraphX是Spark中的一个新的组成部分。可以用于图像和并行图像的计算,同时通过引入了新的图像抽象技术:带权有向图,扩充了RDD。为了支持图像处理,GraphX提出了一系列基本的操作符和API。同时Graphx也在不断的扩充自己的算法库以便不断的简化图像处理的过程。
4.2.3 Spark Streaming
  Spark借助于自身的Spark Streaming,提供了数据流处理的功能。结合图14,下面具体分析其计算流程、实时性等评价参数。
  Spark Streaming的计算流程是这样的[3]。利用Spark引擎,通过将进入系统的流数据打包成小的批量数据,这与Storm不同,Spark Streaming并不是一次性的处理流式数据。而且在处理数据之前将数据按照时间间隔切割成小的批量数据。从而加速处理。其针对持续性数据流的抽象是通过离散流(Discretized Stream)来实现的。所谓的离散流就是若干的RDD组成的集合。这使得既可以处理流式数据也可以处理批量数据。这也就解释了MLlib能够适用于流式数据处理的原因了。
  实时性:实时性不能一概而论,具体的处理框架所涉及的不同应用场合会带来不同的效果。Spark Streaming将流式计算分解成多个Job,对于每一段数据的处理都会经过有向无环图分解,并给予对应的任务集的调度。就当前的Streaming版本来说,最小的Batch Size的选取在0.5~2秒钟之间(Storm目前最小的延迟是100ms左右),所以Spark Streaming能够满足除对实时性要求非常高(如高频实时交易)之外的所有流式准实时计算场景。
  RDD可以说是Spark框架的核心。RDD[15]即Resilient Distributed Dataset,弹性分布式数据集。它是一个分布式的内存抽象,RDD允许程序员在大数据上进行基于内存的计算而仍然能够保持较好的容错率。由于现有的流式数据处理的系统对一下的两种问题无法有效的解决:第一、迭代算法,这在图形学和机器学习中很常见。第二、交互式数据挖掘工具。因此催生了RDD。在两种案例中,使得数据常驻内存可以带来较高的效率。为了同时达到较好的容错性,RDD提供了一种非常严格的内存共享机制:即RDD只能以只读的形式被访问。对于创建RDD,只可以通过其他RDD上的批量操作来进行。
  在Sprak框架下,RDD被视为对象。通过这些对象上的方法来实现转换。
  一旦RDD被定义后[15],就能够被程序员使用了(在动作中使用)。所谓的动作就是向程序返回值的操作或者将数据传递给存储系统的一些操作。这些操作包括count(返回RDD的元素数量)、collect(返回元素本身)以及save(将RDD输出到存储系统)。在Spark中,RDD只有在动作第一次使用时,才会计算RDD,这样保证了在构建RDD时,通过管道的方式完成转换。
  程序员也可以从两个方面来控制RDD。分别是缓存和分区。用户如果请求缓存RDD,那么在同时可以将已经被计算过的RDD分区存储备用。缓存的RDD通常来说都是存放在内存中。另一方面,RDD还能使用户通过关键字来指定分区顺序,这是个可选的项目。当前支持的分区是哈希分区和范围分区。
  借助[14]于RDD,Spark Streaming能有较好的容错性。容错性对于流式计算来说非常的重要,一旦无法保证容错能力,那么对于流式计算来说是致命的打击。因为任何一个RDD都是弹性分布式可重算的数据集,其中包含了确定的操作关系,当数据在某个RDD上出现错误了,可以通过原始的数据转换操作到其余的RDD上重新执行计算操作,从而保证了系统的稳定性和容错能力。图15就是反映RDD操作继承关系的图例。
4.2.5&Spark性能分析(与Hadoop比较)&
  Spark[16]的出现是为了解决Hadoop框架下的很多问题才应运而生的。Spark的一大闪光点就是RDD。通过RDD,Streaming等结合,极大的增加了大数据分析的效能。下面将Spark与Hadoop进行比较。与Hadoop相比,Spark在I/O操作上花费的时间明显缩小了。但是我们认为其为了引入RDD需要耗费额外的内存空间,很明显Spark这一举动是空间换取时间的一种妥协。下面的实验用来评测Hadoop和Spark的系统性能。在实验中选取了典型的迭代算法PageRank。在真实数据和模拟的数据上都进行了相关的测试。测试的结果见图16、图17和图18。
  具体的实验算法和步骤,可以参考附录的参考文献。从上面的三组对比数据可以得出以下的结论。(1)当内存能够满足整个迭代过程时,Spark的效率明显高于Hadoop(2)当内存不够时,结论则相反。这说明了,Spark的确是采用了一种空间换时间的做法。因此在使用时必须预先估计数据的规模。否则,可能无法达到预期的计算效果。
4.3 Samza框架
  Apache Samza是一个分布式的流处理框架。它使用Apache Kafka来传递消息,使用Apache Hadoop YARN来提供容错、安全和资源管理等功能。
4.3.1 Samza概述
  与Storm和Spark都不同,Samza的处理对象不是元组也不是DStream,而是一条一条的消息。在深入理解Samza之前,需要了解下面几个概念:流、作业、任务、区间分割等。
  流[17]的概念与Storm和Spark中提到的概念相同。Samza通过对流进行抽象使得其支持嵌入式系统。在Kafka中,流就是一个主题。在数据库中我们可以通过更新操作来读取流。在Hadoop中我们可以在HDFS中定位文件目录。
  作业:在Samza中作业就是在一系列输入流上执行逻辑转换并将其加到输出队列中以供输出到输出流上的代码的集合。如果不考虑可扩展性,我们所需要的仅仅是流和作业。我们将流和作业分割成小的部分:分区和任务。
  区间:如图19所示,每一个数据流都被分割成一个或多个区间。流中的每一个区间就是一串有序的消息的序列。序列中的每条消息都有一个唯一的识别码,可以是整型序列、比特字符、或者字符串,这些都是由特定的系统所决定的。当一条消息被添加到一个流中去,它仅仅会被添加到一个区间上,至于如何选定区间,则是由用户通过一些算法来决定的。
  任务:大规模的作业将会被分成很多的任务。任务是作业的组成单元,正如区间是数据流的组成单元。每个任务都按顺序的拥有它所在输入区间的消息。
4.3.2 Samza架构
  Samza的成分有三层:Streaming layer、execution layer和processing layer。并且为每一层都提供了支持,分别是Kafka、YARN和Samza API。这三块共同构成了Samza(如图20)。
4.4&Storm、Spark和Samza对比
  4.1、4.2、4.3节提到的三种框架都是开源的框架。具有延迟低、效率高、容错性强的特点[12]。它们的共同特色在于:当你在框架下运行数据流相关的代码进行操作时可以允许并行的进行操作,提高效率的同时保证了容错性。此外,他们都隐藏了底层的实现细节,通过提供的API简化操作。
  虽然三者在不同的框架下的专业术语名称不一致,但是其代表的概念具有很大的相似性。
  表3列出了三个框架下的基本术语。
Source(s)
Primitive(p)
Computation(c)
Transformation
Windows Operations
表3& 三个框架术语表
  表4列出了三个框架的不同之处。
At least Once
Exactly Once
At least Once
Management
Sub-second
Sub-second
Scala,Java,Python
Scala,Java
表4& 三个框架差异
  从表4可以看出,三个框架无论在支持的语言还是其他判断方面都是存在着差异的,但是无法评判哪个更优秀,哪个更完美。只有结合具体的环境、具体的需求才能做出最优的判断。当然,实际上,这三个框架都有很多公司在用。
  使用Storm的公司有:Twitter,雅虎,Spotify还有The Weather Channel等。
  使用Spark的公司有:亚马逊,雅虎,NASA JPL,eBay还有百度等。
  使用Samza的公司有:LinkedIn,Intuit,Metamarkets,Quantiply,Fortscale等。
4.5 其他框架
  除了上面具体分析的Storm、Spark和Samza三大主流框架外,还有包括Apache Flink[18]、StreamBase[19]、YAHOO S4[20]等出色的框架,当然也存在着基于上述框架改编的新框架,限于篇幅,此处不再赘述。标签:
&&国之画&&&& &&&&chrome插件
版权所有 京ICP备号-2
迷上了代码!}

我要回帖

更多关于 高性能轮询数据库 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信