7.1 Hadoop概述
7.1.1 Hadoop的由来
Hadoop这个名字不是一个缩写,它是一个虚拟的名字。该项目的创建者Doug Cutting 解释Hadoop的得名:“这个名字是我的孩子给一头黄色的玩具大象起名的。我的命名标准是简短,容易发音和拼写,没有太多的意义,并且不会被用于别处。小孩子恰恰是这方面的高手。”
Hadoop是一个可编写并运行分布式应用的开源框架,常常用于大数据挖掘和云计算。随着数据量的增加,大规模的计算不能依赖于制造大型的服务器。人们将许多低端设备组织在一起形成一个分布式的计算系统。Hadoop就是使用这样的分布式系统来达到海量数据的存储和计算。
Hadoop以其显著地优点受到越来越多公司和学者的青睐。Hadoop的特点有以下几点。
1) 开源性:开源社区提供了对hadoop的强有力的支持,使得hadoop具有旺盛的生命力。
2) 可靠性:分布式文件系统的备份恢复功能和Mapreduce的任务监控功能保证了处理数据的可靠性。
3) 可行性:hadoop致力于运行在一般的硬件上,对PC机的要求不高。
4) 可扩展性:hadoop的扩展性包括存储可扩展和计算可扩展。
5) 高效性:hadoop的并行计算,分布式文件系统的高效数据交互,Mapreduce的处理模式,都保证了对海量数据的高效快速的处理。
Hadoop的这些特性使得IT人员能快速、廉价等搭建自己的hadoop集群。Hadoop集群是由一组计算机组成的分布式系统,它们之间使用网络互联。这些计算机组成一个“云”,数据的存储和计算都发生在这里。不同的客户端可以按需申请这个云上的服务,从而快速地完成在个人计算机上不能完成的任务。
图1,hadoop集群。
7.1.2 Hadoop的发展历程
Hadoop从产生到现在迅速发展,hadoop的版本也越来越完善,hadoop社区的人也越来越多,使用hadoop的企业也飞速增加。在hadoop发展的历史中,有这么几件事情需要纪念。
2002:hadoop起源于apache的Nutch项目,Nutch是由Doug Cutting创建的一个开源web搜索引擎。
2003:谷歌发表了一篇关于google文件系统的论文,简称GFS。
2004:Doug Cutting 根据GFS写了一个开源的文件系统叫做NDFS(NutchDistributed Filesystem)
2004年-- 最初的版本(现在称为HDFS和MapReduce)由Doug Cutting和Mike Cafarella开始实施。
2005年12月-- Nutch移植到新的框架,Hadoop在20个节点上稳定运行。
2006年1月-- Doug Cutting加入雅虎。
2006年2月-- Apache Hadoop项目正式启动以支持MapReduce和HDFS的独立发展。
2006年2月-- 雅虎的网格计算团队采用Hadoop。
2006年4月-- 标准排序(10 GB每个节点)在188个节点上运行47.9个小时。
2006年5月-- 雅虎建立了一个300个节点的Hadoop研究集群。
2006年5月-- 标准排序在500个节点上运行42个小时(硬件配置比4月的更好)。
2006年11月-- 研究集群增加到600个节点。
2006年12月-- 标准排序在20个节点上运行1.8个小时,100个节点3.3小时,500个节点5.2小时,900个节点7.8个小时。
2007年1月-- 研究集群到达900个节点。
2007年4月-- 研究集群达到两个1000个节点的集群。
2008年4月-- 赢得世界最快1 TB数据排序在900个节点上用时209秒。
2008年10月-- 研究集群每天装载10 TB的数据。
2009年3月-- 17个集群总共24 000台机器。
2009年4月-- 赢得每分钟排序,59秒内排序500 GB(在1400个节点上)和173分钟内排序100 TB数据(在3400个节点上)。
2011年--Yahoo!与风险投资公司Benchmark Capital联合建立独立公司Hortonworks,接手Yahoo!开源软件平台ApacheHadoop;
2013年11月--hadoop技术峰会召开,标志hadoop进入2.0时代。
7.1.3 Hadoop的设计思想
Hadoop是根据谷歌的三篇论文而来的,因此我们需要了解GFS的原理。
Hadoop由Common,HDFS和MapReduce三个组件组成的。
Common组件
1) common组件是hadoop的基础,提供了一些基本的功能,包括hadoop IO,压缩,RPC通信,序列号等功能。
2) common组件同时可以利用JNI方法调用C/C++编写的native库,加速了数据压缩、数据检验功能
HDFS组件
1) 采用流式数据访问模式,可以用来存储超大文件和海量数据,具有高吞吐率、方便部署、分布式存储管理的特点。
2) HDFS集群中拥有两个节点(名称节点NameNode和 数据节点 DataNode)。名称节点时内存中保存着文件数据块映射的映射信息和整个文件传统的名字空间,而数据节点负责存储和读取文件信息。
NameNode和DataNode的图。
Mapreduce组件
图,解释。
7.1.4 Hadoop的应用现状和发展趋势
7.1.4.1 Hadoop社区的发展
Apache HBase(Big Table):HBase是一个分布式的,面向列的数据库。
Apache Pig:一个基于hadoop的大数据分析平台,他提供一个叫PigLatin的高级语言来表达大数据分析程序。
Apache Hive:一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类似SQL一样的查询语句。HiveSQL来管理这些数据。
Apache Zookeeper:一个针对大型分布式系统的可靠性协调系统,提供包括配置维护,名字服务,分布式同步和组服务等功能。Hadoop的管理用的是ZooKeeper。
Apache Oozie:一个工作流调度系统,用于管理hadoop中的job。它可以将多个MapReduce作业组合到一个逻辑工作单元来完成指定目标。
Apache HCatalog:是基于Hadoop的数据表和存储管理服务,提供了更好的数据存储抽象和元数据服务。
Apache Ambari:一个对hadoop集群进行监控和管理的基于web的系统。目前已经支持HDFS,MapReduce,Hive,HCatalog,HBase,ZooKeeper,Oozie,Pig和SqooP等组件。
Apache Cassandra:一个分布式的NoSQL数据库。它基于mtlti-master模式,无单点失败,具有可扩展性。最早由facebook开发用于存储收件箱等简单格式数据,后开源,被用于Twitter等知名网站。
Apache Avro:一个数据序列系统。他提供了丰富的数据结构类型,可快速读取可压缩的二进制数据格式,存储持久数据的文件容器,远程过程调用等。
Apache Chukwa:一个用于监控大型分布式系统的数据采集系统。它构建于hadoop的HDFS和MapReduce框架之上,包含了一系列用于数据监控,分析和展示的灵活的工具集。它为日志系统提供了一系列的解决方案。
Apache Drill:一个对大规模数据进行交互式分析的分布式系统。它是Google的Gremel的开源实现。
7.1.4.2 Hadoop在企业的应用前景
“现在是企业应用Hadoop的最佳时机。”Hortonworks公司首席技术官Jeff Markham在11月底举行的2013中国Hadoop技术峰会上演讲时表示。在本次峰会上,Hadoop进入2.0时代成了人们谈论的焦点。Jeff Markham表示,Hadoop 2.0拥有更强大、更广泛的符合企业用户需求的新特性,弥补了Hadoop 1.0的不足之处,更符合企业用户的需求。
Hadoop
1) Cloudera CDH
2) Hortonworks HDP
3) Inter Distribution
4) IBM BigInsight