大数据

简介: 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

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


img_f7ec28935271405e28d67f5982f6fabd.png

img_c5429b7c07168d3ccf89bca9f61db1cb.png

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


img_3f265d24104625061a4a789aee1984fe.png

海量数据处理的关键:


img_8acbd066fa7b5d15edd447d40d82764c.png

案例1

img_22e948df43cbdf3c64bc80ec9a6bc75a.png

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


img_40297c2f7f4b103e23bc477a1794832b.png

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


img_6a77e89eebf3652bbb4accfc3a02d02c.png

这种做法的解释是这样的:
因为所有的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

img_0e89909ae72ec096d9528ad026c848e5.png

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


img_7c4c5e19acfc11a9e80dbfd201ed9da3.png

案例3

img_025fe48b85b4d7c77cbbdd4d3a69c569.png

img_326f6fb4eadbfc5e769e249e404cffd5.png

img_d7ed3c52ae52fbbebb3a2e13ee26b2ac.png

案例4

img_79db133378f4070dc6023fa4356c303f.png

下图中的20亿其实为40亿


img_266d21f4e37dcd58b4857b66730c8b5b.png

img_e10b5ef87b149317bd5df24833baf7ad.png

img_d1c2f60f7fa5bd039094dc539b5a7328.png

img_7db55809dd8789b970034ccacfb861c0.png

img_b50c8467bccc1faabd873e2cc761e9df.png

案例5

img_5257a746acb7e33d26cb47292fb990f3.png

img_b5b1ef82b040de61b8f84189b5db72cb.png

案例6

img_273abf99c0cc5394afc95fbd303c95cf.png

img_58a61c1b73bdd77db5c1488747e42697.png

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

img_01c06974f5b8e85125b7c600d68a09dd.gif

img_3ee5ab4f783c32bd21efe1e7951e5ca4.png

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

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
9月前
|
传感器 人工智能 大数据
大数据
第二节 大数据 1.大数据的概念 麦肯锡公司对大数据的定义: 大数据是指大小超出常规的数据库工具获取、存储、管理和分析能力的数据集。 维基百科对大数据的定义: 大数据是指利用常用软件工具来获取、管理和处理数据所耗时间超过可容忍时间限制的数据集。这并不是一个精确的定义,因为无法确定常用软件工具的范围,可容忍时间也是个概略的描述。 2.大数据的特点 大数据具有5V特点(IBM提出),即: Volume(规模大)、Variety (种类多) 、Velocity (处理速度快)、Value (价值密度低)、Veracity (真实性) 2.大数据的特点 规模大: 数据规模大是大数据的基本属性。
|
10月前
|
SQL 数据采集 算法
大数据到底应该如何学?
大数据到底应该如何学?
82 0
|
SQL 分布式计算 大数据
关于大数据的完整讲解
关于大数据的完整讲解
|
存储 分布式计算 资源调度
大数据1
大数据1
508 0
大数据1
|
存储 分布式计算 大数据
深入理解大数据
大数据的定义、采集、应用、意义和前景
159 0
|
大数据 数据库
大数据使“定制”新的经济指标成为可能
大数据使“定制”新的经济指标成为可能
110 0
大数据使“定制”新的经济指标成为可能
|
大数据 分布式计算 Hadoop
从0到1完全掌握大数据
经常听别人说“我要去学习大数据”,乍一听大数据应该是某个技术。而通俗来讲,大数据就是大到难以处理的数据集合,是社会技术发展过程中碰到的棘手问题。本文将从大数据的由来和相关技术分别展开进行讲解,从0到1系统地介绍如何学会使用大数据。
3136 0