1.1.2 Hadoop产生过程

探讨Hadoop产生前,先介绍一下软件项目总体实施流程,进而介绍Hadoop产品产生的必然性及选择Hadoop产品的原因。

软件项目总体实施流程如图1-5所示。

025-01

图1-5 软件项目总体实施流程

(1)启动阶段:此阶段处于整个项目实施工作的最前期,双方签订项目合同后,成立项目组、编制总体项目计划、召开启动会。

(2)需求调研阶段:整个调研阶段主要包括项目组编制《需求调研计划》、用户签署《需求调研计划》、项目组进行需求调研、编写《需求分析报告》、用户确认《需求分析报告》。

(3)计划编制阶段:项目组编制《进度计划》、用户签署《进度计划》。主要包括软件实现(项目化开发)、初装及初装培训、测试及试运行、验收等。

(4)培训、实施阶段:此阶段主要完成的工作有软件开发实现、初装及初装培训、测试及试运行、验收、项目质量跟踪管理、项目沟通管理。

(5)售后服务阶段:产品正式上线运行、验收结束后,公司将提供一定时期的软件运行跟踪和免费维护服务。双方可以根据具体情况签订《售后服务协议》。

这5个阶段相辅相成,逐层递进,不管哪一阶段出现问题或者瑕疵,都将对项目后续工作造成不好的影响,甚至产生软件危机。软件危机产生的原因如图1-6所示。

025-02

图1-6 软件危机产生的原因

为了尽量避免软件危机出现,需要项目相关人员精通、明确自己职责内需要掌握的技术,用最正确的技术完成最合适的任务。然而最好的技术需要企业付出昂贵的费用,所以相关人员在精通技术的同时,掌握好技术应用的深度成了最重要的事情。进一步探讨这个问题前,先介绍一下成功地打造一个软件项目,大体需要考虑的7个要素。

(1)项目成本:付出较低的开发成本,做出好的项目。

(2)软件功能:满足客户的基本需求。

(3)软件性能:响应时间快,支持用户并发数多,事务成功率高等良好软件性能。

(4)易于移植:满足低耦合高内聚软件框架结构,项目易于扩展。

(5)任务完成及时:有计划性地按时或者尽量提前完成里程碑性的开发任务。

(6)软件交付:有计划性地或者提前充分保证质量地完成用户的软件交付任务。

(7)软件可靠性:可靠性高,即在给定时间内,特定环境下软件无错运行的概率高。

假设:现在有一个大数据的项目,使用者达到1000万人,并发访问数达到1000人以上,存储的数据结构涉及结构化数据、半结构化数据、非结构化数据。需要我们建设的平台具备3000个计算节点以上的系统管理能力,实际部署规模不少于200个计算节点,支持实时服务计量。存储容量达到10PB以上,系统可靠性不低于99.99%。建设这样的项目,从软件开发角度需要考虑如下几个问题。

(1)数据如何被均匀地存储在多台机器上,服务器负载是否均衡?

(2)如何安排机器的位置?处于同一机架还是不同机架?处于同一网段还是不同网段?

(3)如何让多台机器分工合理、明确地一起来计算完成同一个大任务?

(4)怎么维护这样一个大集群?

(5)怎么配备技术人员及硬件设备,以达到尽量高的性价比?

这些问题及其所涉及的技术,如果一样一样从零基础开始运作,无疑成本高、风险大、代价大。公司一般更愿意考虑具有一定基础的分布式存储、分布式计算功能的框架来辅助做这件事。这样做有以下几个好处。

(1)节省人力成本:分布式存储与分布式计算框架对人的要求过高,人力成本过高,而且这样的人才也不好找,用现成的框架尤其是市场已经认可的框架,对人的技术要求会降低,通用性也强,会大大降低人力成本。

(2)节省开发维护成本:框架如果出自某一公司如Oracle,出现问题时,支出很少的费用就会有专业的团队来解决问题。出自开源的框架,如果有可以参考的成功案例及可以一起探讨的活跃社区,就可以酌情考虑,如Spring框架。

能够实现这样一个大型项目的产品,国内目前炒得很火的是Hadoop。只要涉及大数据、云等数据量较大的项目,互联网公司、通信公司、物联网公司等,目前为止,大多愿意选择Hadoop作为大数据的解决方案。总结起来大体有4个方面的原因。

(1)Hadoop框架开源(免费)。任何人都可以在官网上下载Hadoop框架的源码,而且可以方便地在Hadoop源码的基础上进行二次开发。相对来说,微软的SQL Server、甲骨文的Oracle,有任何更改时,用户都需要找商家通过消费更改、维护产品,用户看不到代码,一切行为只能依赖商家的技术水平。

(2)Hadoop框架具备分布式存储和计算的核心功能。Hadoop框架满足将各种形式(结构化、半结构化、非结构化)数据以多副本形式均匀地分布在各服务节点上,同时满足各节点分布式计算功能,可以说它包括数据的收集、存储、计算等方方面面的功能,通过Hadoop框架开发,大大降低对人的技术要求,同时降低了项目的人力成本。

(3)社区活跃、参与者众多。虽然Hadoop出现时间不长,处于生长期,版本更换频繁,但参与者众多,容易发现BUG,消除BUG的速度非常令人满意,比较容易探寻问题答案。

(4)企业成功验证。许多大公司如淘宝、百度等已经在大数据环境下使用了Hadoop,事实证明:产品框架合理、可用,安全性、可靠性很高。

说起Hadoop,最初是由Apache Lucene创始人Doug Cutting创建的,起源于开源的网络搜索引擎Apache Nutch(Lucene的子项目),目的是提供低成本应用广泛的文本搜索系统库。但开发者认为其架构仍然不够灵活。Nutch开发人员于2003年参考了Google的GFS论文,在HDFS上得到启发,2005年参考Google的MapReduce论文,实现了分布式的计算框架MapReduce。2006年2月,HDFS和MapReduce独立成为Lucene的一个子项目,被命名为Hadoop。2008年1月,Hadoop升级成为Apache的顶级项目。