【云计算与大数据技术】数据编码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种:全通知模型、反熵模 型和散步谣言模型

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

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
存储 人工智能 大数据
云栖2025|阿里云开源大数据发布新一代“湖流一体”数智平台及全栈技术升级
阿里云在云栖大会发布“湖流一体”数智平台,推出DLF-3.0全模态湖仓、实时计算Flink版升级及EMR系列新品,融合实时化、多模态、智能化技术,打造AI时代高效开放的数据底座,赋能企业数字化转型。
3256 0
|
数据采集 人工智能 分布式计算
ODPS在AI时代的发展战略与技术演进分析报告
ODPS(现MaxCompute)历经十五年发展,从分布式计算平台演进为AI时代的数据基础设施,以超大规模处理、多模态融合与Data+AI协同为核心竞争力,支撑大模型训练与实时分析等前沿场景,助力企业实现数据驱动与智能化转型。
824 4
|
12月前
|
数据可视化 大数据 关系型数据库
基于python大数据技术的医疗数据分析与研究
在数字化时代,医疗数据呈爆炸式增长,涵盖患者信息、检查指标、生活方式等。大数据技术助力疾病预测、资源优化与智慧医疗发展,结合Python、MySQL与B/S架构,推动医疗系统高效实现。
|
存储 监控 算法
117_LLM训练的高效分布式策略:从数据并行到ZeRO优化
在2025年,大型语言模型(LLM)的规模已经达到了数千亿甚至数万亿参数,训练这样的庞然大物需要先进的分布式训练技术支持。本文将深入探讨LLM训练中的高效分布式策略,从基础的数据并行到最先进的ZeRO优化技术,为读者提供全面且实用的技术指南。
1046 2
|
SQL 分布式计算 大数据
我与ODPS的十年技术共生之路
ODPS十年相伴,从初识的分布式计算到共生进化,突破架构边界,推动数据价值深挖。其湖仓一体、隐私计算与Serverless能力,助力企业降本增效,赋能政务与商业场景,成为数字化转型的“数字神经系统”。
|
存储 人工智能 算法
Java 大视界 -- Java 大数据在智能医疗影像数据压缩与传输优化中的技术应用(227)
本文探讨 Java 大数据在智能医疗影像压缩与传输中的关键技术应用,分析其如何解决医疗影像数据存储、传输与压缩三大难题,并结合实际案例展示技术落地效果。
|
机器学习/深度学习 算法 Java
Java 大视界 -- Java 大数据在智能物流运输车辆智能调度与路径优化中的技术实现(218)
本文深入探讨了Java大数据技术在智能物流运输中车辆调度与路径优化的应用。通过遗传算法实现车辆资源的智能调度,结合实时路况数据和强化学习算法进行动态路径优化,有效提升了物流效率与客户满意度。以京东物流和顺丰速运的实际案例为支撑,展示了Java大数据在解决行业痛点问题中的强大能力,为物流行业的智能化转型提供了切实可行的技术方案。
|
数据采集 自然语言处理 分布式计算
大数据岗位技能需求挖掘:Python爬虫与NLP技术结合
大数据岗位技能需求挖掘:Python爬虫与NLP技术结合
|
存储 分布式计算 算法
Java 大视界 -- Java 大数据在智能教育在线考试监考与作弊检测中的技术创新(193)
本文探讨了Java大数据技术在智能教育在线考试监考与作弊检测中的创新应用。随着在线考试的普及,作弊问题日益突出,传统监考方式难以应对。通过Java大数据技术,可实现考生行为分析、图像识别等多维度监控,提升作弊检测的准确性与效率。结合Hadoop与Spark等技术,系统能实时处理海量数据,构建智能监考体系,保障考试公平性,推动教育评价体系的数字化转型。
|
SQL 缓存 监控
大数据之路:阿里巴巴大数据实践——实时技术与数据服务
实时技术通过流式架构实现数据的实时采集、处理与存储,支持高并发、低延迟的数据服务。架构涵盖数据分层、多流关联,结合Flink、Kafka等技术实现高效流计算。数据服务提供统一接口,支持SQL查询、数据推送与定时任务,保障数据实时性与可靠性。
2247 0

热门文章

最新文章