海量数据处理的常用技术可分为:
外排序:因为海量数据无法全部装入内存,所以数据的大部分存入磁盘中,小部分在排序需要时存入内存。
MapReduce:分布式处理技术
hash技术:以Bloom filter技术为代表
外排序:主要适用于大数据的排序、去重。
分布式处理技术:MapReduce 技术思想是将数据交给不同的机器去处理,将数据切分,之后结果归约。
举例,统计出一批数据的TOP N
首先可以根据数据值或者数据HASH(MD5)后的值将数据按照范围划分,不同的服务器负责处理各种的数值范围,实际上就是map,得到结果后,各个服务器拿出各自的出现次数最多的前N个数据,然后汇总,选出所有的数据中出现次数最多的前N个数据,这实际上就是reduce的过程。
1、处理海量数据的常用技巧,比如分区操作。比如针对按年份或按月份存取的数据,将数据分散开,减少磁盘I/0,减少系统负荷,也可将日志、索引存放于不同的分区下。
2、提高硬件条件、增加CPU,加大磁盘空间等。
3、加大虚拟内存。
4、分批处理。 可以对海量数据分批处理,处理后的数据再进行合并操作,这样逐个击破,有利于下哦数据量的处理。 一般按日、月等存储的数据,都可以采用先分后合的方法,对数据分开处理。
5、使用临时表和中间表。 如果大表处理不了,只能拆分为多个小表,不要一个sql语句全部完成,卡死你。
6、部分文件可以使用文件格式进行处理。一般海量的网络日志都是文本格式或者CSV格式,对它进行处理牵扯到数据清洗,可以利用程序进行处理,无需导入数据库再做清洗。