大数据并行处理方法与举例
大数据分析并行计算

大数据分析并行计算随着互联网的快速发展和技术的不断进步,大数据分析已经成为了企业和组织中一个重要的环节。
然而,随着数据量的不断增大,传统的串行计算方法已经无法满足大数据分析的需求。
因此,并行计算逐渐成为了大数据分析的重要手段之一、本文将对大数据分析并行计算进行详细的探讨,包括并行计算的概念、原理、应用以及其带来的挑战和发展方向。
一、并行计算的概念和原理并行计算是指同时进行多个独立的计算任务,将计算负载分散到多个计算资源上,以提高计算速度和效率的一种计算方式。
它通过将一个大的计算问题划分为多个小的子问题,然后分配给多个计算机或处理器进行并行计算,最后将子问题的计算结果进行合并,得到最终的计算结果。
其原理是充分利用计算资源并行执行计算任务,减少计算时间和资源的浪费。
并行计算需要满足两个基本条件:任务可分性和任务独立性。
任务可分性指的是大的计算任务可以被划分为多个小的子任务。
任务独立性指的是各个子任务之间相互独立,可以同时进行计算,不会互相干扰。
二、大数据分析的并行计算应用1.数据预处理:大数据分析的第一步是对原始数据进行预处理,包括数据清洗、去重、过滤等。
并行计算可以将原始数据划分为多个子集,分配给不同的计算节点进行处理,从而提高数据预处理的速度。
2.数据挖掘和机器学习:并行计算可以加速数据挖掘和机器学习算法的执行过程。
例如,对于大规模的数据集,可以将数据划分为多个子集,分配给不同的计算节点进行模型训练,然后再将各个子模型进行整合,得到最终的训练结果。
3.图像和视频处理:图像和视频处理通常需要大量的计算资源和时间。
并行计算可以将图像和视频处理任务划分为多个子任务,分配给不同的计算节点进行处理,从而提高处理速度和效率。
4.实时数据分析:对于实时数据分析,需要在短时间内对大量的数据进行处理和分析。
并行计算可以将实时数据划分为多个子集,分配给不同的计算节点进行并行处理,以满足实时数据分析的要求。
三、大数据分析并行计算的挑战虽然大数据分析并行计算有着广泛的应用和潜力,但同时也面临着一些挑战,主要体现在以下几个方面:1.数据划分和负载均衡:如何将大规模的数据划分为多个子集,并确保各个计算节点的负载均衡,是一个关键问题。
大数据处理中的并行计算技术

大数据处理中的并行计算技术在当今信息时代,大数据的应用越来越广泛,随之而来的是对大数据处理能力的需求不断增长。
并行计算技术作为一种高效、快速处理大规模数据的工具,在大数据处理中扮演着重要的角色。
本文将探讨大数据处理中的并行计算技术,并介绍其在不同领域中的应用。
一、并行计算技术概述并行计算技术是指将一项计算任务分解为多个子任务,并同时执行这些子任务的方法。
它能够提高计算效率,减少计算时间,并在大数据处理中发挥重要作用。
并行计算技术可以分为两种主要类型,即共享内存并行和分布式并行。
1. 共享内存并行共享内存并行是指多个处理器共享同一片内存区域,通过读写这一共享内存来进行协作计算。
这种并行计算技术适用于小规模数据的处理,并能够提供更低的延迟和更高的带宽。
常用的共享内存并行技术有多线程和多核处理器。
2. 分布式并行分布式并行是指将计算任务分配给多个计算节点,并通过消息传递等方式进行通信和协调。
这种并行计算技术适用于大规模数据的处理,可以通过增加计算节点来增加计算能力。
分布式并行常用的技术包括MapReduce、Hadoop和Spark等。
二、大数据处理中的并行计算技术应用大数据处理中的并行计算技术在各个领域中都有广泛的应用,其中包括数据挖掘、机器学习、图像处理等。
1. 数据挖掘数据挖掘是从大量数据中发掘并提取出有用信息和模式的过程。
并行计算技术可以加速数据挖掘算法的计算过程,提高数据挖掘的效率。
例如,在关联规则挖掘中,可以利用并行计算技术进行频繁项集的计数和模式发现,并能够处理更大规模的数据集。
2. 机器学习机器学习是通过计算机算法来实现对数据模式的学习和预测的方法。
在机器学习中,一些算法具有高度的计算复杂度,需要处理大规模的数据。
并行计算技术可以将计算任务分解和并行执行,提高机器学习的训练和预测速度。
例如,在神经网络的训练过程中,可以利用并行计算技术加速参数的更新和模型的训练。
3. 图像处理图像处理是对图像进行分析和处理的过程,对于大规模的图像数据,需要高效的处理技术。
并行计算:使用并行计算提高计算效率的技巧和方法

并行计算:使用并行计算提高计算效率的技巧和方法并行计算是一种利用多个处理器或多个计算机同时执行多个计算任务的计算方法。
通过并行计算,我们可以将大规模的计算任务分解为多个小任务,并且在多个处理器或计算机上同时执行,以提高计算效率和加快计算速度。
在本文中,我们将介绍几种常见的并行计算技巧和方法来优化计算效率。
1.任务并行:任务并行是将一个大任务分解为多个小任务,并且同时在多个处理器或计算机上执行。
每个处理器或计算机负责执行一部分任务,然后将结果合并得到最终结果。
任务并行可以显著减少计算时间,尤其适用于大规模数据处理和复杂计算任务。
2.数据并行:数据并行是将大规模的数据分成多个小块,并且在多个处理器或计算机上同时对每个小块进行计算。
每个处理器或计算机负责处理一部分数据,并将计算结果合并得到最终结果。
数据并行可以加快计算速度,尤其适用于需要同时处理大量数据的任务,如图像处理和数据挖掘。
3.指令并行:指令并行是将一个计算任务分解为多个子任务,并且在多个处理器或计算机上同时执行。
每个处理器或计算机负责执行一部分指令,并将结果传递给下一个处理器或计算机继续执行。
指令并行可以提高计算效率,尤其适用于需要大量指令执行的任务,如矩阵运算和神经网络训练。
4.流水线并行:流水线并行是将一个计算任务分解为多个阶段,并且在多个处理器或计算机上同时执行不同的阶段。
每个处理器或计算机负责执行一个阶段,并将结果传递给下一个处理器或计算机继续执行下一个阶段。
流水线并行可以将计算任务分解为多个独立的部分,并在同时执行的情况下提高计算效率。
5.任务分解和调度:任务分解和调度是将一个大任务分解为多个小任务,并且将这些小任务分配给不同的处理器或计算机执行。
任务分解和调度可以根据任务的特性和处理器或计算机的性能自动选择最优的分解和调度策略,以提高计算效率和加快计算速度。
6.数据划分和通信:数据划分和通信是将大规模的数据划分为多个小块,并且在多个处理器或计算机之间进行数据交换和通信。
面向大数据处理的并行计算模型及性能优化

面向大数据处理的并行计算模型及性能优化随着信息时代的发展,大数据已经成为了人民生产生活中的重要组成部分。
而对大数据进行高效处理和分析已经成为了一个紧迫的问题。
并行计算作为一种解决方案,广泛应用于大数据处理和分析的领域。
本文将讨论面向大数据处理的并行计算模型及其性能优化方法。
一、并行计算模型1. 传统的并行计算模型传统的并行计算模型主要有共享内存模型、分布式内存模型和混合模型。
- 共享内存模型:共享内存模型中,多个处理器通过共享内存交换数据,每个处理器可以同时访问和修改共享内存中的变量。
这种模型的优点是简单易懂,但缺点是并行度有限,不适用于大规模数据处理。
- 分布式内存模型:分布式内存模型中,多个处理器通过消息传递的方式交换数据。
每个处理器有自己的本地内存,并且需要通过消息传递来实现数据的共享或同步。
这种模型的优点是适用于大规模数据处理,但缺点是编程复杂度高。
- 混合模型:混合模型是共享内存模型和分布式内存模型的结合。
多个共享内存模型的计算节点组成一个分布式内存模型的集群。
这种模型既考虑了共享内存模型的便利性,又兼顾了分布式内存模型的灵活性。
2. 新兴的并行计算模型新兴的并行计算模型主要有MapReduce、Spark和MPI。
- MapReduce模型:MapReduce模型是Google提出的一种分布式计算模型。
它将大数据分解为不同的部分,在各个计算节点上并行地执行计算,并将结果进行合并。
MapReduce模型适用于大规模数据的批处理,但不适用于实时计算。
- Spark模型:Spark是一种基于内存的分布式计算框架,具有较高的计算速度。
Spark模型中,数据以弹性分布式数据集(RDD)的形式存储,可以在内存中进行迭代计算。
Spark模型适用于大规模数据的实时计算和迭代计算。
- MPI模型:MPI(Message Passing Interface)模型是一种用于并行计算的标准接口。
它允许不同计算节点进行消息传递,实现数据共享和同步。
大数据处理中的并行计算模型选择与实现

大数据处理中的并行计算模型选择与实现在大数据处理领域,选择合适的并行计算模型是至关重要的。
不同的并行计算模型适用于不同的数据处理任务,其性能和效率直接影响到数据处理的结果。
本文将讨论大数据处理中的并行计算模型选择与实现,介绍常见的几种并行计算模型,并讨论它们的优缺点。
1. MapReduce模型MapReduce是一种经典的并行计算模型,由Google提出并应用于大规模数据处理。
它的核心思想是将整个数据集分解成多个小的数据块,并将计算任务分发给多个计算节点。
每个计算节点在本地执行Map和Reduce函数,并将结果传输给主节点进行聚合。
MapReduce模型适用于批处理任务,能够实现数据的高效处理和分布式计算。
2. Spark模型Spark是一个开源的大数据处理框架,提供了一种高性能的计算模型。
Spark模型基于弹性分布式数据集(RDD),能够在内存中存储和处理数据。
它支持多种并行计算模型,如MapReduce、流处理、图计算等。
Spark模型具有较高的性能和灵活性,适用于迭代计算、实时流处理和图计算等多种场景。
3. Pregel模型Pregel是Google提出的图计算模型,用于解决大规模图数据的计算问题。
Pregel模型将图分割成多个顶点和边的子图,并通过消息传递机制进行通信和计算。
每个节点执行一系列的计算步骤,直到达到结束条件。
Pregel模型适用于图算法的并行计算,能够高效地处理大规模的图数据。
4. MPI模型MPI(Message Passing Interface)是一种用于并行计算的编程接口标准。
MPI模型基于消息传递机制,在多个计算节点之间进行通信和协调。
它适用于分布式内存系统和超级计算机等高性能计算环境,能够实现高效的并行计算和数据交换。
在选择并行计算模型时,需要考虑以下几个因素:1. 数据特点:不同的数据处理任务有不同的特点,如数据大小、数据类型、数据访问模式等。
选择并行计算模型时,需要根据数据的特点选择最合适的模型,以提高计算效率和性能。
Java大规模数据处理解析海量数据的技巧

Java大规模数据处理解析海量数据的技巧在处理大规模数据时,Java是一种常用的编程语言。
然而,由于海量数据的处理可能涉及到效率、内存管理以及算法优化等方面的挑战,开发人员需要掌握一些技巧来解析这些数据。
本文将介绍一些Java大规模数据处理的技巧,帮助开发人员更好地处理海量数据。
一、数据分块处理在处理大规模数据时,内存管理是一个重要的问题。
当数据量超过内存限制时,我们需要将数据分块处理,以避免内存溢出。
可以使用Java的流式处理机制,通过迭代的方式读取数据,每次处理一块数据,减少内存的消耗。
例如,可以使用BufferedReader的readLine()方法逐行读取文件,然后对每行数据进行处理。
二、并行处理并行处理是指同时处理多个数据块的技术,可以显著提高处理大规模数据的效率。
Java提供了多线程和线程池的机制,可以将数据分成多个部分,并行地处理每个部分。
通过合理设置线程池的大小,可以充分利用计算资源,提高程序的运行效率。
三、使用适当的数据结构在处理大规模数据时,选择适当的数据结构非常重要。
不同的数据结构对于不同的操作具有不同的时间复杂度,选择合适的数据结构可以提高程序的效率。
例如,如果需要频繁地插入和删除数据,可以选择链表或树等数据结构;如果需要随机访问数据,可以选择数组或哈希表等数据结构。
根据不同的需求,选择合适的数据结构可以提高程序的性能。
四、优化算法算法的选择也是解析海量数据的关键。
优化算法可以提高程序的效率,减少资源的消耗。
例如,对于排序操作,可以选择高效的排序算法,如快速排序或归并排序,而不是简单的冒泡排序。
另外,可以使用适当的数据结构和算法来进行数据过滤、去重等操作,减少不必要的计算。
五、使用缓存缓存是提高程序性能的有效方式之一。
当程序需要频繁地访问某些数据时,可以使用缓存将这些数据存储起来,避免重复计算和访问。
在Java中,可以使用HashMap等数据结构来实现缓存。
通过在内存中存储一部分数据,可以提高程序的响应速度和效率。
高效处理大数据的四种方法

高效处理大数据的四种方法随着科技的不断发展和数据的爆炸增长,大数据已经成为了人们生活和工作中不可或缺的一部分。
然而,高效处理大数据却是一个复杂的挑战。
在本文中,我将介绍四种高效处理大数据的方法,以帮助读者更好地处理和分析海量的数据。
方法一:并行计算并行计算是一种将大数据划分为多个小任务并同时处理的方法。
采用并行计算的好处是能够同时利用多个处理器或计算机资源,提高处理数据的速度和效率。
在并行计算中,常用的技术包括分布式系统、多线程编程和图形处理器(GPU)等。
通过将大数据分割为多个小部分,并由多个处理单元同时处理,能够减少数据的传输和计算时间,从而提高了大数据的处理速度和效率。
方法二:数据压缩数据压缩是一种通过减少数据占用的存储空间以提高处理速度和效率的方法。
当处理大规模的数据时,数据压缩可以减少物理存储介质的开销,并提高数据的传输速度。
常用的数据压缩算法包括哈夫曼编码、Lempel-Ziv-Welch(LZW)编码和差分编码等。
通过选择合适的压缩算法和参数,可以大幅度减少存储空间和传输时间,使得大数据的处理更加高效。
方法三:分布式存储和计算分布式存储和计算是一种将大数据分散存储在多个节点上,并通过并行计算的方式对数据进行处理的方法。
在分布式系统中,数据通常存储在多个节点上,并由多个计算节点同时进行计算。
这种方式可以充分利用集群系统的资源,并实现数据的快速处理。
常见的分布式存储和计算框架包括Hadoop和Spark等。
通过使用这些框架,可以将大数据分布式存储和并行处理,从而提高数据处理的速度和效率。
方法四:增量计算增量计算是一种将大数据划分为小批次,并逐步处理的方法。
通过将大数据分成多个小批次,并逐一处理每个批次,可以降低计算和存储的复杂性,提高处理效率。
在增量计算中,常用的技术包括流处理和迭代计算等。
通过增量计算,可以高效处理大数据,并及时获取计算结果,满足实时业务需求。
综上所述,高效处理大数据是一个复杂的问题,但我们可以采用并行计算、数据压缩、分布式存储和计算以及增量计算等四种方法来提高处理大数据的速度和效率。
大数据处理中的并行计算方法

大数据处理中的并行计算方法随着互联网和信息技术的快速发展,大数据已经成为当代社会中不可忽视的重要资源。
然而,大数据的处理和分析面临着巨大的挑战,主要体现在数据量庞大、复杂度高以及处理速度要求快等方面。
为了应对这些挑战,大数据处理中的并行计算方法被广泛应用。
并行计算是指将一个大任务分解为多个小任务,并在多台计算机上同时进行计算,以提高整体计算效率的一种计算方式。
在大数据处理中,采用并行计算方法可以有效地利用多台计算机的计算能力,加速数据处理的速度和效率。
在大数据处理中应用广泛的并行计算方法有以下几种:1. 数据分片并行:这种方法将原始数据分为多个小于单台计算机内存容量的数据块,每个数据块由一个独立的计算节点处理。
数据分片并行可以在短时间内处理大量数据,并且计算过程中不存在数据依赖关系,可以实现高度并行计算。
2. 数据流并行:数据流并行是将数据按照特定的规则拆分成多个数据流,并通过多个计算节点对数据流进行并行处理。
每个节点负责处理一个或多个数据流,可以同时进行计算和处理不同的数据。
数据流并行可以提高计算效率,降低计算时间。
3. 任务并行:任务并行是将整个数据处理任务拆分为多个子任务,并由不同的计算节点同时执行。
每个子任务可以独立进行计算,并将结果合并以得到最终的处理结果。
任务并行可以充分利用多台计算机的计算能力,加速数据处理的速度。
4. 模型并行:这种方法主要适用于复杂的大数据处理任务,通过将大型模型分解为多个小模型,并在不同的计算节点上并行运算,最后将结果进行整合得到最终的处理结果。
模型并行可以充分利用多台计算机的计算资源,加速模型的训练和推理过程。
5. 任务流并行:任务流并行是将一个大型数据处理任务划分为多个阶段,并在不同的计算节点上并行执行。
每个阶段可以独立进行计算,通过将阶段之间的数据传递和协调进行任务流的并行计算。
任务流并行可以提高数据处理的效率,并减少数据处理过程中的等待时间。
总的来说,大数据处理中的并行计算方法可以通过充分利用多台计算机的计算能力,加速数据处理的速度和效率。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大数据并行处理方法与举例1、介绍1.1 背景互联网行业中,日常运营中生成、累积的用户网络行为数据等大数据规模相当庞大,以至于不能用G或T来衡量。
大数据到底有多大?一组名为“互联网上一天”的数据告诉我们,一天之中,互联网产生的全部内容可以刻满1.68亿张DVD;发出的邮件有2940亿封之多(相当于美国两年的纸质信件数量);发出的社区帖子达200万个(相当于《时代》杂志770年的文字量);卖出的手机为37.8万台,高于全球每天出生的婴儿数量37.1万……而到了2020年,全世界所产生的数据规模将达到今天的44倍。
可以说,人类社会已经步入了大数据时代。
然而,大数据用现有的一般技术又难以处理,并且海量的非结构化数据带来的并不仅仅是存储、传输的问题,做好海量非结构化数据分析以及快速处理以更好的服务客户、提高业务效率已经成为紧迫的问题。
伴随着数据规模的爆炸式增长,数据并行分析处理技术也在不断进行着改进,以满足大数据处理对实时性的需求。
数据并行处理(Data Parallel Processing)是指计算机系统能够同时执行两个或更多个处理机的一种计算方法。
并行处理的主要目的是节省大型和复杂问题的解决时间。
为使用并行处理,首先需要对程序进行并行化处理,也就是说将工作各部分分配到不同处理机中。
当下比较流行的大数据分布式计算应用最具有代表性的有:MapReduce、Spark和GraphX。
下面详细介绍这三种应用的基本原理及应用例子。
1.2 MapReduce2006年由Apache基金会开发的Hadoop项目,由分布式文件系统HDFS和MapReduce 工作引擎所组成。
其中MapReduce采用“分而治之”的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个分节点共同完成,然后通过整合各个节点的中间结果,得到最终结果。
简单地说,MapReduce就是“任务的分解与结果的汇总”。
在Hadoop中,用于执行MapReduce任务的机器角色有两个:一个是JobTracker;另一个是TaskTracker,JobTracker是用于调度工作的,TaskTracker是用于执行工作的。
一个Hadoop集群中只有一台JobTracker。
在分布式计算中,MapReduce框架负责处理了并行编程中分布式存储、工作调度、负载均衡、容错均衡、容错处理以及网络通信等复杂问题,把处理过程高度抽象为两个函数:map和reduce,map负责把任务分解成多个任务,reduce负责把分解后多任务处理的结果汇总起来。
MapReduce极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。
MapReduce在企业中被非常广泛地利用,包括分布grep、分布排序、web连接图反转、每台机器的词矢量、web访问日志分析、反向索引构建、文档聚类、机器学习、基于统计的机器翻译等等。
在谷歌,超过一万个不同的项目已经采用MapReduce来实现,包括大规模的算法图形处理、文字处理、数据挖掘、机器学习、统计机器翻译以及众多其他领域。
1.3 SparkSpark是2009年由UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。
Spark项目现在被使用的有:Berkeley, Princeton, Klout, Foursquare, Conviva, Quantifind, Yahoo! Research & others, 淘宝等,豆瓣也在使用Spark的python克隆版Dpark。
1.4 GraphX鉴于业界对分布式图计算的需求日益见涨,Spark开始独立一个分支Graphx-Branch,作为独立的图计算模块,借鉴GraphLab,开始设计开发GraphX。
分布式图计算框架的目的,是将对于巨型图的各种操作包装为简单的接口,让分布式存储、并行计算等复杂问题对上层透明,从而使复杂网络和图算法的工程师,更加聚焦在图相关的模型设计和使用上,而不用关心底层的分布式细节。
为了实现该目的,需要解决两个通用问题:图存储模式和图计算模式。
1.5示例今天针对以上介绍的三种大数据并行处理应用介绍三个具体的例子。
Example 1: MapReduce - WordCount单频统计是最简单也是最能体现MapReduce思想的程序之一,可以称为MapReduce版"Hello World",该程序的完整代码可以在Hadoop安装包的"src/examples"目录下找到。
单词计数主要完成功能是:统计一系列文本文件中每个单词出现的次数。
图1是一个具体的例子。
图1 WordCount的MapReduce执行流程图1表示有两个txt文档作为输入,第一个文档里面保存了“Hello World”两个单词,第二个文档里面保存了“Hello Hadoop”两个单词,那么经过WordCount程序的处理,输出结果为每个单词出现的次数,即:Hello 2World 1Hadoop 1Example 2: Spark - Pi圆周率表示圆的周长与直径的比例,通常用π表示。
在Spark程序里面可以这么实现:假设在一个2×2的正方形里面掷骰子,那么骰子每次落在该正方形的内切圆的概率都是π/4,如图2所示。
这样只要统计出总共落在内切圆的次数,再除以总的掷骰子的次数,所得的值就近似等于π/4,把该值乘以4就得到π。
我们知道,掷的次数越多,所得到的圆周率就越准确。
在Spark里面可以假设有N个骰子往N个正方形里面同时掷,每个骰子都可以掷很多的次数,最后只需要把总的落在内切圆里面的次数相加,除以N个骰子掷出的总次数,最后再乘以4,就能得到比较精确的π值。
图2 在2×2的正方形里面掷骰子落在内切圆的概率为π/4使用Spark程序迭代10次,每次掷100000次骰子,算出来的圆周率为:π = 3.14044Example 3: GraphX - PageRankPageRank:网页排名,是一种根据网页之间相互的超链接计算的技术,而作为网页排名的要素之一,以Google公司创办人拉里·佩奇(Larry Page)之姓来命名。
Google用它来体现网页的相关性和重要性,在搜索引擎优化操作中是经常被用来评估网页优化的成效因素之一。
PageRank通过网络浩瀚的超链接关系来确定一个页面的等级。
Google把从A页面到B页面的链接解释为A页面给B页面投票,Google根据投票来源(甚至来源的来源,即链接到A页面的页面)和投票目标的等级来决定新的等级。
简单的说,一个高等级的页面可以使其他低等级页面的等级提升。
在互联网上,如果一个网页被很多其它网页所链接,说明它受到普遍的承认和依赖,那么它的排名就相对较高。
图3网页之间的关联关系假设现在有4个网页:URL 1 、 URL 2 、URL 3 、 URL 4 ,它们之间的指向关系如图3所示。
我们知道任何一个图都可以用矩阵来表示,比如图3就可以用以下矩阵来表示:[0 0 0 01 0 1 01 1 0 11 1 0 0] 由此,图的并行化处理问题在某种程度上就被转化为矩阵的并行化运算问题。
而对于PageRank 算法,有以下两个特点:1、网页和网页之间的关系用图来表示;2、网页URL i 和网页URL j 之间的连接关系表示任意一个用户从网页URL i 到转到网页URL j 的可能性(概率)。
我们设所有网页之间的连接关系用矩阵G 来表示,所有网页的排名用矩阵R 来表示,则有:R i =G ×R i−1。
初始假设,所有网页排名都是1/N ,N 表示网页的总数,即有R 0=(1N ,1N ,…,1N )−1,显然通过简单的矩阵运算可以得到R 1,R 2,…,可以证明 R i 最终会收敛,即R i 无限趋近于 R ,此时R =G ×R 。
因此,当两次迭代的结果 R i 和 R i−1 之间的差异非常小,接近于0的时候,迭代运算结束。
由于现实中网页之间链接的数量相比互联网的规模非常稀疏,因此计算网页的网页排名也需要对零概率或者小概率事件进行平滑处理,网页的排名是个一维向量,对它的平滑处理只能利用一个小的常数α,上述公式可以演变为:R i =[αN ×I +(1−α)×G]×R i−1(其中I 是单位矩阵)。
对于上述例子,为了规范化输入网页之间的连接信息,我们用“URL i URL j”表示网页URL i 指向网页URL j,则这4个网页可以用以下数对作为输入:URL2 URL1URL3 URL1URL4 URL1URL3 URL2URL4 URL2URL2 URL3URL3 URL4我们通过GraphX调用PageRank算法,分三个阶段计算:1)提取页面与页面的关系;2)用PageRank迭代计算每个页面的rank值;3)根据页面的rank进行降幂排序。
这个例子经过10次迭代得到的结果为(保留小数点后5位):URL1∶ 0.47287URL2∶ 0.33166URL3∶ 0.29121URL4∶ 0.232652、平台部署与搭建2.1部署介绍本次部署使用了3个节点,每个节点都是虚拟机(VM),每个虚拟机有20个VCPU,50GB 内存,以及1TB的硬盘。
当然实际上该部署方法不限于物理机或者是虚拟机,并且对于机器配置没有强制性的要求。
3个节点的角色即是1个master和2个slaves,master同时是Namenode、ResourceManager,slave又同时是Datanode、NodeManager。
安装过程需要遵守先安装hadoop,然后安装scala,再安装spark及GraphX的流程。
2.2硬件需求与准备工作2.2.1 OS要求Ubuntu 12.04 64bit2.2.2 ip地址分配master 219.243.*.170slave1 219.243.*.171slave2 219.243.*.1722.2.3设置root访问权限及修改hostname#sudo passwd rootyourpasswd#sudo vi /etc/hostnameMaster#sudo vi /etc/hosts219.243.*.170 master219.243.*.171 slave1219.243.*.172 slave22.2.4 VM网络配置#sudo vi /etc/network/interfacesauto eth0iface eth0 inet staticaddress 219.243.*.*netmask 255.255.255.192gateway 219.243.*.**dns-nameservers 202.38.120.*2.2.5扩展硬盘(大于200GB),设置开机挂载#vi /etc/fstab/dev/xvdb /spark ext4 defaults 1 02.2.6关闭防火墙#ufw disable2.2.7 让master可以无密码登陆slaves#apt-get install rsync#ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa#cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys把公钥复制到slaves相同的目录#scp ~/.ssh/authorized_keys slave1:~/.ssh/#scp ~/.ssh/authorized_keys slave2:~/.ssh/验证是否成功#ssh slave1#ssh slave22.3搭建详细步骤2.3.1 Java 安装与配置#apt-get install java-7-openjdk#vi /etc/profileexport JAVA_HOME=/usr/lib/jvm/java-7-oracleexport JRE_HOME=/usr/lib/jvm/java-7-oracle/jreexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar #source /etc/profile2.3.2安装hadoop 2.4.01)下载及解压#wget /apache/hadoop/common/hadoop-2.4.0/hadoop-2.4.0.tar.gz#tar zxvf Hadoop-2.4.0.tgz2)修改hadoop-env.sh和yarn-env.shexport JAVA_HOME= /usr/lib/jvm/java-7-oracle3)修改core-site.xml<configuration><property><name></name><value>hdfs://master:9000</value></property><property><name>hadoop.tmp.dir</name><value>/spark/tmp</value></property><property><name>hadoop.proxyuser.hduser.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.hduser.groups</name><value>*</value></property></configuration>4)修改mapred-site.xml, 将mapred-site.xml.template重命名成mapred-site.xml <configuration><property><name>mapreduce.cluster.local.dir</name><value>/spark/local</value></property><property><name>mapreduce.cluster.system.dir</name><value>/spark/system</value></property><property><name></name><value>yarn</value></property><property><name>yarn.log-aggregation-enable</name><value>true</value></property><property><name>mapreduce.jobhistory.address</name><value>master:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>master:19888</value></configuration>【说明】相比于Hadoop1.0,用户无需再配置mapred.job.tracker,这是因为JobTracker已变成客户端的一个库,他可能被随机调度到任何一个slave上,也就是它的位置是动态生成的。