新書推薦:

《
DK园艺的科学(100+个与园艺有关的真相,让你读懂你的植物,打造理想花园。)
》
售價:NT$
500.0

《
牛津呼吸护理指南(原书第2版) 国际经典护理学译著
》
售價:NT$
959.0

《
窥夜:全二册
》
售價:NT$
407.0

《
有底气(冯唐半生成事精华,写给所有人的底气心法,一个人内核越强,越有底气!)
》
售價:NT$
347.0

《
广州贸易:近代中国沿海贸易与对外交流(1700-1845)(一部了解清代对外贸易的经典著作!国际知名史学家深度解读鸦片战争的起源!)
》
售價:NT$
454.0

《
精神分析:一项极具挑战性的职业
》
售價:NT$
347.0

《
产业社群:超级群体引领新经济浪潮
》
售價:NT$
316.0

《
卢布:一部政治史 (1769—1924)(透过货币视角重新解读俄罗斯兴衰二百年!俄罗斯历史研究参考读物!)
》
售價:NT$
556.0
|
編輯推薦: |
作者开展大数据分析项目研究方法的总结和归纳,内容极基实用
|
內容簡介: |
本书围绕大数据分析方法,阐述了大数据采集方法,大数据清洗方法,详细介绍了大数据存储方法,大数据分布式计算方法,大数据分析模型构建方法,大数据分析模型检验方法,大数据分析模型优化方法。全书提供了大量的案例,对程序进行了详细的分析和解读。本书的实用价值较高,对从事大数据分析的科研人员、研发人员具有一定的借鉴参考作用。
|
關於作者: |
陆红,副教授,北京信息职业技术学院技术应用研究所所长,多年从事计算机领域研究,主要研究方向:大数据、人工智能、软件技术。主持多项省部级课题,其中一项获教育部科技成果奖。编写多部著作,发表多篇相关领域的学术论文。作为多个部委专家,主持完成多个部委信息化建设标准制定工作。主持完成多个部委信息化建设项目。
|
目錄:
|
目录
1大数据采集处理方法1 11爬虫程序设计方案1 12爬虫程序实现方法5 13数据清洗20 2大数据存储方法27 21分布式文件系统存储大数据27 211HDFS体系结构27 212HDFS数据存储方式28 213HDFS读写方式28 22分布式数据库存储大数据32 221Hbase体系结构32 222配置Hbase33 223Hbase表操作38 224访问Hbase数据资源44 3大数据计算方法50 31分布式计算平台构建方法50 32分布式计算框架构建方法60 33分布式计算程序设计方法63 4大数据分析模型构建方法78 41准备训练数据78 42机器学习路径和算法设计方法82 43数据可视化辅助建模方法88 44构建大数据分析模型91 5大数据分析模型检验方法108 51回归诊断108 52交叉验证113 6大数据分析模型优化方法117 61Feature Scaling优化法117 62逐步回归优化法118 63PCA主成分分析优化方法120 64神经网络优化大数据分析模型127 参考文献151
|
內容試閱:
|
为什么要写本书
大数据时代,人们面对大数据,首先想到的是如何分析大数据,目前介绍大数据分析方法的书籍却不是很多。作者从事大数据分析研究工作多年,很想将做过的大数据研究课题积累的一些分析方法分享给各位读者。
本书组织结构
本书的结构依据大数据的处理构建的,包括:组织,依次为大数据采集处理方法、大数据存储方法、大数据分布式计算方法、大数据分析模型构建方法、大数据分析模型检验方法、大数据分析模型优化方法。
本书的主要内容
第1章介绍了大数据采集处理方法,重点介绍了如何从互联网上采集数据,介绍了网络爬虫程序的设计和编写方法以及数据清洗方法,着重介绍如何清洗机器学习训练数据。
第2章介绍了大数据存储方法,重点介绍了分布式文件存储系统的原理、配置方法与使用方法。重点介绍了分布式数据库Hbase原理、配置方法与使用方法。
第3章介绍了大数据分布式计算的实现方法,详细介绍了如何搭建Hadoop大数据处理平台,列举了详细的搭建过程,提供了Hadoop搭建所需的各种配置文件源代码,提供了构建Hadoop所需的命令语句。着重介绍了MapReduce框架结构,运行机理,MapReduce源代码分析,各种接口和类分析。本章给出了丰富的MapReduce示例,对示例进行详细的解读,读者可以模仿示例编写自己的MapReduce程序。
第4章介绍了大数据分析模型构建方法,主要介绍了如何通过机器学习方法构建大数据分析模型。
第5章介绍了大数据分析模型的检验方法,分析模型建立以后如何进行检验,这往往是一个难点,如何检验模型是否达到了最初设计标准,用什么手段来检验非常关键,检验方法是否科学都很重要。此章还介绍了机器学习构建模型常用的检验方法,如回归诊断、交叉验证等方法。
第6章重点介绍了模型建立以后,如何优化,介绍了几种优化方法,如逐步递归法、主成分分析优化方法等,特别介绍了通过神经网络进行优化。
本书的优势
本书的内容是作者从事科研项目的一些亲身经历,开展大数据分析项目研究方法的总结和归纳,内容非常实用,为从事大数据分析的研究人员提供了研究步骤和方法。本书的模式是提出问题,然后给出解决方法,这样读者如遇到类似问题就可以参考书中提供的方法加以解决。
本书的受众群体
本书的读者主要是从事大数据分析的研究人员,大数据分析系统开发人员,使用本书的人员应该在大数据分析方面有一定的基础,本书的内容比较深入,跳过了基本概念和基本理论,主要论述和探索大数据分析深层次的内容和方法。
致谢
本书是基于北京市教委科技计划一般课题:基于机器学习方法的房价大数据分析模型构建研究(课题编号:KM201610857002)研究内容编写的。
感谢项目组成员冀钢、刘瑞新、范美英对本项目做出的贡献。感谢参与和支持本项目的所有人员。感谢寇俊玲主编严谨和辛勤的工作。
21分布式文件系统存储大数据
大数据可以以文本的方式进行存储,通常处理大数据都是以字符流的方式处理,所以可以将大数据存储于分布式文件系统中。
本节的内容主要介绍如何构建分布式文件系统,如何将大数据存储于分布式文件系统中,以及如何在分布式文件系统中处理这些数据。本节重点介绍HDFS分布式文件系统的构建与大数据存储方法。
HDFS分布式文件系统存储大数据非常方便、高效,HDFS是Hadoop Distributed File System的缩写,它是Hadoop项目的子项目,与Hadoop结合的非常好,Hadoop是一个非常好的大数据处理平台,Hadoop加上HDFS后解决了大数据分布式存储问题,建立了属于自己的分布式文件系统。
211HDFS体系结构
HDFS作为分布式文件系统需要先建立一个集群,集群节点分为Namenode、Datanode、Secondarynamenode。
Namenode是一个主控节点,负责存储元数据Metadata,负责分配和调度数据存储在不同的节点上,负责记录数据存储路径;Datanode是数据具体的存储节点;Secondarynamenode起到一个备份作用,当Namenode故障时可以起到恢复数据的作用。大数据首先被切成块Block,以数据块的形式存储于Datanode,数据块大小通常是64M,大数据切成块以后便于数据的传输和分配。
212HDFS数据存储方式
HDFS通过名字空间进行数据存储与文件的管理,形成树形结构。通过名字空间形成文件目录。名字空间文件保存在名字空间镜像(namespace image)及修改日志(edit log)文件中,其中包括块Block的信息,一个文件的块存放在哪些Datanode上。Namenode存放着名字空间文件。客户通过Namenode访问存放自己文件块的Datanode,Datanode通过心跳等方式周期性地向Namenode传递文件块存储位置、状态等信息。Secondarynamenode不断地合并名字空间镜像及修改日志文件,备份一份元数据文件在Secondarynamenode上,当Namenode故障时,通过Secondarynamenode存储的元数据文件进行恢复操作。
客户创建文件不是马上在Datanode上创建,通常文件是先放在当地的临时文件中,以数据块的形式存储,当Namenode分配好Datanode后,再将文件数据块传到各个Datanode上。
213HDFS读写方式
1创建目录
通过CreateDir类可在HDFS上创建目录,创建目录的程序如下:
package comhebutfile;
import orgapachehadoopconfConfiguration;
import orgapachehadoopfsFileStatus;
import orgapachehadoopfsFileSystem;
import orgapachehadoopfsPath;
CreateDir类继承Hadoop的配置类、文件状态类、分布式文件系统类、分布式文件系统路径设置类:
public class CreateDir{
public static void main(String\[\]args)throws
Exception{
Configuration conf=new Configuration();
通过分布式文件系统类FileSystem的get方法得到配置内容:
FileSystem hdfs=FileSystemget(conf);
Path dfs=new Path("rootusr");
调用hdfs的mkdirs方法建立所给的目录:
hdfsmkdirs(dfs);
}
}
2创建文件
通过CreateFile类可在HDFS上创建文件,创建文件的程序如下。
package comhebutfile;
import orgapachehadoopconfConfiguration;
import orgapachehadoopfsFileStatus;
import orgapachehadoopfsFileSystem;
import orgapachehadoopfsPath;
导入所要用到的类库,CreateFile类可调用Hadoop的配置类、文件状态类、分布式文件系统类、分布式文件系统路径设置类方法。
public class CreateFile{
public static void main(String\[\]args)throws
Exception{
Configuration conf=new Configuration();
通过分布式文件系统类FileSystem的get方法得到配置内容:
FileSystem hdfs=FileSystemget(conf);
将文件内容先存在缓冲区中,然后通过分布式文件系统输出流的形式写入文件test中:
byte\[\]buff="hello hadoop world!\\n"getBytes();
Path dfs=new Path("test");
FSDataOutputStream outputStream=hdfscreate(dfs);
outputStreamwrite(buff,0,bufflength);
}
}
3上传本地文件
通过CopyFile类可以将本地文件上传到分布式文件系统HDFS中,上传本地文件程序如下。
package comhebutfile;
import orgapachehadoopconfConfiguration;
import orgapachehadoopfsFileStatus;
import orgapachehadoopfsFileSystem;
import orgapachehadoopfsPath;
导入所要用到的类库,CopyFile类可以调用Hadoop的配置类、文件状态类、分布式文件系统类、分布式文件系统路径设置类方法。
public class CopyFile{
public static void main(String\[\]args)throws
Exception{
Configuration conf=new Configuration();
通过分布式文件系统类FileSystem的get方法得到配置内容:
FileSystem hdfs=FileSystemget(conf);
设置准备上传的本地文件路径,设置上传至分布式文件系统的目录路径:
Path src=new Path("D:\\\\bigdata");
Path dst=new Path("rootusr");
将本地文件拷贝到分布式文件系统目标目录下:
hdfscopyFromLocalFile(src,dst);
Systemoutprintln("Upload to" confget("fsdefaultname"));
FileStatus files\[\]=hdfslistStatus(dst);
通过循环语句判断文件系统状态,如果文件存在,就取出给定的路径,按照此路径上传文件:
for(FileStatus file:files){
Systemoutprintln(filegetPath());
}
}
}
4修改文件名
通过Rename类可在HDFS上重建文件名,修改文件名的程序如下。
package comhebutfile;
import orgapachehadoopconfConfiguration;
import orgapachehadoopfsFileStatus;
import orgapachehadoopfsFileSystem;
import orgapachehadoopfsPath;
导入所要用到的类库,Rename类可以调用Hadoop的配置类、文件状态类、分布式文件系统类、分布式文件系统路径设置类方法。
public class Rename{
public static void main(String\[\]args)throws
Exception{
Configuration conf=new Configuration();
通过分布式文件系统类FileSystem的get方法得到配置内容:
FileSystem hdfs=FileSystemget(conf);
给出原始文件路径和文件名,给出重新命名的路径和文件名,然后判别是否重名,如果重名,通过Rename方法重新命名:
Path frpaht=new Path("rootusrtest1");
Path topaht=new Path("rootusrtest2");
boolean isRename=hdfsrename(frpaht,topath);
String result=isRename?"成功":"失败";
Systemoutprintln("文件重命名结果为:" result);
}
}
5删除文件
通过Delete类可在HDFS上重建文件名,删除文件名的程序如下:
package comhebutfile;
import orgapachehadoopconfConfiguration;
import orgapachehadoopfsFileStatus;
import orgapachehadoopfsFileSystem;
import orgapachehadoopfsPath;
导入所要用到的类库,Delete类可以调用Hadoop的配置类、文件状态类、分布式文件系统类、分布式文件系统路径设置类方法。
public class Delete{
public static void main(String\[\]args)throws
Exception{
Configuration conf=new Configuration();
通过分布式文件系统类FileSystem的get方法得到配置内容:
FileSystem hdfs=FileSystemget(conf);
给出要删除文件的路径,然后判断是否删除。如果同意删除,通过HDFS的Delete方法删除文件:
Path delfile=new Path("rootusrtest1");
boolean isDeleted=hdfsdelete(delfile,false);
Systemoutprintln("Delete?" isDeleted);
}
}
22分布式数据库存储大数据
本节重点介绍如何通过Hbase分布式数据库存储大数据,Hbase是一款非常好的分布式存储数据库,采用列式存储,列式存储非常适合大数据存储,大数据的属性非常多,经常事先难以知道,需要随时添加属性,列式存储极大地解决了属性随时添加的问题。Hbase是Hadoop的一个子项目,与Hadoop结合得非常好,便于我们在Hadoop大数据平台上开展大数据处理。
221Hbase体系结构
Hbase数据库由表组成,表的结构由行Row、列Column(包括列族Column family和列族成员Column Qualifier)、时间戳Timestamp组成。行由行的主键标示,用来区别不同的行,一行包括许多列,行的排序按照行主键进行排序,在存储时自动按字母顺序进行排序,一般行的主键按照Web域名方式设定,便于关联。列族通常用字符加冒号表示,冒号后面是列成员名,如,course:math,列名以列族作为前缀。时间戳代表存储数据的不同版本。HBase中通过行和列作为一个存储单元,称为cell,每个cell都保存着同一份数据的多个版本,版本通过时间戳来区分,作为Hbase处理大数据准许数据重复,通过时间戳区分不同时间的数据,这些做法都是为了加快大数据的处理速度,减少耗时最大的查询修改数据操作。
列式存储的好处是表的属性(列)可以根据需求去动态增加到一个列族下。在Hbase中建一张大表,Hbase不提供表与表之间的关联查询,大数据尽量都存在一个大表中,以便提高读写速度。当表随着记录数不断增加而变大后,会逐渐分裂成多份数据片(splits),splits合并成为区域regions,不同的区域region会被主控服务器Master分配给相应的区域服务器RegionServer进行管理,每一次的插入操作都会先进入内存缓冲区MemStore,当MemStore达到上限的时候,Hbase会将内存中的数据输出为有序的StoreFile文件数据。这样会在Store中形成很多个小的StoreFile,当这些小的文件(File)数量达到一个阀值的时候,Hbase会用一个线程来把这些小File合并成一个大的File。这样,Hbase就把效率低下的文件中的插入、移动操作转变成了单纯的文件输出、合并操作,用这种办法提高了大数据处理速度,Hbase设计主要围绕着性能优化。
Zookeeper负责分布式系统调度工作,HBase中有两张特殊的表,META表和-ROOT-,META记录了用户表的区域信息,-ROOT-记录了META表的区域信息。Zookeeper中记录了-ROOT-地址、HMaster地址、regions的寻址入口、HRegionServer状态,将这些信息发送给HMaster,由HMaster负责数据块的分配和区域的管理。为了避免Master单点故障,Hbase启动时建立了多个HMaster,HMaster负责管理用户对表的增、删、改、查操作,负责Region的分配,负责失效HRegionServer上的Regions迁移。HRegionServer负责数据存储,响应用户的IO请求。
222配置Hbase
1配置hbase-sitexm配置文件
设置Hbase及数据存放目录。不用另建Hbase数据存放目录,Hbase会为我们建立数据目录,如果我们另建了数据目录,Hbase可能会发生迁移:
hbaserootdir
file:hometestuserhbase
设置zookeeper存放目录:
hbasezookeeperpropertydataDir
hometestuserzookeeper
将Hbase设置成集群分布式存储方式:
hbaseclusterdistributed
true
将Hbase设置在本地分布式文件系统HDFS下,端口是8020:
hbaserootdir
hdfs:localhost:8020hbase
2配置hdfs-sitexml配置文件
配置分布式文件系统数据节点最大的传输线程,设置为4096:
dfsdatanodemaxtransferthreads
4096
设置zookeeper的数量和节点名字,在安装Hbase和配置Master server时都要遵从这些名称:
hbasezookeeperquorum
node-aexamplecom,node-bexamplecom,node-cexamplecom
设置zookeeper的数据目录:
hbasezookeeperpropertydataDir
usrlocalzookeeper
设定租约服务恢复时长23000毫秒:
hbaseleaserecoverydfstimeout
23000
start-hbasesh
启动Hbase。
jps
用jps命令查看进程,这时可以发现HMaster进程正在运行。
|
|