大数据技术基础(txt+pdf+epub+mobi电子书下载)


发布时间:2020-09-14 18:31:04

点击下载

作者:薛志东

出版社:人民邮电出版社有限公司

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

大数据技术基础

大数据技术基础试读:

前言

第1章 大数据概述

1.1 大数据的相关概念

1.2 大数据处理的基础技术

1.2.1 大数据处理流程1.2.2 分布式计算1.2.3 分布式文件系统1.2.4 分布式数据库1.2.5 数据库与数据仓库1.2.6 云计算与虚拟化技术1.2.7 虚拟化产品介绍

1.3 流行的大数据技术

1.4 大数据解决方案

1.5 大数据发展现状和趋势

1.5.1 大数据现状分析1.5.2 大数据发展趋势

1.6 教学建议及教辅资料

习题

第2章 大数据软件基础

2.1 Linux基础

2.1.1 Linux简介2.1.2 Linux基本操作2.1.3 网络配置管理2.1.4 其他常用网络命令

2.2 Java基础

2.2.1 面向对象与泛型2.2.2 集合类2.2.3 内部类与匿名类2.2.4 反射

2.3 SQL语言基础

2.4 在VirtualBox上安装Linux集群

2.4.1 master节点的安装2.4.2 配置Virtualbox网络及虚拟机网卡2.4.3 slave节点的安装与配置2.4.4 Java环境的安装2.4.5 MySQL服务2.4.6 SSH免密钥登录2.4.7 配置时钟同步

习题

第3章 大数据存储技术

3.1 理解HDFS分布式文件系统

3.1.1 HDFS简介3.1.2 HDFS的体系结构3.1.3 HDFS中的数据流

3.2 NoSQL数据库

3.2.1 键值数据库Redis3.2.2 列存储数据库HBase3.2.3 文档数据库MongoDB3.2.4 图数据库Neo4j

3.3 Hadoop的安装与配置

3.3.1 Hadoop的配置部署3.3.2 启动Hadoop集群

3.4 HDFS文件管理

3.4.1 命令行访问HDFS3.4.2 使用Java API访问HDFS

3.5 HBase的安装与配置

3.5.1 解压并安装HBase3.5.2 配置HBase

3.6 HBase的使用

3.6.1 HBase-shell3.6.2 Java API

习题

第4章 MapReduce分布式编程

4.1 MapReduce编程概述

4.2 MapReduce编程示例

4.2.1 词频统计程序示例4.2.2 MapReduce编译与运行

4.3 深入理解MapReduce程序的运行过程

4.4 MapReduce任务调度框架

4.4.1 经典MapReduce任务调度模型4.4.2 YARN框架原理及运行机制

4.5 MapReduce的数据类型与输入/输出格式

4.5.1 MapReduce的数据类型4.5.2 MapReduce的文件输入/输出格式

4.6 MapReduce编程实例

4.6.1 视频类型统计4.6.2 查询TOP10用户上传的视频列表

习题

第5章 数据采集与预处理

5.1 流数据采集工具Flume

5.1.1 Flume的安装5.1.2 Flume的配置与运行5.1.3 Flume源5.1.4 Flume槽5.1.5 通道、拦截器与处理器

5.2 数据传输工具Sqoop

5.2.1 Sqoop的安装5.2.2 Sqoop的配置与运行5.2.3 Sqoop实例5.2.4 Sqoop导入过程5.2.5 Sqoop导出过程

5.3 数据接入工具Kafka

5.3.1 Kafka的安装与配置5.3.2 Kafka消息生产者5.3.3 Kafka消息消费者5.3.4 Kafka核心特性

习题

第6章 数据仓库与联机分析处理

6.1 数据仓库

6.1.1 数据仓库的概念6.1.2 数据仓库与操作性数据库的区别6.1.3 数据仓库的体系结构

6.2 多维数据模型

6.2.1 数据立方体6.2.2 数据模型6.2.3 多维数据模型中的OLAP操作

6.3 Hive

6.3.1 Hive简介6.3.2 Hive的安装与配置6.3.3 Hive使用6.3.4 Hive导入数据实例

6.4 Kylin

6.4.1 Kylin简介6.4.2 Kylin的安装与配置6.4.3 Kylin的使用

6.5 Superset

6.5.1 Superset简介6.5.2 Superset的安装与配置6.5.3 Superset的使用

习题

第7章 大数据分析与挖掘技术

7.1 概述

7.1.1 数据挖掘简介7.1.2 Mahout的安装与配置

7.2 推荐

7.2.1 推荐的定义与评估7.2.2 Mahout中的常见推荐算法7.2.3 对GroupLens数据集进行推荐与评价

7.3 聚类

7.3.1 聚类的基本概念7.3.2 常见的Mahout数据结构7.3.3 几种聚类算法7.3.4 聚类应用实例

7.4 分类

7.4.1 分类的基本概念7.4.2 Mahout中一些常见的训练分类器算法7.4.3 应用实例:使用SGD训练分类器对新闻分类

习题

第8章 Spark分布式内存计算框架

8.1 Spark简介

8.2 Spark的编程模型

8.2.1 核心数据结构RDD8.2.2 RDD上的操作8.2.3 RDD的持久化8.2.4 RDD计算工作流

8.3 Spark的调度机制

8.3.1 Spark分布式架构8.3.2 Spark应用执行流程8.3.3 Spark调度与任务分配

8.4 Spark应用案例

8.4.1 Spark Shell8.4.2 单词计数8.4.3 统计用户的视频上传数8.4.4 查询Top100用户的上传视频列表

8.5 Spark生态圈其他技术

8.5.1 Spark SQL8.5.2 Spark Streaming8.5.3 MLlib8.5.4 GraphX

8.6 Zeppelin:交互式分析Spark数据

8.6.1 Zeppelin简介8.6.2 安装和启动8.6.3 在Zeppelin中处理YouTube数据

习题

第9章 数据可视化技术

9.1 数据可视化概述

9.2 数据可视化工具

9.2.1 桌面可视化技术9.2.2 OLAP可视化工具9.2.3 Web可视化技术

9.3 可视化组件与ECharts示例

9.3.1 ECharts使用准备9.3.2 ECharts示例

9.4 与大数据平台集成

9.4.1 获取对Hive数据库的连接9.4.2 通过Java调用Hive提供的API操作数据9.4.3 将数据提交到Web页面进行数据可视化

习题

第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.3.1 数据溯源10.3.2 数字水印10.3.3 策略管理10.3.4 完整性保护10.3.5 数据脱敏

10.4 安全分析

10.4.1 大数据安全分析架构10.4.2 大数据防DDoS攻击10.4.3 攻击可视化与安全业务定制

10.5 隐私保护

10.5.1 隐私保护面临的挑战10.5.2 内容关联密钥10.5.3 华为大数据隐私保护方案

习题

附录 《大数据技术基础》配套实验课程方案简介

参考文献

内容提要

本书系统、全面地介绍了大数据技术的基础知识,期望读者通过对本书的学习和实践了解大数据技术的概貌,掌握Hadoop生态圈大数据技术中最为基础和关键的知识。本书主要内容包括大数据概述、大数据软件基础、大数据存储技术、MapReduce分布式编程、数据采集与预处理、数据仓库与联机分析处理、大数据分析与挖掘技术、Spark分布式内存计算框架、数据可视化技术、大数据安全。

本书可作为数据科学与大数据、软件工程、计算机科学与技术等专业的大数据概论课程的教材,也可供大数据工程技术人员阅读使用。

编委会

教育部高等学校计算机类专业教学指导委员会-华为ICT产学合作项目数据科学与大数据技术专业系列规划教材

主 任 陈 钟 北京大学

副主任 杜小勇 中国人民大学周傲英 华东师范大学马殿富 北京航空航天大学李战怀 西北工业大学冯宝帅 华为技术有限公司张立科 人民邮电出版社

秘书长 王 翔 华为技术有限公司戴思俊 人民邮电出版社

委 员(按姓名拼音排序)崔立真 山东大学段立新 电子科技大学高小鹏 北京航空航天大学桂劲松 中南大学侯 宾 北京邮电大学黄 岚 吉林大学林子雨 厦门大学刘 博 人民邮电出版社刘耀林 华为技术有限公司乔亚男 西安交通大学沈 刚 华中科技大学石胜飞 哈尔滨工业大学嵩 天 北京理工大学唐 卓 湖南大学汪 卫 复旦大学王 伟 同济大学王宏志 哈尔滨工业大学王建民 清华大学王兴伟 东北大学薛志东 华中科技大学印 鉴 中山大学袁晓如 北京大学张志峰 华为技术有限公司赵卫东 复旦大学邹北骥 中南大学邹文波 人民邮电出版社

丛书序一

PREFACE

毫无疑问,我们正处在一个新时代。新一轮科技革命和产业变革正在加速推进,技术创新日益成为重塑经济发展模式和促进经济增长的重要驱动力量,而“大数据”无疑是第一核心推动力。

当前,发展大数据已经成为国家战略,大数据在引领经济社会发展中的新引擎作用更加突显。大数据重塑了传统产业的结构和形态,催生了众多的新产业、新业态、新模式,推动了共享经济的蓬勃发展,也给我们的衣食住行带来根本改变。同时,大数据是带动国家竞争力整体跃升和跨越式发展的巨大推动力,已成为全球科技和产业竞争的重要制高点。可以大胆预测,未来,大数据将会进一步激起全球科技和产业发展浪潮,进一步渗透到我们国计民生的各个领域,其发展扩张势不可挡。可以说,我们处在一个“大数据”时代。

大数据不仅仅是单一的技术发展领域和战略新兴产业,它还涉及科技、社会、伦理等诸多方面。发展大数据是一个复杂的系统工程,需要科技界、教育界和产业界等社会各界的广泛参与和通力合作,需要我们以更加开放的心态,以进步发展的理念,积极主动适应大数据时代所带来的深刻变革。总体而言,从全面协调可持续健康发展的角度,推动大数据发展需要注重以下五个方面的辩证统一和统筹兼顾。

一是要注重“长与短结合”。所谓“长”就是要目标长远,要注重制定大数据发展的顶层设计和中长期发展规划,明确发展方向和总体目标;所谓“短”就是要着眼当前,注重短期收益,从实处着手,快速起效,并形成效益反哺的良性循环。

二是要注重“快与慢结合”。所谓“快”就是要注重发挥新一代信息技术产业爆炸性增长的特点,发展大数据要时不我待,以实际应用需求为牵引加快推进,力争快速占领大数据技术和产业制高点;所谓“慢”就是防止急功近利,欲速而不达,要注重夯实大数据发展的基础,着重积累发展大数据基础理论与核心共性关键技术,培养行业领域发展中的大数据思维,潜心培育大数据专业人才。

三是要注重“高与低结合”。所谓“高”就是要打造大数据创新发展高地,要结合国家重大战略需求和国民经济主战场核心需求,部署高端大数据公共服务平台,组织开展国家级大数据重大示范工程,提升国民经济重点领域和标志性行业的大数据技术水平和应用能力;所谓“低”就是要坚持“润物细无声”,推进大数据在各行各业和民生领域的广泛应用,推进大数据发展的广度和深度。

四是要注重“内与外结合”。所谓“内”就是要向内深度挖掘和深入研究大数据作为一门学科领域的深刻技术内涵,构建和完善大数据发展的完整理论体系和技术支撑体系;所谓“外”就是要加强开放创新,由于大数据涉及众多学科领域和产业行业门类,也涉及国家、社会、个人等诸多问题,因此,需要推动国际国内科技界、产业界的深入合作和各级政府广泛参与,共同研究制定标准规范,推动大数据与人工智能、云计算、物联网、网络安全等信息技术领域的协同发展,促进数据科学与计算机科学、基础科学和各种应用科学的深度融合。

五是要注重“开与闭结合”。所谓“开”就是要坚持开放共享,要鼓励打破现有体制机制障碍,推动政府建立完善开放共享的大数据平台,加强科研机构、企业间技术交流和合作,推动大数据资源高效利用,打破数据壁垒,普惠数据服务,缩小数据鸿沟,破除数据孤岛;所谓“闭”就是要形成价值链生态闭环,充分发挥大数据发展中技术驱动与需求牵引的双引擎作用,积极运用市场机制,形成技术创新链、产业发展链和资金服务链协同发展的态势,构建大数据产业良性发展的闭环生态圈。

总之,推动大数据的创新发展,已经成为了新时代的新诉求。刚刚闭幕的党的十九大更是明确提出要推动大数据、人工智能等信息技术产业与实体经济深度融合,培育新增长点,为建设网络强国、数字中国、智慧社会形成新动能。这一指导思想为我们未来发展大数据技术和产业指明了前进方向,提供了根本遵循。

习近平总书记多次强调“人才是创新的根基”“创新驱动实质上是人才驱动”。绘制大数据发展的宏伟蓝图迫切需要创新人才培养体制机制的支撑。因此,需要把高端人才队伍建设作为大数据技术和产业发展的重中之重,需要进一步完善大数据教育体系,加强人才储备和梯队建设,将以大数据为代表的新兴产业发展对人才的创新性、实践性需求渗透融入人才培养各个环节,加快形成我国大数据人才高地。

国家有关部门“与时俱进,因时施策”。近期,国务院办公厅正式印发《关于深化产教融合的若干意见》,推进人才和人力资源供给侧结构性改革,以适应创新驱动发展战略的新形势、新任务、新要求。教育部高等学校计算机类专业教学指导委员会、华为公司和人民邮电出版社组织编写的《教育部高等学校计算机类专业教学指导委员会-华为ICT产学合作项目——数据科学与大数据技术专业系列规划教材》的出版发行,就是落实国务院文件精神,深化教育供给侧结构性改革的积极探索和实践。它是国内第一套成专业课程体系规划的数据科学与大数据技术专业系列教材,作者均来自国内一流高校,且具有丰富的大数据教学、科研、实践经验。它的出版发行,对完善大数据人才培养体系,加强人才储备和梯队建设,推进贯通大数据理论、方法、技术、产品与应用等的复合型人才培养,完善大数据领域学科布局,推动大数据领域学科建设具有重要意义。同时,本次产教融合的成功经验,对其他学科领域的人才培养也具有重要的参考价值。

我们有理由相信,在国家战略指引下,在社会各界的广泛参与和推动下,我国的大数据技术和产业发展一定会有光明的未来。

是为序。中国科学院院士 郑志明2018年4月16日

丛书序二

PREFACE

在500年前的大航海时代,哥伦布发现了新大陆,麦哲伦实现了环球航行,全球各大洲从此连接了起来,人类文明的进程得以推进。今天,在云计算、大数据、物联网、人工智能等新技术推动下,人类开启了智能时代。

面对这个以“万物感知、万物互联、万物智能”为特征的智能时代,“数字化转型”已是企业寻求突破和创新的必由之路,数字化带来的海量数据成为企业乃至整个社会最重要的核心资产。大数据已上升为国家战略,成为推动经济社会发展的新引擎,如何获取、存储、分析、应用这些大数据将是这个时代最热门的话题。

国家大数据战略和企业数字化转型成功的关键是培养多层次的大数据人才,然而,根据计世资讯的研究,2018年中国大数据领域的人才缺口将超过150万人,人才短缺已成为制约产业发展的突出问题。

2018年初,华为公司提出新的愿景与使命,即“把数字世界带入每个人、每个家庭、每个组织,构建万物互联的智能世界”,它承载了华为公司的历史使命和社会责任。华为企业BG将长期坚持“平台+生态”战略,协同生态伙伴,共同为行业客户打造云计算、大数据、物联网和传统ICT技术高度融合的数字化转型平台。

人才生态建设是支撑“平台+生态”战略的核心基石,是保持产业链活力和持续增长的根本,华为以ICT产业长期积累的技术、知识、经验和成功实践为基础,持续投入,构建ICT人才生态良性发展的使能平台,打造全球有影响力的ICT人才认证标准。面对未来人才的挑战,华为坚持与全球广大院校、伙伴加强合作,打造引领未来的ICT人才生态,助力行业数字化转型。

一套好的教材是人才培养的基础,也是教学质量的重要保障。本套教材的出版,是华为在大数据人才培养领域的重要举措,是华为集合产业与教育界的高端智力,全力奉献的结晶和成果。在此,让我对本套教材的各位作者表示由衷的感谢!此外,我们还要特别感谢教育部高等学校计算机类专业教学指导委员会副主任、北京大学陈钟教授以及秘书长、北京航空航天大学马殿富教授,没有你们的努力和推动,本套教材无法成型!

同学们、朋友们,翻过这篇序言,开启学习旅程,祝愿在大数据的海洋里,尽情展示你们的才华,实现你们的梦想!华为公司董事、企业BG总裁 阎力大2018年5月

前言

FOREWORD

大数据已经进入我们社会生活的各个层面,学习、使用大数据成为社会各行各业的共识。掌握大数据技术成为数据科学、计算机科学与技术、软件工程、管理科学与工程等相关领域大数据工作者的一种内在要求。

我们希望本书能结合大学教学的实际情况,向学生介绍大数据技术的基础知识,帮助学生了解大数据技术的概貌。主要内容安排如下。

第1章 大数据概述。在介绍目前主流大数据技术前,本章概括介绍了诸如分布式、虚拟化与云计算、数据库与数据仓库等与大数据技术密切相关的概念。

第2章 大数据软件基础。考虑到大学授课的特点,本章把在前序课程中可能忽视的Linux基础操作、Java基础和SQL语法等与后续大数据实践相关的重点知识作为大数据软件技术基础进行了补充,避免因为学生基础知识的不足而导致学习困难等方面的问题。此外,本章还介绍了如何安装Linux集群,为后续章节的内容做铺垫。

第3章 大数据存储技术。重点介绍Hadoop分布式文件系统HDFS以及常见的NoSQL数据库,并对Hadoop和HBase的安装配置及API开发进行了介绍。

第4章 MapReduce分布式编程。重点介绍Hadoop的MapReduce编程及其基本原理。

第5章 数据采集与预处理。重点介绍大数据采集与传输数据的工具,包括Flume、Sqoop和Kafka。

第6章 数据仓库与联机分析处理。本章首先讨论被业界广泛接受的数据仓库的概念和定义,研究应用于数据仓库和OLAP的多维数据模型——数据立方体,然后详细介绍基于Hadoop平台的数据仓库工具与相应的联机分析技术,包括Hive、Kylin及Superset等。

第7章 大数据分析与挖掘技术。本章对数据挖掘与分析的基本原理进行讨论,并对Hadoop家族中的重要成员——Mahout进行介绍,描述其在具体应用中的使用方法。

第8章 Spark分布式内存计算框架。本章立足于实战,重点介绍Spark的编程模型和RDD 统一抽象模型、Spark的工作和调度机制以及以 Spark 为核心衍生的生态系统——SparkSQL、流式计算、机器学习、图计算等,最后对Zeppelin数据分析工具进行简要介绍。

第9章 数据可视化技术。本章首先简单介绍数据可视化的发展历史、可视化工具分类,然后重点结合ECharts介绍Web可视化组件生成方法,并给出JavaWeb开发与相关大数据组件的数据集成,以展现数据可视化结果。

第10章 大数据安全。本章首先介绍大数据安全的挑战与对策,然后结合企业界成熟的华为公司大数据技术安全解决方案,对大数据基础设施安全、安全管理技术、安全分析、隐私保护等内容进行了介绍。

本书的编写得益于华中科技大学软件学院数据科学中心师生的共同努力,其中薛志东负责本书的策划并主要编写了第2章、第3章、第4章、第5章和第9章;陈长清主要编写了第1章;吕泽华主要编写了第6章、第7章和第8章;黄浩主要编写了第10章。此外,姚益阳、杜海朋、董英豪、卢璟祥、张双双、邹小威、张学清、郭映中、汪元也参加了本书部分内容的编写工作。曾辉、余晨晨、奉俊丰参加了本书部分代码的整理工作。

在本书的编写过程中,编者参考、引用了华为技术有限公司ICT学院提供的资料、相关技术的官方文档和大量互联网资源,在此向有关单位、作者表示感谢,并尽量在参考文献部分一一列出,若有遗漏和不妥之处,敬请相关作者指正。

感谢华为技术有限公司刘洁、张志峰,华中科技大学软件学院陈传波教授、肖来元教授、沈刚教授,以及陈维亚博士、区士颀博士、石强博士对图书编写工作予以的支持与帮助。

由于时间仓促,编者水平有限,书中难免存在不足之处,敬请读者批评指正。编者2018年5月于华中科大软件学院第1章 大数据概述

大数据技术已经进入我们社会生活的各个层面,我们不仅在消费大数据,也在源源不断地产生大数据。数以亿计的移动互联网用户将位置、微博、朋友圈、打车、外卖、邮件、网购、社交等信息源源不断地上传到服务商的服务器上,而这些服务商也非常乐意为用户保存各种信息,因为他们意识到了这些数据的价值。与此同时,各行各业都受到大数据的影响,涌现出了诸如工业大数据、金融大数据、环境大数据、医疗健康大数据、教育大数据等,人们开始结合行业与领域的特点和优势,通过大数据技术进行领域改进和升级。在实践中,人们也逐渐对大数据的概念、价值、范围有了清醒的认识,应对各种需求的大数据技术也逐渐走向成熟,大数据处理技术体系也越来越完备。

本章主要介绍大数据的基本概念、相关技术和目前的应用现状。1.1 大数据的相关概念

大数据是指在一定时间内无法用常规软件工具对其内容进行抓取、处理、分析和管理的数据集合。大数据一般会涉及两种以上的数据形式,数据量通常是100TB以上的高速、实时数据流,或者从每年增长速度快的小数据开始。

1.大数据的特征

大数据有4个特性,简称4V:Volume、Variety、Velocity、Value,如图1.1所示。图1.1 大数据的4V特征(1)Volume(规模性):大数据的特征首先体现为“数据量大”,存储单位从过去的GB到TB,直至PB、EB。随着网络及信息技术的高速发展,数据开始爆发性增长。社交网络、移动网络、各种智能终端等,都成为数据的来源,企业也面临着数据量的大规模增长,IDC的一份报告预测称,到2020年,全球数据量将扩大50倍。此外,各种意想不到的来源都能产生数据。(2)Variety(多样性):一个普遍观点认为,人们使用互联网搜索是形成数据多样性的主要原因,这一看法部分正确。大数据大体可分为三类:一是结构化数据,如财务系统数据、信息管理系统数据、医疗系统数据等,其特点是数据间因果关系强;二是非结构化的数据,如视频、图片、音频等,其特点是数据间没有因果关系;三是半结构化数据,如HTML文档、邮件、网页等,其特点是数据间的因果关系弱。(3)Velocity(高速性):数据被创建和移动的速度快。在网络时代,通过高速的计算机和服务器,创建实时数据流已成为流行趋势。企业不仅需要了解如何快速创建数据,还必须知道如何快速处理、分析并返回给用户,以满足他们的实时需求。(4)Value(价值性):相比于传统的小数据,大数据最大的价值在于通过从大量不相关的各种类型的数据中,挖掘出对未来趋势与模式预测分析有价值的数据,并通过机器学习方法、人工智能方法或数据挖掘方法进行深度分析,发现新规律和新知识,并运用于农业、金融、医疗等各个领域,从而最终达到改善社会治理、提高生产效率、推进科学研究的效果。

2.大数据的构成

大数据分为结构化数据、非结构化数据和半结构化数据三种,如图1.2所示。结构化数据是指信息经过分析后可分解成多个互相关联的组成部分,各组成部分间有明确的层次结构,其使用和维护通过数据库进行管理,并有一定的操作规范。通常,信息系统涉及生产、业务、交易、客户等方面的数据,采用结构化方式存储。一般来讲,结构化数据只占全部数据的20%以内,但是就是这20%以内的数据浓缩了很久以来企业各个方面的数据需求,发展也已经成熟。而无法完全数字化的文档文件、图片、图纸资料、缩微胶片等信息就属于非结构化数据,非结构化数据中往往存在大量的有价值的信息,特别是随着移动互联网、物联网的发展,非结构化数据正以成倍速度快速增长。图1.2 三种数据结构的简单总结(1)结构化数据

结构化数据是由二维表结构来逻辑表达和实现的数据,也称作行数据,严格地遵循数据格式与长度规范,有固定的结构、属性划分和类型等信息,主要通过关系型数据库进行存储和管理,数据记录的每一个属性对应数据表的一个字段。(2)非结构化数据

与结构化数据相对的是不适于由数据库二维表来表现的非结构化数据,包括所有格式的办公文档、各类报表、图片和音频、视频信息等。在数据较小的情况下,可以使用关系型数据库将其直接存储在数据库表的多值字段和变长字段中;若数据较大,则存放在文件系统中,数据库则用于存放相关文件的索引信息。这种方法广泛应用于全文检索和各种多媒体信息处理领域。(3)半结构化数据

半结构化数据既具有一定的结构,又灵活多变,其实也是非结构化数据的一种。和普通纯文本、图片等相比,半结构化数据具有一定的结构性,但和具有严格理论模型的关系数据库的数据相比,其结构又不固定。如员工简历,处理这类数据可以通过信息抽取、转换等步骤,将其转化为半结构化数据,采用XML、HTML等形式表达;或者根据数据的大小,采用非结构化数据存储方式,结合关系数据存储。

随着大数据技术的发展,对非结构化数据的处理越来越重要。据IDC的一项调查报告显示,企业中80%的数据都是非结构化数据,这些数据每年都按60%的比例增长。在利用传统的关系型数据库技术存储、检索非结构化数据的技术上,近年来逐渐发展出多种NoSQL数据库来应对非结构化数据处理的需求,但NoSQL数据库无法替代关系型数据在结构化数据处理上的优势,可以预见关系型数据库和NoSQL数据库将在大数据处理领域共同存在,在各自擅长的领域继续发挥各自的优势。1.2 大数据处理的基础技术

大数据的存储、处理与分析依赖于分布式计算机系统,理解分布式系统基本理论对掌握以Hadoop为代表的计算机分布式系统体系架构、MapReduce分布式计算框架以及HDFS分布式文件系统有重要帮助。

分布式计算机系统是指由多台分散的、硬件自治的计算机,经过互联的网络连接而形成的系统,系统的处理和控制功能分布在各个计算机上。分布式系统由许多独立的、可协同工作的CPU组成,从用户的角度看,整个系统更像一台独立的计算机。分布式系统是从分散处理的概念出发来组织计算机系统,冲破了传统的集中式单机局面,具有较高的性价比,灵活的系统可扩展性,良好的实时性、可靠性与容错性。

此外,组成分布式系统的各计算机节点由分布式操作系统管理,以便让各个节点共同承担整个计算功能。分布式操作系统由内核以及提供各种系统功能的模块和进程组成,不仅包括了单机操作系统的主要功能,还包括分布式进程通信、分布式文件系统、分布式进程迁移、分布式进程同步和分布式进程死锁等功能。系统中的每一台计算机都保存分布式操作系统的内核,以实现对计算机系统的基本控制。常见的分布式系统有分布式计算系统、分布式文件系统和分布式数据库系统等。

下面先介绍大数据的处理流程,然后简要介绍与大数据处理流程相关的基础技术,如分布式技术、数据库技术和云计算技术等。1.2.1 大数据处理流程

一般而言,大数据处理流程可分为四步:数据采集、数据清洗与预处理、数据统计分析和挖掘、结果可视化,如图1.3所示。这四个步骤看起来与现在的数据处理分析没有太大区别,但实际上数据集更大,相互之间的关联更多,需要的计算量也更大,通常需要在分布式系统上,利用分布式计算完成。图1.3 大数据处理流程

1.数据采集

数据的采集一般采用ETL(Extract-Transform-Load)工具将分布的、异构数据源中的数据(如关系数据、平面数据以及其他非结构化数据等)抽取到临时文件或数据库中。大数据的采集不是抽样调查,它强调数据尽可能完整和全面,尽量保证每一个数据准确有用。

2.数据清洗与预处理

采集好的数据,肯定有不少是重复的或无用的,此时需要对数据进行简单的清洗和预处理,使得不同来源的数据整合成一致的、适合数据分析算法和工具读取的数据,如数据去重、异常处理和数据归一化等,然后将这些数据存储到大型分布式数据库或者分布式存储集群中。

3.数据统计分析和挖掘

统计分析需要使用工具(如SPSS工具、一些结构算法模型)来进行分类汇总。这个过程最大的特点是目的清晰,按照一定规则去分类汇总,才能得到有效的分析结果。这部分处理工作需要大量的系统资源。

分析数据的最终目的是通过数据来挖掘数据背后的联系,分析原因,找出规律,然后应用到实际业务中。与统计分析过程不同的是,数据挖掘一般没有什么预先设定好的主题,主要是在现有数据上面进行基于各种算法的计算,通过分析结果达到预测趋势的目的,以满足一些高级别数据分析的需求。比较典型的算法有用于聚类的Kmeans、用于统计学习的SVM和用于分类的NaiveBayes,主要使用的工具有Hadoop的Mahout等。

4.结果可视化

大数据分析最基本的要求是结果可视化,因为可视化结果能够直观地呈现大数据的特点,非常容易被用户所接受,就如同看图说话一样简单明了。

大数据处理流程基本是这四个步骤,不过其中的处理细节、工具的使用、数据的完整性等需要结合业务和行业特点而不断变化更新。1.2.2 分布式计算

分布式计算是相对于集中式计算而言的,它将需要进行大量计算的项目数据分割成小块,由分布式系统中多台计算机节点分别计算,再合并计算结果并得出统一的数据结论。要达到分布式计算的目的,需要编写能在分布式系统上运行的分布式计算机程序。分布式程序可以基于通用的并行分布式程序开发接口进行设计,例如MPI、Corba、OpenMP、MapReduce和Spark等。

分布式计算的目的在于分析海量的数据,例如,从雷达监测的海量历史信号中分析异常信号,淘宝“双十一”实时计算各地区的消费习惯等。SETI@home是比较有代表性的分布式计算项目,是由美国加州大学伯克利分校创立的一项利用全球联网的计算机共同搜寻地外文明(SETI)的科学实验计划。该项目通过互联网进行数据传输,利用世界各地志愿者计算机的闲置计算能力,分析地外无线电信号,搜索外星生命迹象。该项目数据基数很大,有着千万位数的数据量,已有百余万志愿者加入这个项目。他们通过运行一个免费程序下载并分析从射电望远镜传来的数据。

人们最初是通过提高单机计算能力性能(如使用大型机、超级计算机)来处理海量数据。但由于单机的性能无法跟上数据爆发式增长的需要,分布式计算应运而生。由于计算需要拆分在多个计算机上并行运行,也会出现一致性、数据完整性、通信、容灾、任务调度等一系列问题。

术语“分布式计算(Distributed Computing)”与“并行计算(Parallel Computing)”没有特别明确的区别,同一个系统可能同时被特指为“并行的(Parallel)”和“分布式的(Distributed)”。一个典型的分布式系统中的各处理器是以并行的形式运作的,可以称为并行分布式计算(Parallel Distributed Computing)。此时,并行计算也可能以分布式计算的一种密集形式出现,而分布式计算也可能以并行计算的一种较松散形式出现。不过,可利用下列标准粗略地将“并行系统”与“分布式系统”区分开。(1)若所有的处理器共享内存,共享的内存可以让多个处理器彼此交换信息,是并行计算。(2)若每个处理器都有其独享的内存(分布式内存),数据交换通过处理器跨网络完成信息传递,则为分布式计算或分布式并行计算。1.2.3 分布式文件系统

分布式文件系统是将数据分散存储在多台独立的设备上,采用可扩展的系统结构,多台存储服务器分担存储负荷,利用元数据定位数据在服务器中的存储位置,具有较高的系统可靠性、可用性和存取效率,并且易于扩展。而传统的网络存储系统则采用集中的存储服务器存放所有数据,这样存储服务器就成为了整个系统的瓶颈,也成为了可靠性和安全性的焦点,不能满足大数据存储应用的需要。

分布式文件系统利用分布式技术将标准X86服务器的本地HDD、SSD等存储介质组织成一个大规模存储资源池,同时,对上层的应用和虚拟机提供工业界标准的SCSI、i SCSI和对象访问接口,进而打造一个虚拟的分布式统一存储产品。常见的分布式存储系统有谷歌的GFS系统、Hadoop的HDFS系统、加州大学圣克鲁兹分校提出的Ceph系统等。

分布式文件系统的关键技术如下。

1.元数据管理

元数据(Metadata)为描述数据的数据,主要是描述数据属性的信息,用来支持存储位置描述、历史数据描述、资源查找、文件记录等功能。

在大数据环境下,要求数据分布式存储,描述数据的元数据的体量也会非常大,所以如何管理好元数据、并保证元数据的存取性能是整个分布式文件系统性能的关键。集中式管理架构和分布式管理架构是两种常见的元数据管理方式。集中式元数据管理采用单一的元数据服务器框架,实现简单,但是存在单点故障等问题。分布式元数据管理则将元数据分散在多个节点上,解决了元数据服务器的性能瓶颈等问题,并提高了元数据管理的可扩展性,但实现较为复杂,并引入了元数据一致性的问题。

另外,可以通过在线算法组织数据,建立无元数据服务器的分布式架构,但是该架构实现复杂,而且很难保证数据一致性,文件目录遍历操作的效率低下,缺乏文件系统全局监控管理功能。

2.系统高可扩展技术

在大数据环境下,数据规模的增长和复杂度的增加往往成指数上升,这对系统的扩展性提出了较高的要求。实现存储系统的高可扩展性需要解决元数据的分配和数据的透明迁移两个方面的问题。元数据的分配主要通过静态子树划分技术实现,透明迁移则侧重数据迁移算法的优化。

大数据存储体系规模庞大,节点失效率高,因此还需要提供一定的自适应管理功能。系统必须能够根据数据量和计算的工作量估算所需要的节点个数,并动态地将数据在节点间进行迁移,以实现负载均衡;在节点失效时,数据必须能够通过副本等机制进行恢复,不能对上层应用产生影响。

3.存储层级内的优化技术

大数据的规模大,因此需要在保证系统性能的前提下,降低系统能耗和构建成本,即从性能和成本两个角度对存储层次进行优化,数据访问局部性原理是进行这两方面优化的重要依据,通常采用多层不同性价比的存储器件组成存储层次结构。从提高性能的角度,可以通过分析应用特征,识别热点数据并对其进行缓存或预取,通过高效的缓存预取算法和合理的缓存容量配比,以提高访问性能。从降低成本的角度,采用信息生命周期管理方法,将访问频率低的冷数据迁移到低速廉价存储设备上,可以在小幅牺牲系统整体性能的基础上,大幅降低系统的构建成本和能耗。

4.针对应用和负载的存储优化技术

针对应用和负载来优化存储,就是将数据存储与应用耦合,简化或扩展分布式文件系统的功能,根据特定应用、特定负载、特定的计算模型对文件系统进行定制和深度优化,使应用达到最佳性能。这类优化技术可在诸如谷歌、Facebook等互联网公司的内部存储系统上,高效地管理超过千万亿字节级别的大数据。1.2.4 分布式数据库

分布式数据库的基本思想是将原来集中式数据库中的数据分散存储到多个通过网络连接的数据存储节点上,以获取更大的存储容量和更高的并发访问量。分布式数据库系统可以由多个异构、位置分布、跨网络的计算机节点组成。每台计算机节点中都可以有数据库管理系统的一份完整或部分拷贝副本,并具有自己局部的数据库。多台计算机节点利用高速计算机网络将物理上分散的多个数据存储单元相互连接起来,共同组成一个完整的、全局的、逻辑上集中、物理上分布的大型数据库系统。

随着数据量的高速增长,分布式数据库技术得到了快速的发展。传统的关系型数据库开始从集中式模型向分布式架构发展,基于关系型的分布式数据库在保留了传统数据库的数据模型和基本特征下,从集中式存储走向分布式存储,从集中式计算走向分布式计算。

为了快速处理海量的数据,分布式数据库系统在数据压缩和读写方面进行了优化,并行加载技术和行列压缩存储技术是两种常用技术。并行加载技术利用并行数据流引擎,数据加载完全并行,并且可以直接通过SQL语句对外部表进行操作。行列压缩存储技术的压缩表通过利用空闲的CPU资源而减少I/O资源占用,除了支持主流的行存储模式外,还支持列存储模式。如果常用的查询中只取表中少量字段,则列模式效率更高;如果需要取表中的大量字段,则行模式效率更高,可以根据不同的应用需求提高查询效率。

应对大数据处理的分布式数据库系统可以归纳为关系型和非关系型两种。随着数据量越来越大,关系型数据库开始在高可扩展性、高并发性等方面暴露出一些难以克服的缺点,而Key-Value存储系统、文档型数据库等NoSQL非关系型数据库,逐渐成为大数据时代下分布式数据库领域的主力,如HBase、MongoDB、VoltDB、ScaleBase等。

适应于大数据存储的分布式数据库应具有高可扩展性、高并发性、高可用性三方面的特征。(1)高可扩展性:分布式数据库具有高可扩展性,能够动态地增添存储节点以实现存储容量的线性扩展。(2)高并发性:分布式数据库能及时响应大规模用户的读/写请求,能对海量数据进行随机读/写。(3)高可用性:分布式数据库提供容错机制,能够实现对数据的冗余备份,保证数据和服务的高度可靠性。1.2.5 数据库与数据仓库

数据库和数据仓库在概念上有很多相似之处,但是有本质上的差别。数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策。而数据库是按照一定数据结构来组织、存储和管理数据的数据集合。数据仓库所在层面比数据库更高,换言之,一个数据仓库可以采用不同种类的数据库实现。两者差异主要归结为以下几点:(1)在结构设计上,数据库主要面向事务设计,数据仓库主要面向主题设计。所谓面向主题设计,是指数据仓库中的数据按照一定的主题域进行组织;(2)在存储内容上,数据库一般存储的是在线数据,对数据的变更历史往往不存储,而数据仓库一般存储的是历史数据,以支持分析决策;(3)在冗余上,数据库设计尽量避免冗余以维持高效快速的存取,数据仓库往往有意引入冗余;(4)在使用目的上,数据库的引入是为了捕获和存取数据,数据仓库是为了分析数据。

在大数据处理分析方面,往往沿着从非结构数据中抽取特定结构化数据存储在关系数据库中,再从关系数据库抽取数据形成数据仓库,以支持最终的决策与分析从而体现大数据的价值。1.2.6 云计算与虚拟化技术

云计算是硬件资源的虚拟化,而大数据是海量数据的高效处理,云计算作为计算资源的底层,支撑着上层的大数据存储和处理。本小节将概要介绍云计算、虚拟化及它们的关系。

1.云计算

云计算(Cloud Computing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态、易扩展且虚拟化的资源。云是网络、互联网的一种比喻说法。以前往往用云来表示电信网,后来也用来表示互联网和底层基础设施的抽象。因此,云计算甚至可以让你体验每秒10万亿次的运算能力,这么强大的计算能力甚至于可以模拟核爆炸、预测气候变化和市场发展趋势等。用户只需通过PC、笔记本电脑、手机等方式接入云端,就可按自己的需求进行运算。

对云计算的定义有多种说法,现阶段被业界广为接受的是美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)给出的定义:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络、服务器、存储、应用软件和服务)。用户只需投入较少的管理工作,或与服务供应商进行轻量级的交互,就能快速获取这些资源。

2.虚拟化

虚拟化一般是指将物理的实体,通过软件模式,形成若干虚拟存在的系统,其实际运作还是在实体上,只是划分了若干区域或者时域。虚拟化大致分为四类:内存虚拟化、网络虚拟化、存储虚拟化、服务器虚拟化。

内存虚拟化:是指利用虚拟化技术实现对计算机内存的管理。从上层应用来看,内存虚拟化系统使得其具有连续可用的内存,即一个连续而完整的地址空间。从物理层来看,通常被分割成多个物理内存碎片。内存虚拟化的作用更多的是满足对内存的分配,对必要的数据进行交换。

存储虚拟化:存储虚拟化是将存储资源的逻辑视图和物理存储分离,从而为系统提供无缝的资源管理。由于存储标准化程度低,存储兼容是必须要考虑的一个问题,如果存储虚拟化技术源自不同的厂商,那么,就会增加后续升级和更新的难度。

网络虚拟化:网络虚拟化是利用软件从物理网络元素中分离网络的一种方式,网络虚拟化与其他形式的虚拟化有很多共同之处。网络虚拟化也面临着技术挑战,网络设备和服务器不同,一般需要执行高I/O任务,在数据处理方面往往有专用的硬件模块。

服务器虚拟化:服务器虚拟化是将服务器的CPU、内存、磁盘等硬件集中管理,通过集中式的动态按需分配,提高资源的利用率。

KVM(Kernel-based Virtual Machine)虚拟机是开源Linux原生的全虚拟化解决方案,它基于X86硬件的虚拟化扩展(Intel VT或者AMD-V技术)。在KVM中,虚拟机被实现为常规的Linux进程,由标准Linux调度程序进行调度;而虚拟机的每个虚拟CPU则被实现为一个常规的Linux进程。这使得KMV能够使用Linux 内核的已有功能。

3.云计算与虚拟化的关系

云计算是个概念,而不是具体技术。虚拟化是一种具体技术,指把硬件资源虚拟化,实现隔离性、可扩展性、安全性、资源可充分利用等。这两者之间看似不相关,但背后却依然有千丝万缕的联系。云计算的基础是虚拟化,但虚拟化只是云计算的一部分,云计算是在虚拟化出若干资源池以后的应用。

基于上面的观点,很多人认为虚拟化不过是云计算的基础,是云计算快速发展的嫁衣,助推了云计算的发展,而且虚拟化只是云计算后面的一个小小的助推力。其实,虚拟化并不只有这些作用,虚拟化广泛应用于IT领域中,针对不同的资源,有着相应的虚拟化技术。云计算的原理更多的是利用了虚拟化,但是虚拟化并不仅仅只服务云计算。1.2.7 虚拟化产品介绍

1.VMware

VMware是全球桌面到数据中心虚拟化解决方案的领导厂商,在虚拟化和云计算基础架构领域处于全球领先地位,VMware工作站(VMware Workstation)是VMware公司的商业软件产品之一,该工作站软件包含一个用于英特尔X86兼容计算机的虚拟机套装,允许多个X86虚拟机同时被创建和运行,每个虚拟机实例可以运行自己的客户机操作系统,如Windows、Linux、BSD变生版本。

运行VMware工作站进程的计算机和操作系统实例被称为宿主机,在一个虚拟机中运行的操作系统实例被称为虚拟机客户(又称客户机)。类似仿真器,VMware工作站为客户操作系统提供完全虚拟化的硬件集。例如,客户机只会检测到一个AMD PCnet网络适配器,而和宿主机上真正安装的网络适配器的制造商和型号无关。VMware在虚拟环境中将所有设备都虚拟化了,包括显卡、网卡和硬盘,它还为串行和并行设备提供传递驱动程序(Pass-Through Drivers),通过该驱动程序可以将对这些虚拟设备的访问传递到真实物理设备。

由于与宿主机的真实硬件无关,虚拟机使用的都是相同的硬件驱动程序,因此虚拟机对各种计算机都是高度可移植的。例如,一个运行中的虚拟机可以被暂停下来,并被拷贝到另外一台作为宿主机的真实计算机上,然后从其被暂停的确切位置恢复运行。借助VMware的VirtualCenter产品中的Vmotion功能,甚至可以在移动一个虚拟机时不必将其暂停就可以向不同的宿主机上进行移植。

2.VirtualBox

VirtualBox是由德国Innotek公司开发,由Sun Microsystems公司出品的软件,在Sun公司被Oracle公司收购后正式更名成Oracle VM VirtualBox。Innotek以GNU General Public License(GPL)发布VirtualBox,并提供二进制版本及OSE版本的代码。使用者可以在VirtualBox上安装并且执行Solaris、Windows、DOS、Linux、OS/2 Warp、BSD等系统作为客户端操作系统。现在则由Oracle公司进行开发,是Oracle公司xVM虚拟化平台技术的一部分。

VirtualBox号称是最强的免费虚拟机软件,它不仅特色明显,而且性能也很优异,简单易用。与同性质的VMware及Virtual PC相比,VirtualBox的独到之处包括远端桌面协定(RDP)、对iSCSI及USB的支持等。

本书采用VirtualBox搭建实验环境,详见2.4节。

3.OpenStack

OpenStack是一个由美国国家航空航天局(NASA)和Rackspace合作研发并发起的项目,是一个开源的云计算平台,由来自世界各地的云计算开发人员共同创建。OpenStack通过一组相关的服务提供一个简单,大规模可伸缩,功能丰富的基础设施,即服务(IaaS)解决方案,其各组件之间的关系如图1.4所示。图1.4 OpenStack架构图(1)Keystone认证服务

Keystone 管理用户目录以及用户可以访问的OpenStack服务的目录,其目的是跨所有OpenStack组件暴露一个中央身份验证机制。Keystone本身没有提供身份验证,但它可以集成其他各种目录服务,如Pluggable Authentication Module、Lightweight Directory Access Protocol(LDAP)或OAuth。通过这些插件,它能够实现多种形式的身份验证,包括简单的用户名密码和复杂的多因子系统。(2)Nova计算服务

Nova控制云计算架构(基础架构服务的核心组件),它是用Python编写的,创建了一个抽象层,让CPU、内存、网络适配器和硬盘驱动器等服务器资源实现虚拟化管理(但并不实现具体的虚拟化技术),并具有提高利用率和自动化的功能。它的实时VM管理具有启动、调整大小、挂起、停止和重新引导的功能。这是通过集成一组受支持的虚拟机管理程序来实现的。还有一个机制可以在计算节点上缓存VM镜像,以实现更快的配置。在运行镜像时,可以通过应用程序编程接口(API)以编程方式存储和管理文件。(3)Neutron网络服务

Neutron提供了管理局域网的能力,具有适用于虚拟局域网(VLAN)、动态主机配置协议和IPv6的一些功能。用户可以定义网络、子网和路由器,以配置其内部拓扑,然后向这些网络分配IP地址和VLAN,浮动IP地址允许用户向VM分配(和再分配)固定的外部IP地址。(4)Swift对象存储服务

Swift是一个分布式存储系统,主要用于静态数据,比如VM镜像、备份和存档,将文件和其他对象写入可能分布在一个或多个数据中心的一组磁盘驱动器,在整个集群内确保数据复制和完整性。(5)Glance镜像服务

Glance为VM镜像提供了支持,除了发现、注册和激活服务之外,它还有快照和备份功能。Glance镜像可以充当模板,快速并且一致地部署新的服务器,其API服务器提供具象状态传输(Representational State Transfer,REST)接口,用户可以利用它来列出并获取可分配给一组可扩展后端存储(包括OpenStack Object Storage)的虚拟磁盘镜像。(6)Cinder块存储服务

Cinder管理计算实例所使用的块级存储,块存储非常适用于有严格性能约束的场景,比如数据库和文件系统。与Cinder配合使用的最常见存储是Linux服务器存储,但也有一些面向其他平台的插件,其中包括Ceph、NetApp、Nexenta和SolidFire。(7)Horizon Web界面管理服务

Horizon Web是图形用户界面,管理员可以很方便地使用它来管理所有项目。

4.Docker

Docker是一个开源的引擎,可以轻松地为任何应用创建一个轻量级的、可移植的、自给自足的容器,通过容器可以在生产环境中批量地部署,包括VM(虚拟机)、BareMetal、OpenStack集群和其他基础的应用平台。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载