1 Hadoop是什么?
Hadoop是一种开源的适合大数据的分布式存储和处理的平台。
Hadoop 是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Apache Hadoop是一款支持数据密集型分布式应用并以Apache 2.0许可协议发布的开源软件框架。它支持在商品硬件构建的大型集群上运行的应用程序。Hadoop是根据Google公司发表的MapReduce和Google档案系统的论文自行实作而成。
Hadoop框架透明地为应用提供可靠性和数据移动。它实现了名为MapReduce的编程范式:应用程序被分割成许多小部分,而每个部分都能在集群中的任意节点上执行或重新执行。此外,Hadoop还提供了分布式文件系统,用以存储所有计算节点的数据,这为整个集群带来了非常高的带宽。MapReduce和分布式文件系统的设计,使得整个框架能够自动处理节点故障。它使应用程序与成千上万的独立计算的电脑和PB级的数据。
2 Hadoop能够做什么?
1)搜索引擎:这也正是Doug Cutting设计Hadoop的初衷,为了针对大规模的网页快速建立索引;
2)大数据存储:利用Hadoop的分布式存储能力,例如数据备份、数据仓库等;
3)大数据处理:利用Hadoop的分布式处理能力,例如数据挖掘、数据分析等;
4)科学研究:Hadoop是一种分布式的开源框架,对于分布式系统有很大程度地参考价值。
3 Hadoop的三种模式及子项目
Hadoop有三种不同的模式操作,分别为单机模式、伪分布模式和全分布模式。
子项目:
l Hadoop Common:在0.20及以前的版本中,包含HDFS、MapReduce和其他项目公共内容,从 0.21开始HDFS和MapReduce被分离为独立的子项目,其余内容为Hadoop Common
l HDFS:Hadoop分布式文件系统(Distributed File System)-HDFS(Hadoop Distributed File System)
l MapReduce:并行计算框架,0.20前使用org.apache.hadoop.mapred旧接口,0.20版本开始引入org.apache.hadoop.mapreduce的新API
l Apache HBase:分布式NoSQL列数据库,类似谷歌公司BigTable。
l Apache Hive:构建于hadoop之上的数据仓库,通过一种类SQL语言HiveQL为用户提供数据的归纳、查询和分析等功能。Hive最初由Facebook贡献。
l Apache Mahout:机器学习算法软件包。
l Apache Sqoop:结构化数据(如关系数据库)与Apache Hadoop之间的数据转换工具。
l Apache ZooKeeper:分布式锁设施,提供类似Google Chubby的功能,由Facebook贡献。
l Apache Avro:新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。
l
4 Hadoop核心之分布式文件系统HDFS
源自于Google的论文,发表于2003年10月,HDFS是GFS的克隆。
Hadoop分布式文件系统(Hadoop Distributed File System,简称HDFS)是Hadoop的核心模块之一,它主要解决Hadoop的大数据存储问题,其思想来源与Google的文件系统GFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS的主要特点:
l 保存多个副本,且提供容错机制,副本丢失或宕机自动恢复。默认存3份。
l 运行在廉价的机器上。
l 适合大数据的处理。HDFS默认会将文件分割成block,64M为1个block。然后将block按键值对存储在HDFS上,并将键值对的映射存到内存中。如果小文件太多,那内存的负担会很重。
HDFS中的两个重要角色:
[Namenode]
1)管理文件系统的命名空间。
2)记录 每个文件数据快在各个Datanode上的位置和副本信息。