【云计算与大数据技术】数据编码LZSS算法、Snappy压缩库及分布式通信系统的讲解(图文解释 超详细)

简介: 【云计算与大数据技术】数据编码LZSS算法、Snappy压缩库及分布式通信系统的讲解(图文解释 超详细)

一、数据编码概述

数据编码概述 - 在分布式系统中需要处理大量的网络数据,为了加快网络数据的传输速度,通常需 要对传输数据进行编码压缩

数据压缩是以尽可能少的数码来表示信源所发出的信号,减少容纳给定的消息集合或数据采样集合的信号空间,这里讲的信号空间就是被压缩的对象,是指某信号集合所占的时域、空域和频域。信号空间的这几种形式是相互关联的,存储空间的减少意味着信号传输效率的提高,所占用带宽的节省,只要采取某种方法来减少某个信号空间就能够压缩数据

一般来说,数据压缩主要是通过数据压缩编码来实现的。在给定的模型下通过数据编码来消除冗余,大致有以下3种情况

信源符号之间存在相关性

如果消除了这些相关性,就意味着数据压缩

信源符号之间存在分布不等概性

根据不同符号出现的不同概率分别进行编码,概率大的符合用较短的码长编码,概率小的符号用较短的码长编码,最终使信源的平均码长达到最短,通常采用统计编码的方法

利用信息内容本身的特点(如自相似性)  

用模型的方法对需要传输的信息进行参数估测,充分利用人类的视觉、听觉等特性,同时考虑信息内容的特性,确定并遴选出其中的部分内容进行编码,从而实现数据压缩,通常采用模型基编码的方法

目前比较认同的、常用的数据压缩的编码方法大致分为两大类

冗余压缩法或无损压缩法 - 这类压缩方法只是去掉数据中的冗余部分,并没有损失熵,而这些冗余数据是 可以重新插入到原数据中的

熵压缩法或有损压缩法 - 这类压缩法由于压缩了熵,也就损失了信息量,而损失的信息是不能恢复的

二、LZSS算法

LZSS算法属于字典算法,是把文本中出现频率较高的字符组合做成一个对应的字 典列表,并用特殊代码来表示这个字符

LZSS算法的字典模型使用自适应方式,基本的思路是搜索目前待压缩串是否在以前出现过,如果出现过,则利用前次出现的位置和长度来代替现在的待压缩串,输出该字符串的出现位置以及长度,否则输出新的字符串,从而起到压缩的目的,但是在实际使用过程中,由于被压缩的文件往往较大,一般使用滑动窗口压缩方式,也就是说将一个虚拟的、可以跟随压缩进程滑动的窗口作为术语字典,LZSS算法最大的好处是压缩算法的细节处理不同,只对压缩率和压缩时间有影响,不会影响到解压程序,LZSS算法最大的问题是速度,每次都需要向前搜索到原文开头,对于较长的原文需要的时间是不可忍受的,这也是LZSS算法较大的一个缺点

三、Snappy压缩库

Snappy是在 Google公司内部生产环境中被许多项目使用的压缩/解压缩的链接库, 使用该库的软件包括BigTable、MapReduce 和 RPC 等

Snappy是面向字节编码的 LZ77类型压缩器。Snappy采用的编码单元是 字节(byte), 而不是比特(bit)

采用小端方式 (little-endian )存储 , 同时兼顾可变长度编码。每个字节的后面7位存储具体的数据,最高位用于表示下一个字节是否为同一个整数,剩下的字节用4种元素类型中的一种进行编码,元素类型在元素数据中的第二个字节,该字节的最后两位表示类型

四、分布式通信系统

分布式通信研究分布式系统中不同子系统或进程之间的信息交换机制,我们从大数据系统中归纳出三种最常见的通信机制:远程过程调用,消息队列,多播通信

1:远程过程调用

远程过程调用的重点是网络中位于不同机器上进程之间的交互

远程过程调用 (Remote Procedure Call RPC)是一个计算机通信协议,通 过该协议运行于一台计算机上的程序可以调用另一台计算机的子程序,而程序员无须额外地为这个交互编程。

RPC框架都支持以下特性:接口描述语言、高性能、数据版本支持以及二进制数据格式

Thrift 是由 Facebook 公司开发的远程服务调用框架 ,它采用接口描述语言定义并创建服务,支持可扩展的跨语言服务开发

2:消息队列

消息队列的重点是子系统之间的消息可靠传递

消息队列也是设计大规模分布式系统时经常采用的中间件产品

消息队列是在消息传递过程中保存消 息的容器或中间件,其主要目的是提供消息路由并保障消息可靠传递

分布式消息系统 Kafka 采用pub-sub机制,具有极高的消息吞吐量、较强的扩展型和高可用性

3:应用层多播通信

多播通信是实现信息的高效多播传递

分布式系统中的一个重要的研究内容是如何将数据通知到网络中的多个接收 方,这一般被称为多播通信

Gosip协议就是常见的应用层多播通信协议

Gossip协议也被称为“感 染 协 议 ”(Epidemic Protocol),用来尽快地将 本地更新数据通知到网络中的所有其他节点

其具体更新模型又可以分为3种:全通知模型、反熵模 型和散步谣言模型

创作不易 觉得有帮助请点赞关注收藏~~~

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
8天前
|
存储 安全 数据管理
新型数据库技术:基于区块链的分布式数据存储系统
传统数据库系统面临着中心化管理、数据安全性和可信度等方面的挑战。本文介绍了一种基于区块链技术的新型数据库系统,通过分布式存储和去中心化的特性,提高了数据的安全性和可信度,同时实现了高效的数据管理和共享。该系统在多个领域如金融、医疗和物联网等具有广阔的应用前景。
|
18天前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
|
2月前
|
设计模式 安全 Java
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
34 0
|
4天前
|
存储 安全 数据管理
新一代数据库技术:融合区块链的分布式存储系统
传统数据库技术在面对日益增长的数据量和复杂的数据管理需求时显现出局限性。本文介绍了一种新一代数据库技术:融合区块链的分布式存储系统。通过将区块链技术与传统数据库相结合,实现了数据的分布式存储、安全性和透明度,以及去中心化的特性。这一技术的应用将极大地推动数据库系统的发展,为数据管理带来全新的解决方案。
|
4天前
|
存储 安全 数据管理
新一代数据库技术:融合区块链的分布式数据存储系统
传统数据库系统面临着数据安全性、可信度和去中心化等挑战,而区块链技术的兴起为解决这些问题提供了新的思路。本文介绍了一种新一代数据库技术,将区块链技术与传统的分布式数据存储系统相融合,实现了更高水平的数据安全性和可信度,以及去中心化的优势。通过结合区块链的不可篡改性和分布式存储系统的高性能,这一新型数据库技术将在未来的数据管理领域发挥重要作用。
|
7天前
|
存储 缓存 NoSQL
软件体系结构 - 缓存技术(4)Redis分布式存储
【4月更文挑战第20天】软件体系结构 - 缓存技术(4)Redis分布式存储
37 12
|
11天前
|
分布式计算 Ubuntu 调度
如何本地搭建开源分布式任务调度系统DolphinScheduler并远程访问
如何本地搭建开源分布式任务调度系统DolphinScheduler并远程访问
|
2月前
|
存储 监控 安全
金石推荐 | 【分布式技术专题】「单点登录技术架构」一文带领你好好认识以下Saml协议的运作机制和流程模式
金石推荐 | 【分布式技术专题】「单点登录技术架构」一文带领你好好认识以下Saml协议的运作机制和流程模式
72 1
|
10天前
|
机器学习/深度学习 人工智能 算法
基于DCT和扩频的音频水印嵌入提取算法matlab仿真
本文介绍了结合DCT和扩频技术的音频水印算法,用于在不降低音质的情况下嵌入版权信息。在matlab2022a中实现,算法利用DCT进行频域处理,通过扩频增强水印的隐蔽性和抗攻击性。核心程序展示了水印的嵌入与提取过程,包括DCT变换、水印扩频及反变换步骤。该方法有效且专业,未来研究将侧重于提高实用性和安全性。
|
25天前
|
机器学习/深度学习 算法
【MATLAB】GA_BP神经网络时序预测算法
【MATLAB】GA_BP神经网络时序预测算法
33 8