Hadoop是一个由Apache所开发的分布式系统基础架构。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
HDFS(Hadoop分布式文件系统):具体原理如下:比如一个T的文件,主机先把这个文件进行分块(系统默认每一块是64M,可人为修改)。然后把分块后的文件存储到不同的子机上面。并且在主机内有一个namecode,里面有着每一块对应的子机地址。当需要查询文件时,先查询namecode,知道这一块文件是存储在哪个子机。1.Hdfs适合大文件的存储,合上T级别的大文件或者一堆大数据文件的存储,如果文件只有几个G甚至更小就没啥意思了。2. 多机读取比单机读取效率高。3. 数据写入不可修改,只可删除查询,如要修改,先下载再删掉,重新上传修改过的。4. 适合部署在廉价的机器上,这种机制能够让给一些公司用几十台廉价的计算机就可以撑起一个大数据集群。5.为了防止某个主机失效读取不到该主机的块文件,它将同一个文件块副本分配到其它某几个主机上,如果其中一台主机失效,可以迅速找另一块副本取文件。并且可以提高访问吞吐量。
Mapreduce:为海量数据提供了计算。比如,找出10万个IP里面出现频率最高的前十名。首先是MAP,计算这些IP的哈希值,按照范围划分到不同的机器上面,最好让数据划分后可一次读入内存,这样不同的机器负责处理不同范围的数据,这就是Map。每个机子内部再进行运算(可用小顶堆),找出出现频率最高的10个IP,然后将每个机器出现频率最高的10个IP进行汇总,找出这些数据中出现频率最高的10个IP,这就是reduce过程。
- 总结
总的来说Hadoop适合应用于大数据存储和大数据分析的应用,适合于服务器几千台到几万台的集群运行,支持PB级的存储容量。
Hadoop典型应用有:搜索、日志处理、推荐系统、数据分析、视频图像分析、数据保存等。