大数据处理的开发经验

  大数据已经不是什么新话题了,在实际的开发和架构过程中,如何为大数据处理做优化和调整,是一个重要的话题,最近,咨询师Fabiane Nardon和Fernando Babadopulos在“Java Magzine”电子期刊中发文分享了自己的经验。

  作者在文中首先强调了大数据革命的重要性:

  大数据革命正在进行,是时候去参与其中了。企业每天产生的数据量不断增加,可以被重新利用来发现新信息的公共数据集也被广泛使用。再加上花费很小、按需处理的云计算组合,你处在一个具有无限可能的新世界。不难想象,通过利用大数据技术在云计算中的力量,很多颠覆性的应用程序将会涌现出来。许多新兴公司现在提出了新的令人兴奋的应用,而这些想法在几年前无法得到足够的财务支持。作为Java开发者,我们完全有能力参与到这场革命中去,因为许多最为流行的大数据工具都是基于Java的。然而,要构建真正可扩展并且强大的应用程序,同时要保持托管费用在掌控之中,我们不得不重新考虑架构,同时尽量不迷失在无数可用的工具当中。

  文章介绍了Apache Hadoop,一个允许对大数据集进行分布式处理的框架,可能是这些工具中最为人熟知的一个了。除了提供强大的MapReduce实现和可靠的分布式文件系统——Hadoop分布式文件系统(HDFS)——之外,也有一个大数据工具的生态系统构建在Hadoop之上,包括以下内容:

  Apache HBase的是针对大表的分布式数据库。

  Apache Hive是一个数据仓库中的基础设施,它允许在HDFS中存储的数据中进行临时的类似SQL的查询。

  Apache Pig是一个用于创建MapReduce程序的高层平台。

  Apache Mahout是一个机器学习和数据挖掘库。

  Apache Crunch和Cascading都是用于创建MapReduce管道的框架。

  虽然这些工具是强大的,但它们也增加了许多开销,除非你的数据集非常大,否则是无法抵消这些成本的。比如,可以在一个非常小的数据集上尝试运行文章中提供的代码示例,比如一个只有一行的文件。你将会看到,处理时间将会比你所预期的时间长很多。如何确定你是否真的有一个大数据的问题?文章指出,虽然没有固定的数据,但有几个指标可以用来帮你决定你的数据是否足够大:

  你所有的数据不适合在一台机器上运行,这就意味着你需要一个服务器集群来在可接受的时间范围内处理你的数据。

  你在处理的大多数是TB级别的而不是GB级别的数据。

  你正在处理的数据量正在持续增长并且可能每年增加一倍。

  如果你的数据是不是真的很大,就保持事情的简单吧。通过传统的Java应用程序,甚至用更简单的工具,例如grep或Awk来处理你的数据,你可能会节省时间和金钱。

  作者特别强调,如果你决定用Hadoop来分析你的数据集,那么随着数据的增加,你会希望避免性能瓶颈。你可以将很多配置调整应用到Hadoop集群上去,并且如果你的应用程序处理数据的速度没有达到你需要的那么快时,你可以一直添加更多的节点。但是,请记住,没有什么会比你自己的代码更高效对你的大数据应用程序产生更大的影响了。

  当实现一个大的数据处理应用程序时,你的代码通常会在每个处理周期内被执行数百万或数十亿次。举个例子,考虑一下你得处理一个10GB的日志文件,并且每行有500字节那么长。分析每行文件的代码将运行2000万次。如果你可以让你的代码处理每行的时候快10微秒,这将使处理文件的过程快3.3分钟。因为你可能每天要处理很多10GB的文件,随着时间的增多,那些分钟将在资源和时间上表现出显著的实惠。

  这里的经验是,每微秒都很重要。为你的问题选择最快的Java数据结构,在可能的情况下使用缓存,避免不必要的对象实例化,使用高效的字符串操作方法,并且用你的Java编程技能产出你所能编出的最高效的代码。

  除了生产高效的代码之外,了解Hadoop的工作原理对于你避免一些常见的错误是很重要的。

  在云中部署大数据应用程序有许多优点。文章指出,随着数据量的增大,你可以根据需要购买更多的机器,并且可以为峰值做好准备。然而,如果要在不产生高昂的扩展费用的前提下使用云服务,你得在脑中考虑好云平台的特殊性后再构建应用程序。首先,更加高效的代码意味着更少的处理时间,也就是较少的托管费用。每次你添加一个新节点到你的集群中的时候,你就是在增加更多花费,因此确保你的代码尽可能的有效是个很好的做法。

  当在云中部署大数据应用程序时,考虑使用无共享架构是很重要的。无共享架构基本上是只由网络相互连接的单个计算机,他们不共享任何磁盘或者内存。这就是为什么这种架构的扩展性非常好,因为不会由磁盘访问的竞争或者是另一个进程的出现引发瓶颈。每台机器都需要顾及所有工作,机器直接是相互独立且自给自足的。

  Hadoop的容错功能打开了探索的可能,甚至更便宜的云机器也能提供。如Amazon spot的实例(当价格比你的竞价更高的时候你可能会失去这个机器)。当你使用这种机器来运行TaskTracker时,例如,你任何时候都可以承受机器的失去,因为Hadoop只要检测到你失去了一个或多个正在作业的结点时,它将会在另一个节点上重新运行这个作业。

  事实上,在很多大数据应用程序中,甚至可以接受失去一小部分数据。如果你在做统计处理,很常见的事情是,一个没有被处理的小数据集可能不会影响到最终结果,当你创建你的架构时,你可以将此作为你的优势。

  你可以使用一个在云端中支持Hadoop的服务来托管你的应用程序。亚马逊EMR是这种服务的一个很好的例子。使用Hadoop的托管服务将减轻安装和维护自己Hadoop集群的负担。不过,如果需要更多的灵活性,你也可以在云端安装自己的Hadoop解决方案。

  文章指出,在云中使用Hadoop的另一个好处是,你可以监视作业的行为,并且即使在工作运行的情况下,你也可以根据需要自动添加或删除节点。Hadoop的容错特性可以确保一切都将继续工作。这里的窍门就是预先配置主节点使其允许一系列从IP地址。这是通过Hadoop安装目录里的conf/slaves文件来完成的。有了这个配置,你可以从预先配置的一个IP地址中启用一个新的从结点,它就会自动加入集群。

时间: 2024-10-27 02:24:02

大数据处理的开发经验的相关文章

如何低成本、高效率搭建Hadoop/Spark大数据处理平台

随着人们逐渐认识到 "大数据"的价值,互联网.电商到金融业.政企等各行业开始处理海量数据.如何低成本.敏捷高效地搭建大数据处理平台,成为影响大数据创新效率的关键. 为了让用户以最简便地方式享用阿里云全球资源,在云端构建敏捷弹性.高可靠和高性价比的大数据平台,近日,阿里云在成都云栖大会上发布了一款Hadoop/Spark场景专用的ECS存储优化型实例D1规格族,单实例提供最高56核CPU,224GB内存,168TB本地盘容量,5GB/S总吞吐,PPS达120万+.这对Hadoop/Spa

省时省事省力 巧用阿里ECS D1构建大数据处理平台

随着人们逐渐认识到 "大数据"的价值,互联网.电商到金融业.政企等各行业开始处理海量数据.如何低成本.敏捷高效地搭建大数据处理平台,成为影响大数据创新效率的关键.   为了让用户以最简便地方式享用阿里云全球云资源,在云端构建敏捷弹性.高可靠和高性价比的大数据平台,阿里云在云栖大会·成都峰会上正式推出了Hadoop/Spark场景专用的ECS存储优化型实例D1规格族,充分满足泛互联网行业.金融.电商.政企等行业等搭建大数据存储与计算分析平台的要求,真正意义上做到了"省时省事省力

In-Stream Big Data Processing译文:流式大数据处理

转自:http://blog.csdn.net/idontwantobe/article/details/25938511  @猪头饼 原文:http://highlyscalable.wordpress.com/2013/08/20/in-stream-big-data-processing/ 作者:Ilya Katsov 相当长一段时间以来,大数据社区已经普遍认识到了批量数据处理的不足.很多应用都对实时查询和流式处理产生了迫切需求.最近几年,在这个理念的推动下,催生出了一系列解决方案,Twi

运用大数据处理技术 做好国有企业思想政治工作

在全面深化企业改革和互联网全面普及的新形势下,国有企业思想政治工作面临着许多新情况,国有企业要勇于挑战自我.求新达变,积极推进思想政治工作理念创新.手段创新,要善于运用计算机大数据处理技术,积极构建大数据思想政治工作管控体系,确保职工队伍稳定,使企业思想政治工作焕发出勃勃生机,为企业改革发展提供强有力的思想保障. 运用大数据搭建思想政治工作新平台 针对思想政治工作面临的新情况,国有企业要勇于创新,积极确立"用数据链筑牢生命线"的新理念新思路,立足企业内部网络,运用大数据处理技术,创新做

azure-如何在Azure上部署大数据处理应用

问题描述 如何在Azure上部署大数据处理应用 1.看到Azure上有Hadoop,当不知道怎么用 2.由于本地资源有限,我想通过Azure搭建MapReduce 应用,进行数据处理学习应该如何做 解决方案 azure直接支持hadoop,直接就可以用.官网上有文档 解决方案二: http://database.51cto.com/art/201403/432607.htm

用Apache Spark进行大数据处理—入门篇

文章讲的是用Apache Spark进行大数据处理-入门篇,Apache Spark 是一个围绕速度.易用性和复杂分析构建的大数据处理框架.最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一. 与Hadoop和Storm等其他大数据和MapReduce技术相比,Spark有如下优势. 首先,Spark为我们提供了一个全面.统一的框架用于管理各种有着不同性质(文本数据.图表数据等)的数据集和数据源(批量数据或实时的流数据)的大数据处理的需求. Sp

高速公路视图大数据处理应用探讨

近年来,随着高速公路通车里程的迅猛增长和车流量的快速增加,高速公路运营管理中暴露的新情况.新问题也逐年增多,特别是逃漏通行费问题,给正常运营秩序带来较大的冲击.为了解决偷逃漏费.路径识别等业务需求,其中在高速公路收费卡口逐步进行了监控高清化与智能化改造.在视图智能化处理方面将面临以下几个问题: 如何建立一个安全.实时.有效.智能化的视图大数据系统处理系统,利用车辆视图"多特征识别"真正满足高速公路偷逃漏费稽查工作高时效.高正确率要求; 如何建设一个适合高速公路场景高性能计算平台,实现大

大数据时代你不得不了解的大数据处理工具

如今Apache Hadoop已成为大数据行业发展背后的驱动力.Hive和Pig等技术也经常被提到,但是他们都有什么功能,为什么会需要奇怪的名字(如Oozie,ZooKeeper.Flume). Hadoop带来了廉价的处理大数据(大数据的数据容量通常是10-100GB或更多,同时数据种类多种多样,包括结构化.非结构化等)的能力.但这与之前有什么不同? 现今企业数据仓库和关系型数据库擅长处理结构化数据,并且可以存储大量的数据.但成本上有些昂贵.这种对数据的要求限制了可处理的数据种类,同时这 种惯

广告系统中的大数据处理 | 宋慧庆

什么是大数据? 从具备4V(Volume,Velocity,Variety,Value)特征的大量数据中挖掘用户的潜在价值. 广告系统的数据来源 DSP监听数据(主要是ssp,adx渠道) 广告主数据 广告投放过程中收集的数据 购买/通过交换得到的第三方数据 运营商合作数据 精准广告的系统特点 数据量巨大(广告本身的数据,定向数据,用户特征数据,广告展示环境的特征数据) 响应速度要求特别快 实时性要求特别高(广告数据,定向数据,用户特征数据,广告展示环境的特征数据等实时性) 系统可用性要求特别高