注意!由于文章图片是通过typora一键上传图片实现,该功能还存在bug,容易导致图片顺序混乱,文章开头提供了原版文章的 pdf 资源下载,推荐下载 pdf 后观看
数据的基本概念:数据是对客观事物的观测(测量)或描述而得到的符号或数 字集合。
数据对象的概念:原始数据通常是一个包含多个数据对象(data object)的集 合,每个数据对象通常对应于一个具有完整语义信息的事物, 是分析事物的基本单位
不同类型的数据:
记录数据:数据是记录的汇集,每个记录包含固定的属性集
数据矩阵:
文档数据:
每一个文档都是一个“术语”向量
每个术语是向量的一个组成部分(属性)
每个组成部分的值是相应术语在文档中出现的次数
事务数据
一种特殊类型的记录数据,其中:
每个记录(事务)涉及一系列的项
考虑一个杂货店,顾客一次购物所购买的商品的集合构成一 个事务,而购买的商品是项。
图数据:
示例:通用图和HTML链接
有序数据
时空数据
例子:
数据的使用:
数据的组织形式:
数据的价值:
数据爆炸
第三次信息化浪潮(三次浪潮之间间隔都是15年)
数据产生方式的变革促成大数据来临
信息技术为大数据时代提供技术支持
大数据的发展历程
进入大数据时代,世界各国都非常重视大数据发展。瑞士洛桑国际管理学院发 布2017年度《世界数字竞争力排名》报告,报告显示,各国数字竞争力与其整 体竞争力呈现出高度一致的态势,也就是说,数字竞争力强的国家,其整体竞 争力也很强,同时也更容易产生颠覆性创新
各国的大数据发展战略(这能考?)
大数据的概念
数据量大
数据类型繁多
大数据是由结构化和非结构化数据组成的
例子:
处理速度快
价值密度低
大数据核心挑战
大数据领域的发展历程
大数据与人工智能
大数据与数据挖掘:也有重要联系
商业智能应用:决策支持
商业智能应用:推荐系统
体育应用:篮球针对性训练
政治应用:美国总统大选
教育应用:大数据发现隐性贫困学生
交通应用:拥堵预测
大数据应用
大数据的核心问题:“关联”:发现多源、异构的碎片化信息之间的关联关系
大数据技术体系:数据采集、数据存储、数据处理、统计分析、智能挖掘、可视化
两大核心技术:分布式存储、分布式处理
大数据计算模式及其代表产品
大数据统计分析技术
从统计分析到智能挖掘:数据挖掘:Data Mining!
实际智能挖掘项目的过程模型
数据挖掘:多学科融合(数据库、统计学、并行计算、其他学科、算法、机器学习)
数据挖掘任务:
分类与回归:定义
聚类分析(cluster analysis)
关联规则挖掘
挖掘事物之间的关联关系
给定一组记录(数据对象),每个记录包含来自给定集合的 一些项目(Item)
生成项集(itemset)之间的关联规则:
离群点/异常检测
推荐系统:协同过滤
面向大数据的商业智能平台基本框架
大数据存储与分析系统
数据挖掘系统
大数据领域的重要国际会议和期刊
云计算概念:通过网络、以服务的方式,为 千家万户提供非常廉价的IT资源
云计算特点:超大规模计算、虚拟化、高可 靠性和安全性、通用性、动态扩 展性、按需服务、降低成本
类比水资源获取方式的对比
什么是Cloud?
SaaS(Software as a Service)【各种app】
PaaS(Platform as a Service)【如Google App Engine】
IaaS(Infrastructure as a Service)
各种数据和应用,并非在“天上云端”,而是位于数据中心里
数据中心是云计算的温床
数据中心包含大量刀片服务器
数据中心应该修建在哪里?
政务云上可以部署公共安全管理、容 灾备份、城市管理、应急管理、智能 交通、社会保障等应用,通过集约化 建设、管理和运行,可以实现信息资 源整合和政务资源共享,推动政务管 理创新,加快向服务型政府转型
教育云可有效整合幼儿教育、中 小学教育、高等教育以及继续教 育等优质教育资源,逐步实现教 育信息共享、教育资源共享及教 育资源深度挖掘等目标
中小企业云能够让企业以 低廉的成本建立财务、供 应链、客户关系等管理应 用系统,大大降低企业信 息化门槛,迅速提升企业 信息化水平,增强企业市 场竞争力
医疗云可推动医院与医院、医院 与社区、医院与急救中心、医院 与家庭之间的服务共享,并形成 一套全新的医疗健康服务系统, 从而有效地提高医疗保健的质量
物联网概念:
物联网(IoT:The Internet of Things)物联网就是物物相连的互联网,是互联网的延伸
物联网形式早已存在,统一意义上的物联网概念提出是架构在互联网发展成熟的基础上
智慧地球也称为智能地球,就是把感应器嵌入和装备到电网、铁路、桥梁、隧道、公路、建筑、 供水系统、大坝、油气管道等各种物体中,并且被普遍连接,形成所谓“物联网”,然后将“物 联网”与现有的互联网整合起来,实现人类社会与物理系统的整合。智慧地球的核心是以一种更 加智慧的方法,通过利用新一代信息技术改变政府、公司和人们相互交互的方式,以便提高交互 的明确性、效率、灵活性和响应速度。
物联网层次架构:
物联网的关键技术
随着大数据概念的提出,云 计算中的分布式计算技术开 始更多地被列入大数据技术 ,而人们提到云计算时,更 多指的是底层基础IT资源的 整合优化以及以服务的方式 提供IT资源的商业模式 (如IaaS、PaaS、SaaS)
大数据、云计算和物联网之间的关系:
人工智能概念
人工智能关键技术
机器学习:
知识图谱
自然语言处理
人机交互
计算机视觉
生物特征识别
VR/AR
中本聪为什么要创造比特币:
哈希函数的作用:输入任意字符串,输出固定长度的字符串。两个不同的输入,会有不同的输出。根据已知的输出,很难找到对应 的输入
在每个区块上,增加区块头,其中记录了父区块的哈希值。通过每个区块存储父区块的哈希值,把所有区块按照顺序组织起来,形成区块链
是否可以解决51%攻击问题?以2017年11月16日的价格计算,在比特币网络进行51%攻击每天的 成本包含大约31.4亿美元的硬件成本和560万美元的电力成本
区块链的本质:
区块链原理-交易安全
区块链原理-去中心化
中心化记账的缺点:
去中心化记账:人人都可以记账,每个人都可以保留完整账本.任何人都可以下 载开源程序,参与P2P网络,监听全世界发送的交易,成为记账节点,参与记账
去中心化记账特点:
如何分配记账权:
区块链技术全貌:
区块链技术是利用块链式数据结构来验证与存储数据,利用分布式节点共识算法 来生成和更新数据、利用密码学方式保证数据传输和访问安全、利用由自动化 脚本代码组成的智能合约来编程和操作数据的全新分布式基础架构与计算范式
区块链区组成三要素
从科技层面来看:区块链涉及数学 、密码学、互联 网和计算机编程 等很多科学技术 问题
从应用视角来看:区块链是一个分布 式的共享账本和数 据库,具有去中心 化、不可篡改、全 程留痕、可追溯、 集体维护、公开透 明等特点
区块链技术的各种应用
大数据与区块链的区别:
大数据与区块链的联系
数据采集概念:数据采集,又称“数据获取” ,是数据分析的入口,也是数据分析过程中 相当重要的一个环节,它通过各种技术手段把外部各种数据源产生的数据 实时或非实时地采集并加以利用。
数据采集的三大要点:全面性、多维性、高效性
数据采集的数据源:传感器、互联网数据、企业业务系统数据、日志文件
网络爬虫的工作流程
数据存储方法:
单机文件系统
网络文件系统
分布式文件系统
Hadoop简介
Hadoop发展简史:
Hadoop的特性
Hadoop的应用现状
Hadoop凭借其突出的优势,已经在各个领域得到了广泛的应用, 而互联网领域是其应用的主阵地
2007年,雅虎在Sunnyvale总部建立了M45——一个包含了4000 个处理器和1.5PB容量的Hadoop集群系统
Facebook作为全球知名的社交网站,Hadoop是非常理想的选择, Facebook主要将Hadoop平台用于日志处理、推荐系统和数据仓 库等方面
国内采用Hadoop的公司主要有百度、淘宝、网易、华为、中国移 动等,其中,淘宝的Hadoop集群比较大
Apache Hadoop版本演变
Hadoop各种版本
Hadoop的项目结构
一个大数据处理的问题:
数据处理方法
分布式计算框架MapReduce:运算移动,数据不移动
MapReduce词频统计-实现原理:
首先,Map阶段将原始数据拆分成一系列键值对(key-value pairs),其中key是单词,value为1。然后,Map程序并行执行,同时处理所有输入文件中的数据,把输入的键值对都映射成另一组键值对,并且按照key进行哈希分区,将相同的key的value合并成列表。
接着,Reduce阶段会将Map阶段输出的结果按照key进行分组,然后对每组key-value pairs进行聚合计算操作。在本例中,Reduce阶段会将所有相同的单词归为一组,把它们的value值相加,得到该单词在整个文本文件中出现的次数。
最后,MapReduce将Reduce阶段输出的结果写入到文件或其他存储介质中。
在这个过程中,所有的Map和Reduce节点都是独立的,它们可以并行运行,从而提高计算效率和速度。这就是MapReduce编程模型的工作过程。
Hadoop项目结构:
计算机集群结构:
分布式文件系统的结构
HDFS简介
块
名称节点和数据节点
名称节点和数据节点
FsImage文件
名称节点的启动
名称节点运行期间EditLog不断变大的问题
在名称节点运行期间,HDFS的所有更新操作都是直接写到EditLog中, 久而久之, EditLog文件将会变得很大
虽然这对名称节点运行时候是没有什么明显影响的,但是,当名称节点 重启的时候,名称节点需要先将FsImage里面的所有内容映像到内存中 ,然后再一条一条地执行EditLog中的记录,当EditLog文件非常大的时 候,会导致名称节点启动操作非常慢,而在这段时间内HDFS系统处于 安全模式,一直无法对外提供写操作,影响了用户的使用
如何解决?答案是:SecondaryNameNode第二名称节点
第二名称节点是HDFS架构中的一个组成部分,它是用来保存名称节点中对HDFS 元数据信息的备份,并减少名称节点重启的时间。SecondaryNameNode一般是 单独运行在一台机器上
数据节点(DataNode)
HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群包括一 个名称节点(NameNode)和若干个数据节点(DataNode)。名称节点 作为中心服务器,负责管理文件系统的命名空间及客户端对文件的访问。 集群中的数据节点一般是一个节点运行一个数据节点进程,负责处理文件 系统客户端的读/写请求,在名称节点的统一调度下进行数据块的创建、删 除和复制等操作。每个数据节点的数据实际上是保存在本地Linux文件系统 中的
HDFS命名空间管理
通信协议
客户端
HDFS体系结构的局限性
冗余数据保存
作为一个分布式文件系统,为了保证系统的容错性和可用性,HDFS采用 了多副本方式对数据进行冗余存储,通常一个数据块的多个副本会被分布到不 同的数据节点上,如图所示,数据块1被分别存放到数据节点A和C上,数据块 2被存放在数据节点A和B上。这种多副本方式具有以下几个优点:
加快数据传输速度
容易检查数据错误
保证数据可靠性
数据存取策略
数据存放
第一个副本:放置在上传文件的数据节点;如果是集群外提交,则随机 挑选一台磁盘不太满、CPU不太忙的节点
第二个副本:放置在与第一个副本不同的机架的节点上
第三个副本:与第一个副本相同机架的其他节点上
更多副本:随机节点
数据读取
数据错误与恢复
HDFS具有较高的容错性,可以兼容廉价的硬件,它把硬件出错 看作一种常态,而不是异常,并设计了相应的机制检测数据错误和进 行自动恢复,主要包括以下几种情形:名称节点出错、数据节点出错 和数据出错。
名称节点出错:
名称节点保存了所有的元数据信息,其中,最核心的两大数据 结构是FsImage和Editlog,如果这两个文件发生损坏,那么整个 HDFS实例将失效。因此,HDFS设置了备份机制,把这些核心文件 同步复制到备份服务器SecondaryNameNode上。当名称节点出错时, 就可以根据备份服务器SecondaryNameNode中的FsImage和Editlog 数据进行恢复
数据节点出错
数据出错
读取文件的代码
import java.io.BufferedReader;
import java.io.InputStreamReader;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.FSDataInputStream;
public class Chapter3 {
public static void main(String[] args) {
try {
Configuration conf = new Configuration();
conf.set("fs.defaultFS","hdfs://localhost:9000");
conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");
FileSystem fs = FileSystem.get(conf);
Path file = new Path("test");
FSDataInputStream getIt = fs.open(file);
BufferedReader d = new BufferedReader(new InputStreamReader(getIt));
String content = d.readLine(); //读取文件一行
System.out.println(content);
d.close(); //关闭文件
fs.close(); //关闭hdfs
} catch (Exception e) {
e.printStackTrace();
}
}
}
写入文件
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.Path;
public class Chapter3 {
public static void main(String[] args) {
try {
Configuration conf = new Configuration();
conf.set("fs.defaultFS","hdfs://localhost:9000");
conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");
FileSystem fs = FileSystem.get(conf);
byte[] buff = "Hello world".getBytes(); // 要写入的内容
String filename = "test"; //要写入的文件名
FSDataOutputStream os = fs.create(new Path(filename));
os.write(buff,0,buff.length);
System.out.println("Create:"+ filename);
os.close();
fs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
系统解释:
读数据的过程
写数据的过程