Hadoop学习概述
Hadoop是由apache Software Foundation公司于2005年秋天作为Lucene的子项目Nutch的一部分正式引入的。它受到最先由google lab开发的mapreduce计算模型合google file system分布式文件系统的启发。2006年3月,mapreduce和nutch distributed file system 分别被纳入称为hadoop的项目中。
Hadoop是一个能够对大量数据进行分布式处理的软件框架。Hadoop因具有高可靠性,高扩展性,高效性和高容错性等特性儿深受广大用户的欢迎,并且迅速在大数据处理领域占领了一席之地。
Hadoop就是模仿google核心技术而成的分布式计算机系统框架。
Hadoop运行可以在成千上万个通机器的节点组成的集群上,通过分布式的计算模型和存储模型来处理大数据集。
Hadoop主要包括如下组成部分:
l Hadoop common:一些支持hadoop其它子项目的通用工具集
l HDFS:hadoop的一个高容错性的分布式文件系统,用于存储数据。
l Mapreduce:hadoop的一个处理大数据集的分布式计算框架
分布式文件系统HDFS
Hadoop distributedfile system 是hadoop主要的存储系统。可以创建文件,删除文件,移动文件,重命名文件。
一个hdfs集群主要由namenode合datanode组成。其中namenode只有一个,主要用于管理存储数据的元数据,而datanode可以有多个,主要用于直接存储数据。
在面对数据可能损害出错时,不是采用更好地机器来防止数据出问题,而是提供了一种机制,使得在普通机器节点上的数据损坏出错后也能很好的处理,换句话说,hdfs是面向一种数据高错率的一种解决方案。
Hdfs的文件模型是一次写入多次读取,一个hdfs上的文件一旦被创建,写入了内容,并且关闭了,那么以后则不需要对他再进行更改。(但支持对文件进行追加)这样做发大大提高了hdfs处理文件的吞吐量,并且使hdfs简化。
Namenode:负责调度。将大数据且分成很多小块,将这些小块的数据根据一定的规则分发到不同的namenode上,并将分块信息保存(称为元数据)以提供后续读取文件时候将这些小的数据文件组织成一个完整的数据文件。在datanode存储小的数据块时,其不只存储一份,会默认根据在机器中的不同datanode中存储三份数据块,以防止数据发生损坏造成不可挽回的损失。
Datanode:负责存储数据。
并行计算模型mapreduce
Mapreduce是hadoop的软件架构,轻松运行在成千上万个普通机器的节点。
一个Mapreduce任务会首先将输入的数据集切分成独立的小块,并被map任务平行地在datanode上进行处理,实现分布式处理。之后,map任务处理的结果汇总到reduce任务中做进一步汇总处理,最后将最终结果输出。
将计算放在数据节点上,而非将数据放在计算节点上。所以mapreduce框架合hdfs是运行在相同集群节点上,即计算节点和存储节点是同一个节点。
Master响应客户端分配的任务,并分配给slaver
Slaver只负责执行,并在执行完成后输入给reduce进行汇总。
Mapreduce框架在执行的时候是通过键值对的形式进行操作的。数据集以key,value的形式输入map任务,map任务处理完成之后以key value的形式输出给reduce,reduce处理完成后将结果输出。
--------------------------------------分割线 --------------------------------------
搭建Hadoop环境(在Winodws环境下用虚拟机虚拟两个Ubuntu系