数据算法 数据库 (美)马哈默德·帕瑞斯安(mahmoud parsian) 新华正版
¥
20.2
1.6折
¥
128
全新
库存7件
作者(美)马哈默德·帕瑞斯安(mahmoud parsian)
出版社中国电力出版社
ISBN9787512395947
出版时间2016-10
版次1
装帧平装
开本16
页数680页
字数834千字
定价128元
货号xhwx_1201405182
上书时间2024-09-29
商品详情
- 品相描述:全新
-
正版特价新书
- 商品描述
-
目录:
序1
前言3
章二次排序:简介19
二次排序问题解决方案21
mapreduce/hadoop的二次排序解决方案25
spark的二次排序解决方案29
第2章二次排序:详细示例42
二次排序技术43
二次排序的完整示例46
运行示例——老版本hadoopapi50
运行示例——新版本hadoopapi52
第3章0列表54
topn设计模式的形式化描述55
mapreduce/hadoop实现:键56
spark实现:键62
spark实现:非键73
使用takeordered()的spark0解决方案84
mapreduce/hadoop0解决方案:非键91
第4章左外连接96
左外连接示例96
mapreduce左外连接实现99
spark左外连接实现105
使用leftouterjoin()的spark实现117
第5章反转排序127
反转排序模式示例128
反转排序模式的mapreduce/hadoop实现129
运行示例134
第6章移动均137
示例1:时间序列数据(股票价格)137
示例2:时间序列数据(url访问数)138
形式定义139
pojo移动均解决方案140
mapreduce/hadoop移动均解决方案143
第7章购物篮分析155
mba目标155
mba的应用领域157
使用mapreduce的购物篮分析157
spark解决方案166
运行spark实现的yarn脚本179
第8章共同好友182
输入183
pojo共同好友解决方案183
mapreduce算法184
解决方案1:使用文本的hadoop实现187
解决方案2:使用arraylistoflongswritable的hadoop实现189
spark解决方案191
第9章使用mapreduce实现引擎201
购买过该商品的顾客还购买了哪些商品202
经常一起购买的商品206
连接210
0章基于内容的电影225
输入226
mapreduce阶段1226
mapreduce阶段2和阶段3227
spark电影实现234
1章使用马尔可夫模型的智能邮件营销.253
马尔可夫链基本254
使用mapreduce的马尔可夫模型256
spark解决方案269
2章k-均值聚类282
什么是k-均值聚类?285
聚类的应用领域285
k-均值聚类方法非形式化描述:分区方法286
k-均值距离函数286
k-均值聚类形式化描述287
k-均值聚类的mapreduce解决方案288
k-均值算法spark实现292
3章k-近邻296
knn分类297
距离函数297
knn示例298
knn算法非形式化描述299
knn算法形式化描述299
knn的类java非mapreduce解决方案299
spark的knn算法实现301
4章朴素贝叶斯315
训练和学示例316
条件概率319
深入分析朴素贝叶斯分类器319
朴素贝叶斯分类器:符号数据的mapreduce解决方案322
朴素贝叶斯分类器spark实现332
使用spark和mahout347
5章情感分析349
情感示例350
情感分数:正面或负面350
一个简单的mapreduce情感分析示例351
真实世界的情感分析353
6章查找、统计和列出大图中的所有三角形354
基本的图概念355
三角形的重要356
mapreduce/hadoop解决方案357
spark解决方案364
7章k-mer375
k-mer的输入数据376
k-mer应用376
k-mermapreduce/hadoop解决方案377
k-merspark解决方案378
8章dna测序390
dna测序的输入数据392
输入数据验证393
dna序列比对393
dna测试的mapreduce算法394
9章cox回归413
cox模型剖析414
使用r的cox回归415
cox回归应用416
cox回归pojo解决方案417
mapreduce输入418
使用mapreduce的cox回归419
第20章cochran-armitage趋势检验426
cochran-armitage算法427
cochran-armitage应用432
mapreduce解决方案435
第21章等位基因频率443
基本定义444
形式化问题描述448
等位基因频率分析的mapreduce解决方案449
mapreduce解决方案,阶段1449
mapreduce解决方案,阶段2459
mapreduce解决方案,阶段3463
染体x和y的特殊处理466
第22章t检验468
对bioset完成t检验469
mapreduce问题描述472
输入472
期望输出473
mapreduce解决方案473
spark实现476
第23章皮尔逊相关系数488
皮尔逊相关系数公式489
皮尔逊相关系数示例491
皮尔逊相关系数数据集492
皮尔逊相关系数pojo解决方案492
皮尔逊相关系数mapreduce解决方案493
皮尔逊相关系数的spark解决方案496
运行spark程序的yarn脚本516
使用spark计算斯皮尔曼相关系数517
第24章dna碱基520
fasta格式521
fastq格式522
mapreduce解决方案:fasta格式522
运行示例524
mapreduce解决方案:fastq格式528
spark解决方案:fasta格式533
spark解决方案:fastq格式537
第25章rna测序543
数据大小和格式543
mapreduce工作流544
rna测序分析概述544
rna测序mapreduce算法548
第26章基因聚合553
输入554
输出554
mapreduce解决方案(按单个值过滤和按均值过滤)555
基因聚合的spark解决方案567
spark解决方案:按单个值过滤567
spark解决方案:按均值过滤576
第27章线回归586
基本定义587
简单示例587
问题描述588
输入数据589
期望输出590
使用simpleregression的mapreduce解决方案590
hadoop实现类593
使用r线模型的mapreduce解决方案593
第28章mapreduce和幺半群600
概述600
幺半群的定义602
幺半群和非幺半群示例603
mapreduce示例:非幺半群606
mapreduce示例:幺半群608
使用幺半群的spark示例612
使用幺半群的结论618
函子和幺半群619
第29章小文件问题622
解决方案1:在客户端合并小文件623
解决方案2:用binefileinputformat解决小文件问题629
其他解决方案634
第30章mapreduce的大容量缓存635
实现方案636
缓存问题形式化描述637
一个精巧、可伸缩的解决方案637
实现lrumap缓存640
使用lrumap的mapreduce解决方案646
第31章bloom过滤器651bloom
过滤器质651
一个简单的bloom过滤器示例653
guava库中的bloom过滤器654
mapreduce中使用bloom过滤器655
附录abioset659
附录bsparkrdd659
参书目677
内容简介:
数据算法:hadoop/park大数据处理介绍了很多基本设计模式、优化技术和数据挖掘及机器学解决方案,以解决生物信息学、基因组学、统计和社交网络分析等领域的很多问题。这还概要介绍了mapreduce、hadoop和park。主要包括:完成超大量交易的购物篮分析。数据挖掘算法(k均值、knn和朴素贝叶斯)。使用超大基因组数据完成dna和rna测序。朴素贝叶斯定理和马尔可夫链实现数据和市场预测。算法和成对文档相似。线回归、cox回归和皮尔逊(pearon)相关分析。等位基因频率和dna挖掘。社交网络分析(系统、三角形和情感分析)。
作者简介:
mahmoudparian,计算机科学博士,是一位热衷于实践的软件专家,作为开发人员、设计人员、架构师和作者,他有30多年的软件开发经验。目前着illumina的大数据团队,在过去15年间,他主要从事java(服务器端)、数据库、mapreduce和分布式计算的有关工作。mahmoud还著有bcrecipe和bcmetadata,myql,andoraclerecipe等书(均由apre出版)。
精彩内容:
随着大规模搜索引擎(如google和yahoo!)、基因组分析(dna测序、rna测序和生物标志物分析)以及社交网络(如facebook和twitter)的不断发展,需要生成和处理的数据量已经超过了千万亿字节。为了满足如此庞大的计算需求,我们需高效、可伸缩的并行算法。mapreduce范式是解决这些问题的一个框架。mapreduce是一个软件框架,可以采用并行、分布式方式处理gb、tb,甚至pb级的大数据集,同时它也是一个在商用服务器集群之上完成大规模数据处理的执行框架。实现mapreduce的方法有很多,不过这本书中我们主要关注apachepark和mapreduce/hadoop。你将通过简单而具体的示例来了解如何用park和hadoop实现mapreduce。这本书将为以下领域提供了基本分布式算法(分别用mapreduce、hadoop和park实现),并按照这些领域组织本书的章节:.基本设计模式。.数据挖掘和机器学。.生物信息、基因组和统计。.优化技术。mapreduce是什么?mapreduce是一种编程范式,可以利用集群环境的成百上千台服务器实现强大的可伸缩。mapreduce一词早源于函数式编程,由google在一篇名为“mapreduce:implifieddataproceingonlargecluter”的文章中率先提出。google的mapreduce[8]实现是一个专用解决方案,还没有向公众发布。3reduce():.(key2.[value2]).→.[(key3.value3)]这本书中会使用map()函数和reduce()函数的非形式化表示,我会用中括号([])表示列表。在图p1中,输入数据划分为小块(这里有5个输入分区),每个小块分别发送给一个映器。各个映器会生成任意数目的键值对。映器的输出如表p1所示。表p1:映器的输出k1v11k2v21k1v12k2v22k2v23在这个例子中,所有映器只生成两个的键:{k1k2}。所有映器的工作完成时,这些键会经过排序、洗牌、分组,然后发送给归约器。后,归约器将生成所需的输出。对于这个例子,我们有两个归约器,分别用{k1k2}键标识(见表p2)。表p2:归约器的输入键值k1{v11v12}k2{v21v22v23}一旦所有映器的工作完成,归约器会开始它们的执行过程。每个归约器创建的输出可以包含任意数目的新键值对(可以0个,也可以多个)。编写map()函数和reduce()函数时,要确保解决方案是可伸缩的。例如,如果使用了某种数据结构(如lit、array或hahmap),而这种数据结构不能方便地存放在商用服务器的内存中,这个解决方案不具有可伸缩。需要说明,map()和reduce()函数都在基础的商用服务器中执行,这些商用服务器可能至多有32gb或64gbram(注意,这只是一个例子。如今的服务器可能已经有256gb或512gbram,接下来几年中基础服务器可能甚至有1tb的ram)。因此,可伸缩是mapreduce的核心。如果你的mapreduce解决方案不能很好的伸缩,不能称为一个mapreduce解决方案。在这里,我们谈到可伸缩时,是指“横向扩容”(calingout),横向扩容表示在系统中增加更多商用节点。mapreduce主要虑横向扩容(而不是纵向扩容(calingup),这表示为单个节点增加前言|5资源,比如内存和cpu)。例如,如果dna测序需要3台服务器用60小时完成,横向扩容到50台类似的服务器时,可以在不到2小时的时间内完成同样的dna测序。mapreduce的核心概念是将输入数据集映到一个键值对集合,然后对所有包含相同键的键值对完成归约。尽管基本概念很简单,不过如果虑以下方面,可以看到这个概念确实很强大、很有效:.几乎所有数据都可以映到键值对。.键和值可以是任意类型:tring、integer、fatq(用于dna测序)、用户自定义的定制类型,当然,也可以是键值对本身。mapreduce如何在一组服务器上扩展?mapreduce是如何工作的?关键在于,从概念上讲,mapreduce的输入是一个记录列表(每个记录可以是一行或多行数据)。这些输入记录会划分并传递到集群中的多台服务器,由map()函数使用。map()计算的结果是一个键值对列表。然后reduce()函数取各个包含相同键的值集,将它们分别组合为一个值(或一个值集)。换句话说,map()函数是由一组数据块生成键值对,reduce()则是组合map()生成的数据输出,从而能得到所需要的结果,而不是一组键值对。mapreduce的主要优点之一是它的“不共享”(harednothing)数据处理台。这意味着所有映器可以独立地工作,而且映器完成它们的任务时,归约器也能独立地开始工作(映器或归约器之间不共享任何数据或临界区。如果有临界区,这会减慢分布式计算的速度)。基于这种“不共享”范式,我们可以很容易地编写map()函数和reduce()函数,而且能轻松、有效地提高并行。mapreduce的简单解释如何给出mapreduce的一个简单解释?设我们想要统计一个图书馆的藏书数量,这个图书馆拥有1000个书架,我们要把后的结果报告给图书管理员。下面给出两种可能的mapreduce解决方案:.方案1(使用map()和reduce()):─map():.聘请1000个工人;每个工人统计一个书架的藏书数量。─reduce():所有工人集合在一起,把他们各自的统计结果汇起来(向图书管理员报告他们的统计结果)。.方案2(使用map().bine()和reduce()):─map():聘请1110个员工(1000名工人,100位经理,10位主管(每位主管负责管理10个经理,每个经理要管理10名工人);每个工人负责统计一个书架,将结果报告给他的经理。─bine():每个主管负责的10个经理将各自的统计结果汇报告给这位主管。─reduce():所有主管集合起来,把他们各自的统计结果汇起来(向图书管理员报告他们的统计结果)。什么时候使用mapreducemapreduce永远适用吗?是否定的。设我们得到了大数据,如果可以划分这个数据,每个分区能独立地进行处理,可以虑使用mapreduce算法。例如,由于图算法采用迭代方法,所以mapreduce并不是很适合。不过,如果要对大量数据完成分组或聚集,mapreduce范式非常适用。要想使用mapreduce来处理图,可以虑apachegiraph(://giraph.apache.org/)和apacheparkgraphx(://park.apache.org/graphx/)项目。下面这些情况也不适合使用mapreduce:.一个值的计算依赖于之前计算的值。比如,斐波那契数列是一个很好的例子,其中每个值都是前两个值之和:f(k..2).=.f(k..1)..f(k).数据集很小,可以在一台机器上计算。这种情况下,好作为一个reduce(map(data))作来完成,而不需要经过整个mapreduce执行过程。.需要同步来处理共享数据。.所有输入数据都可以放在内存中。.一个作依赖其他作。.基本计算是处理器敏感型作。不过,很多情况下mapreduce都很适用,如:.必须处理大量输入数据(例如,对大量数据完成聚集或计算统计结果)。.需要利用并行分布式计算、数据存储和数据本地化。.可以独立地完成很多任务而无需同步。.可以利用排序和洗牌。.需要容错,不能接受作业失败。mapreduce不是什么mapreduce是实现分布式计算的一项开创技术,不过这个技术还蒙着很多神秘的面纱,这里来揭开它的一些面纱:.mapreduce不是一个编程语言,而是一个框架,可以使用java、cala和其他编程语言在这个框架上开发分布式应用。.mapreduce的分布式文件系统不能取代关系型数据库管理系统(如myql或oracle)。一般地,mapreduce的输入是纯文本文件(一个映器输入记录可以有一行或多行)。.mapreduce框架主要设计用于批处理,所以不要期望能够在几秒钟内迅速得到结果。不过,如果适当地使用集群,确实可以得到近实时的响应。.并不能把mapreduce作为所有软件问题的解决方案。为什么使用mapreduce?前面我们讨论过,mapreduce的目标是通过增加更多的商用服务器来实现“横向扩容”。这与“纵向扩容”是不同的(纵向扩容是为系统中的单个节点增加更多资源,如内存和cpu)。纵向扩容可能成本很高,有时由于成本以及软件或硬件等原因,可能根本无法增加更多的资源。有时人们会提出一些基于主存的新兴算法来解决数据问题,但是由于主存是一个瓶颈,所以这些算法缺乏可伸缩。例如,在dna测序分析中,可能需要超过512gb的ram,这非常昂贵,而且不具有可伸缩。如果要提高计算能力,可能需要把计算分布到多个机器上完成。例如,要完成500gb样本数据的dna测序,可能需要一个服务器计算4天才能完成比对阶段。利用mapreduce,60台服务器可以把计算时间锐减到2小时以内。要处理大量的数据,必须能够将这些数据划分为小块来进行处理,再组合得到终的结果。mapreduce/hadoop和park/hadoop可以帮助你提高计算能力,你只需要写两个函数:map()和reduce()。显然,mapreduce范式为数据分析领域提供了一个强大的新工具,近来,归功于hadoop等开源解决方案,这个新工具得到了越来越多的关注。基本说来,mapreduce提供了以下优点:.编程模型基础架构。.能够编写在数百甚至上千台机器上运行的程序。.自动并行化和分布.容错(如果一台服务器宕机,作业可以由其他服务器完成)。.程序/作业调度、检查和监控。hadoop和parkhadoop(://hadoop.apache.org/)是mapreduce应用实现的事实标准。它由一个或多个主节点和任意多个从节点组成。hadoop提出“数据中心是计算机”,通过提供map()函数和reduce()函数(由程序员定义),允许应用开发人员或程序员利用这些数据中心,从而简化分布式应用。hadoop高效地实现了mapreduce范式,很容易学,这是一个可以处理tb甚至pb级大数据的强大工具。在这本书中,大部分mapreduce算法都采用实例的形式给出(已编译的完整实用解决方案),并且在java/mapreduce/hadoop和/或java/park/hadoop中得到实现。hadoop和park(://park.apache.org/)框架是开源的,允许我们在分布式环境中完成大数据量的计算和数据处理。这些框架通过提供“横向扩容”方法来支持可伸缩,可以采用mapreduce范式在数千台服务器上运行密集型计算。与hadoop的api相比,park的api提供了更高层的抽象。由于这个原因,只用一个java驱动器类可以描述park解决方案。hadoop和park是两个不同的分布式软件框架。hadoop是一个mapreduce框架,在这个框架上可以运行支持map()、bine()和reduce()函数的作业。mapreduce范式很适合单趟计算[先map(),再reduce()],不过对于多趟算法效率则很低。park不是一个mapreduce框架,不过很容易用来支持mapreduce框架的功能,它提供了一个适当的api可以处理map()和reduce()功能。park并不限于先完成映阶段再完成归约阶段。park作业可以是由映和/或归约/洗牌阶段构成的一个任意dag(有向无环图)。park程序可以使用hadoop运行,也可以不使用hadoop,另外park可以使用hadoop分布式文件系统(hadoopditributedfileytem,hdf)或者其他持久存储来实现输入/输出。基本上,对于一个给定的park程序或作业,park引擎会创建将在集群上完成的任务阶段所构成的一个有向无环图,hadoop/mapreduce则不同,它会创建由两个预定义阶段(映和归约)构成的有向无环图。注意,park创建的dag可以包含任意多个阶段。与hadoop/mapreduce相比,这使得大多数park作业都能更快地完成,因为简单的作业只需要一个阶段可以完成,更复杂的任务也可以一起完成(包括多个阶段),而不需要划分为多个作业。前面已经提到,相比于mapreduce/hadoop,park的api提供了更高层的抽象。例如,park的几行代码可能等价于mapreduce/hadoop的30~40行代码。尽管hadoop和park等框架建立一个“不共享”范式基础之上,不过它们确实也支持在所有集群节点上共享不可变的数据结构。在hadoop中,可以通过hadoop的configuration对象将这些值传递给映器和归约器。除了broadcat只读对象,park还支持只写累加器。hadoop和park为大数据处理提供了以下好处:可读hadoop和park支持容错(任何节点宕机不会丢失所需的计算结果)。可伸缩hadoop和park支持庞大的服务器集群。分布式处理在park和hadoop中,输入数据和处理是分布式的(可以全面支持大数据)。并行化可以在节点集群上并行地执行计算。hadoop主要设计用于批处理,不过如果有足够的内存/ram,park可以用于近实时处理。要了解parkrdd(reilientditributeddataet,弹分布式数据集)的基本用法,可以参附录b。那么mapreduce/hadoop的核心组件有哪些?.输入/输出数据包括键值对。一般地,键是整型、长整型和字符串,而值可以是几乎任何数据类型
— 没有更多了 —
以下为对购买帮助不大的评价