一、Hadoop简介:
1.1 Hadoop概述:
Hadoop是Apache软件基金会旗下的一个开源分布式计算平台。以Hadoop分布式文件系统HDFS(Hadoop Distributed File System)和MapReduce(Google MapReduce的开源实现)为核心,为用户提供了系统底层细节透明的分布式基础架构。
HDFS的高容错性、高伸缩性等优点允许用户将Hadoop部署在低廉的硬件上,形成分布式系统;MapReduce分布式编程模型允许用户在不了解分布式系统底层细节的情况下开发并行应用程序。
1.2 Hadoop的历史:
Hadoop的源头是Apache Nutch,该项目始于2002年,是Apache Lucene的子
项目。
1.3 Hadoop的应用:
Yahoo!通过集群运行Hadoop,以支持广告系统和Web搜索的研究;百度使用Hadoop进行搜索日志的分析和网页数据的挖掘工作;淘宝的Hadoop系统用于存储并处理电子商务交易的相关数据。
二、Hadoop的项目及其结构:
现在Hadoop已经发展成为包含多个子项目的集合。其包含Common、Avro、Chukwa、Hive、HBase、Pig等。
1、 MapReduce:MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。“映射”(map)、“化简”(reduce)等概念和他们的主要思想都是从函数式编程语言中借来的。MapReduce在执行时先制定一个map函数,把输入键值对映射成一组新的键值对,经过一定的处理后交给reduce,reduce对相同key下的所有value进行处理后再输出键值对作为最终的结果。MapReduce允许使用Ruby、Python、PHP和C++等非Java语言编写map或reduce程序。
2、 Hive:Hive最早是由Facebook设计的,是一个建立在Hadoop基础之上的数据仓库,它提供了一些用于数据整理、特殊查询和分析存储在Hadoop文件中的数据集的工具。它的查询语言称为Hive QL。
3、 HBase:HBase是一个分布式的、面向列的开源数据库,该技术来源于Google的论文“BigTable:一个结构化数据的分布式存储系统”。HBase是一个适合于存储非结构化的数据的数据库,它是基于列而不是基于行的模式。HBase主要用于需要随机访问、实时读写的大数据。
三、Hadoop的体系结构:
Hadoop的体系结构主要是通过HDFS来实现对分布式存储的底层支持的,并且它会通过MapReduce来实现对分布式并行任务处理的程序支持。
1、 HDFS的体系结构:
Hadoop采用了主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问操作;集群中的DataNode管理存储的数据。HDFS允许用户以文件的形式存储数据。从内部来看,文件被分为若干个数据块,而且这若干个数据块存储在一组DataNode上。NameNode执行文件系统的命名空间操作,比如打开、关闭、重命名文件或目录等,它也负责数据块到具体DataNode的映射。DataNode负责处理文件系统客户端的文件读写请求,并在NameNode的统一调度下进行数据块的创建、复制和删除工作。
NameNode和DataNode都被设计成可以在普通计算机上运行。这些计算机通常运行Linux操作系统。HDFS采用Java语言开发。NameNode是所有HDFS元数据的管理者,用户数据永远不会经过NameNode。
2、 MapReduce的体系结构:
MapReduce是一种并行编程模式,这种模式使得软件开发者可以轻松的写出分布式并行程序。在Hadoop的体系结构中,MapReduce是一个简单易用的软件框架,基于它可以将任务分发到上千台商用机器组成的集群上,并以一种高容错的方式并行处理大量的数据集,实现Hadoop的并行任务处理功能。MapReduce框架是由一个单独运行在主节点上的JobTracker和运行在每个集群从节点上的TaskTracker共同组成的。主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且从新执行之前失败的任务;从节点仅负责由主节点指派的任务。如果一个TaskTracker出了故障,JobTracker会将其负责的任务转交给另一个空闲的TaskTracker重新运行。
通常,MapReduce框架和分布式文件系统是运行在一组相同的节点上的,也就是说,计算节点和存储节点在一起。这种配置允许框架在那些已经存好数据的节点上高效的调度任务,这可以使整个集群的网络带宽被非常高效的利用。
3、 HBase的体系结构:
HBase是一个类似于Bigtable的分布式数据库,是一个稀疏的、长期存储(存在硬盘上)的、多维度的排序映射表。
HBase在分布式集群上主要依靠由HRegion、HMaster、HClient组成的体系结构从整体上管理数据。HBase体系结构的三大重要组成部分是:
HBaseMaster:HBase主服务器,与Bigtable的主服务器类似;
HRegionServer:HBase域服务器;
HBaseClient:HBase客户端org.apache.hadoop.HBase.client.HTable 定义的
四、Hadoop的安装:
在Linux上安装Hadoop之前需要先安装一下两个程序:
JDK 1.6或更高的版本;Hadoop是用Java开发的。
SSH,推荐安装OpenSSH;Hadoop需要通过SSH来启动salve列表中各台主机的守护进程,因此SSH必须安装。
Hadoop有官方发行版和cloudera版,其中后者是Hadoop的商用版本。
Hadoop有三种运行方式:单节点方式、单机伪分布式方式和集群方式。前两者在程序的测试和调试中还是很有意义的。
可通过如下地址获得Hadoop的官方发行版:
http://www.apache.org/dyn/closer.cgi/Hadoop/core/