描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302453758
《Hadoop Spark大数据巨量分析与机器学习整合开发实战》书中的范例程序免费送给读者:网址:http://pan.baidu.com/s/1qYMtjNQ
我们建立了本书的Facebook粉丝团,欢迎读者们加入。粉丝团会不定期贴文,分享*的Hadoop或Spark信息,你也可以提问并参与交流。粉丝团网址:http://www.weibo.com/hadoopsparkbook
在《Hadoop Spark大数据巨量分析与机器学习整合开发实战》中,不是对这些原理进行纯理论的阐述,而是提供了丰富的上机实践操作和范例程序,这样极大地降低了读者学习大数据技术的门槛,对于需要直接上机实践的学习者而言,本书更像是一本大数据学习的实践上机手册。书中首先展示了如何在单台 Windows 系统上通过 Virtual Box 虚拟机安装多台Linux虚拟机,而后建立 Hadoop 集群,再建立 Spark 开发环境。搭建这个上机实践的平台并不限制于单台实体计算机,主要是考虑个人读者上机实践的实际条件和环境。对于有条件的公司和学校,参照这个搭建过程,同样可以将实践平台搭建在多台实体计算机上。在搭建好大数据上机实践的软硬件环境之后,就可以在各个章节的学习中结合本书提供的范例程序逐一设置、修改、调试和运行,从中学到大数据实践应用中核心技术的真谛——对大数据进行高效的“加工”,萃取大数据中蕴含的“智能和知识”,实现数据的“增值”,并*终将其应用于实际工作或者商业中。大数据与云计算的关系密不可分,涉及众多关键技术,如分布式处理、分布式数据库和云存储、虚拟化技术等,本书并未在这些方面深入讲解,因为它们不是本书的重点,建议需要深入学习这方面内容的读者去寻找相关出版物,结合《Hadoop Spark大数据巨量分析与机器学习整合开发实战》的实践来丰富和完善自己的大数据知识体系。
《Hadoop Spark大数据巨量分析与机器学习整合开发实战》非常适合于学习大数据基础知识的初学者阅读,更适合正在学习大数据理论和技术的人员作为上机实践用的教材。
第1章 大数据与机器学习 1
1.1 大数据定义 2
1.2
Hadoop简介 2
1.3
Hadoop HDFS分布式文件系统 3
1.4
Hadoop MapReduce的介绍 5
1.5
Spark的介绍 6
1.6 机器学习的介绍 8
第2章 VirtualBox虚拟机软件的安装 11
2.1
VirtualBox的下载和安装 12
2.2 设置VirtualBox语言版本 16
2.3 设置VirtualBox存储文件夹 17
2.4 在VirtualBox创建虚拟机 18
第3章 Ubuntu Linux操作系统的安装 23
3.1 下载安装Ubuntu的光盘文件 24
3.2 在Virtual设置Ubuntu虚拟光盘文件 26
3.3 开始安装Ubuntu 28
3.4 启动Ubuntu 33
3.5 安装增强功能 34
3.6 设置默认输入法 38
3.7 设置“终端”程序 40
3.8 设置“终端”程序为白底黑字
42
3.9 设置共享剪贴板 43
第4章 Hadoop Single Node Cluster的安装 46
4.1 安装JDK 47
4.2 设置SSH无密码登录 50
4.3 下载安装Hadoop 53
4.4 设置Hadoop环境变量 56
4.5 修改Hadoop配置设置文件 58
4.6 创建并格式化HDFS目录 62
4.7 启动Hadoop 63
4.8 打开Hadoop
ResourceManager Web界面 66
4.9
NameNode HDFS Web界面 67
第5章 Hadoop Multi Node Cluster的安装 69
5.1 把Single Node
Cluster复制到data1 71
5.2 设置VirtualBox网卡 73
5.3 设置data1服务器 76
5.4 复制data1服务器到data2、data3、master 84
5.5 设置data2、data3服务器 87
5.6 设置master服务器 91
5.7
master连接到data1、data2、data3创建HDFS目录 94
5.8 创建并格式化NameNode
HDFS目录 98
5.9 启动Hadoop
Multi Node Cluster 99
5.10
打开Hadoop ResourceManager Web界面 102
5.11
打开NameNode Web界面 103
第6章 Hadoop HDFS命令 104
6.1 启动Hadoop
Multi-Node Cluster 105
6.2 创建与查看HDFS目录 107
6.3 从本地计算机复制文件到HDFS
109
6.4 将HDFS上的文件复制到本地计算机
114
6.5 复制与删除HDFS文件 116
6.6 在Hadoop HDFS
Web用户界面浏览HDFS 118
第7章 Hadoop MapReduce 122
7.1 介绍wordCount.Java
123
7.2 编辑wordCount.Java
124
7.3 编译wordCount.Java
127
7.4 创建测试文本文件 129
7.5 运行wordCount.Java
130
7.6 查看运行结果 131
7.7
Hadoop MapReduce的缺点 132
第8章 Spark的安装与介绍 133
8.1
Spark的Cluster模式架构图 134
8.2
Scala的介绍与安装 135
8.3 安装Spark 138
8.4 启动spark-shell交互界面 141
8.5 设置spark-shell显示信息 142
8.6 启动Hadoop 144
8.7 本地运行spark-shell程序 145
8.8 在Hadoop YARN运行spark-shell
147
8.9 构建Spark
Standalone Cluster执行环境 149
8.10
在Spark Standalone运行spark-shell 155
第9章 Spark RDD 159
9.1 RDD的特性 160
9.2 基本RDD“转换”运算 161
9.3 多个RDD“转换”运算 167
9.4 基本“动作”运算 169
9.5
RDD Key-Value 基本“转换”运算 171
9.6 多个RDD
Key-Value“转换”运算 175
9.7
Key-Value“动作”运算 178
9.8
Broadcast广播变量 181
9.9
accumulator累加器 184
9.10
RDD Persistence持久化 186
9.11
使用Spark创建WordCount 188
9.12
Spark WordCount详细解说 191
第10章 Spark的集成开发环境 195
10.1
下载与安装eclipse Scala IDE 197
10.2
下载项目所需要的Library 201
10.3
启动eclipse 205
10.4
创建新的Spark项目 206
10.5
设置项目链接库 210
10.6
新建scala程序 211
10.7
创建WordCount测试文本文件 213
10.8
创建WordCount.scala 213
10.9
编译WordCount.scala程序 215
10.10
运行WordCount.scala程序 217
10.11
导出jar文件 220
10.12
spark-submit的详细介绍 223
10.13
在本地local模式运行WordCount程序 224
10.14
在Hadoop yarn-client运行WordCount程序 226
10.15
在Spark Standalone Cluster上运行WordCount程序 230
10.16
本书范例程序的安装说明 231
第11章 创建推荐引擎 236
11.1
推荐算法介绍 237
11.2
“推荐引擎”大数据分析使用场景 237
11.3
ALS推荐算法的介绍 238
11.4
ml-100k推荐数据的下载与介绍 240
11.5
使用spark-shell导入ml-100k数据 242
11.6
查看导入的数据 244
11.7
使用ALS.train进行训练 247
11.8
使用模型进行推荐 250
11.9
显示推荐的电影名称 252
11.10
创建Recommend项目 255
11.11
Recommend.scala程序代码 257
11.12
创建PrepareData()数据准备 259
11.13
recommend()推荐程序代码 261
11.14
运行Recommend.scala 263
11.15
创建AlsEvaluation.scala调校推荐引擎参数 266
11.16
创建PrepareData()数据准备 269
11.17
进行训练评估 270
11.18
运行AlsEvaluation 279
11.19
修改Recommend.scala为参数组合 281
第12章 StumbleUpon数据集 282
12.1
StumbleUpon数据集简介 283
12.2
下载StumbleUpon数据 285
12.3
用LibreOffice Calc 电子表格查看train.tsv 288
12.4
二元分类算法 291
第13章 决策树二元分类 292
13.1
决策树的介绍 293
13.2
创建Classification项目 294
13.3
开始输入RunDecisionTreeBinary.scala程序 296
13.4
数据准备阶段 298
13.5
训练评估阶段 303
13.6
预测阶段 308
13.7
运行RunDecisionTreeBinary.scala 311
13.6
修改RunDecisionTreeBinary调校训练参数 313
13.7
运行RunDecisionTreeBinary进行参数调校 320
13.8
运行RunDecisionTreeBinary不进行参数调校 323
第14章 逻辑回归二元分类 326
14.1
逻辑回归分析介绍 327
14.2
RunLogisticRegression WithSGDBinary.scala程序说明 328
14.3
运行RunLogisticRegression WithSGDBinary.scala进行参数调校 331
14.4
运行RunLogisticRegression WithSGDBinary.scala不进行参数调校 335
第15章 支持向量机SVM二元分类 337
15.1
支持向量机SVM算法的基本概念 338
15.2
RunSVMWithSGDBinary.scala 程序说明 338
15.3
运行SVMWithSGD.scala进行参数调校 341
15.4
运行SVMWithSGD.scala不进行参数调校 344
第16章 朴素贝叶斯二元分类 346
16.1
朴素贝叶斯分析原理的介绍 347
16.2
RunNaiveBayesBinary.scala程序说明 348
16.3
运行NaiveBayes.scala进行参数调校 351
16.4
运行NaiveBayes.scala不进行参数调校 353
第17章 决策树多元分类 355
17.1
“森林覆盖植被”大数据问题分析场景 356
17.2
UCI Covertype数据集介绍 357
17.3
下载与查看数据 359
17.4
创建RunDecisionTreeMulti.scala 361
17.5
修改RunDecisionTreeMulti.scala程序 362
17.6
运行RunDecisionTreeMulti.scala进行参数调校 367
17.7
运行RunDecisionTreeMulti.scala不进行参数调校 371
第18章 决策树回归分析 373
18.1
Bike Sharing大数据问题分析 374
18.2
Bike Sharing数据集 375
18.3
下载与查看数据 375
18.4
创建RunDecisionTreeRegression.scala 378
18.5
修改RunDecisionTreeRegression.scala 380
18.6
运行RunDecisionTreeRegression. scala进行参数调校 389
18.7
运行RunDecisionTreeRegression. scala不进行参数调校 392
第19章 使用Apache
Zeppelin 数据可视化 394
19.1
Apache Zeppelin简介 395
19.2
安装Apache Zeppelin 395
19.3
启动Apache Zeppelin 399
19.4
创建新的Notebook 402
19.5
使用Zeppelin运行Shell 命令 403
19.6
创建临时表UserTable 406
19.7
使用Zeppelin运行年龄统计Spark SQL 407
19.8
使用Zeppelin运行性别统计Spark SQL 409
19.9
按照职业统计 410
19.10
Spark SQL加入文本框输入参数 412
19.11
加入选项参数 414
19.12
同时显示多个统计字段 416
19.13
设置工具栏 419
19.14
设置段落标题 420
19.15
设置Paragraph段落的宽度 422
19.16
设置显示模式 423
1.1 大数据定义1.2 Hadoop简介1.3 Hadoop HDFS分布式文件系统1.4 Hadoop MapReduce的介绍1.5 Spark的介绍1.6 机器学习的介绍
1.1 大数据定义大数据(Big data)又称为巨量资料、巨量数据或海量数据。一般来说大数据的特性可归类为3V:? Volume(大量数据)? 因特网、企业 IT、物联网、社区、短信、电话、网络搜索、在线交易等,随时都在快速累积庞大的数据。? 数据量很容易达到TB(Terabyte,1024 GB),甚至 PB(Petabyte,1024TB)或EB(Exabyte,1024 PB)的等级。? Variety(多样性)大数据的数据类型非常多样化,可分为非结构化信息和结构化信息。? 非结构化信息:文字、图片、图像、视频、音乐、地理位置信息、个人化信息——如社区、交友数据等。? 结构化信息:数据库、数据仓库等。? Velocity(时效性)? 数据的传输流动:随着带宽越来越大、设备越来越多,每秒产生的数据流越来越大。? 组织必须能实时处理大量的信息:因为时间太久就失去了数据的价值,数据必须能在短时间内得出分析结果。大数据的影响已经深入到各个领域和行业,在商业、经济及其他领域中,将大量数据进行分析后,就可得出许多数据的关联性。可用于预测商业趋势、营销研究、金融财务、疾病研究、打击犯罪等。决策行为将基于数据和分析的结果,而不是依靠经验和直觉。1.2 Hadoop 简介Hadoop是存储与处理大量数据的平台,是Apache软件基金会的开放源码、免费且广泛使用的软件。Hadoop名称来自于原作者孩子的黄色小象玩具。这个名字容易拼字与发音,适合作为软件开发代码,黄色小象因此成为Hadoop的标志。? Hadoop的发展历史2002年Doug Cutting与Mike Cafarelia开始进行Nutch项目。2003年Google发表GFS(Google File System)与MapReduce论文。2004年Doug Cutting开始将DFS与MapReduce加入Nutch项目。2006年Doug Cutting加入Yahoo团队,并将Nutch改名为Hadoop。2008年Yahoo使用Hadoop包含了910个集群,对1TB的数据排序花了297秒。? Hadoop特性特性 说明可扩展性(Scalable) 由于Hadoop采用分布式计算与存储,当我们扩充容量或运算时,不需要更换整个系统,只需要增加新的数据节点服务器即可经济性(Economical) 由于Hadoop采用分布式计算与存储,不必使用昂贵高端的服务器,只需一般等级的服务器就可架构出高性能、高容量的集群弹性(Flexible) 传统的关系数据库存储数据时必须有数据表结构schema(各个数据对象的集合),然而Hadoop存储的数据是非结构化(schema-less)的,也就是说可以存储各种形式、不同数据源的数据可靠性(Reliable) Hadoop采用分布式架构,因此即使某一台服务器硬件坏掉,甚至整个机架坏掉,HDFS仍可正常运行,因为数据还会有另外2个副本1.3 Hadoop HDFS分布式文件系统 HDFS采用分布式文件系统(Hadoop Distributed File System),可以由单台服务器扩充到数千台服务器,如图1-1所示。 图1-1 HDFS采用分布式文件系统的可扩充架构? NameNode服务器负责管理与维护HDFS目录系统并控制文件的读写操作。? 多个DataNode服务器负责存储数据,在图1-1中我们只列出3个DataNode,实际上大型的集群可以有成千上万个节点。? HDFS设计的前提与目标? 硬件故障是常态而不是异常(Hardware Failure)HDFS是设计运行在低成本的普通服务器上的。硬件故障是常态,而不是异常,所以HDFS被设计成具有高度容错能力,能够实时检测错误并且自动恢复,这是HDFS核心的设计目标。? Streaming流式数据存取(Streaming Data Access)运行在HDFS上的应用程序会通过Streaming存取数据集。HDFS的主要设计是批处理,而不是实时互动处理,优点是可以提高存取大量数据的能力,但是牺牲了响应时间。? 大数据集(Large Data Sets)为了存储大数据集,HDFS提供了cluster集群架构,用于存储大数据文件,集群可扩充至数百个节点。? 简单一致性模型(Simple Coherency Model)HDFS的存取模式是一次写入多次读取(write-once-read-many)。一个文件被创建后就不会再修改。这样设计的优点是:可以提高存储大量数据的能力,并简化数据一致性的问题。? 移动“计算”比移动“数据”成本更低(Moving Computation is Cheaper than Moving Data)当我们的cluster集群存储了大量的数据时,要搬移数据必须耗费大量的时间成本。因此如果我们有“计算”数据的需求时,就会将“计算功能”在接近数据的服务器中运行,而不是搬移数据。? 跨硬件与软件平台HDFS在设计时就考虑到平台的可移植性。这种特性有利于Hadoop的推广。? HDFS文件存储架构(见图1-2) 图1-2 HDFS文件存储架构? 文件分割? 当用户以HDFS命令要求存储文件时,系统会将文件切割为多个区块(Block),每个区块是64MB。在图1-2中,文件被分割为A、B、C共3个区块。? 区块副本策略? 一个文件区块默认会复制成3份,你可以在Hadoop配置中设置文件区块要创建几个副本。? 文件区块损坏时,NameNode会自动寻找位于其他DataNode上的副本来恢复数据,维持3份的副本策略。? 机架感知? 在图1-2中,共有Rack1、Rack2、Rack3共3个机架,每个机架都有4台DataNode服务器。? HDFS具备机架感知功能,如图1-2所示。以Block C为例:份副本放在Rack1机架的节点,第二份放在同机架Rack1的不同节点,后一份放在不同机架Rack3的不同节点。? 这样设计的好处是防止数据遗失,有任何机架出现故障仍可以保证恢复数据,提高网络性能。1.4 Hadoop MapReduce的介绍利用大数据进行数据分析处理时,数据量庞大,所需的运算量也巨大。Hadoop MapReduce的做法是采用分布式计算的技术:? Map将任务分割成更小任务,由每台服务器分别运行,如图1-3所示。? Reduce将所有服务器的运算结果汇总整理,返回后的结果。通过MapReduce方式,可以在上千台机器上并行处理巨量的数据,大大减少数据处理的时间。? MapReduce 版本2.0 YARNHadoop 新的MapReduce架构称为YARN(Yet Another Resource Negotiator,另一种资源协调者),是效率更高的资源管理核心。可以到下列网址查看YARN架构图(见图1-4):http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html 图1-4 YARN资源管理系统的架构图从图1-4中可以看到:? 在Client客户端,用户会向Resource Manager请求执行运算(或执行任务)。? 在NameNode会有Resource Manager统筹管理运算的请求。? 在其他的DataNode会有Node Manager负责运行,以及监督每一个任务(task),并且向Resource Manager汇报状态。? Hadoop MapReduce的计算框架如图1-5所示,Hadoop MapReduce在运算时,需要将中间产生的数据存储在硬盘中。然而,磁盘I/O往往是性能的瓶颈,因此会有读写数据延迟的问题。 图1-5 Hadoop MapReduce运算过程的示意图在后续章节,我们介绍的Spark是基于内存的计算框架,可以大幅提升性能。1.5 Spark的介绍Apache Spark是开放源码的集群运算框架,由加州大学伯克利分校的AMPLab开发。Spark是一个弹性的运算框架,适合进行Spark Streaming数据流处理、Spark SQL互动分析、MLlib机器学习等应用,因此Spark可成为一个用途广泛的大数据运算平台。Spark允许用户将数据加载到cluster集群的内存中存储,并多次重复运算,非常适合用于机器学习的算法。? Spark in-memory的计算框架如图1-6所示,Spark是基于内存的计算框架。Spark在运算时,将中间产生的数据暂存在内存中,因此可以加快运行速度。尤其是需要反复操作的次数越多,所需读取的数据量越大,就越能看出Spark的性能。Spark在内存中运行程序,命令运行速度(或命令周期)能比Hadoop MapReduce的命令运行速度快上100倍,即便是运行于硬盘上时Spark的速度也能快上10倍。 图1-6 Spark in-memory的计算框架? Spark发展历史年代 说明2009 由Matei Zaharia在加州大学伯克利分校的AMPLab开发2010 通过BSD授权条款发布开放源码2013 该项目被捐赠给Apache软件基金会2014/2 Spark成为Apache的项目2014/11 Databricks团队使用Spark刷新数据排序的世界纪录2015/3 Spark 1.3.1版发布? Spark特色特色 说明命令周期短 Spark是基于内存计算的开放源码集群运算系统,比原先的Hadoop MapReduce快100倍易于开发程序 目前Spark支持多种语言:Scala、Python、Java,也就是说开发者可以根据应用的环境来决定使用哪一种语言开发Spark程序,更具弹性,更符合开发时的需求Hadoop兼容 Spark提供了Hadoop Storage API,使它支持Hadoop的HDFS存储系统。并且支持Hadoop YARN,可共享存储资源与运算,而且几乎与Hive完全兼容可在各平台运行 ? 我们可以在本地端的机器上运行Spark程序,只需要import Spark的链接库即可? 也可以在自有的群集上运行Spark程序,例如Mesos、Hadoop YARN等自行建立的群集? 针对更大规模的计算工作,我们可以选择将Spark程序送至AWS的EC2平台上运行,按照用户使用的计算资源计费? Spark主要功能(参考图1-7) 图1-7 Spark的主要功能模块功能 说明Spark SQL Spark SQL可以使用熟知的SQL查询语言来运行数据分析Spark Streaming Spark Streaming可实现实时的数据串流的处理,具有大数据量、容错性、可扩充性等特点GraphX GraphX是Spark上的分布式图形处理架构,可用图表计算MLlib MLlib是一个可扩充的Spark机器学习库,可使用许多常见的机器学习算法,简化大规模机器学习的时间。算法包括分类与回归、支持向量机、回归、线性回归、决策树、朴素贝叶斯、聚类分析、协同过滤等1.6 机器学习的介绍由于机器学习技术的进步,应用相当广泛,例如推荐引擎、定向广告、需求预测、垃圾邮件过滤、医学诊断、自然语言处理、搜索引擎、欺诈检测、证券分析、视觉识别、语音识别、手写识别等。? 机器学习架构机器学习(Machine Learning)是通过算法,使用历史数据进行训练,训练完成后会产生模型。未来当有新的数据提供时,我们可以使用训练产生的模型进行预测。机器学习训练用的数据是由Features、Label组成的。? Feature:数据的特征,例如湿度、风向、风速、季节、气压。? Label:数据的标签,也就是我们希望预测的目标,例如降雨(0.不会下雨、1.会下雨)、天气(1.晴天、2.雨天、3.阴天、4.下雪)、气温。如图1-8所示,机器学习可分为以下两个阶段。? 训练阶段(Training)训练数据是过去累积的历史数据,可能是文本文件、数据库或其他来源。经过Feature Extraction(特征提取),产生Feature(数据特征)与Label(预测目标),然后经过机器学习算法的训练后产生模型。? 预测阶段(Predict)新输入数据(可能是文本文件、数据库或其他来源),经过Feature Extraction(特征提取)产生Feature,使用训练完成的模型进行预测,后产生预测结果。 图1-8 机器学习的两个阶段? 机器学习分类对于有监督的学习(Supervised Learning),从现有数据我们希望预测的答案有下列分类。? 二元分类我们已知湿度、风向、风速、季节、气压等数据特征,希望预测当天是否会下雨(0. 不会下雨、1. 会下雨)。因为希望预测的目标Label只有2种选项,所以就像是非题。? 多元分类我们已知湿度、风向、风速、季节、气压等数据特征,希望预测当天的天气(1. 晴天、2. 雨天、3. 阴天、4. 下雪)。因为希望预测的目标Label有多个选项,所以就像选择题。? 回归分析我们已知湿度、风向、风速、季节、气压等数据特征,希望预测当天的气温。因为希望预测的目标Label是连续值,所以就像是计算题。但是对于无监督的学习(Unsupervised Learning),从现有数据我们不知道要预测的答案,所以没有Label(预测目标)。cluster聚类分析的目的是将数据分成几个相异性的群组,而群组内的相似性。根据上述内容我们可以整理出下列表格。分类 算法 Features(特征) Label(预测目标)有监督的学习 二元分类(Binary Classification) 湿度、风向、风速、季节、气压…… 只有0与1选项(是非题)0. 不会下雨、1. 会下雨有监督的学习 多元分类(Multi-Class Classification) 湿度、风向、风速、季节、气压…… 有多个选项(选择题)1. 晴天、2. 雨天、3. 阴天、4. 下雪有监督的学习 回归分析(Regression) 湿度、风向、风速、季节、气压…… 值是数值(计算题)温度可能是 -50~50度的范围无监督的学习 聚类分析(Clustering) 湿度、风向、风速、季节、气压…… 无LabelCluster聚类分析;目的是将数据分成几个相异性的群组,而群组内的相似性机器学习分类可以整理成图1-9。 图1-9 机器学习的分类
评论
还没有评论。