大数据技术与实践

注意!由于文章图片是通过typora一键上传图片实现,该功能还存在bug,容易导致图片顺序混乱,文章开头提供了原版文章的 pdf 资源下载,推荐下载 pdf 后观看

文章目录

  • 大数据技术与实践
    • 1.1-大数据技术概述
      • 一、数据的概念
      • 二、大数据时代
      • 三、世界各国的大数据发展战略
      • 四、大数据的概念
      • 五、大数据的应用领域
      • 六、大数据的技术概况
      • 七、大数据产业
      • 八、大数据的学习资源
    • 2-大数据与其他新技术之间的关系
      • 一、云计算
        • 云计算概念
        • 云计算服务模式和类型
        • 云计算数据中心
        • 云计算的应用
      • 二、物联网
        • 物联网的概念与关键技术
        • 物联网的应用与产业
      • 三、大数据与云计算、物联网的关系
      • 四、大数据与人工智能
        • 人工智能的概念和关键技术
        • 人工智能的应用
        • 人工智能产业
        • 大数据与人工智能的关系
      • 五、大数据与区块链
        • 区块链原理
        • 区块链定义与应用
        • 大数据与区块链的关系
    • 3-大数据的获取、存储与并行计算
      • 一、数据的来源与采集
      • 二、数据存储方法
      • 三、数据的访问
      • 四、基于MapReduce的大数据并行处理
    • 3.1-大数据分布式文件处理系统HDFS
      • 一、分布式文件系统
      • 二、HDFS介绍
      • 三、HDFS相关概念
      • 四、HDFS体系结构
      • 五、HDFS存储原理
      • 六、HDFS数据读写过程

1.1-大数据技术概述

一、数据的概念

  1. 数据的基本概念:数据是对客观事物的观测(测量)或描述而得到的符号或数 字集合。

  2. 数据对象的概念:原始数据通常是一个包含多个数据对象(data object)的集 合,每个数据对象通常对应于一个具有完整语义信息的事物, 是分析事物的基本单位

  3. 不同类型的数据:

    • 记录数据

      • 关系表数据
      • 事务数据(Transaction Data)
    • 多媒体数据:声、图、文
    • 时空数据
      • 空间数据(Spatial Data)
      • 时间数据(Temporal Data)
    • 关系图数据
  4. 记录数据:数据是记录的汇集,每个记录包含固定的属性集

  5. 数据矩阵:

    • 如果数据对象具有相同固定的数值属性集,则数据对象可以 看作多维空间中的点,其中每个维代表一个不同属性。
    • 这样的数据集可以用m×n的矩阵表示,其中有m行,每一行 对应一个对象,和n列,每一列对应一种属性。
  6. 文档数据:

    • 每一个文档都是一个“术语”向量

      • 每个术语是向量的一个组成部分(属性)

      • 每个组成部分的值是相应术语在文档中出现的次数

  7. 事务数据

    • 一种特殊类型的记录数据,其中:

      • 每个记录(事务)涉及一系列的项

      • 考虑一个杂货店,顾客一次购物所购买的商品的集合构成一 个事务,而购买的商品是项。

  8. 图数据:

    • 示例:通用图和HTML链接

  9. 有序数据

    • 事务序列

    • 基因组序列数据

  10. 时空数据

    • 例子:

  11. 数据的使用:

    • 第一步 数据清洗;第二步 数据管理;第三步 数据分析

  12. 数据的组织形式:

    • 文件:计算机系统中的很多数据都是以 文件形式存在的,比如一个 WORD文件、一个文本文件、 一个网页文件、一个图片文件等

    • 数据库:数据库已经成为计算机软件开发 的基础和核心,数据库在人力资 源管理、固定资产管理、制造业 管理、电信管理、销售管理、股 市管理、图书馆管理、政务管理 等领域发挥着至关重要的作用

    • 随着Web2.0的兴起,非结构化数据迅速增加,目前人类社会产生的数字内容中 有90%是非结构化数据,因此,能够更好支持非结构化数据管理的NoSQL数据 库应运而生

  13. 数据的价值:

    • 数据的价值根本在于可以为人们找出答案。数据往往都是为了某个特定的目的而 被收集,而数据的价值对于数据收集者而言,价值都是显而易见的。数据的价值 是不断被人发现
    • 数据的价值不会因为不断被使用而削减,反而会因为不断重组而产生更大的价值
      • 过去:在过去,一旦数据的基本用途实现了,往往就会被删除,一方面是由于过去的存储技术落后,人们需要删除旧数据来存储新数据,另一方面则是人们没有认识到数据的潜在价值
      • 现在:各类收集来的数据都 应当被尽可能长时间地 保存下来,同时也应当 在一定条件下与全社会 分享,并产生价值
    • 在大数据时代以前,最有 价值的商品是石油,而今 天和未来则是数据。目前 占有大量数据的谷歌、亚 马逊等全球前五大公司, 每个季度的利润总和高达 数十亿美元,并在继续快 速增加,这都是数据价值 的最好佐证。因此,要实 现大数据时代思维方式的 转变,就必须要正确认识 数据的价值,数据已经具 备了资本的属性,可以用 来创造经济价值
  14. 数据爆炸

    • 人类进入信息社会以后,数据以自然方式增长,其产生不以人的意志为转移 从1986年开始到2010年的20年时间里,全球数据的数量增长了100倍,今后的 数据量增长速度将更快,我们正生活在一个“数据爆炸”的时代
    • 今天,世界上只有25%的设备是联网的,在 联网设备中大约80%是电脑和手机,而在将 来,随着移动通信5G时代的全面开启,将 有更多的用户成为网民,汽车、电视、家用 电器、生产机器等各种设备也将联入互联网 。随着Web2.0和移动互联网的快速发展, 人们已经可以随时随地、随心所欲发布包括 博客、微博、微信、抖音等在内的各种信息
    • 在1分钟内,新浪产生2万条微博,Twitter产生10万条推文,苹果下载4.7万次应用 ,淘宝可卖出6万件商品,百度可以产生90万次搜索查询,Facebook可以产生600 万次浏览量
    • 随着物联网的推广和普及,各种传感器和摄像头将遍布各个角落,每时每刻都在自 动产生大量数据
    • 数据爆炸对科学研究提出更高要求,需要设计出更加灵活高效的数据存储、处理和 分析工具,应对大数据时代的挑战,必将带来云计算、数据仓库、数据挖掘等技术 和应用的提升或者根本性改变
      • 在存储效率领域:需要实现低成本的大 规模分布式存储
      • 在网络效率方面:需要实现及时响应的 用户体验
      • 在数据中心方面:需要开发绿色节能新一 代数据中心,在有效响应 大数据处理需求的同时 ,实现最大化资源利用 率、最小化系统能耗的 目标

二、大数据时代

  1. 第三次信息化浪潮(三次浪潮之间间隔都是15年)

    • 根据IBM前首席执行官郭士纳的观点,IT领域每隔十五年就 会迎来一次重大变革。

  2. 数据产生方式的变革促成大数据来临

    • 第一阶段:运营式系统阶段

      • 实例:超市购物,在数据库系统中生成购物信息,购物信息存储至企业零售系统数据库
    • 第二阶段:用户原创内容阶段
      • 互联网的出现,使得数据传播更加 快捷,不需要借助于磁盘、磁带等 物理存储介质传播数据,网页的出 现进一步加速了大量网络内容的产 生,从而使得人类社会数据量开始 呈现“井喷式”增长。但,互联网 真正的数据爆发产生于以“用户原 创内容”为特征的Web 2.0时代
    • 第三阶段:感知式系统阶段
      • 物联网(IOT)实现万物互联,包括传感器、摄像头、RFID(一种无线通信技术)都会产生数据
  3. 信息技术为大数据时代提供技术支持

    • 技术支撑包括:存储设备、CPU计算能力、网络带宽。
    • 存储设备容量不断增加
      • 存储价格随时间逐步走低。早期的存储设备容量小、价格 高、体积大, 例如 IBM在1956 年生产一个早期的商业硬盘, 容量只有5MB,不仅价格昂贵 ,而且体积有一个冰箱那么大。以闪存为代表的新型存储介质也开始得到大规模的普及和应用,闪存具有体积小、质量轻、能耗低、抗震性好等优良特性
      • 一方面,随着数据不断产生,需 要存储数据量不断增加,对存 储设备的容量提出了更高的要 求,促使存储设备生产商制造 更大容量的产品满足市场需求
      • 另一方面,更大容量的 存储设备,进一步加快 了数据量增长的速度
    • CPU处理能力大幅提升
      • CPU晶体管数目随时间变化不断增加
    • 网络带宽不断增加
      • 以我国为例,截至2018年第一季度末,我国光纤宽带用户在固定宽带用户中占比达 85.3%,已超越多年宽带发展世界领先的日韩等国,居全球第一。目前移动通信4G基 站数量也已接近340万,我国4G网络规模全球第一。2019年5G网络时代被三大运营 商提上日程,我国正加速进入5G时代
  4. 大数据的发展历程

三、世界各国的大数据发展战略

进入大数据时代,世界各国都非常重视大数据发展。瑞士洛桑国际管理学院发 布2017年度《世界数字竞争力排名》报告,报告显示,各国数字竞争力与其整 体竞争力呈现出高度一致的态势,也就是说,数字竞争力强的国家,其整体竞 争力也很强,同时也更容易产生颠覆性创新

  1. 各国的大数据发展战略(这能考?)

    • 此处省略其他国家的发展战略详解
    • “国家十三五规划” : 第二十七章 实施国家大数据战略
      • “把大数据作为基础性战略资源,全面实施促进大数据发展 行动,加快推动数据资源共享开放和开发应用,助力产业转 型升级和社会治理创新”
      • “加快政府数据开放共享”
    • 国务院:《关于印发促进大数据发展行动纲要》,国发 〔2015〕50号
    • 国家战略性新兴产业:新一代信息技术产业,大数据是基础 与核心!

四、大数据的概念

  1. 大数据的概念

    • 数据量大

      • 根据IDC作出的估测,数据一直都在以每年50%的速度增长,也就是说 每两年就增长一倍(大数据摩尔定律)
      • 人类在最近两年产生的数据量相当于之前产生的全部数据量
      • 预计到2020年,全球将总共拥有35ZB的数据量,相较于2010年,数据 量将增长近30倍
    • 数据类型繁多

      • 大数据是由结构化和非结构化数据组成的

        • 10%的结构化数据,存储在数据库中
        • 90%的非结构化数据,它们与人类信 息密切相关
      • 例子:

    • 处理速度快

      • 从数据的生成到消耗,时间窗口非常小,可用于生成决策的时间非常少
      • 1秒定律:这一点也是和传统的数据挖掘技术有着本质的不同
    • 价值密度低

      • 价值密度低,商业价值高
      • 以视频为例,连续不间断监控过程中,可能有用的数据仅仅有一两秒,但是 具有很高的商业价值
  2. 大数据核心挑战

    • 核心挑战:具有多源、异构、信息碎片化的特征
    • 一个形象的比喻:盲人摸象
  3. 大数据领域的发展历程

    • 大规模数据的处理与分析技术已发展多年,一直是研究热点
    • 但量变会引起质变
  4. 大数据与人工智能

    • 国务院:《新一代人工智能发展规划》,国发〔2017〕35号

    • 目前最成功的人工智能应用领域: 大数据智能、大数据机器 学习!

      • 深度学习需要大数据支撑
  5. 大数据与数据挖掘:也有重要联系

五、大数据的应用领域

  1. 商业智能应用:决策支持

    • 数据分析与决策支持

      • 市场分析与管理:精准营销、客户关系管理(CRM)、购物篮分析、交叉销售、市场细 分
      • 风险分析与管理:预测(人、财、物)、客户维系、质量控制、竞争分析
      • 诈骗检测与异常模式发现
  2. 商业智能应用:推荐系统

    • 应用领域:电商、信息推荐、电影、音乐等
    • 目的:预测用户对商品是否喜欢、喜欢程度、个性化服务
  3. 体育应用:篮球针对性训练

    • 对运动员成长轨迹进行深度挖掘、建模
    • 找出运动员的”短板“与”长版“
    • 加强对特长点和薄弱点的训练
  4. 政治应用:美国总统大选

    • 在总统候选人的第一次辩论之后,他们分析出哪些选民将倒戈,为每位 选民找出一个最能说服他的理由
    • 通过一些复杂的模型来精准定位不同选民,购买了一些冷门节目的广告 时段,而没有采用在本地新闻时段买广告的传统做法,广告效率相比 2008年提高了14%
    • 向奥巴马推荐,竞选后期应当在什么地方展开活动——那里有很多争取 对象
    • 借助模型帮助奥巴马筹集到创记录的10亿美元
  5. 教育应用:大数据发现隐性贫困学生

    • 某高校大数据智慧助困系统
    • 不需要学生申请,靠客观的大数据分析,保护受助学生个人 隐私
    • 主要使用消费数据,例如食堂饭卡、超市消费、水卡等,还 结合学生的勤工助学、奖学金情况等多个维度进行综合分析 挖掘
  6. 交通应用:拥堵预测

    • 建立历史交通数据库

      • 道路信息:从GIS数据库中导出北京市路网数据,包括道路的 起点终点,中轴线经纬度,道路等级,车道数目等等。
      • 车辆信息:数据来源是北京市6万辆出租车每天的GPS数据, 出租车每50s生成一条GPS信息。
    • 未来时间段车速预测
      • 影响交通因素:天气状况,车辆数量,交通事故等,但车速 可以包含以上信息。
      • 根据历史数据中最相似的情况,从而进行预测,最相似的车 速曲线,未来时刻的变化也可能相似
  7. 大数据应用

六、大数据的技术概况

  1. 大数据的核心问题:“关联”:发现多源、异构的碎片化信息之间的关联关系

  2. 大数据技术体系:数据采集、数据存储、数据处理、统计分析、智能挖掘、可视化

    • 两大核心技术:分布式存储、分布式处理

    • 大数据计算模式及其代表产品

  3. 大数据统计分析技术

    • 条件查询

      • SQL语言查询(或类SQL)
    • 聚合统计
      • 按地区汇总销售量
      • 按时间维度汇总
    • 复杂报表
    • 多维度、多层次统计分析:联机分析处理(OLAP)
  4. 从统计分析到智能挖掘:数据挖掘:Data Mining!

  5. 实际智能挖掘项目的过程模型

  6. 数据挖掘:多学科融合(数据库、统计学、并行计算、其他学科、算法、机器学习)

  7. 数据挖掘任务:

    • 多维概念描述:特征化和区分

      • 概括,汇总,和对比数据特征,例如,干区域和湿区域
    • 关联规则挖掘
      • 尿布→ 啤酒 [0.5%, 75%] (相关性or因果关系?)
    • 分类和回归预测
      • 分类:预测离散的类标
      • 回归:预测连续的目标值
    • 聚类分析
    • 离群点检测
    • 推荐系统
    • 趋势和演变分析
      • 趋势和偏差
      • 子图模式挖掘、周期性分析
      • 基于相似性的分析
  8. 分类与回归:定义

    • 分类(classification):预测给定数据对象的类别(class)

    • 回归(regression):预测给定数据对象对应的目标值

    • 分类示例

  9. 聚类分析(cluster analysis)

    • 给定一个数据对象集合,以及数据对象之间的相似性度量, 找到这样的一组簇(cluster):

      • 同一个簇中的数据点彼此更相似,不同簇中的数据对象彼此不 太相似
    • 聚类分析示例

  10. 关联规则挖掘

    • 挖掘事物之间的关联关系

    • 给定一组记录(数据对象),每个记录包含来自给定集合的 一些项目(Item)

    • 生成项集(itemset)之间的关联规则:

  11. 离群点/异常检测

    • 检测与正常行为之间存在的显着偏差
    • 应用:
      • 信用卡欺诈检测、网络入侵检测等
  12. 推荐系统:协同过滤

    • 给定用户偏好的数据库,预测新用户的偏好
    • 示例:预测你喜欢的新电影,根据:
      • 你过去的偏好
      • 其他有相同偏好的人,以及他们对新电影的偏好
    • 推荐系统的成功应用案例:今日头条

七、大数据产业

  1. 大数据产业:大数据产业是指一切与支撑大数据组织管理和价值发现相关的企业经济活动的集合

八、大数据的学习资源

  • 面向大数据的商业智能平台基本框架

  • 大数据存储与分析系统

  • 数据挖掘系统

    • 商业化系统

      • SAS Enterprise Miner
      • SPSS Clementine
      • Insightful Miner
      • Oracle/SQL Server提供的数据挖掘工具
    • 开源系统
      • Weka
      • Alphaminer
      • Mahout
      • Spark …
  • 大数据领域的重要国际会议和期刊

    • Conferences

      • ACM SIGMOD
      • VLDB
      • ICDE
      • ACM SIGKDD Int. Conf. on Knowledge Discovery in Databases and Data Mining (KDD)
      • SIAM Data Mining Conf. (SDM)
      • (IEEE) Int. Conf. on Data Mining (ICDM)
      • PAKDD, PKD
    • Other related conferences
      • WWW, SIGIR
      • ICML, CVPR, NIPS, IJCAI
    • Journals
      • IEEE Trans. On Knowledge and Data Eng. (TKDE)
      • ACM Transactions on Information Systems
      • ACM Transactions on Database Systems
      • The VLDB Journal
      • ACM Trans. on KD

2-大数据与其他新技术之间的关系

一、云计算

云计算概念

  1. 云计算概念:通过网络、以服务的方式,为 千家万户提供非常廉价的IT资源

    云计算特点:超大规模计算、虚拟化、高可 靠性和安全性、通用性、动态扩 展性、按需服务、降低成本

  2. 类比水资源获取方式的对比

    • 传统IT资源获取方式:自建机房

      • 初期成本高,周期长
      • 后期需要自己维护,使用成本高
      • IT资源供应量有限
    • 云计算:企业不需要自建IT基础设施,可以租用云端资源
      • 初期零成本,瞬时可获得
      • 后期免维护,使用成本低
      • 在供应IT资源量方 面“予取予求”
  3. 什么是Cloud?

    • 云计算(Cloud Computing)是分布式计算 (Distributed Computing)、并行计算(Parallel Computing)、 效用计算(Utility Computing)、网络存储(Network Storage Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机和网络技术发展融合的产物。
    • 目标:使IT计算能力(存储和计算)可以向电能一样提供给客户。

云计算服务模式和类型

  1. SaaS(Software as a Service)【各种app】

    • 从一个集中的系统部署软件,使之在一台本地计算机上(或从云中远程地)运行的一个模型。 由于是计量服务,SaaS 允许出租一个应用程 序,并计时收费
  2. PaaS(Platform as a Service)【如Google App Engine】

    • 类似于 IaaS,但是它包括操作系统和围绕特 定应用的必需的服务
  3. IaaS(Infrastructure as a Service)

    • 将基础设施(计算资源和存储)作为服务出租

云计算数据中心

  1. 各种数据和应用,并非在“天上云端”,而是位于数据中心里

  2. 数据中心是云计算的温床

  3. 数据中心包含大量刀片服务器

  4. 数据中心应该修建在哪里?

    • 数据中心建设在地质结构稳定的地方

    • 数据中心建设在气候凉爽的地方

    • 数据中心建设在电力资源丰富的地方

    • 数据中心能耗非常大

云计算的应用

  1. 政务云上可以部署公共安全管理、容 灾备份、城市管理、应急管理、智能 交通、社会保障等应用,通过集约化 建设、管理和运行,可以实现信息资 源整合和政务资源共享,推动政务管 理创新,加快向服务型政府转型

  2. 教育云可有效整合幼儿教育、中 小学教育、高等教育以及继续教 育等优质教育资源,逐步实现教 育信息共享、教育资源共享及教 育资源深度挖掘等目标

  3. 中小企业云能够让企业以 低廉的成本建立财务、供 应链、客户关系等管理应 用系统,大大降低企业信 息化门槛,迅速提升企业 信息化水平,增强企业市 场竞争力

  4. 医疗云可推动医院与医院、医院 与社区、医院与急救中心、医院 与家庭之间的服务共享,并形成 一套全新的医疗健康服务系统, 从而有效地提高医疗保健的质量

二、物联网

物联网的概念与关键技术

  1. 物联网概念:

    • 物联网(IoT:The Internet of Things)物联网就是物物相连的互联网,是互联网的延伸

    • 物联网形式早已存在,统一意义上的物联网概念提出是架构在互联网发展成熟的基础上

    • 智慧地球也称为智能地球,就是把感应器嵌入和装备到电网、铁路、桥梁、隧道、公路、建筑、 供水系统、大坝、油气管道等各种物体中,并且被普遍连接,形成所谓“物联网”,然后将“物 联网”与现有的互联网整合起来,实现人类社会与物理系统的整合。智慧地球的核心是以一种更 加智慧的方法,通过利用新一代信息技术改变政府、公司和人们相互交互的方式,以便提高交互 的明确性、效率、灵活性和响应速度。

      • 在IBM《智慧地球赢在中国》计划书中,IBM为中国量身打造了六大智慧解决方案:“智慧电 力”、“智慧医疗”、“智慧城市”、“智慧交通”、“智慧供应链”和“智慧银行”。
  2. 物联网层次架构:

  3. 物联网的关键技术

    • 物联网中的关键技术包括识别和感知技术(二维码、RFID、传感器等)、网络与通信 技术、数据挖掘与融合技术等

物联网的应用与产业

  1. 物联网的应用

    • 智能交通
    • 智慧医疗
    • 智能家居
    • 环保监测
    • 智能安防
    • 智能物流
    • 智能电网
    • 智慧农业
    • 智能工业
    • 智慧城市是物联网的典型应用
  2. 有两张莫名其妙的图()

三、大数据与云计算、物联网的关系

  1. 随着大数据概念的提出,云 计算中的分布式计算技术开 始更多地被列入大数据技术 ,而人们提到云计算时,更 多指的是底层基础IT资源的 整合优化以及以服务的方式 提供IT资源的商业模式 (如IaaS、PaaS、SaaS)

  2. 大数据、云计算和物联网之间的关系:

四、大数据与人工智能

人工智能的概念和关键技术

  1. 人工智能概念

    • 人工智能(Artificial Intelligence),英文缩写为AI,是研究、开发用于模拟、延伸和 扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。
    • 人工智能学科:机器人、语言识别、图像识别、自然语言处理、专家系统
    • 未来人工智能带来的科技产品,将会是人类智慧的“容器”。人工智能不是人的智能 ,但能像人那样思考、也可能超过人的智能。
    • 人工智能是一门极富挑战 性的科学,属于自然科学 和社会科学的交叉学科, 涉及哲学和认知科学、数 学、神经生理学、心理学 、计算机科学、信息论、 控制论、不定性论等
    • 从事这项工作的人,必须 懂得计算机知识、心理学 和哲学等。总的说来,人 工智能研究的一个主要目 标是使机器能够胜任一些 通常需要人类智能才能完 成的复杂工作
  2. 人工智能关键技术

    • 机器学习:

    • 知识图谱

    • 自然语言处理

      • 自然语言处理是计算机科学领域与人 工智能领域中的一个重要方向。它研 究能实现人与计算机之间用自然语言 进行有效通信的各种理论和方法。
      • 自然语言处理的应用包罗万象,例如 :机器翻译、手写体和印刷体字符识 别、语音识别、信息检索、信息抽取 与过滤、文本分类与聚类、舆情分析 和观点挖掘等
    • 人机交互

      • 人机交互是一门研究系统与用户之 间的交互关系的学科。
      • 人机交互界面通常是指用 户可见的部分。
      • 人机交互是与认知心理学、人机 工程学、多媒体技术、虚拟现实 技术等密切相关的综合学科。
    • 计算机视觉

      • 计算机视觉是一门研究如何使机器“看”的 科学,更进一步地说,是指用摄影机和电脑 代替人眼对目标进行识别、跟踪和测量的机 器视觉,并进一步做图形处理,成为更适合 人眼观察或传送给仪器检测的图像
      • 计算机视觉可分为计算成像学、图像理解、三维视觉、动态视觉和视频编解码五大类
        • 人脸识别:Snapchat和Facebook 使用人脸检测算法来识别人脸。
        • 图像检索:Google Images使用基于内容查询来搜索相关图片,算法分析查询 图像中的内容并根据最佳匹配内容返回结果。
        • 游戏和控制:使用立体视觉较为成功的游戏应用产品是:微软 Kinect。
        • 监测:用于监测可疑行为的监视摄像头遍布于各大公共场所中
        • 智能汽车:计算机视觉仍然是检测交通标志、灯光和其他视觉特征的主要信息来源
    • 生物特征识别

      • 生物特征识别技术涉及的内容十分广泛,包括指纹、掌纹、人脸、虹膜、指静 脉、声纹、步态等多种生物特征。
    • VR/AR

      • 虚拟现实(VR)/ 增强现实(AR)是以计算机为核心的新型视听技术。结合相关科 学技术,在一定范围内生成与真实环境在视觉、听觉、触感等方面高度近似的数字化 环境。

人工智能的应用

  1. 智能制造

    • 智能制造(Intelligent Manufacturing,IM)是一种由智能机器和人类专家共同组成的 人机一体化智能系统,它在制造过程中能进行智能活动,诸如分析、推理、判断、构思 和决策等

      • 一是智能装备,包括自动识别设备、人机交互系 统、工业机器人以及数控机床等 具体设备,涉及跨媒体分析推理 、自然语言处理、虚拟现实智能 建模及自主无人系统等关键技术
      • 二是智能工厂,包括智能设计、智能生产 、智能管理以及集成优化 等具体内容,涉及到跨媒 体分析推理、大数据智能 、机器学习等关键技术
      • 三是智能服务 ,包括大规模个性化定制、远程 运维以及预测性维护等具体服 务模式,涉及到跨媒体分析推 理、自然语言处理、大数据智 能、高级机器学习等关键技术
  2. 智能家居
  3. 智能金融
    • 智能金融即人工智能与金融的全面融合,以人工智能、大数据、云计算、区块链等高 新科技为核心要素,实现金融服务的智能化、个性化、定制化
    • 对于金融机构的业务部门来 说,可以帮助获客,精准服 务客户,提高效率;
    • 对于金融机构的风控部门来 说,可以提高风险控制,增 加安全性;
    • 对于用户来说,可以实现资 产优化配置,体验到金融机 构更加完美地服务。
  4. 智能交通
    • 智能交通是未来交通系统的发展方向,它是将先进的信息技术、数据通讯传输技术、电 子传感技术、控制技术及计算机技术等有效地集成运用于整个地面交通管理系统而建立 的一种在大范围内、全方位发挥作用的,实时、准确、高效的综合交通运输管理系统。
  5. 智能安防
  6. 智能医疗
    • 借助于物联网/云计算技术、人工智能的专家系统、嵌入式系统的智能化设备, 可以构建起完善的物联网医疗体系,使全民平等地享受顶级的医疗服务,解决或 减少由于医疗资源缺乏,导致看病难、医患关系紧张、事故频发等现象
  7. 智能物流
    • 包括智能搜索、推理规划、智能机器人、计算机视觉
  8. 智能零售
    • 人工智能在零售领域的应用已十分广泛,无人便利店、智慧供应链、客流统计等都是热 门方向。如人工智能技术应用于客流统计,通过人脸识别客流统计功能门店可以从性别 、年龄、表情、新老顾客、滞留时长等维度,建立到店客流用户画像,帮助门店运营从 匹配真实到店客流的角度提升转换率

人工智能产业

  1. 智能基础设施建设:智能芯片、智能传感器、分布式计算框架
  2. 智能信息及数据:
    • 一种是数据集供应商
    • 二是数据采集、存储、处理和分析的综合性厂商
  3. 智能技术服务
    • 提供人工智能的整 体解决方案
    • 提供人工智能的技术 平台和算法模型
    • 提供人工智能在线服务
  4. 智能产品

大数据与人工智能的关系

  1. 人工智能与大数据的联系

    • 人工智能需要数据来建立其智能,特别是机器学习
    • 大数据技术为人工智能提供了强大的存储能力和计算能力
  2. 人工智能与大数据的区别
    • 人工智能与大数据也存在着明显的区别,人工智能是一种计算形式,而大数据是一种传统计算,它不会根据结果采取行动,只是寻找结果
    • 二者要达成的目标和实现目标的手段不同

五、大数据与区块链

区块链原理

  1. 中本聪为什么要创造比特币:

    • 传统模式:国家/银行/权威机构负责记账 小明->小红5块钱

      • 问题: • 手续费? • 中介系统瘫痪、中介违约、中介欺瞒(民生银行30亿假理财) 、甚至是中介耍赖(塞浦路斯对银行储户一次性征税)? • 银行倒闭?被盗?记错帐? • 国家货币贬值?超发货币?
    • 在数字世界中如何创建一个无须中介或者说去中心化的数字现金一直是难题。是否有一种 货币可以不用中心化机构来记账 ,这也是比特币发行的初衷
  2. 哈希函数的作用:输入任意字符串,输出固定长度的字符串。两个不同的输入,会有不同的输出。根据已知的输出,很难找到对应 的输入

  3. 在每个区块上,增加区块头,其中记录了父区块的哈希值。通过每个区块存储父区块的哈希值,把所有区块按照顺序组织起来,形成区块链

  4. 是否可以解决51%攻击问题?以2017年11月16日的价格计算,在比特币网络进行51%攻击每天的 成本包含大约31.4亿美元的硬件成本和560万美元的电力成本

  5. 区块链的本质:

    • 比特币和区块链的本质:就是一个人人可见的大账本,只记录交易
    • 核心技术:通过密码学+数据结构,保证账本记录不被篡改
    • 核心功能:创造信任。法币依靠政府公信力,比特币依靠技术
  6. 区块链原理-交易安全

  7. 区块链原理-去中心化

    • 中心化记账的缺点:

      • 拒绝服务攻击
      • 厌倦后停止服务
      • 中心机构易被攻击
    • 去中心化记账:人人都可以记账,每个人都可以保留完整账本.任何人都可以下 载开源程序,参与P2P网络,监听全世界发送的交易,成为记账节点,参与记账

    • 去中心化记账特点:

      • 每隔10分钟产生一 个区块,但是,并不 是所有在这10分钟内 的交易都会被记录
      • 获得记账权的记账节点会 获得50个比特币的奖励 每隔21万个区块(大约4 年)以后,奖励减半。总 量约2100万枚,预计到 2040年可以开采完
      • 记录一个区块的奖励,也 是比特币的唯一发行方式
    • 如何分配记账权:

  8. 区块链技术全貌:

区块链定义与应用

  1. 区块链技术是利用块链式数据结构来验证与存储数据,利用分布式节点共识算法 来生成和更新数据、利用密码学方式保证数据传输和访问安全、利用由自动化 脚本代码组成的智能合约来编程和操作数据的全新分布式基础架构与计算范式

  2. 区块链区组成三要素

    • 交易(Transaction) 一次操作,导致账本状态的 一次改变,如添加一条记录
    • 区块(Block) 记录一段时间内发生的交易 和状态结果,是对当前账本 状态的一次共识;
    • 链(Chain) 由一个个区块按照发生顺序 串联而成,是整个状态变化 的日志记录
  3. 从科技层面来看:区块链涉及数学 、密码学、互联 网和计算机编程 等很多科学技术 问题

    从应用视角来看:区块链是一个分布 式的共享账本和数 据库,具有去中心 化、不可篡改、全 程留痕、可追溯、 集体维护、公开透 明等特点

  4. 区块链技术的各种应用

大数据与区块链的关系

  1. 大数据与区块链的区别:

    • 数据量:

      • 区块链:区块链技术是分布式数据存储、点对点 传输、共识机制、加密算法等计算机技 术的新型应用模式,区块链处理的数据 量更小,是细致的处理方式
      • 大数据:大数据管理的是海量数据,要求广 度和数量,处理方式上也会更粗糙
    • 结构化和非结构化

      • 区块链:区块链是结构定义严谨的块,通过指 针组成的链,是典型的结构化数据
      • 大数据:大数据需要处理的更多是非结构化数据
    • CAP理论:

  2. 大数据与区块链的联系

    • 区块链使大数据极大降低信用成本
    • 区块链是构建大数据时代信任基石
    • 区块链是促进大数据价值流通管道

3-大数据的获取、存储与并行计算

一、数据的来源与采集

  1. 数据采集概念:数据采集,又称“数据获取” ,是数据分析的入口,也是数据分析过程中 相当重要的一个环节,它通过各种技术手段把外部各种数据源产生的数据 实时或非实时地采集并加以利用。

  2. 数据采集的三大要点:全面性、多维性、高效性

  3. 数据采集的数据源:传感器、互联网数据、企业业务系统数据、日志文件

    • 传感器:传感器是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律 变换为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、 记录和控制等要求
    • 互联网数据:互联网数据的采集通常是借助于网络爬虫来 完成的。所谓“网络爬虫”,就是一个在网 上到处或定向抓取网页数据的程序。抓取网 页一般方法是,定义一个入口页面,一般一 个页面中会包含指向其他页面的URL,从当 前页面获取到这些网址加入到爬虫的抓取队 列中,然后进入到新页面后再递归地进行上 述的操作。爬虫数据采集方法可以将非结构 化数据从网页中抽取出来,将其存储为统一 的本地数据文件,并以结构化的方式存储。 它支持图片、音频、视频等文件或附件的采 集,附件与正文可以自动关联
    • 日志文件:日志文件数据一般由数据源系统产生,用于记录数据源的执行的各种操作活动
    • 企业业务系统数据:企业每时每刻产生的业务数据,以数据库一行记录形式被直接写入到数据库中。企业 可以借助于ETL(Extract-Transform-Load)工具,把分散在企业不同位置的业务系 统的数据,抽取、转换、加载到企业数据仓库中,以供后续的商务智能分析使用
      • 内部数据:公司等组织机构从内部的团体、员工、用户或信息 中获取的数据,如淘宝的用户购买记录

        • 获取方法:问卷调查:如课程评价;员工信息等级:如腾讯员工信息;公司对应业务的数据记录:如淘宝的购买记录
      • 外部数据:互联网开放的数据,如开放的数据平台、网络爬虫等;合作的组织机构的交流数据,如腾讯和京东的合作,共享某些用户行为数据;
        • 获取方法:与合作机构的数据交换;网络上直接提供的下载(Download);网络爬虫(spider, crawler)
  4. 网络爬虫的工作流程

二、数据存储方法

  1. 数据存储方法:

    • 关系数据库(MySQL,Oracle,MS SQL Server等)
    • NoSQL数据库:MongoDB,Redis,CouchDB等
    • 本地文件系统
    • 分布式文件系统:大数据存储的重要方法
  2. 单机文件系统

    • 用于操作系统的本地文件存储
    • 典型代表:Ext2、Ext3、Ex4、NTFS、FAT(32)、exFAT
    • 缺点:数据无法再服务器之间共享
  3. 网络文件系统

    • 基于现有以太网架构,实现不同服务器之间传统文件系统数 据共享
    • 典型代表:NFS、CIFS
    • 缺点:单点瓶颈,服务器访问性能有限
  4. 分布式文件系统

    • 在传统文件系统上,通过额外模块实现数据跨服务器分布, 并且自身集成raid保护功能,
    • 可以保证多台服务器同时访问、修改同一个文件系统:性能 优越,扩展性很好,成本低廉文件系统
      • 典型代表: Hadoop HDFS、GlusterFS等
  5. Hadoop简介

    • Hadoop是Apache软件基金会旗下的一个开源分布式 计算平台,为用户提供了系统底层细节透明的分布式基 础架构
    • Hadoop是基于Java语言开发的,具有很好的跨平台特 性,并且可以部署在廉价的计算机集群中
    • Hadoop的核心是分布式文件系统HDFS(Hadoop Distributed File System)和MapReduce
    • Hadoop被公认为行业大数据标准开源软件,在分布式 环境下提供了海量数据的处理能力
    • 几乎所有主流厂商都围绕Hadoop提供开发工具、开源 软件、商业化工具和技术服务,如谷歌、雅虎、微软、 思科、淘宝等,都支持Hadoop
  6. Hadoop发展简史:

    • Hadoop最初是由Apache Lucene项目的创始人Doug Cutting开发的 文本搜索库。Hadoop源自始于2002年的Apache Nutch项目——一个 开源的网络搜索引擎并且也是Lucene项目的一部分
    • 在2004年,Nutch项目也模仿GFS开发了自己的分布式文件系统 NDFS(Nutch Distributed File System),也就是HDFS的前身
    • 2004年,谷歌公司又发表了另一篇具有深远影响的论文,阐述了 MapReduce分布式编程思想
    • 2005年,Nutch开源实现了谷歌的MapReduce
    • 到了2006年2月,Nutch中的NDFS和MapReduce开始独立出来,成 为Lucene项目的一个子项目,称为Hadoop,同时,Doug Cutting加 盟雅虎
    • 2008年1月,Hadoop正式成为Apache顶级项目,Hadoop也逐渐开 始被雅虎之外的其他公司使用
    • 2008年4月,Hadoop打破世界纪录,成为最快排序1TB数据的系统, 它采用一个由910个节点构成的集群进行运算,排序时间只用了209秒
    • 在2009年5月,Hadoop更是把1TB数据排序时间缩短到62秒。 Hadoop从此名声大震,迅速发展成为大数据时代最具影响力的开源 分布式开发平台,并成为事实上的大数据处理标准
  7. Hadoop的特性

    • Hadoop是一个能够对大量数据进行分布式处理的软件框架,并且 是以一种可靠、高效、可伸缩的方式进行处理的,它具有以下几 个方面的特性:

      • 高可靠性
      • 高效性
      • 高可扩展性
      • 高容错性
      • 成本低
      • 运行在Linux平台上
      • 支持多种编程语言
  8. Hadoop的应用现状

    • Hadoop凭借其突出的优势,已经在各个领域得到了广泛的应用, 而互联网领域是其应用的主阵地

    • 2007年,雅虎在Sunnyvale总部建立了M45——一个包含了4000 个处理器和1.5PB容量的Hadoop集群系统

    • Facebook作为全球知名的社交网站,Hadoop是非常理想的选择, Facebook主要将Hadoop平台用于日志处理、推荐系统和数据仓 库等方面

    • 国内采用Hadoop的公司主要有百度、淘宝、网易、华为、中国移 动等,其中,淘宝的Hadoop集群比较大

  9. Apache Hadoop版本演变

  10. Hadoop各种版本

  11. Hadoop的项目结构

    • Yarn:资源管理核调度器

    • Tez:有向无环图

    • Spark:类似于Hadoop MapReduce的通用并行框架

    • Hive:基于Hadoop平台上的数据仓库系统,将SQL语句转成MapReduce作业

    • Pig:一个基于Hadoop的大规模数据分析平台,提供类似SQL的查询语言Pig Latin

    • Oozie:Hadoop上的工作流管理系统

    • Zookeeper:提供分布式协调一致性服务(分布式锁,集群管理)

    • Hbase:分布式数据库

    • Flume:一个开源的分布式系统,用于日志收集

    • Sqoop:关系型数据库到HDFS、HBase、Hive互导

三、数据的访问

  1. 访问数据库:

    • 常用数据库

      • Mysql、Oracle、 PostgreSQL 、Mongdb、redis等
      • 图 数 据 库 : Neo4j 、 TigerGraph 、 Amazon Neptune 、 JanusGraph和ArangoDB
      • 嵌入式数据库:SQLite、 Berkeley DB
    • 数据库的增删改查
      • SQL语句
  2. 结构化文件访问
    • CSV、excel等文件
    • arff等特定格式
  3. 访问文件系统
    • 常用的后缀:csv、xls、txt等,arff
    • 如何访问:高级语言、专用工具等
    • 实例 以爬取的豆瓣top250为例(python;pandas处理工具)
      • 读取所有元素
  4. 非结构化文件解析与结构化
    • 解析html数据:正则表达式(RE模块),第三方解析库如 python的Beautifulsoup,pyquery等
    • 解析二进制数据

四、基于MapReduce的大数据并行处理

  1. 一个大数据处理的问题:

    • 通过爬虫抓取100万张豆瓣网上的评论页,如何快速统计出最热门的60个热词?
  2. 数据处理方法

    • 单机处理方法

    • 传统集群处理

      • 方法一的程序部署到N台计算服务器上
      • 最终结果整合到一台服务器
        • 如何把程序部署到N台服务器?
        • 主节点服务器出故障怎么办?
    • 分布式集群处理

      • 资源管理

      • 任务调度与监控

      • 节点间容错与协调

  3. 分布式计算框架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编程模型的工作过程。

  4. Hadoop项目结构:

3.1-大数据分布式文件处理系统HDFS

一、分布式文件系统

  1. 计算机集群结构:

    • 分布式文件系统把文件分布存储到多个计算机节点上,成千上万的计 算机节点构成计算机集群

    • 与之前使用多个处理器和专用高级硬件的并行化处理装置不同的是, 目前的分布式文件系统所采用的计算机集群,都是由普通硬件构成的, 这就大大降低了硬件上的开销

  2. 分布式文件系统的结构

    • 分布式文件系统在物理结构上是由计算机集群中的多个节点构成的,这些 节点分为两类,一类叫“主节点”(Master Node)或者也被称为“名称结 点”(NameNode),另一类叫“从节点”(Slave Node)或者也被称为 “数据节点”(DataNode)

二、HDFS介绍

  1. HDFS简介

    • 总体而言,HDFS要实现以下目标

      • 兼容廉价的硬件设备
      • 流数据读写
      • 大数据集
      • 简单的文件模型
      • 强大的跨平台兼容性
    • HDFS特殊的设计,在实现上述优良特性的同时,也使得自身具有一 些应用局限性,主要包括以下几个方面:
      • 不适合低延迟数据访问
      • 无法高效存储大量小文件
      • 不支持多用户写入及任意修改文件
    • HDFS默认一个块64MB,一个文件被分成多个块,以块作为存储单位
    • 块的大小远远大于普通文件系统,可以最小化寻址开销
    • HDFS采用抽象的块概念可以带来以下几个明显的好处:
      • 支持大规模文件存储:文件以块为单位进行存储,一个大规模文件 可以被分拆成若干个文件块,不同的文件块可以被分发到不同的节点上 ,因此,一个文件的大小不会受到单个节点的存储容量的限制,可以远 远大于网络中任意节点的存储容量
      • 简化系统设计:首先,大大简化了存储管理,因为文件块大小是 固定的,这样就可以很容易计算出一个节点可以存储多少文件块;其次 ,方便了元数据的管理,元数据不需要和文件块一起存储,可以由其他 系统负责管理元数据
      • 适合数据备份:每个文件块都可以冗余存储到多个节点上,大大 提高了系统的容错性和可用性
  2. 名称节点和数据节点

三、HDFS相关概念

  1. 名称节点和数据节点

    • 名称节点的数据结构

      • 在HDFS中,名称节点(NameNode)负责管理分布式文件系统的命名空间 (Namespace),保存了两个核心的数据结构,即FsImage和EditLog

        • FsImage用于维护文件系统树以及文件树中所有的文件和文件夹的元数据
        • 操作日志文件EditLog中记录了所有针对文件的创建、删除、重命名等操作
      • 名称节点记录了每个文件中各个块所在的数据节点的位置信息

  2. FsImage文件

    • FsImage文件包含文件系统中所有目录和文件inode的序列化形式。每个 inode是一个文件或目录的元数据的内部表示,并包含此类信息:文件的复 制等级、修改和访问时间、访问权限、块大小以及组成文件的块。对于目录 ,则存储修改时间、权限和配额元数据
    • FsImage文件没有记录块存储在哪个数据节点。而是由名称节点把这些映 射保留在内存中,当数据节点加入HDFS集群时,数据节点会把自己所包含 的块列表告知给名称节点,此后会定期执行这种告知操作,以确保名称节点 的块映射是最新的。
  3. 名称节点的启动

    • 在名称节点启动的时候,它会将FsImage文件中的内容加载到内存中,之后 再执行EditLog文件中的各项操作,使得内存中的元数据和实际的同步,存 在内存中的元数据支持客户端的读操作。
    • 一旦在内存中成功建立文件系统元数据的映射,则创建一个新的FsImage文 件和一个空的EditLog文件
    • 名称节点起来之后,HDFS中的更新操作会重新写到EditLog文件中,因为 FsImage文件一般都很大(GB级别的很常见),如果所有的更新操作都往 FsImage文件中添加,这样会导致系统运行的十分缓慢,但是,如果往 EditLog文件里面写就不会这样,因为EditLog 要小很多。每次执行写操作之 后,且在向客户端发送成功代码之前,edits文件都需要同步更新
  4. 名称节点运行期间EditLog不断变大的问题

    • 在名称节点运行期间,HDFS的所有更新操作都是直接写到EditLog中, 久而久之, EditLog文件将会变得很大

    • 虽然这对名称节点运行时候是没有什么明显影响的,但是,当名称节点 重启的时候,名称节点需要先将FsImage里面的所有内容映像到内存中 ,然后再一条一条地执行EditLog中的记录,当EditLog文件非常大的时 候,会导致名称节点启动操作非常慢,而在这段时间内HDFS系统处于 安全模式,一直无法对外提供写操作,影响了用户的使用

    • 如何解决?答案是:SecondaryNameNode第二名称节点

    • 第二名称节点是HDFS架构中的一个组成部分,它是用来保存名称节点中对HDFS 元数据信息的备份,并减少名称节点重启的时间。SecondaryNameNode一般是 单独运行在一台机器上

  5. 数据节点(DataNode)

    • 数据节点是分布式文件系统HDFS的工作节点,负责数据的存储 和读取,会根据客户端或者是名称节点的调度来进行数据的存储 和检索,并且向名称节点定期发送自己所存储的块的列表
    • 每个数据节点中的数据会被保存在各自节点的本地Linux文件系统 中

四、HDFS体系结构

  1. HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群包括一 个名称节点(NameNode)和若干个数据节点(DataNode)。名称节点 作为中心服务器,负责管理文件系统的命名空间及客户端对文件的访问。 集群中的数据节点一般是一个节点运行一个数据节点进程,负责处理文件 系统客户端的读/写请求,在名称节点的统一调度下进行数据块的创建、删 除和复制等操作。每个数据节点的数据实际上是保存在本地Linux文件系统 中的

  2. HDFS命名空间管理

    • HDFS的命名空间包含目录、文件和块
    • 在HDFS1.0体系结构中,在整个HDFS集群中只有一个命名空间,并 且只有唯一一个名称节点,该节点负责对这个命名空间进行管理
    • HDFS使用的是传统的分级文件体系,因此,用户可以像使用普通 文件系统一样,创建、删除目录和文件,在目录间转移文件,重命 名文件等
  3. 通信协议

    • HDFS是一个部署在集群上的分布式文件系统,因此,很多数据需要 通过网络进行传输
    • 所有的HDFS通信协议都是构建在TCP/IP协议基础之上的
    • 客户端通过一个可配置的端口向名称节点主动发起TCP连接,并使 用客户端协议与名称节点进行交互
    • 名称节点和数据节点之间则使用数据节点协议进行交互
    • 客户端与数据节点的交互是通过RPC(Remote Procedure Call)来 实现的。在设计上,名称节点不会主动发起RPC,而是响应来自客户 端和数据节点的RPC请求
  4. 客户端

    • 客户端是用户操作HDFS最常用的方式,HDFS在部署时都提供了客户端
    • HDFS客户端是一个库,暴露了HDFS文件系统接口,这些接口隐藏了 HDFS实现中的大部分复杂性
    • 严格来说,客户端并不算是HDFS的一部分
    • 客户端可以支持打开、读取、写入等常见的操作,并且提供了类似 Shell的命令行方式来访问HDFS中的数据
    • 此外,HDFS也提供了Java API,作为应用程序访问文件系统的客户端 编程接口
  5. HDFS体系结构的局限性

    • HDFS只设置唯一一个名称节点,这样做虽然大大简化了系统设计,但也 带来了一些明显的局限性,具体如下:

      • 命名空间的限制:名称节点是保存在内存中的,因此,名称节点 能够容纳的对象(文件、块)的个数会受到内存空间大小的限制。
      • 性能的瓶颈:整个分布式文件系统的吞吐量,受限于单个名称节 点的吞吐量。
      • 隔离问题:由于集群中只有一个名称节点,只有一个命名空间, 因此,无法对不同应用程序进行隔离。
      • 集群的可用性:一旦这个唯一的名称节点发生故障,会导致整个 集群变得不可用。

五、HDFS存储原理

  1. 冗余数据保存

    • 作为一个分布式文件系统,为了保证系统的容错性和可用性,HDFS采用 了多副本方式对数据进行冗余存储,通常一个数据块的多个副本会被分布到不 同的数据节点上,如图所示,数据块1被分别存放到数据节点A和C上,数据块 2被存放在数据节点A和B上。这种多副本方式具有以下几个优点:

      • 加快数据传输速度

      • 容易检查数据错误

      • 保证数据可靠性

  2. 数据存取策略

    • 数据存放

      • 第一个副本:放置在上传文件的数据节点;如果是集群外提交,则随机 挑选一台磁盘不太满、CPU不太忙的节点

      • 第二个副本:放置在与第一个副本不同的机架的节点上

      • 第三个副本:与第一个副本相同机架的其他节点上

      • 更多副本:随机节点

    • 数据读取

      • HDFS提供了一个API可以确定一个数据节点所属的机架ID,客户端 也可以调用API获取自己所属的机架ID
      • 当客户端读取数据时,从名称节点获得数据块不同副本的存放位置列 表,列表中包含了副本所在的数据节点,可以调用API来确定客户端 和这些数据节点所属的机架ID,当发现某个数据块副本对应的机架ID 和客户端对应的机架ID相同时,就优先选择该副本读取数据,如果没 有发现,就随机选择一个副本读取数据
  3. 数据错误与恢复

    • HDFS具有较高的容错性,可以兼容廉价的硬件,它把硬件出错 看作一种常态,而不是异常,并设计了相应的机制检测数据错误和进 行自动恢复,主要包括以下几种情形:名称节点出错、数据节点出错 和数据出错。

      • 名称节点出错:

        名称节点保存了所有的元数据信息,其中,最核心的两大数据 结构是FsImage和Editlog,如果这两个文件发生损坏,那么整个 HDFS实例将失效。因此,HDFS设置了备份机制,把这些核心文件 同步复制到备份服务器SecondaryNameNode上。当名称节点出错时, 就可以根据备份服务器SecondaryNameNode中的FsImage和Editlog 数据进行恢复

      • 数据节点出错

        • 每个数据节点会定期向名称节点发送“心跳”信息,向名称节点报告 自己的状态
        • 当数据节点发生故障,或者网络发生断网时,名称节点就无法收到来 自一些数据节点的心跳信息,这时,这些数据节点就会被标记为“宕 机”,节点上面的所有数据都会被标记为“不可读”,名称节点不会 再给它们发送任何I/O请求
        • 这时,有可能出现一种情形,即由于一些数据节点的不可用,会导致 一些数据块的副本数量小于冗余因子
        • 名称节点会定期检查这种情况,一旦发现某个数据块的副本数量小于 冗余因子,就会启动数据冗余复制,为它生成新的副本
        • HDFS和其它分布式文件系统的最大区别就是可以调整冗余数据的位 置
      • 数据出错

        • 网络传输和磁盘错误等因素,都会造成数据错误
        • 客户端在读取到数据后,会采用md5和sha1对数据块进行校验,以确定读 取到正确的数据
        • 在文件被创建时,客户端就会对每一个文件块进行信息摘录,并把这些信 息写入到同一个路径的隐藏文件里面
        • 当客户端读取文件的时候,会先读取该信息文件,然后,利用该信息文件 对每个读取的数据块进行校验,如果校验出错,客户端就会请求到另外一 个数据节点读取该文件块,并且向名称节点报告这个文件块有错误,名称 节点会定期检查并且重新复制这个块

六、HDFS数据读写过程

  1. 读取文件的代码

    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();}}
    }
    
  2. 写入文件

    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(); } }
    }
    
  3. 系统解释:

  4. 读数据的过程

  5. 写数据的过程

大数据技术与实践学习笔记(1 of 3,from hitwh)相关推荐

  1. 大数据技术与实践学习笔记(2 of 3,from hitwh)

    大数据技术与实践 注意!由于文章图片是通过typora一键上传图片实现,该功能还存在bug,容易导致图片顺序混乱,文章(1 of 3)开头提供了原版文章的 pdf 资源下载,推荐下载 pdf 后观看, ...

  2. 大数据技术与实践学习笔记(3 of 3,from hitwh)

    大数据技术与实践 注意!由于文章图片是通过typora一键上传图片实现,该功能还存在bug,容易导致图片顺序混乱,文章(1 of 3)开头提供了原版文章的 pdf 资源下载,推荐下载 pdf 后观看, ...

  3. 尚硅谷大数据技术Zookeeper教程-笔记01【Zookeeper(入门、本地安装、集群操作)】

    视频地址:[尚硅谷]大数据技术之Zookeeper 3.5.7版本教程_哔哩哔哩_bilibili 尚硅谷大数据技术Zookeeper教程-笔记01[Zookeeper(入门.本地安装.集群操作)] ...

  4. 尚硅谷大数据技术Scala教程-笔记04【集合】

    视频地址:尚硅谷大数据技术之Scala入门到精通教程(小白快速上手scala)_哔哩哔哩_bilibili 尚硅谷大数据技术Scala教程-笔记01[Scala课程简介.Scala入门.变量和数据类型 ...

  5. 尚硅谷大数据技术Spark教程-笔记02【SparkCore(核心编程,map、mapPartitions、mapPartitionsWithIndex、flatMap、glom、groupBy)】

    视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01[Spark(概述.快速上手.运行环境.运行架构)] 尚硅谷大数据技术Spark教 ...

  6. 尚硅谷大数据技术Spark教程-笔记01【Spark(概述、快速上手、运行环境、运行架构)】

    视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01[Spark(概述.快速上手.运行环境.运行架构)] 尚硅谷大数据技术Spark教 ...

  7. 尚硅谷大数据技术Spark教程-笔记09【SparkStreaming(概念、入门、DStream入门、案例实操、总结)】

    尚硅谷大数据技术-教程-学习路线-笔记汇总表[课程资料下载] 视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01[SparkCore ...

  8. 尚硅谷大数据技术Hadoop教程-笔记02【Hadoop-入门】

    视频地址:尚硅谷大数据Hadoop教程(Hadoop 3.x安装搭建到集群调优) 尚硅谷大数据技术Hadoop教程-笔记01[大数据概论] 尚硅谷大数据技术Hadoop教程-笔记02[Hadoop-入 ...

  9. 尚硅谷大数据技术Hadoop教程-笔记01【大数据概论】

    视频地址:尚硅谷大数据Hadoop教程(Hadoop 3.x安装搭建到集群调优) 尚硅谷大数据技术Hadoop教程-笔记01[大数据概论] 尚硅谷大数据技术Hadoop教程-笔记02[Hadoop-入 ...

最新文章

  1. “厌氧动物”出现,科学家不清楚代谢方式,或颠覆对生命的认知
  2. golang 字符串拼接方式
  3. Linux 环境下的高级隐藏技术
  4. hdu5489(2015合肥网络赛F题)
  5. 我们怎样确保从大数据计算中获得价值
  6. php+换行+php+eol,PHP PHP_EOL 换行符
  7. php soap传值,在SOAP调用中传递PHP数组
  8. 写给开发者——从比特币脚本引擎到以太坊虚拟机
  9. DOM基础、定时器、BOM基础
  10. python编程从入门到实战16章x轴刻度_PYTHON编程:从入门到实践之数据可视化
  11. Mybatis 中经典的 9 种设计模式!面试可以吹牛了!
  12. ThinkPHP空操作及命名空间
  13. 切换IP配置的bat批处理命令
  14. Qt 之 QQ系统表情(三)
  15. 利用IV分析仪测量二极管的伏安特性
  16. CSDN博客去图片水印
  17. iOSRGB常用的色值
  18. Panda3D双面渲染和3D法线的概念学习
  19. Odoo16正式版于2022年9月12日发布
  20. iis7 winmail php,MagicWinmailServer

热门文章

  1. 第一型错误与第二型错误( I 型错误 II 型错误)
  2. elasticsearch副本分片UNASSIGNED
  3. 花狐狸股市操作系统说明书
  4. JDK 环境变量配置及验证(javac 命令)
  5. 马斯克:太阳膨胀或致地球所有物种灭亡
  6. Xcode链接手机时 has conflicting provisioning settings.
  7. 谈论SQL注入攻击的重要性
  8. 10 个不错的 CSS 小技巧
  9. “玩电脑”和“被电脑玩”
  10. python遍历queryset_Django QuerySet查询集原理及代码实例