大数据分析-第三章 大数据存储和处理

这篇具有很好参考价值的文章主要介绍了大数据分析-第三章 大数据存储和处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Lecture3-大数据存储和处理

1. 常见存储方式

  1. 关系型数据库
  2. NoSQL:泛指非关系型数据库,比如MongoDB
  3. 全文检索框架:Elasticsearch

1.1. 存储的区别

  1. 行式存储:大数据量查询,如果没有索引,则会遍历
  2. 列式存储:可以大量的压缩空间
  3. 位图索引

位图索引的例子,如下图所示,我们可以存储为

  1. “男”:100101
  2. “女”:011010
行号 姓名
1
2
3
4
5
6

1.2. 不同形式存储的对比

ID name age sex aihao
1 小明 21
2 隔壁老王 25 隔壁孩子
  1. MySQL形式存储
1,小明,21,,2,隔壁老王,25, null, 隔壁孩子
  1. HBase的形式存储:
    1. HBase是一个分布式列式存储系统,记录按列簇集中存放,通过主键(row, key)和主键的range来检索数据。
    2. HBase表中每个列都属于某一个列簇
    3. 列簇是表的Schame的一部分,但是列不是,列名都是以列簇作为前缀。
<1, name>,小明
<1, age>, 21
...
<2, name>, 隔壁老王
  1. 传统表中使用Alter子句来修改表结构,而HBase直接插入就可以修改表结构

1.3. ES方式

文档id 文档内容
doc1 how are you? fine, thank you, and you? I fine too, thank you!
doc2 good morning, LiLei, good morning, Hanmeimei

倒排索引示例:ES的存储(倒排索引)的结果如下

  1. 应该将查询频率高的单词放在前面(越高越前)
  2. ES默认将文档存储,也可以配置不存储文件信息
  3. TF-IDF算法:参见Tec1-TF-IDF算法
dictionary posting-list
fine -> doc1
Hanmei -> doc2
good -> doc2
LiLei -> doc2
you -> doc1 -> doc2

1.4. 列存储和行存储

列存储 行存储
关注点 经常关注一张表某几列而非整表数据的时候 关注整张表的内容,或者需要经常更新数据
计算需要 数据表列有非常多行数据并且需要聚集计算的时候 不需要聚集运算,或者快速查询需求
计算方式 基于一列或者比较少的列计算的时候 需要经常读取某行数据
数据形式 数据表拥有非常多的列的时候 数据表本身数据行并不多
数据特性 数据表列有非常多的重复数据,有利于高度压缩 数据表的列本身有太多唯一的数据

1.5. 读写的区别

大数据分析-第三章 大数据存储和处理

1.6. 聚簇索引和非聚簇索引

物理存储的最小的单位是块(Block)

聚集索引 非聚集索引
大数据分析-第三章 大数据存储和处理 大数据分析-第三章 大数据存储和处理

1.7. MySQL

  1. 查询:Select (tuple) from database
  2. 插入:Insert into database value
  3. 更新:Update database set xxx = xxx where statement
  4. 删除:Delete from database where xxx

1.8. HBase

1.8.1. HBase对LSM的实现

LSM,Log-Structured Merge-Tree,日志结构合并树

  1. 假设内存非常大,有限的使用内存存储,结合日志结构实现。
  2. 有数据更新不是立马更新,而是先驻留数据,积累到一定条目后归并排序,然后追加到磁盘的队列中,这样子可以显著减少磁盘的开销,一次性大规模写入,减少随机的I/O,不能命中会导致较多的磁盘消耗。

1.8.2. HBase的实现

  1. 查询
  2. 插入
  3. 更新&删除:看做一个插入操作,使用时间戳和Delete标识来标识

memstore:插入时优先放置到memstore,驻存内存,到了一定程度后再刷新到storeFile、插入都是写入操作

1.9. ES

1.9.1. ES的部分实现方式

  1. 一个Node是一个进程
  2. 容灾的话就是多副本容灾

1.9.2. ES的操作

  1. 插入:和HBase相似,不是写入即可查询,建立index需要比较大的开销
  2. 读取
  3. 更新&删除

1.10. 不同存储的容灾方式

存储方式 结构
MySQL 单节点,包含数据、日志两个层面的操作
HBase & HDFS 分布式文件系统,每一个节点操作类似MySQL的单节点
ES 各节点备份

2. Hadoop介绍

Hadoop:一个Apache基金会开发的开源软件框架,支持在由普通计算机组成的集群中运行海量数据的分布式计算,他可以让应用程序轻松扩展到上千个节点和PB级别的数据。

2.1. Google 三大论文

  1. MapReduce
  2. GFS
  3. Big Table

2.2. Doug Cutting 山寨项目

  1. MapReduce
  2. HDFS
  3. HBase

2.3. 大数据处理层次架构

大数据分析-第三章 大数据存储和处理

2.4. Hadoop核心

  1. MapReduce
    1. Map:任务的分解
    2. Reduce:结构的汇总
  2. HDFS
    1. NameNode
    2. DataNode
    3. Client

2.4.1. MapReduce

  1. MapReduce是一种并行编程模型,其实是分治算法的一种实现,适用于大规模数据集的并行计算
    1. map:(k1,v1)->list(k2,v2)
    2. reduce:(k2,list(v2)) -> (k3, v3)
  2. 示例:曹冲称象
  3. 过程:Input -> Map -> Sort -> Combine -> Partition -> Reduce -> Output

大数据分析-第三章 大数据存储和处理

2.4.2. HDFS的基本概念

  1. Block
  2. NameNode & Secondary NameNode
  3. Datanode

2.4.3. HDFS架构

大数据分析-第三章 大数据存储和处理

2.4.3.1. Block
  1. 块大小默认为64M(v1.0)
  2. 块大小默认为128M(v2.0)
  3. 数据和元数据

大数据分析-第三章 大数据存储和处理

  1. 备份
  2. 一次写入多次读取
2.4.3.2. NameNode
  1. 可以看做是分布式文件系统中的管理者,存储文件系统的metadata,主要负责管理文件系统的命名空间,集群配置信息,存储块的赋值
  2. 两个文件:EditLog、FSImage
  3. 两个映射:Filename -> BlockSequence(FsImage)Block -> DatanodeList(BlockReport)
  4. 单点(NameNode)风险
2.4.3.3. Secondary NameNode
  1. 不是备用NameNode,而是秘书
  2. 合并和保存EditLog、FSImage
    1. Checkpoint.period
    2. Checkpoint.size
2.4.3.4. Datanode

文件存储的基本单位。它存储文件块在本地文件系统中,保存了文件块的meta-data,同时周期性的发送所有存在的文件块的报错给Namenode

2.4.3.5. HDFS文件读写

读文件:读取完之后会校验(Check Sum),未通过则告知错误

大数据分析-第三章 大数据存储和处理

写文件:复制的策略,冗余数据放置在机柜中,跨机柜要经过交换机等设备

大数据分析-第三章 大数据存储和处理

3. HBase

  1. HBase以谷歌的BigTable为模型,并用Java编写
  2. HBase是在HDFS上开发,提供了一种容错的方式存储大量的稀疏数据
  3. 一个HBase系统包括一组表,每个表包含行和列,就像传统的数据库一样。每个表都必须有一个定义为主键的元素,所有对HBase表的访问尝试都必须使用这个主键。一个HBase Column表示一个对象属性。

3.1. 什么是HBase

  1. HBase是一个分布式、非结构化、稀疏、面向列的数据库。
  2. HBase是基于HDFS,山寨版的BigTable,继承了可靠性、高性能、可伸缩性

3.2. HBase架构

大数据分析-第三章 大数据存储和处理
大数据分析-第三章 大数据存储和处理

3.3. HBase角色

角色 内容描述
ZooKeeper 1. 一个高效的、可扩展的协调系统
2. Hadoop的子项目,不属于HBase
HMaster 1. 管理网络对Table的增、删、改、查操作
2. 管理HRegionServer负载均衡
HRegionServer 1. 管理一系列HRegion
2. Region读写的场所

大数据分析-第三章 大数据存储和处理

角色 内容描述
HRegion 1. 对应Table的Region
2. HStore和HLog
HStore 1. 对应了Table中的一个Column Family的存储
2. MemStore
3. StoreFile(HFile)
StoreFile 1. Compact
2. Split

大数据分析-第三章 大数据存储和处理

3.4. HBase数据模型

Table & Column Family

  1. RowKey:Table的主键, 记录按照RowKey排序
  2. Timestamp:每次数据操作对应的时间戳,可以看作是数据的version number(垃圾清理)
  3. Column Family:Table在水平方向由一个或者多个Column Family组成,一个Column Family中可以由任意多个Colum组成

大数据分析-第三章 大数据存储和处理

Table & Region

  1. 记录数不断增多后,Table会逐渐分裂成多份splits,成为regions
  2. 一个region由[startkey,endkey)表示
  3. 不同的region会被Master分配给相应的RegionServer进行管理.

大数据分析-第三章 大数据存储和处理

  1. .META.:记录用户表的Region信息,可以有多个regoin
  2. -ROOT-:记录.META.表的Region信息,只有一个region
  3. Zookeeper:记录了-ROOT-表的location

大数据分析-第三章 大数据存储和处理

3.5. 数据导入

  1. Sybase -> HBase
    1. bcp out
    2. importtsv
hadoop jar ~/hbase-0.92.1/hbase-0.92.1.jar importtsv \
-Dimporttsv.separator= "," # 指定输入文件的分隔符为;\
-Dimporttsv.bulk.output=/output # 输出hfile到/output
-Dimporttsv.columns=HBASE ROW KEY,cf1:USER NAME
#源文件的第一列为rowkey ,第二列为cf1:USER NAME\
users /bulkload/users.txt #导 入hbase的users表中,输 入文件在/bulkload\
hadoop jar ~/hbase-0.92. 1/hbase-0.92.1.jar completebulkload/output users

3.6. 访问接口

  1. Hadoop & HBase提供JAVA接口
  2. Thrift支持多语言访问HBase,C++、C#、Cocoa、Erlang、Haskell、Java、Ocami、Perl、PHP、Python、Ruby、Smalltalk

4. Hive

  1. Hive是基于Hadoop的数据仓库工具,提供完整的SQL查询功能,可以将结构化的数据文件映射为一张数据库表。
    1. 可以将SQL语句转换为MapReduce任务进行运行。
    2. 可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用
  2. 学习成本低

4.1. Hive体系结构

大数据分析-第三章 大数据存储和处理

4.2. Hive运维要点

Hive相当于一套Hadoop的访问接口,运维如下几个问题需要注意

  1. 使用单独的数据库存储元数据
  2. 定义合理的表分区和键
  3. 设置合理的bucket数据量
  4. 进行表压缩
  5. 定义外部表使用规范
  6. 合理的控制Mapper,Reducer数量

5. Pig

Apache Pig架构文章来源地址https://www.toymoban.com/news/detail-488309.html

  1. 严格用于使用Pig分析Hadoop中的数据的语言称为Pig Latin是一种高级数据处理语言。它提供了一组丰富的数据类型和操作符来对数据执行各种操作。
  2. 要执行特定任务时,程序员使用Pig,需要用Pig Latin语言编写Pig脚本,并使用任何执行机制( Grunt Shell,UDFs,Embedded )执行它们。执行后,这些脚本将通过应用Pig框架的一系列转换来生成所需的输出。
  3. 在内部, Apache Pig将这些脚本转换为一系列MapReduce作业,因此,它使程序员的工作变得容易。

5.1. Pig组成组成

  1. Parser (解析器):最初, Pig脚本由解析器处理,它检查脚本的语法,类型检查和其他杂项检查。解析器的输出将是DAG(有向无环图),它表示Pig Latin语句和逻辑运算符。在DAG中,脚本的逻辑运算符表示为节点,数据流表示为边。
  2. Optimizer (优化器):逻辑计划(DAG)传递到逻辑优化器,逻辑优化器执行逻辑优化,例如投影和下推。
  3. Compiler (编译器):编译器将优化的逻辑计划编译为一系列MapReduce作业。
  4. Execution engine (执行引擎):最后,MapReduce作业以排序顺序提交到Hadoop。这些MapReduce作业在Hadoop上执行,产生所需的结果。

5.2. Pig与SQL区别

  1. 使用延迟评价、使用ETL、能够在管道中任何时刻存储数据、支持管道分裂
  2. Pig Latin是程序性的,它在管道范例中非常自然,而SQL则是声明性的。在SQL用户中,可以指定要连接两个表的数据,但不能指定要使用的连接实现。
  3. Pig Latin允许用户指定一个实现或实现的各个方面 ,以在多个方面执行脚本。Pig Latin编程类似于 指定查询执行计划。

6. 参考

  1. HBase存储方式

到了这里,关于大数据分析-第三章 大数据存储和处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 云计算与大数据第三章 云存储练习题及答案

    1、SAN是一种(B)。 A. 存储设备                            B. 专为数据存储而设计和构建的存储网络系统 C. 光纤交换机                        D. HBA 2、在GFS中,客户端可以并行访问多个(C),提高了系统的整体性能。 A. 客户端               

    2024年02月03日
    浏览(14)
  • 计算机组成原理---第三章存储系统 习题详解版

    计算机组成原理---第三章存储系统 习题详解版

    知识扩展: 如果主存的容量无法满足 CPU 的需求,可以通过存储器扩展来解决,扩展的方式有两种: 主存的 位数 不够(相当于快递柜的尺寸太小,放不下大包裹),则可以通过位扩展的方式(快递柜扩容)实现; 主存的 字数 不够 (存储单元的数目不够, 相当于快递柜数

    2024年02月08日
    浏览(10)
  • 第三章 处理机调度

    第三章 处理机调度

    目录 一、调度的概念、层次 2.1 调度的基本概念 2.2 调度的三个层次 2.2.1 高级调度 2.2.2 低级调度 2.2.3 中级调度 2.2.3.1 进程的挂起态 2.2.4 三层调度的联系、对比 二、进程调度的时机、切换与过程、方式 2.1 进程调度的时机 2.2 进程调度的方式 2.2.1 非抢占方式 2.2.2 抢占方式

    2024年02月10日
    浏览(12)
  • 【计算机组成原理】24王道考研笔记——第三章 存储系统

    【计算机组成原理】24王道考研笔记——第三章 存储系统

    现代计算机的结构: 1.存储器的层次结构 2.存储器的分类 按层次: 按介质: 按存储方式: 按信息的可更改性: 按信息的可保存性: 3.存储器的性能指标 1.基本组成 半导体元件原理: 存储芯片原理:存储芯片由半导体元件组成而成 不同的寻址方式: 总结: 2.SRAM和DRAM 上一

    2024年02月13日
    浏览(38)
  • 静态时序分析 第三章 标准单元库

    静态时序分析 第三章 标准单元库

       本章将介绍时序信息在 单元库(library cell) 中是如何描述的。这个单元可以是1个 标准单元(standard cell) 、1个 IO缓存器( IO buffer) ,或者 复杂的IP(ItellectualProperty,知识产权)核 ,比如 USB核( USB core) 。    除了时序信息,单元库还包括了其他一些属性 attributes ,比如 单元

    2024年01月16日
    浏览(13)
  • 【遥感数字图像处理(朱文泉)】第三章 空间域处理方法

    【遥感数字图像处理(朱文泉)】第三章 空间域处理方法

     一、空间域与变换域  二、常见数字图像空间域处理方法   - 空间域处理方法是根据图像像元数据的空间表示f(x, y)进行处理;   - 变换域处理方法是对图像像元数据的空间表示f(x, y)先进行某种变换,然后针对变换数据进行处理,最后再把处理的结果反变换到空间域。 注

    2024年01月21日
    浏览(56)
  • 【数值分析不挂科】第三章 | 数值积分

    【数值分析不挂科】第三章 | 数值积分

    为什么要学习数值积分? 数值积分,把积分求值问题归结于被积函数值的计算,从而避开了 牛顿-莱布尼兹 公式需要寻找原函数的困难。 需要特别注意:① 区别于第二章中 n代表点的个数。**本章中的 n 指的是【区间数】**而不是点的个数!【区间数 = 点的个数 - 1】 ②所有

    2024年02月13日
    浏览(12)
  • 【云计算与虚拟化】第三章 实验三 配置vSphere虚拟网络和iSCSI共享存储

    【云计算与虚拟化】第三章 实验三 配置vSphere虚拟网络和iSCSI共享存储

    实验3. 配置vSphere虚拟网络和iSCSI共享存储 一、配置 vSphere 虚拟网络的实验步骤 在 VMware Workstation 中为 ESXi 主机添加两块网卡 2.开启 ESXi 主机,使用 vSphere Client 连接到 ESXi 主机。选中 ESXi 主机 切换到“配置”栏,点击硬件→网络适配器,可以看到 ESXi 主机识别出来新添加的两

    2024年02月11日
    浏览(9)
  • <<数值分析>> 第三章线性方程组的迭代解法

    <<数值分析>> 第三章线性方程组的迭代解法

            线性方程组的理论求解公式——,在实际应用中面临着两大问题,1是计算过程复杂,2是无法保证算法的稳定性。同时初始数据存在误差,需要寻求能达到精度要求的、操作和计算过程相对简单的求解方法—— 迭代法。    目录 一.迭代法的基本思想 二.基本迭代

    2024年01月25日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包