《深入理解Hadoop(原书第2版)》——1.5我们能处理多大的数据量

1.5我们能处理多大的数据量

本章前述例子中,我们作了若干假设。比如,我们忽略了CPU时间。对于大多数的商业程序来说,计算的复杂性并不大。但是,随着计算量的提高,从实现的角度来看,各种情况的资源消耗都要考虑。举个例子,在数据挖掘中,会用到复杂的贝叶斯统计算法。这样的情况是计算密集型的应用。针对这样的问题,我们可以增加集群节点数量来提高性能,或者选用其他算法替代。

类似MapReduce这样的大数据计算编程范型可以被扩展到其他大数据计算技术中使用。比如,利用计算机的图形编程单元来进行计算机通用计算的技术(GPGPU)可以实现计算密集型应用程序的大规模并行计算。

我们还忽略了网络I/O开销。拥有50个节点的计算集群需要使用分布式文件系统,为了整合数据,这50台计算节点间的数据通信也是有开销的。在所有的大数据解决方案中,I/O开销是重中之重。在整个大数据处理流程过程中,这些开销消耗会导致串行依赖(Serial dependency)。

1.5.1一个计算密集型的例子

假设50个计算节点来处理200GB的数据,平均每个计算节点需要本地处理4GB的数据。每个节点读取这些数据要花费80秒(速率为每秒50MB)。无论我们的计算多快,这80秒是不能节省的。假设数据处理之后最终的结果数据集大小为200MB,每个计算节点平均产生4MB的计算结果。这些计算结果在带宽1Gbps(一个数据包大小为1M)的网络中传输并汇聚到一个节点以便展示结果。传输这些数据到目的节点需要花费3毫秒的时间(网络中传输1MB的数据需要250微秒,每个数据包的网络传输延时为500微秒,按照Jeff Dean博士之前发表的文章)。忽略计算耗时,整个数据计算流程耗时不低于40.003秒。

如果集群拥有4000个计算节点,平均每个计算节点需要本地读取处理500MB的数据,每个计算节点产生的结果数据量为0.1M。读取50MB的数据块不会少于1秒钟。这意味着,4000台计算节点的集群达到了数据处理速度的极限。换句话说,对于一些特定类型的数据处理问题,如果我们花4000个小时才能完成它,那么无论我们把集群节点数量增加多少,都不会把数据处理完成时间缩短到1小时内。4000台计算节点看起来很多了,但是这也是我们所能达到的速度上限了。在这个简单的例子中,我们做了很多使系统简化的假设。我们同样假设在程序逻辑中没有串行依赖(Serial dependencies),这样的假设往往是不成立的。一旦我们考虑了这些开销,系统的性能表现还可能会大幅下滑。

串行依赖(Serial dependencies)这个所有并行计算算法都存在的问题,严重限制了系统性能的提升。这样的限制已经为众人熟知,并表述为著名的Amdhal定律。

1.5.2Amdhal定律

就像光速被认为是人类在这世界上能达到的理论上的速度极值,Amdhal定律揭示了通过往集群增加更多计算节点的方法来提高集群性能的极限值。

Amdhal定律的完整描述详见:http://en.wikipedia.org/wiki/Amdahl抯_law。

这个定律可以简单描述为,假如一个给定的解决方案,其数据计算处理并行化程度的比例达到P(P的取值范围是0到1),在集群计算节点数量无限的条件下(或者说集群中有海量的计算节点),我们能获得的性能提升最大为1/(1-P)。这样,如果数据计算处理并行化程度的比例达到了99%,系统性能会提升100倍。所有的程序或多或少都会有串行依赖,再加上磁盘I/O和网络I/O的时间消耗。无论采用什么样的程序计算算法,我们能获得的系统性能提升都无法突破那个限制。

时间: 2024-10-29 16:35:15

《深入理解Hadoop(原书第2版)》——1.5我们能处理多大的数据量的相关文章

《深入理解Hadoop(原书第2版)》——第1章 为什么会有大数据 1.1 什么是大数据

第1章 为什么会有大数据 随着近20多年来计算技术的不断革新,企业积累了大量数据.数字传感器的进步使得通信系统越来越广泛的使用,尤其是移动平台和移动终端的飞速增长:系统运行产生的大量日志以及越来越多的企业采用无纸化办公的工作方式,这些情况都使得企业积攒起了海量数据资源.并且随着人们对现代科技越来越多的依赖,数据将会以更快的速度增长下去. 摩尔定律告诉我们,大约每隔两年,计算机的性能将历史性地提升一倍.最初,计算资源的提升速度满足了飞速增长的数据的处理需求.好景不长,到2005年前后,数据处理需求

深入理解Elasticsearch(原书第2版)》一1.1.3 分析数据

1.1.3 分析数据 读者也许会好奇,文档中的数据是如何转化为倒排索引的?查询串又是怎么转换为可以用于搜索的词项的?这个转换过程被称为分析(analysis).文本分析由分析器来执行,它建立在分词器(tokenizer).过滤器(filter)及字符映射器(character mapper)之上.Lucene的分词器用来将文本切割成词条,词条是携带各种额外信息的词项,这些信息包括:词项在原始文本中的位置,词项的长度.分词器工作的结果被称为词条流,因为这些词条被一个接一个地推送给过滤器处理.除了分

《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一2.3 读写二进制数据

2.3 读写二进制数据 文本格式对于测试和调试而言会显得很方便,因为它是人类可阅读的,但是它并不像以二进制格式传递数据那样高效.在下面的各小节中,你将会学习如何用二进制数据来完成输入和输出.

《VMware Virtual SAN权威指南(原书第2版)》一1.1 软件定义的数据中心

1.1 软件定义的数据中心 在2012年VMware的年度大会VMworld上,VMware分享了对于软件定义的数据中心(software-def?ined datacenter,SDDC)的愿景.SDDC是VMware的公有云和私有云的架构,在其中将数据中心所有的重要组成部分--计算.存储.网络以及相关的服务全部都进行虚拟化.将数据中心的各个组件虚拟化使得IT团队更加灵活,降低了运营的复杂性,减少了成本,并同时增加了可用性和敏捷性,最终将大大缩短把新服务投向市场的时间. 要达到这些目的,仅仅是

《深入理解Hadoop(原书第2版)》——导读

前 言 Hadoop已经进入Apache社区发展五年多了,使用Hadoop系统进行开发的工作仍然富于挑战但收获丰厚.本书第1版在若干年前就已经出版了,在这期间,Hadoop系统已经被越来越多的企业使用,自身也得到了飞速发展. Hadoop2.0基于YARN框架做了全新升级,重写了Hadoop系统的底层平台.本书从Hadoop使用者的角度出发讲解Hadoop的实现原理,浓缩了Hadoop软件系统的精华.作为作者,我们希望可以深入到源代码级别来理解Hadoop的运行原理及其背后的设计目标,渴望与你分

《深入理解Hadoop(原书第2版)》——1.2大数据技术背后的核心思想

1.2大数据技术背后的核心思想 上文中的例子我们作了诸多假设,要表明的核心问题是虽然我们可以很快地处理数据,但是从持久性的存储设备中读取的速度受到限制,这是整个数据处理流程上的关键瓶颈所在.相对于读写本地节点存储设备上的数据,通过网络来传输数据会更慢. 下面列出了所有大数据处理方法中的一些共同特征: 数据分布在多个节点(网络I/O速度<<本地磁盘I/O速度). 计算程序离数据更近(集群上的节点),而不是相反. 数据的处理尽量在本地完成(网络I/O速度<<本地磁盘I/O速度). 使用

《机器学习与R语言(原书第2版)》一2.3 探索和理解数据

本节书摘来自华章出版社<机器学习与R语言(原书第2版)>一书中的第2章,第2.3节,美] 布雷特·兰茨(Brett Lantz) 著,李洪成 许金炜 李舰 译更多章节内容可以访问"华章计算机"公众号查看. 2.3 探索和理解数据 在收集数据并把它们载入R数据结构以后,机器学习的下一个步骤是仔细检查数据.在这个步骤中,你将开始探索数据的特征和案例,并且找到数据的独特之处.你对数据的理解越深刻,你将会更好地让机器学习模型匹配你的学习问题. 理解数据探索的最好方法就是通过例子.在

《机器学习与R语言(原书第2版)》一 第2章 数据的管理和理解

本节书摘来自华章出版社<机器学习与R语言(原书第2版)>一书中的第2章,第2.1节,美] 布雷特·兰茨(Brett Lantz) 著,李洪成 许金炜 李舰 译更多章节内容可以访问"华章计算机"公众号查看. 第2章 数据的管理和理解 任何机器学习项目初期的核心部分都是与管理和理解所收集的数据有关的.尽管你可能发现这些工作不像建立和部署模型那样令人有成就感(建立和部署模型阶段就开始看到了劳动的成果),但是忽视这些重要的准备工作是不明智的.任何学习算法的好坏取决于输入数据的好坏.

Java核心技术 卷Ⅰ 基础知识(原书第10版)

Java核心技术系列 Java核心技术 卷Ⅰ 基础知识 (原书第10版) Core Java Volume I-Fundamentals (10th Edition) [美] 凯S.霍斯特曼(Cay S. Horstmann) 著 周立新 陈 波 叶乃文 邝劲筠 杜永萍 译 图书在版编目(CIP)数据 Java核心技术 卷Ⅰ 基础知识(原书第10版) / (美)凯S. 霍斯特曼(Cay S. Horstmann)著:周立新等译. -北京:机械工业出版社,2016.8 (Java核心技术系列) 书

ROS机器人程序设计(原书第2版).

机器人设计与制作系列 ROS机器人程序设计 (原书第2版) Learning ROS for Robotics Programming,Second Edition 恩里克·费尔南德斯(Enrique Fernández) 路易斯·桑切斯·克雷斯波(Luis Sánchez Crespo) 阿尼尔·马哈塔尼(Anil Mahtani) 亚伦·马丁内斯(Aaron Martinez) 著 刘锦涛 张瑞雷 等译 图书在版编目(CIP)数据 ROS机器人程序设计(原书第2版) / (西)恩里克·费尔南