【大数据】初识Hadoop
因为项目日志体量较大,每天有4-7T的日志量,传统的sqlserver已经不能满足,所以现在需要使用到大数据的相关工具进行记录和使用。
虽然公共项目提供了组件和解决方案,但是对于一些名词、概念还是有必要学习一下。
Hadoop历史
- 雏形开始于2002年的Apache的Nutch,Nutch是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。
- 随后在2003年Google发表了一篇技术学术论文谷歌文件系统(GFS)。GFS也就是google File System,google公司为了存储海量搜索数据而设计的专用文件系统。
- 2004年Nutch创始人Doug Cutting基于Google的GFS论文实现了分布式文件存储系统名为NDFS。
- 2004年Google又发表了一篇技术学术论文MapReduce。MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行分析运算。
- 2005年Doug Cutting又基于MapReduce,在Nutch搜索引擎实现了该功能。
- 2006年,Yahoo雇用了Doug Cutting,Doug Cutting将NDFS和MapReduce升级命名为Hadoop,Yahoo开建了一个独立的团队给Goug Cutting专门研究发展Hadoop。
- 不得不说Google和Yahoo对Hadoop的贡献功不可没。
Hadoop核心
HDFS:(Hadoop Distributed File System,Hadoop分布式文件系统),它是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,适合那些有着超大数据集(large data set)的应用程序。
设计特点:
1、大数据,T级别,适用。
2、文件分块存储。将完整的文件分为M级别大小存储在不同的节点上,读取时从多个节点一起读取,效率高。
3、流式数据访问。适用于一次写入就不在变化的场景,可多次读取。
4、廉价硬件。
5、硬件故障。认为所有机器都可能出问题,会将文件存储多个副本在别的节点机器上。
核心元素:
- Block:将一个文件进行分块,通常是64M。
- NameNode:保存整个文件系统的目录信息、文件信息及分块信息,这是由唯一一台主机专门保存,当然这台主机如果出错,NameNode就失效了。在Hadoop2.*开始支持activity-standy模式----如果主NameNode失效,启动备用主机运行NameNode。
- DataNode:分布在廉价的计算机上,用于存储Block块文件。
MapReduce:一套从海量数据中提取分析元素最后返回的编程模型。
- Map:将文件分组,计算,得出一个结果。
- Reduce:将Map的结果归纳,计算,得出最终的结果。