大数据

简介: Map-Reduce和Hadoop逐渐称为面试热门。还有,容量的转换如下:bit就是位,也叫比特位,是计算机表示数据最小的单位。byte就是字节,1byte=8bit,1byte就是1B;一个字符=2字节;1KB=1024B字节B到GB是介绍他们之前,我们先来看看什么是哈希函数什么是Map-Reduce。

Map-Reduce和Hadoop逐渐称为面试热门。还有,容量的转换如下:

  • bit就是位,也叫比特位,是计算机表示数据最小的单位。
  • byte就是字节,1byte=8bit,1byte就是1B;
  • 一个字符=2字节;
  • 1KB=1024B
  • 字节B到GB是10^9

介绍他们之前,我们先来看看什么是哈希函数



什么是Map-Reduce。map阶段是通过Hash函数将任务分开成若干的子任务,Hash函数可以是用户指定或者系统默认。Reduce阶段是分开处理,然后将子任务合并成结果。


海量数据处理的关键:


案例1


首先用最简单的解决方法,那就是将IP转化为整数然后排序:



但是其实有更高更省空间的方法:


这种做法的解释是这样的:
因为所有的IP只会出现一次,所以可以考虑bitmap数据结构(在Java中就是二进制数组,byte[])。下面先说一个byte数组 的例子。

//只要知道数的取值范围,就可以用bytes数组排序。
//java并没有提供bit这种数据类型,即使最小的数据类型byte,也要
//占到8个bit.(以前从哪里看到过boolean值在不同的jvm实现下面可能是1bit,也可能是8bit)
public static void main(String[] args){
        boolean[] bytes = new boolean[101];
        int[] a = new int[]{76, 22, 11, 98, 93, 45, 65, 43, 76, 2};
        for(int i = 0; i < a.length; i++){
            bytes[a[i]] = true;
        }
        for(int i = 0; i < bytes.length; i++){
            if(bytes[i] == true)
                System.out.println(i);
        }
    }

IPV4中规定IP地址长度为32(按照TCP/IP参考模型划分),即有2^{32}个地址。
IPV6协议的地址长度为128位,全部可分配的地址数为2^{128}
申请一个长度为2^{32}的bit类型的数组,每个位置是一个bit,只可表示0或者1这两种状态,空间为512MB。每个IP地址转化为无符号整数K,数组下标0 ~ 2^{32-1}与k对应起来。如果k=1,就把bitmap[0] = 1;如果k=n,就把bitmap[n-1]=1。这样,能做到时间复杂度为O(n),空间复杂度很小。

案例2


年龄都在0到200之间,所以只需要申请一个长度为200的数组,然后遇到年龄为k的,只需要在数组为k的数加1即可,最后倒出来。


案例3



案例4


下图中的20亿其实为40亿






案例5


案例6



假设id通过哈希函数计算和的结果为
0~2^32
,这些key首尾相连构成环形分布。假设N=3台机器根据哈希函数也在环中,那么id为1的数据顺时针知道距离最近的机器,id1的所有删除、添加查询操作都在这上面。



假如添加机器m3,经过哈希函数计算m3的机器id在m1和m2中间。那么data1数据原来实在m2上操作的,现在变成m3上操作,并且将m2的data1的旧数据迁移到m3上。

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
大数据
阿里云EMR到底是什么?一图带你深入了解!
阿里云开源大数据平台E-MapReduce是运行在阿里云平台上的一种大数据处理的系统解决方案,那么它到底有着怎样的功能及优势呢?一起来看看吧!
3940 0
阿里云EMR到底是什么?一图带你深入了解!
|
监控 JavaScript 数据库连接
解读Node.js内存监控工具生成的报告
需要注意的是,不同的内存监控工具可能会有不同的报告格式和内容,具体的解读方法可能会有所差异。因此,在使用具体工具时,还需要参考其相关的文档和说明,以更好地理解和利用报告中的信息。通过深入解读内存监控报告,我们可以不断优化 Node.js 应用的内存使用,提高其性能和稳定性。
582 175
|
设计模式 算法 程序员
代码之美:从功能实现到艺术创作
【7月更文挑战第51天】在编程的世界里,一行行代码不仅仅是冰冷的逻辑与算法的堆砌,它们也能展现出一种独特的美感。本文将探讨如何将技术能力与审美意识相结合,把日常的编程工作变成一种艺术创作的体验。我们将深入理解代码的美学原则,并分享一些提升代码艺术性的实践技巧,旨在启发开发者们从不同的角度审视自己的工作,让编程不仅仅是功能的实现,更是一场享受美的过程。
|
SQL 流计算
Flink SQL 在快手实践问题之CUMULATE窗口的划分逻辑如何解决
Flink SQL 在快手实践问题之CUMULATE窗口的划分逻辑如何解决
330 2
|
缓存 监控 Linux
top命令详解
`top`是Linux下的系统监视工具,显示实时的CPU、内存使用及进程详情。交互式界面允许按CPU或内存排序进程,查看进程ID、用户、内存占用等信息。可通过`P`、`M`、`k`、`r`进行操作,如改变进程优先级或退出。使用`man top`获取完整帮助。
513 3
放大电路频率响应
放大电路的频率响应是指输入信号在不同频率下经过放大电路后的输出信号的变化情况。频率响应通常以幅频特性和相频特性表示。
425 0
|
设计模式 存储 算法
【软件设计师—基础精讲笔记7】第七章 面向对象技术
【软件设计师—基础精讲笔记7】第七章 面向对象技术
334 1
|
传感器 人工智能 监控
Gartner发布《2023年十大战略技术趋势》,应用可观测性入选!
Gartner发布《2023年十大战略技术趋势》,应用可观测性入选!
1219 1
|
存储 算法 前端开发
LIO-SAM回环检测模块代码解析
LIO-SAM回环检测模块代码解析
892 0
LIO-SAM回环检测模块代码解析
|
负载均衡 NoSQL 调度
综合项目:Keepalived+Redis+Haproxy 实现主从热备、负载均衡、秒级切换
综合项目:Keepalived+Redis+Haproxy 实现主从热备、负载均衡、秒级切换
1135 0
综合项目:Keepalived+Redis+Haproxy 实现主从热备、负载均衡、秒级切换