什么叫海量数据:
1. 数据量函数过千万,或者过亿,必须用程序处理;
2. 数据量达到TB,普通机器无法处理,必须借助特殊的工具和程序。
海量数据处理的软硬件要求:
3. 合理使用工具;
4. 合理分配系统资源;
5. 利用适当的方法。
对程序员的要求:没有通用方法,有通用原则和原理。
1. 丰富的经验;
2. 灵活的处理方式。
海量数据处理的技巧
## 一、选择优秀的数据库 ##
可以选择hadoop的HDFS,hbase、mysql。
## 二、编写优良的程序代码 ##
优良的程序代码关于数据处理的正确率和效率问题。
## 三、对海量数据进行分区处理 ##
## 四、对数据表建立索引 ##
## 五、建立缓存机制 ##
如果读取2亿行的数据,建立100,000行的buffer,在经验上是可行的。
缓存是避免频繁访问数据库或者磁盘而建立的一种临时快速存储器的。它是利用内存等比磁盘和数据库访问速度更快的设备,临时存储需要多次访问的数据,加快访问速度。对于某些需要多次从磁盘和数据库访问的数据,可以通过Map来缓存数据。也可以对某些中间计算结果,但计算耗时的,缓存下来。
缓存的更细和过期:如果缓存的实践超过某一时间间隔,则设定其过期,必须重新从数据库或磁盘读取数据,放入缓存。
也可通过缓存数据的版本比较得出是否过期,是否需要重新到磁盘或数据库读取新数据缓存。
## 六、加大虚拟内存 ##
内存不够时,可以增加虚拟内存。
虚拟内存是一种内存管理技术,是物理内存不够时的一种弥补措施。将磁盘的一部分闲散空间作为内存来用。
但RAM不够时,系统会将内存中优先级较低的任务交换到虚拟内存,腾出更多的物理内存供更多优先级更高的任务进行处理。
虚拟内存是windows操作系统的内存管理技术,linux没有这个讲法。
现在有了hadoop集群、虚拟内存的技术应该不怎么用了。
## 七、分批处理 ##
将海量数据分层小块,对小块进行处理后,再将处理结果进行合并,得到最终处理结果。这种实现类似于hadoop的mapreduce计算过程。
## 八、使用临时表和中