所谓海量数据处理,无非就是基于海量数据上的存储、处理、操作。何谓海量,就是数据量太大,所以导致要么是无法在较短时间内迅速解决,要么是数据太大,导致无法一次性装入内存。
那解决办法呢?针对时间,我们可以采用巧妙的算法搭配合适的数据结构,如Bloom filter/Hash/bit-map/堆/数据库或倒排索引/trie树,针对空间,无非就一个办法:大而化小:分而治之/hash映射,你不是说规模太大嘛,那简单啊,就把规模大化为规模小的,各个击破不就完了嘛。
至于所谓的单机及集群问题,通俗点来讲,单机就是处理装载数据的机器有限(只要考虑cpu,内存,硬盘的数据交互),而集群,机器有多辆,适合分布式处理,并行计算(更多考虑节点和节点间的数据交互)。
再者,通过本blog内的有关海量数据处理的文章:Big Data Processing,我们已经大致知道,处理海量数据问题,无非就是:
分而治之/hash映射 + hash统计 + 堆/快速/归并排序:
分而治之/hash映射:针对数据太大,内存受限,只能是:把大文件化成(取模映射)小文件,即16字方针:大而化小,各个击破,缩小规模,逐个解决
hash统计:当大文件转化了小文件,那么我们便可以采用常规的hash_map(ip,value)来进行频率统计。
堆/快速排序:统计完了之后,便进行排序(可采取堆排序),得到次数最多的IP。
双层桶划分:
双层桶划分----其实本质上还是分而治之的思想,重在“分”的技巧上!
适用范围:第k大,中位数,不重复或重复的数字
基本原理及要点:因为元素范围很大,不能利用直接寻址表,所以通过多次划分,逐步确定范围,然后最后在一个可以接受的范围内进行。可以通过多次缩小,双层只是一个例子。
Bloom filter/Bitmap:
Trie树/数据库/倒排索引:
Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。
Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。
它有3个基本性质:
根节点不包含字符,除根节点外每一个节点都只包含一个字符。
从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。
每个节点的所有子节点包含的字符都不相同。
适用范围:数据量大,重复多,但是数据种类小可以放入内存
基本原理及要点:实现方式,节点孩子的表示方式
扩展:压缩实现。
外排序:
分布式处理之Hadoop/Mapreduce:
MapReduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE)。这样做的好处是可以在任务被分解后,可以通过大量机器进行并行计算,减少整个操作的时间。但如果你要我再通俗点介绍,那么,说白了,Mapreduce的原理就是一个归并排序。
适用范围:数据量大,但是数据种类小可以放入内存
基本原理及要点:将数据交给不同的机器去处理,数据划分,结果归约。
分享到:
相关推荐
### 海量数据访问——示例(C++) 在当今数据驱动的世界中,处理大量数据已成为许多应用程序的核心需求。本文将详细介绍如何通过C++高效地访问TB级别的数据,并提供一个具体的示例函数来演示这一过程。 #### 核心...
**MODIS数据处理——MRT详解** MODIS(Moderate Resolution Imaging Spectroradiometer)是NASA(美国国家航空航天局)在Terra和Aqua两颗卫星上搭载的高分辨率成像光谱仪,用于获取全球地表的多光谱、多时相遥感...
总的来说,GOMDI模型是OpenFlow技术在大数据时代的一个重要发展,它利用GPU的强大计算力和先进的算法,解决了OpenFlow在海量数据处理中的瓶颈,为网络性能优化提供了新的思路。这种模型的实施和应用有助于推动网络...
实现这一目标的关键在于克服实时性和海量数据处理的难点。实时性意味着需要每秒处理大量的稳定性数据,例如每分钟采集100个接口的数据,这需要高效的实时计算能力。而海量数据的处理则涉及数据量的巨大和维度的多样...
数据仓库架构通常包括以下几个层次:源系统、数据接入层、数据存储层、数据处理层和应用层。源系统包含各种业务系统的原始数据;数据接入层负责数据的抽取和预处理;数据存储层则分为数据仓库和数据 mart,前者存储...
《新一代DevOps——滴滴出行海量数据场景下的智能监控与故障定位实践》 在当今的互联网时代,DevOps已经成为软件开发和运维领域的重要理念,旨在通过持续集成、持续交付和持续监控,实现快速、高质量的软件发布。...
总的来说,数据分析方法是一种强大的工具,它可以帮助我们从海量数据中提炼出有价值的信息,为决策提供依据。无论是为了职业发展还是个人兴趣,深入学习和理解这些方法都将极大地丰富我们的知识体系,并提升解决问题...
数据挖掘是一种从海量数据中提取有价值知识的过程,它结合了计算机科学、统计学和机器学习等多个领域的技术。在“浙大-数据挖掘——王灿PPT”这套完整的课程材料中,王灿教授深入浅出地讲解了数据挖掘的核心概念、...
Hadoop海量数据处理的核心在于它的分布式计算框架,它使得企业能够高效地处理PB级别的数据,这在传统的单机系统中几乎是不可能完成的任务。本文将深入探讨Hadoop在大数据处理中的关键技术和应用。 一、Hadoop概述 ...
通过分析提供的三个文档——“海量数据管理第一次上机.docx”、“海量数据管理第三次上机报告.docx”以及“海量数据管理第2次上机.docx”,我们可以揭示出一系列关于海量数据处理的关键知识点。 首先,海量数据管理...
在大数据领域,Hadoop生态圈是不可或缺的重要组成部分,它为海量数据的存储、处理和分析提供了高效可靠的...这份"最新Hadoop生态圈开发学习资料——尚硅谷"将是你学习过程中宝贵的资源,助你在大数据的世界中游刃有余。
5. **Hadoop/Spark**:大规模数据处理框架,适用于处理海量数据集。 #### 五、案例分析 以某电商平台为例,通过对其用户行为数据(如浏览记录、购买记录)进行分析,发现某些特定时间段用户的活跃度显著增加,进而...
《基于虚拟仪器平台的海量数据处理分析系统开发》是一篇探讨如何利用虚拟仪器技术处理大数据的论文。该系统由南京航空航天大学的研究团队开发,旨在解决在个人电脑上处理大规模数据的挑战。论文强调了在处理海量数据...
这是数据处理的第一步,即数据准备阶段。随后,将处理好的数据转移到Excel中进行图表制作,以便直观展示数据统计结果。然而,随着技术的进步和数据分析需求的增长,使用Python进行数据分析和可视化变得更加高效和...
这一概念由郭文惠在《数据湖——一种更好的大数据存储架构》一文中进行了详细阐述。 数据湖的核心思想是将原始数据分类存储到不同的数据池中,并在每个数据池内对数据进行整合,使其转化为统一的、易于分析的格式。...
而SPSS,作为一种专业的统计分析工具,不仅可以处理海量数据,还拥有强大的计算能力和多样化的分析功能,非常适合大数据的处理需求。 接下来,文章介绍了在SPSS中进行数据分组的基本步骤。SPSS提供了多种数据处理和...
我国在卫星数据处理和存储技术领域迎来新的里程碑——“多元卫星海量数据处理与存储系统”顺利通过评审,标志着我国在此领域的技术实力和应用水平迈上了新的台阶。该系统不仅为我国海洋监测、环境管理、灾害预防和...
为了更好地管理和利用这些海量数据,构建一个高效的数据架构变得至关重要。《云端的数据湖——现代化的数据架构》这篇文档由AWS资深解决方案架构师张孝峰撰写,深入探讨了云端数据湖的概念及其在现代化数据架构中的...
本书理论和实践并重,深入浅出地给出了海量信息数据处理的整套解决方案,包括压缩、索引和查询的方方面面。其最大的特色在于不仅仅满足信息检索理论学习的需要,更重要的是给出了实践中可能面对的各种问题及其解决...