技术分享:使用Hadoop进行分布式并行编程

开发 架构 分布式 Hadoop
Hadoop相信大家应该有所了解,那么用Hadoop编程呢,本节就向大家介绍一下如何使用Hadoop进行分布式并行编程,欢迎大家一起来学习。

在学习Hadoop的过程中,你可能会遇到用Hadoop进行分布式并行编程的问题,本节就向大家介绍一下用Hadoop进行分布式并行编程的方法,希望通过本节的介绍大家能够对Hadoop有新的认识。

用Hadoop进行分布式并行编程

Hadoop简介

Hadoop是一个开源的可运行于大规模集群上的分布式并行编程框架,由于分布式存储对于分布式编程来说是必不可少的,这个框架中还包含了一个分布式文件系统HDFS(HadoopDistributedFileSystem)。

也许到目前为止,Hadoop还不是那么广为人知,其***的版本号也仅仅是0.16,距离1.0似乎都还有很长的一段距离,但提及Hadoop一脉相承的另外两个开源项目Nutch和Lucene(三者的创始人都是DougCutting),那绝对是大名鼎鼎。Lucene是一个用Java开发的开源高性能全文检索工具包,它不是一个完整的应用程序,而是一套简单易用的API。在全世界范围内,已有无数的软件系统,Web网站基于Lucene实现了全文检索功能,后来DougCutting又开创了***个开源的Web搜索引擎(http://www.nutch.org)Nutch,它在Lucene的基础上增加了网络爬虫和一些和Web相关的功能,一些解析各类文档格式的插件等,此外,Nutch中还包含了一个分布式文件系统用于存储数据。从Nutch0.8.0版本之后,DougCutting把Nutch中的分布式文件系统以及实现MapReduce算法的代码独立出来形成了一个新的开源项Hadoop。Nutch也演化为基于Lucene全文检索以及Hadoop分布式计算平台的一个开源搜索引擎。


基于Hadoop,你可以轻松地编写可处理海量数据的分布式并行程序,并将其运行于由成百上千个结点组成的大规模计算机集群上。从目前的情况来看,Hadoop注定会有一个辉煌的未来:"云计算"是目前灸手可热的技术名词,全球各大IT公司都在投资和推广这种新一代的计算模式,而Hadoop又被其中几家主要的公司用作其"云计算"环境中的重要基础软件,如:雅虎正在借助Hadoop开源平台的力量对抗Google,除了资助Hadoop开发团队外,还在开发基于Hadoop的开源项目Pig,这是一个专注于海量数据集分析的分布式计算程序。Amazon公司基于Hadoop推出了AmazonS3(AmazonSimpleStorageService),提供可靠,快速,可扩展的网络存储服务,以及一个商用的云计算平台AmazonEC2(AmazonElasticComputeCloud)。在IBM公司的云计算项目--"蓝云计划"中,Hadoop也是其中重要的基础软件。Google正在跟IBM合作,共同推广基于Hadoop的云计算。


迎接编程方式的变革

在摩尔定律的作用下,以前程序员根本不用考虑计算机的性能会跟不上软件的发展,因为约每隔18个月,CPU的主频就会增加一倍,性能也将提升一倍,软件根本不用做任何改变,就可以享受免费的性能提升。然而,由于晶体管电路已经逐渐接近其物理上的性能极限,摩尔定律在2005年左右开始失效了,人类再也不能期待单个CPU的速度每隔18个月就翻一倍,为我们提供越来越快的计算性能。Intel,AMD,IBM等芯片厂商开始从多核这个角度来挖掘CPU的性能潜力,多核时代以及互联网时代的到来,将使软件编程方式发生重大变革,基于多核的多线程并发编程以及基于大规模计算机集群的分布式并行编程是将来软件性能提升的主要途径。

许多人认为这种编程方式的重大变化将带来一次软件的并发危机,因为我们传统的软件方式基本上是单指令单数据流的顺序执行,这种顺序执行十分符合人类的思考习惯,却与并发并行编程格格不入。基于集群的分布式并行编程能够让软件与数据同时运行在连成一个网络的许多台计算机上,这里的每一台计算机均可以是一台普通的PC机。这样的分布式并行环境的***优点是可以很容易的通过增加计算机来扩充新的计算结点,并由此获得不可思议的海量计算能力,同时又具有相当强的容错能力,一批计算结点失效也不会影响计算的正常进行以及结果的正确性。Google就是这么做的,他们使用了叫做MapReduce的并行编程模型进行分布式并行编程,运行在叫做GFS(GoogleFileSystem)的分布式文件系统上,为全球亿万用户提供搜索服务。

Hadoop实现了Google的MapReduce编程模型,提供了简单易用的编程接口,也提供了它自己的分布式文件系统HDFS,与Google不同的是,Hadoop是开源的,任何人都可以使用这个框架来进行并行编程。如果说分布式并行编程的难度足以让普通程序员望而生畏的话,开源的Hadoop的出现极大的降低了它的门槛,读完本文,你会发现基于Hadoop编程非常简单,无须任何并行开发经验,你也可以轻松的开发出分布式的并行程序,并让其令人难以置信地同时运行在数百台机器上,然后在短时间内完成海量数据的计算。你可能会觉得你不可能会拥有数百台机器来运行你的并行程序,而事实上,随着"云计算"的普及,任何人都可以轻松获得这样的海量计算能力。例如现在Amazon公司的云计算平台AmazonEC2已经提供了这种按需计算的租用服务,有兴趣的读者可以去了解一下,这篇系列文章的第三部分将有所介绍。

掌握一点分布式并行编程的知识对将来的程序员是必不可少的,Hadoop是如此的简便好用,何不尝试一下呢?也许你已经急不可耐的想试一下基于Hadoop的编程是怎么回事了,但毕竟这种编程模型与传统的顺序程序大不相同,掌握一点基础知识才能更好地理解基于Hadoop的分布式并行程序是如何编写和运行的。因此本文会先介绍一下MapReduce的计算模型,Hadoop中的分布式文件系统HDFS,Hadoop是如何实现并行计算的,然后才介绍如何安装和部署Hadoop框架,以及如何运行Hadoop程序。
 

【编辑推荐】

  1. 实例讲解Hadoop用法
  2. 专家指导 如何进行Hadoop分布式集群配置
  3. Hadoop集群与Hadoop性能优化
  4. HadoopHBase实现配置简单的单机环境
  5. 深入剖析Hadoop HBase

 

 

 

责任编辑:佚名 来源: csdn.net
相关推荐

2023-10-26 18:10:43

分布式并行技术系统

2012-05-21 16:28:29

LinuxHadoop

2023-11-01 20:10:53

分布式并行技术

2019-10-28 10:10:01

技术研发分布式

2023-03-09 11:35:40

2010-06-03 19:28:02

Hadoop

2019-10-10 09:16:34

Zookeeper架构分布式

2021-03-23 22:43:09

Grafana Tem分布式跟踪开源

2012-09-19 14:09:20

Hadoop开源

2010-06-03 14:42:47

Hadoop分布式集群

2021-07-23 08:57:32

鸿蒙HarmonyOS应用

2022-06-08 07:36:03

LocustKubernete微服务

2023-11-01 18:02:33

RayPython分布式

2017-02-28 09:48:30

2018-06-14 09:38:53

Linux多核编程

2019-09-26 15:43:52

Hadoop集群防火墙

2017-08-10 10:17:32

Hadoop分布式搭建

2014-07-15 11:15:44

hadoop分布式部署

2021-06-01 05:51:37

云计算并行计算分布式计算

2023-01-13 07:39:07

点赞
收藏

51CTO技术栈公众号