以对海量数据排序为例,Hadoop采用分而治之的计算模型,对海量数据进行排序时可以参照编程快速排序的思想。快速排序法的基本精神是在数列中找出适当的轴心,然后将数列一分为二,分别对左边与右边数列进行排序。
5.3.3.1 传统的数据排序方式
传统的数据排序就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减地排列起来的操作。排序算法是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当的重视,尤其是在大量数据的处理方面。一个优秀的算法可以节省大量的资源。在各个领域中考虑到数据的各种限制和规范,要得到一个符合实际的优秀算法,得经过大量的推理和分析。
下面以快速排序为例,对数据集合a(n)从小到大的排序步骤如下:
(1)首先设定一个待排序的元素a(x)。
(2)遍历要排序的数据集合a(n),经过一轮划分排序后在a(x)左边的元素值都小于它,在a(x)右边的元素值都大于它。
(3)再按此方法对a(x)两侧的这两部分数据分别再次进行快速排序,整个排序过程可以递归进行,以此达到整个数据集合变成有序序列。
5.3.3.2 Hadoop的数据排序方式
设想如果我们将数据a(n)分割成M个部分,将这M个部分送去MapReduce进行计算,自动排序,最后输出内部有序的文件,再把这些文件首尾相连合并成一个文件,即可完成排序。操作具体步骤如表5-4所示。
表5-4 大数据排序步骤
短短几年间,Hadoop从一种边缘技术成为事实上的企业大数据的标准,Hadoop几乎成为大数据的代名词。作为一种用于存储和分析大数据开源软件平台,Hadoop可处理分布在多个服务器中的数据,尤其适合处理来自手机、电子邮件、社交媒体、传感器网络和其他不同渠道的多样化、大负荷的数据。(www.xing528.com)
本章对Hadoop的起源、功能与优势、应用现状、发展趋势和平台搭建进行了简要的介绍,重点讲解了Hadoop的各个功能模块。通过本章的学习,读者将会打下一个基本的Hadoop理论基础。
【注释】
1.Apache软件基金会(ASF)。是专门为支持开源软件项目而办的一个非营利性组织。在它所支持的Apache项目与模块中,所发行的软件产品都遵循Apache许可证。
2.GFS。是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,并提供容错功能。它可以给大量的用户提供总体性能较高的服务。
3.RPC。即远程过程调用协议。它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
4.序列化。是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
5.抽象文件系统。与实体对应,它是由概念、原理、假说、方法、计划、制度、程序等非物质实体构成的系统,实体与抽象两类系统在实际中常结合在一起,以实现一定功能。抽象文件系统往往对实体系统提供指导和服务。
6.SSH。由IETF的网络工作小组所制定。SSH为建立在应用层和传输层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台——包括HP-UX,Linux,AIX,Solaris,Digital UNIX,Irix以及其他平台,都可运行SSH。
7.RDBMS。即关系数据库管理系统。是将数据组织为相关的行和列的系统,而管理关系数据库的计算机软件就是关系数据库管理系统,常用的数据库软件有Oracle,SQL Server等。
8.sshd。Linux下的服务器进程名。
9.API。应用程序编程接口,是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无须访问源码,或理解内部工作机制的细节。
10.动态语言。是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。比如众所周知的ECMAScript(JavaScript)便是一个动态语言。除此之外,如Ruby,Python等也都属于动态语言;而C,C++等语言则不属于动态语言。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。