新書推薦:
《
爱丁堡古罗马史-罗马城的起源和共和国的崛起
》
售價:HK$
76.8
《
自伤自恋的精神分析
》
售價:HK$
52.8
《
大宋悬疑录:貔貅刑
》
售價:HK$
74.8
《
不被大风吹倒
》
售價:HK$
65.9
《
人生解忧:佛学入门四十讲
》
售價:HK$
107.8
《
东野圭吾:分身(东野圭吾无法再现的双女主之作 奇绝瑰丽、残忍又温情)
》
售價:HK$
64.9
《
浪潮将至
》
售價:HK$
86.9
《
在虚无时代:与马克斯·韦伯共同思考
》
售價:HK$
57.2
|
編輯推薦: |
1.以通俗易懂的语言、丰富的实例、简洁的图表、传统和现代数据特征的对比,将大数据这一计算机前沿科学如数家珍的娓娓道来。既介绍了大数据和相关的基础知识,又与具体应用有机结合,并且借助可视化的画面感为读者由浅入深地剖析了大数据分析原理和技术架构,非常便于自学。2.本书内容包括大数据概论、大数据采集及预处理、大数据分析、大数据数据可视化、Hadoop概论、HDFS和Common概论、MapReduce概论、NoSQL技术介绍、Spark概论、云计算与大数据、大数据相关案例等内容。
|
內容簡介: |
本书从初学者易于理解的角度,以通俗易懂的语言、丰富的实例、简洁的图表、传统和现代数据特征的对比,将大数据这一计算机前沿科学如数家珍地娓娓道来。既介绍了大数据和相关的基础知识,又与具体应用有机结合起来,并借助可视化图表的画面感立体地为读者剖析了大数据的技术和原理,非常便于自学。 本书内容包括大数据概论、大数据采集及预处理、大数据分析、大数据可视化、Hadoop概论、HDFS和Common概论、MapReduce概论、NoSQL技术介绍、Spark概论、云计算与大数据、大数据相关案例等内容。 本书既可以作为想了解大数据技术和应用的初学者的教材,也适合作为培训中心、IT人员、企业策划和管理人员的参考书。
|
目錄:
|
目录
第1章大数据概论
1.1大数据技术概述
1.1.1大数据的基本概念
1.1.2IT产业的发展简史
1.1.3大数据的来源
1.1.4大数据产生的三个发展阶段
1.1.5大数据的特点
1.1.6大数据处理流程
1.1.7大数据的数据格式特性
1.1.8大数据的特征
1.1.9大数据的应用领域
1.2大数据技术架构
1.3大数据的整体技术和关键技术
1.4大数据分析的五种典型工具简介
1.5大数据未来发展趋势
1.5.1数据资源化
1.5.2数据科学和数据联盟的成立
1.5.3大数据隐私和安全问题
1.5.4开源软件成为推动大数据发展的动力
1.5.5大数据在多方位改善我们的生活
本章小结
第2章大数据采集及预处理
2.1大数据采集
2.1.1大数据采集概述
2.1.2大数据采集的数据来源
2.1.3大数据采集的技术方法
2.2大数据的预处理
2.3大数据采集及预处理的工具
本章小结
第3章大数据分析概述
3.1大数据分析简介
3.1.1什么是大数据分析
3.1.2大数据分析的基本方法
3.1.3大数据处理流程
3.2大数据分析的主要技术
3.2.1深度学习
3.2.2知识计算
3.2.3可视化
3.3大数据分析处理系统简介
3.3.1批量数据及处理系统
3.3.2流式数据及处理系统
3.3.3交互式数据及处理系统
3.3.4图数据及处理系统
3.4大数据分析的应用
本章小结
第4章大数据可视化
4.1大数据可视化概述
4.1.1大数据可视化与数据可视化
4.1.2大数据可视化的过程
4.2大数据可视化工具
4.2.1常见大数据可视化工具简介
4.2.2Tableau数据可视化入门
本章小结
第5章Hadoop概论
5.1Hadoop简介
5.1.1Hadoop的发展简史
5.1.2Hadoop应用现状和发展趋势
5.2Hadoop的架构与组成
5.2.1Hadoop架构
5.2.2Hadoop组成模块介绍
5.3Hadoop的应用
5.3.1Hadoop平台搭建
5.3.2Hadoop的开发方式
5.3.3Hadoop应用分析
本章小结
第6章HDFS和Common概论
6.1HDFS概述
6.1.1HDFS相关概念
6.1.2HDFS特点
6.1.3HDFS体系结构
6.1.4HDFS工作原理
6.1.5HDFS相关技术
6.1.6HDFS源代码结构
6.1.7HDFS接口
6.2Common概述
本章小结
第7章MapReduce概论
7.1MapReduce简介
7.1.1如何理解MapReduce
7.1.2MapReduce功能和技术特征
7.2MapReduce的Map和Reduce任务
7.2.1Map与Reduce
7.2.2Map任务原理
7.2.3Reduce任务原理
7.3MapReduce架构和工作流程
7.3.1MapReduce的架构
7.3.2MapReduce工作流程
7.4MapReduce编程源码范例
7.5MapReduce接口
本章小结
第8章NoSQL技术介绍
8.1NoSQL基础知识
8.1.1NoSQL的产生
8.1.2NoSQL的特点
8.1.3NoSQL的技术基础
8.2NoSQL的种类
8.2.1键值存储
8.2.2列存储
8.2.3面向文档存储
8.2.4图形存储
8.3典型的NoSQL工具
8.3.1Redis
8.3.2Bigtable
8.3.3CouchDB
8.3.4Neo4j
本章小结
第9章Spark概论
9.1Spark概述
9.1.1Spark简介
9.1.2Spark发展
9.1.3Scala语言
9.2Spark与Hadoop
9.2.1Hadoop的局限与不足
9.2.2Spark的优点
9.2.3Spark速度比Hadoop快的原因分解
9.3Spark大数据处理架构及其生态系统
9.3.1底层的Cluster Manager和Data Manager
9.3.2中间层的Spark Runtime
9.3.3高层的应用模块
9.4Spark的应用
9.4.1Spark的应用场景
9.4.2应用Spark的成功案例
本章小结
第10章云计算与大数据
10.1云计算概论
10.1.1云计算定义
10.1.2云计算与大数据的关系
10.1.3云计算基本特征
10.1.4云计算服务模式
10.2云计算核心技术
10.2.1虚拟化技术
10.2.2虚拟化软件及应用
10.2.3资源池化技术
10.2.4云计算部署模式
10.3云计算仿真
10.4云计算的安全
10.4.1云计算安全现状
10.4.2云计算安全服务体系
10.5云计算应用案例
本章小结
第11章大数据解决方案及相关案例
11.1大数据解决方案基础
11.2Intel大数据
11.2.1Intel大数据解决方案
11.2.2Intel大数据相关案例中国移动广东公司详单、账单
查询系统
11.3百度大数据
11.3.1百度大数据引擎
11.3.2百度大数据 平台
11.3.3相关应用
11.3.4百度预测的使用方法
11.4腾讯大数据
11.4.1腾讯大数据解决方案
11.4.2相关实例广点通
本章小结
参考文献
|
內容試閱:
|
前言 IT产业在其发展历程中,经历过几次技术浪潮。如今,大数据浪潮正在迅速朝我们涌来,并将触及各个行业和生活的许多方面。大数据浪潮将比之前发生过的浪潮更大、触及面更广,给人们的工作和生活带来的变化和影响也更大。毋庸置疑,大数据的应用激发了一场思想风暴,也悄然改变了我们的生活方式和思维习惯。大数据正以前所未有的速度颠覆人们探索世界的方法,引起工业、商业、医学、军事等领域的深刻变革。因此,在当前大数据浪潮的猛烈冲击下,人们迫切需要充实和完善自己原有的IT知识结构,掌握两种全新的技能: 一是掌握大数据基本技术与应用,使大数据为我们所用的技能; 二是掌握数据之间隐藏的规律与关系,以及可视化方法,使大数据更好地服务于社会发展的技能。本书注重实用性,围绕大数据及其相关技术这一主题,采用深入浅出、图文并茂的叙述方式,简明扼要地阐述了大数据及其相关技术的基本理论和发展趋势,使广大读者通过阅读本书,深入了解和掌握大数据的理论和应用,从而更好地把握时代发展的脉搏和历史赋予的机遇。本书的目标是给广大读者提供一个既通俗易懂,又具有严谨、完整、结构化特征的书籍。其独到之处是既阐明了大数据技术的系统性和理论性,又对传统数据和大数据在来源、结构、特征、存储方式、使用方法等方面,通过大量的表格和图形方式进行了有针对性的对比和阐述,使读者对两者的区别一目了然,对理解和掌握大数据理技术具有事半功倍的效果。另外,考虑到大数据技术涉及许多新名词和专业性极强的词汇,故在全书的每一章中均附有相关术语的注释,方便读者查阅和自学。本书还力求将大数据技术晦涩难懂的理论知识以通俗易懂的语言和方式,由浅入深地展现在读者面前,便于读者理解和掌握。本书内容重点突出,语言精练易懂,非常便于自学,可作为想了解、使用大数据技术的相关人员,如工程技术人员、IT工作者、企业策划和管理人员的参考书,也可作为相关学习班的培训教材。全书共分成11章: 第1章大数据概论,第2章大数据采集及预处理,第3章大数据分析概论,第4章大数据可视化,第5章Hadoop概论,第6章HDFS和Common概论,第7章MapReduce概论,第8章NoSQL技术介绍,第9章Spark概论,第10章云计算与大数据,第11章大数据解决方案相关案例。本书在写作过程中参阅了大量的中外书籍和相关资料,在此对各位作者表示真诚的谢意。另外本书得到了中国医科大学沙宪政教授和东北大学杨广明教授的大力支持,清华大学出版社对这本书的出版做了精心策划及充分论证,特此感谢!由于作者水平有限,加之时间仓促,书中难免存在疏漏之处,恳请广大读者批评斧正!娄岩2016年6月
第5章Hadoop概论导学内容与要求
本章主要介绍了Hadoop的应用现状及其架构。Hadoop允许用户在集群服务器上使用简单的编程模型对大数据集进行分布式处理。Hadoop简介中介绍了Hadoop的起源及功能与优势,要求了解Hadoop优势及应用现状。Hadoop的架构及组成中介绍了Hadoop的架构,要求了解其主要核心模块HDFS和MapReduce,并了解其他模块的功能。Hadoop的应用中介绍了Hadoop平台的搭建,并阐述了其开发方式,要求以实例分析了解Hadoop的工作原理。
重点、难点
本章的重点是了解Hadoop的功能与特点。本章的难点是了解各个Hadoop核心模块的功能。
用户使用Hadoop开发分布式程序,可以在不了解分布式底层细节的情况下,充分利用集群的作用高速运算和存储。绝大多数从事大数据处理的行业和公司都借助Hadoop平台进行产品开发,并对Hadoop本身的功能进行拓展和演化,极大地丰富了Hadoop的性能。5.1Hadoop简介Hadoop是一个由Apache基金会所开发的分布式系统基础架构。Hadoop是以分布式文件系统Hadoop Distributed File System,HDFS和MapReduce等模块为核心,为用户提供细节透明的系统底层分布式基础架构。用户可以利用Hadoop轻松地组织计算机资源,搭建自己的分布式计算平台,并且可以充分利用集群的计算和存储能力,完成海量数据的处理。5.1.1Hadoop的发展简史1. Hadoop的起源
Hadoop这个名称是由它的创始人Doug Cutting命名,来源于Doug Cutting儿子的棕黄色大象玩具,它的发音是[hdu:p]。Hadoop的图
图51Hadoop图标
标如图51所示。
Hadoop起源于2002年Doug Cutting和Mike Cafarella开发的ApacheNutch项目。Nutch项目是一个开源的网络搜索引擎,Doug Cutting主要负责开发的是大范围文本搜索库。随着互联网的飞速发展,Nutch项目组意识到其构架无法扩展到拥有数十亿网页的网络,随后在2003年和2004年Google先后推出了两个支持搜索引擎而开发的软件平台。这两个平台一个是谷歌文件系统Google File System,GFS,用于存储不同设备所产生的海量数据; 另一个是MapReduce,它运行在GFS之上,负责分布式大规模数据的计算。基于这两个平台,在2006年初,Doug Cutting和Mike Cafarella从Nutch项目转移出来一个独立的模块,称为Hadoop。截至2016年年初,Apache Hadoop版本分为两代。第一代Hadoop称为Hadoop 1.0,第二代Hadoop称为Hadoop 2.0。第一代Hadoop包含三个版本,分别是0.20.x,0.21.x和0.22.x。第二代Hadoop包含两个版本,分别是0.23.x和2.x。其中,第一代Hadoop由一个分布式文件系统HDFS和一个离线计算框架MapReduce组成; 第二代Hadoop则包含一个支持NameNode横向扩展的HDFS、一个资源管理系统Yarn和一个运行在Yarn上的离线计算框架MapReduce。相比之下Hadoop 2.0功能更加强大、扩展性更好并且能够支持多种计算框架。目前,最新的版本是2016年年初发布的Hadoop 2.7.2。Hadoop的版本如表51所示。
表51Hadoop的版本
Hadoop版本版本名称版本号包含内容
第一代Hadoop 1.00.20.x,0.21.x,0.22.xHDFS、MapReduce第二代Hadoop 2.00.23.x,2.xHDFS、MapReduce、Yarn等2. Hadoop的特点Hadoop具有可扩展、低成本、高效率及可靠性等特点。Hadoop可以高效地存储并管理海量数据,同时分析这些海量数据以获取更多有价值的信息。Hadoop中的HDFS可以提高读写速度和扩大存储容量,因为HDFS具有优越的数据管理能力,并且是基于Java语言开发的,具有容错性高的特点,所以Hadoop可以部署在低廉的计算机集群中,同时不限于某个操作系统; Hadoop中的MapReduce可以整合分布式文件系统上的数据,保证高速分析处理数据; 与此同时还采用存储冗余数据来保证数据的安全性。MapReduce具有开源性和高效性等特点。举例来说,早期使用Hadoop是在Internet上对搜索关键字进行内容分类。如果要对一个10TB的巨型文件进行文本搜索,使用传统的系统需要耗费很长的时间。但是Hadoop在设计时就考虑到这些技术瓶颈问题,采用并行执行机制,因此能大大提高效率。5.1.2Hadoop应用现状和发展趋势Hadoop因其在大数据处理领域具有广泛的实用性以及良好的容错性,目前已经取得了非常突出的成绩。Hadoop的应用获得了学术界的广泛关注和研究,已经从互联网领域向电信、电子商务、银行、生物制药等领域拓展。在短短的几年中,Hadoop已经成为迄今为止最为成功、使用最广泛的大数据处理主流技术和系统平台,在业界和各个行业尤其是互联网行业获得了广泛的应用。1. 国外Hadoop的应用现状1 YahooYahoo是Hadoop的最大支持者,Yahoo的Hadoop机器总结点数目超过42000个,有超过10万的核心CPU在运行Hadoop。最大的一个单Master结点集群有4500个结点,每个结点配置了4核CPU、41TB磁盘。总的集群存储容量大于350PB,每月提交的作业数目超过1000万个。2 FacebookFacebook使用Hadoop存储内部日志与多维数据,并以此作为报告、分析和机器学习的数据源。目前Hadoop集群的机器结点超过1400台,共计11200个核心CPU,超过15PB原始存储容量,每个商用机器结点配置了8核CPU、12TB数据存储,主要使用StreamingAPI和JavaAPI编程接口。Facebook同时在Hadoop基础上建立了一个名为Hive的高级数据仓库框架,Hive已经正式成为基于Hadoop的Apache一级项目。此外,还开发了HDFS上的FUSE实现。3 eBay单集群超过532结点集群,单节点8核CPU,存储容量超过5.3PB,大量使用MapReduce的Java接口、Pig、Hive来处理大规模的数据,还使用HBase进行搜索优化和研究。4 IBMIBM蓝云也利用Hadoop来构建云基础设施。IBM蓝云使用的技术包括Xen和PowerVM虚拟化的Linux操作系统映像及Hadoop并行工作量调度,并发布了自己的Hadoop发行版及大数据解决方案。2. 国内Hadoop的应用现状1 百度百度在2006年就开始关注Hadoop并开始调研和使用,其总的集群规模达到数十个,单集群超过2800台机器结点,Hadoop机器总数有上万台机器,总的存储容量超过100PB,已经使用的超过74PB,每天提交的作业数目有数千个之多,每天的输入数据量已经超过7500TB,输出超过1700TB。2 阿里巴巴阿里巴巴的Hadoop集群大约有3200台服务器,大约30000物理CPU核心,总内存100TB,总的存储容量超过60PB,每天的作业数目超过150000个,Hivequery查询大于6000个,扫描数据量约为7.5PB,扫描文件数约为4亿,存储利用率大约为80%,CPU利用率平均为65%,峰值可以达到80%。阿里巴巴的Hadoop集群拥有150个用户组、4500个集群用户,为淘宝、天猫、一淘、聚划算、CBU、支付宝提供底层的基础计算和存储服务。3 腾讯腾讯也是使用Hadoop最早的中国互联网公司之一,腾讯的Hadoop集群机器总量超过5000台,最大单集群约为2000个结点,并利用HadoopHive构建了自己的数据仓库系统TDW,同时还开发了自己的TDWIDE基础开发环境。腾讯的Hadoop为腾讯各个产品线提供基础云计算和云存储服务。4 京东京东从2013年起,根据自身业务高速发展的需求,自主研发了京东HadoopNameNode Cluster解决方案。该方案主要为了解决两个瓶颈问题: 一个是随着存储文件增加,机器的内存会逐渐增加,已经达到了内存的瓶颈; 另一个是随着集群规模的扩大,要求快速响应客户端的请求,原有的系统的性能出现了瓶颈。该方案以ClouderaCDH3为基础,并在其上进行了大量的改造和自主研发。目前,已经通过共享存储设备,实现主从结点的元数据同步及NameNode的自动切换功能。客户端、主从结点、数据结点均通过Zookeeper判断主结点信息,通过心跳判断NameNode健康状态。3.Hadoop的发展趋势随着互联网的发展,新的业务模式还将不断涌现。在以后相当长一段时间内,Hadoop系统将继续保持其在大数据处理领域的主流技术和平台的地位,同时其他种种新的系统也将逐步与Hadoop系统相互融合和共存。从数据存储的角度看,前景是乐观的。用HDFS进行海量文件的存储,具有很高的稳定性。在Hadoop生态系统中,使用HBase进行结构化数据存储,其适用范围广、可扩展性强、技术比较成熟,在未来的发展中占有稳定的一席之地。从数据处理的角度看,存在一定问题。MapReduce目前存在问题的本质原因是其擅长处理静态数据,处理海量动态数据时必将造成高延迟。由于MapReduce的模型比较简单,造成后期编程十分困难,一个简单的计数程序也需要编写很多代码。相比之下,Spark的简单高效能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce算法。有关Spark的介绍详见第9章。Hadoop作为大数据的平台和生态系统,已经步入稳步理性增长的阶段。未来,和其他技术一样,面临着自身新陈代谢和周围新技术的挑战。期待未来Hadoop跟上时代的发展,不断更新改进相关技术,成为处理海量数据的基础平台。5.2Hadoop的架构与组成Hadoop的核心组成部分是HDFS、MapReduce以及Common,其中HDFS提供了海量数据的存储,MapReduce提供了对数据的计算,Common为其他模块提供了一系列文件系统和文件包。但与Hadoop相关的Yarn、Hive、HBase、Avro、Chukwa等模块也是不可或缺的,它们可以提供互补性服务或者在核心层上提供更高层的服务。5.2.1Hadoop架构Hadoop分布式系统基础框架具有创造性和极大的扩展性,用户可以在不了解分布式底层细节的情况下开发分布式程序,充分利用集群的威力高速运算和存储。简单来说,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。Hadoop的主要组成部分架构如图52所示。Hadoop的核心模块包含HDFS、MapReduce和Common。HDFS是分布式文件系统; MapReduce提供了分布式计算编程框架; Common是Hadoop体系最底层的一个模块,为Hadoop各模块提供基础服务。
图52Hadoop主要模块
Hadoop的其他模块包含HBase、Pig、Yarn、Hive、Chukwa、Avro、Zookeeper和Mahout等。其中HBase基于HDFS,是一个开源的基于列存储模型的分布式数据库; Pig是处理海量数据集的数据流语言和运行环境,运行在HDFS和MapReduce之上; Yarn是Hadoop集群的资源管理系统; Hive可以对存储在Hadoop里面的海量数据进行汇总,并能使即时查询简单化; Chukwa是基于Hadoop的大集群监控系统; Avro可以使Hadoop的RPC模块通信速度更快、数据结构更紧凑; Zookeeper是一个分布式、可用性高的协调服务,提供分布式锁之类的基本服务,用于构建分布式应用; Mahout是一个在Hadoop上运行的可扩展的机器学习和数据挖掘类库例如分类和聚类算法。随着Hadoop的发展,其框架还在不断更新,继续研发其他的模块来支撑海量数据的运算与存储。对比Hadoop 1.0和Hadoop 2.0,其核心部分变化如图53所示。
图53Hadoop 1.0和Hadoop 2.0核心对比图
其中Hadoop2.0中的Yarn是在Hadoop 1.0中的MapReduce基础上发展而来的,主要是为了解决Hadoop 1.0扩展性较差且不支持多计算框架而提出的。5.2.2Hadoop组成模块介绍1. HDFS
HDFS是Hadoop体系中数据存储管理的基础。它是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行。HDFS简化了文件的一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。关于HDFS的详细介绍参见第6章。2. MapReduceMapReduce是一种编程模型,用于大规模数据集大于1TB的并行运算。MapReduce将应用划分为Map和Reduce两个步骤,其中Map对数据集上的独立元素进行指定的操作,生成键值对形式的中间结果。Reduce则对中间结果中相同键的所有值进行规约,以得到最终结果。MapReduce这样的功能划分,非常适合在大量计算机组成的分布式并行环境里进行数据处理。MapReduce以JobTracker结点为主,分配工作以及负责和用户程序通信。关于MapReduce的详细介绍参见第7章。3. Common从Hadoop 0.2.0版本开始,Hadoop Core模块更名为Common。Common是Hadoop的通用工具,用来支持其他的Hadoop模块。实际上Common提供了一系列文件系统和通用IO的文件包,这些文件包供HDFS和MapReduce公用。它主要包括系统配置工具、远程过程调用、序列化机制和抽象文件系统等。它们为在廉价的硬件上搭建云计算环境提供基本的服务,并且为运行在该平台上的软件开发提供了所需的API。其他Hadoop模块都是在Common的基础上发展起来的。4. YarnYarn是Apache新引入的子模块,与MapReduce和HDFS并列。由于在老的框架中,JobTracker要一直监控job下的tasks的运行状况,承担的任务量过大,所以引入Yarn来解决这个问题。Yarn的基本设计思想是将MapReduce中的JobTracker拆分成了两个独立的服务: 一个全局的资源管理器ResourceManager和每个应用程序特有的ApplicationMaster。其中ResourceManager负责整个系统的资源管理和分配,而ApplicationMaster则负责单个应用程序的管理。当用户向Yarn中提交一个应用程序后,Yarn将分两个阶段运行该应用程序: 第一个阶段是启动ApplicationMaster; 第二个阶段是由ApplicationMaster创建应用程序,为它申请资源,并监控它的整个运行过程,直到运行成功。Yarn架构如图54所示。
图54Yarn架构
5. HiveHive最早是由Facebook设计的基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。Hive没有专门的数据存储格式,也没有为数据建立索引,用户可以非常自由地组织Hive中的表,只需要在创建表时告知Hive数据中的列分隔符和行分隔符,Hive就可以解析数据。Hive中所有的数据都存储在HDFS中,其本质是将SQL转换为MapReduce程序完成查询。Hive与Hadoop的关系如图55所示。
图55Hive与Hadoop的关系
使用Hive的命令行接口,在操作上与使用关系数据库类似,但是本质上有很大的不同,例如: 关系数据库Relational Database Management System,RDBMS是为实时查询业务而设计的,而Hive则是为海量数据做数据挖掘设计的,实时性很差; Hive使用的计算模型是MapReduce,而RDBMS则是自己设计的计算模型; Hive和RDBMS存储文件的系统不同,Hive使用的是Hadoop的HDFS,RDBMS则是服务器本地的文件系统; Hive处理数据规模大,RDBMS处理数据规模相对较小; Hive不使用索引查询,RDBMS则经常使用索引。Hive与RDBMS的对比如表52所示。
表52Hive与RDBMS对比
比 较 名 称HiveRDBMS
查询实时性差实时性强计算模型MapReduce自己设计存储文件系统HDFS服务器本地处理数据规模大小索引无有6. HBaseHBase即HadoopDatabase,是一个分布式的、面向列的开源数据库。HBase不同于一般的关系数据库,HBase是一个适合于存储非结构化数据的数据库,而且HBase是基于列而不是基于行的模式。用户将数据存储在一个表里,一个数据行拥有一个可选择的键和任意数量的列。由于HBase表示疏松的数据,用户可以给行定义各种不同的列。HBase主要用于需要随机访问、实时读写的大数据。HBase与Hive的相同点是HBase与Hive都是架构在Hadoop之上的,都用Hadoop作为底层存储。其区别与联系如表53所示。
表53HBase与Hive对比
比 较 名 称HBaseHive
用途弥补Hadoop的实时操作减少并行计算编写工作的批处理系统检索方式适用于索引访问适用于全表扫描存储物理表纯逻辑表功能HBase只负责组织文件Hive既要存储文件又需要计算框架执行效率HBase执行效率高Hive执行效率低7. AvroAvro由Doug Cutting牵头开发,是一个数据序列化系统。类似于其他序列化机制,Avro可以将数据结构或者对象转换成便于存储和传输的格式,其设计目标是用于支持数据密集型应用,适合大规模数据的存储与交换。Avro提供了丰富的数据结构类型、快速可压缩的二进制数据格式、存储持久性数据的文件集、远程调用RPC和简单动态语言集成等功能。8. ChukwaChukwa是开源的数据收集系统,用于监控和分析大型分布式系统的数据。Chukwa是在Hadoop的HDFS和MapReduce框架之上搭建的,它同时继承了Hadoop的可扩展性和健壮性。Chukwa通过HDFS来存储数据,并依赖于MapReduce任务处理数据。Chukwa中也附带了灵活且强大的工具,用于显示、监视和分析数据结果,以便更好地利用所收集的数据。9. PigPig是一个对大型数据集进行分析和评估的平台。Pig最突出的优势是它的结构能够经受住高度并行化的检验,这个特性让它能够处理大型的数据集。目前,Pig的底层由一个编译器组成,它在运行的时候会产生一些MapReduce程序序列,Pig的语言层由一种叫做Pig Latin的正文型语言组成。5.3Hadoop的应用本节将介绍Hadoop平台的搭建和Hadoop的开发方式,并通过应用分析了解Hadoop的工作机制。5.3.1Hadoop平台搭建Hadoop平台本身的开发基于Java语言,最早是为了在Linux平台上使用而开发的。虽然它在Windows下也可以安装并良好运行,但在Windows下安装Hadoop稍微复杂,必须首先模拟Linux环境才可以。下面分别介绍在Linux下和Windows下Hadoop平台的搭建。1. Linux下Hadoop平台的搭建Hadoop平台的搭建过程较为复杂,需要配置的软、硬件环节较多,本小节介绍在Linux操作系统下搭建Hadoop平台的过程。总结起来,搭建过程大体分为三个步骤以1台NameNode结点、4台DataNode结点为例。1 Hadoop环境准备1 首先环境准备,选择适合的Linux操作系统,例如Linux Ubuntu操作系统12.04的64位版本。JDK下载网址为: http:www.oracle.comtechnetworkjavajavasedownloadsindex.html。2 将这5台机器配置成一样的环境并作为虚拟机,通过内网的一个DNS服务器,指定5台虚拟机所对应的域名。3 为Hadoop集群创建访问账号Hadoop,创建访问组Hadoop,创建用户目录,把账号、组和用户目录绑定。4 为Hadoop的HDFS创建存储位置,如hadoopconandata0,给Hadoop用户权限。5 设置SSH自动登录,使得5台虚拟机都有SSH自动登录配置。至此,环境准备完成。2 Hadoop完全分布式集群搭建1 首先,在NameNode结点上下载Hadoop。2 修改Hadoop配置文件hadoopenv.sh、hdfssite.xml、coresite.xml、mapredsite.xml,设置Master和Slaves结点。3 把配置好的NameNode结点,用scp命令复制到其他4台虚拟机同样的目录位置。4 启动NameNode结点,第一次启动时要先进行格式化,命令: binhadoop namenodeformat。5 启动Hadoop,命令: binstartall.sh。输入jps命令,可以看到所有Java的系统进程。只要SecondaryNameNode、JobTracker、NameNode三个系统进程出现,则表示Hadoop启动成功。通过命令netstatnl,可以检查系统打开的端口。其中包括HDFS的9000、Jobtracker的9001、NameNode的Web监控的50070、MapReduce的Web监控的50030。其他的结点的测试检查与上述方法相同。3 HDFS测试Hadoop环境启动成功,可以进行HDFS的简单测试。1 在HDFS上面创建一个目录,命令: binhadoop fs mkdir test。2 复制一个本地文件到HDFS文件系统中,命令: binhadoop fs copyFormLocal README.txttest。3 查看刚刚上传的文件,命令: binhadoop fs lstest。最后,完成Hadoop的分步式安装,环境搭建成功。2. Windows下Hadoop平台的搭建本小节介绍在Windows操作系统下搭建Hadoop平台。1 Hadoop环境准备1 安装JDK1.6或更高版本官网下载JDK,安装时注意路径名中尽量不要存在空格,例如Programe Files,否则在配置Hadoop的配置文件时会找不到JDK。2 安装CygwinCygwin是Windows平台下模拟UNIX环境的工具,需要在安装Cygwin的基础上安装Hadoop,下载网址为http:www.cygwin.com,根据操作系统的需要下载32位或64的安装文件。3 配置环境变量在我的电脑上右击,选择菜单中的属性,单击属性对话框上的高级页签,单击环境变量按钮,在系统变量列表里双击Path变量,在变量值后输入安装的Cygwin的bin目录,例如D:\hadoop\cygwin64\bin。4 安装sshd服务双击桌面上的Cygwin图标,启动Cygwin,执行sshhostconfig y命令。执行后会提示输入密码,否则会退出该配置,此时输入密码并确认密码,回车。最后出现Host configuration finished.Have fun!表示安装成功。此时输入net start sshd启动服务或者在系统的服务里找到并启动Cygwin sshd服务。如果使用的是Windows 8操作系统,启动Cygwin时,需要以管理员身份运行,否则会因为权限问题提示发生系统错误5。5 配置SSH免密码登录执行sshkeygen命令生成密钥文件,输入: sshkeygen t dsa P '''' f ~.sshid_dsa,注意t P f参数区分大小写。其中sshkeygen是生成密钥命令, t表示指定生成的密钥类型dsa,rsa,P表示提供的密语,f指定生成的密钥文件。执行此命令后,在Cygwin\home\用户名路径下面会生成.ssh文件夹,可以通过命令ls a home用户名查看、ssh version命令查看版本。然后执行exit命令,退出Cygwin窗口。至此,环境准备完成。2 Hadoop完全分步式集群搭建Hadoop官网下载http:hadoop.apache.orgreleases.html。把Hadoop压缩包解压到home用户名目录下,文件夹名称更改为hadoop。1 单机模式配置方式单机模式不需要配置,这种方式下,Hadoop被认为是一个单独的Java进程,这种方式经常用来调试。2 伪分布模式可以把伪分布模式看作是只有一个结点的集群,在这个集群中,这个结点既是Master,也是Slave,既是NameNode,也是DataNode,既是JobTracker,也是TaskTracker。这种模式下修改几个配置文件即可。配置hadoopenv.sh,记事本打开改文件,设置Java_home的值为JDK的安装路径。3 Hadoop测试启动Hadoop前,需要先格式化Hadoop的文件系统HDFS,执行命令: binhadoop name node format。接下来,验证是否安装成功。打开浏览器,输入网址http:localhost:50030,如果能够正常浏览,说明安装成功。5.3.2Hadoop的开发方式Hadoop的开发方式基于分布式文件系统,其在很大程度上是为各种分布式计算需求所服务的。Hadoop将分布式文件系统推广到分布式计算上,所以可以将其视为增加了分布式支持的计算函数,其开发方式可归纳为以下的三点。1. 数据分布存储HDFS是Hadoop框架的分布式并行文件系统,是分布式计算的存储基石。它负责数据分布式存储及数据的管理,并能提供高吞吐量的数据访问,文件会被分割成多个文件块,每个文件块被分配存储到数据结点上,而且根据配置会有复制的文件块来保证数据安全性。2. 并行计算并行计算是相对于串行计算来说的,可分为时间上的并行和空间上的并行。时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。并行计算的目的就是提供单处理器无法提供的性能处理器能力或存储器,使用多处理器求解单个问题。 分布式计算是研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。Hadoop中的MapReduce将计算作业分成许多小的单元,同时数据也会被HDFS分为多个数据块,并且每个数据块被复制多份,保证系统的可靠性,HDFS按照一定的规则将数据块放置在集群中的不同机器上,以便MapReduce在数据宿主机器上进行计算。3. 结果输出数据存储在哪台计算机上,就由哪台计算机进行计算,最后将分解后多任务处理的结果汇总起来,对计算结果进行排序输出。这里简要介绍了Hadoop的并行开发流程,详细的工作原理及流程介绍可参见第6章和第7章。5.3.3Hadoop应用分析以对海量数据排序为例,Hadoop采用分而治之的计算模型,对海量数据进行排序时可以参照编程快速排序的思想。快速排序法的基本精神是在数列中找出适当的轴心,然后将数列一分为二,分别对左边与右边数列进行排序。1. 传统的数据排序方式传统的数据排序就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减地排列起来的操作。排序算法是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当的重视,尤其是在大量数据的处理方面。一个优秀的算法可以节省大量的资源。在各个领域中考虑到数据的各种限制和规范,要得到一个符合实际的优秀算法,得经过大量的推理和分析。下面以快速排序为例,对数据集合an从小到大排序的步骤如下。1 首先设定一个待排序的元素ax。2 遍历要排序的数据集合an,经过一轮划分排序后在ax左边的元素值都小于它,在ax右边的元素值都大于它。3 再按此方法对ax两侧的这两部分数据分别再次进行快速排序,整个排序过程可以递归进行,以此达到整个数据集合变成有序序列的目的。2.Hadoop的数据排序方式设想如果将数据an分割成M个部分,将这M个部分送去MapReduce进行计算、自动排序,最后输出内部有序的文件,再把这些文件首尾相连合并成一个文件,即可完成排序。操作具体步骤如表54所示。
表54大数据排序步骤
序号步 骤 名 称具 体 操 作
1抽样对等待排序的海量数据进行抽样2设置断点对抽样数据进行排序,产生断点,以便进行数据分割3Map对输入的数据计算所处断点位置并将数据发给对应ID的Reduce4ReduceReduce将获得的数据进行输出本 章 小 结短短几年间,Hadoop从一种边缘技术成为事实上的企业大数据的标准,Hadoop几乎成为大数据的代名词。作为一种用于存储和分析大数据开源软件平台,Hadoop可处理分布在多个服务器中的数据,尤其适合处理来自手机、电子邮件、社交媒体、传感器网络和其他不同渠道的多样化、大负荷的数据。本章对Hadoop的起源、功能与优势、应用现状、发展趋势和平台搭建进行了简要的介绍,重点讲解了Hadoop的各个功能模块。通过本章的学习,读者将会打下一个基本的Hadoop理论基础。【注释】
1. Apache软件基金会Apache Software Foundation,ASF: 是专门为支持开源软件项目而办的一个非盈利性组织。在它所支持的Apache项目与模块中,所发行的软件产品都遵循Apache许可证Apache License。2. GFS:是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,并提供容错功能。它可以给大量的用户提供总体性能较高的服务。3. RPCRemote Procedure Call Protocol,远程过程调用协议): 是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。4. 序列化Serialization: 是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。5. 抽象文件系统: 与实体对应,它是由概念、原理、假说、方法、计划、制度、程序等非物质实体构成的系统,实体与抽象两类系统在实际中常结合在一起,以实现一定功能。抽象文件系统往往对实体系统提供指导和服务。6. SSHSecure Shell: 由IETF的网络工作小组Network Working Group所制定。SSH为建立在应用层和传输层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台包括HPUX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可以运行SSH。7. RDBMSRelational Database Management System,关系数据库管理系统: 是将数据组织为相关的行和列的系统,而管理关系数据库的计算机软件就是关系数据库管理系统,常用的数据库软件有Oracle、SQL Server等。8. sshd: Linux下的服务器进程名。9. APIApplication Programming Interface,应用程序编程接口: 是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无须访问源码,或理解内部工作机制的细节。10. 动态语言: 是指程序在运行时可以改变其结构,新的函数可以被引进,已有的函数可以被删除等在结构上的变化。例如众所周知的ECMAScriptJavaScript便是一个动态语言。除此之外如Ruby、Python等也都属于动态语言,而C、C等语言则不属于动态语言。
|
|