大规模分布式数据处理平台Hadoop的介绍 一种可靠、高效、可伸缩的处理方案

http://www.nowamagic.net/librarys/veda/detail/1767 Hadoop是什么

Hadoop原来是Apache Lucene下的一个子项目,它最初是从Nutch项目中分离出来的专门负责分布式存储以及分布式运算的项目。简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。

Hadoop 是最受欢迎的在 Internet 上对搜索关键字进行内容分类的工具,但它也可以解决许多要求极大伸缩性的问题。例如,如果您要 grep 一个 10TB 的巨型文件,会出现什么情况?在传统的系统上,这将需要很长的时间。但是 Hadoop 在设计时就考虑到这些问题,采用并行执行机制,因此能大大提高效率。

Hadoop 是一个能够对大量数据进行分布式处理的软件框架。但是 Hadoop 是以一种可靠、高效、可伸缩的方式进行处理的。Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。Hadoop 还是可伸缩的,能够处理 PB 级数据。此外,Hadoop 依赖于社区服务器,因此它的成本比较低,任何人都可以使用。

下面列举hadoop主要的一些特点:

  • 扩容能力(Scalable):能可靠地(reliably)存储和处理千兆字节(PB)数据。
  • 成本低(Economical):可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达数千个节点。
  • 高效率(Efficient):通过分发数据,hadoop可以在数据所在的节点上并行地(parallel)处理它们,这使得处理非常的快速。
  • 可靠性(Reliable):hadoop能自动地维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy)计算任务。

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有着高容错性(fault-tolerent)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以流的形式访问(streaming access)文件系统中的数据。

Hadoop还实现了MapReduce分布式计算模型。MapReduce将应用程序的工作分解成很多小的工作小块(small blocks of work)。HDFS为了做到可靠性(reliability)创建了多份数据块(data blocks)的复制(replicas),并将它们放置在服务器群的计算节点中(compute nodes),MapReduce就可以在它们所在的节点上处理这些数据了。

如下图所示:

Hadoop API被分成(divide into)如下几种主要的包(package):

  • org.apache.hadoop.conf: 定义了系统参数的配置文件处理API。
  • org.apache.hadoop.fs: 定义了抽象的文件系统API。
  • org.apache.hadoop.dfs: Hadoop分布式文件系统(HDFS)模块的实现。
  • org.apache.hadoop.io: 定义了通用的I/O API,用于针对网络,数据库,文件等数据对象做读写操作。
  • org.apache.hadoop.ipc: 用于网络服务端和客户端的工具,封装了网络异步I/O的基础模块。
  • org.apache.hadoop.mapred: Hadoop分布式计算系统(MapReduce)模块的实现,包括任务的分发调度等。
  • org.apache.hadoop.metrics: 定义了用于性能统计信息的API,主要用于mapred和dfs模块。
  • org.apache.hadoop.record: 定义了针对记录的I/O API类以及一个记录描述语言翻译器,用于简化将记录序列化成语言中性的格式(language-neutral manner)。
  • org.apache.hadoop.tools: 定义了一些通用的工具。
  • org.apache.hadoop.util: 定义了一些公用的API。

Hadoop的框架结构

Map/Reduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的,Google已经将它完整的MapReduce论文公开发布了。其中对它的定义是,Map/Reduce是一个编程模型(programming model),是一个用于处理和生成大规模数据集(processing and generating large data sets)的相关的实现。用户定义一个map函数来处理一个key/value对以生成一批中间的key/value对,再定义一个reduce函数将所有这些中间的有着相同key的values合并起来。很多现实世界中的任务都可用这个模型来表达。

Map/Reduce模型计算示意图

Hadoop的Map/Reduce框架也是基于这个原理实现的。

MapReduce的工作流程很不复杂。如上图所示,每个Map(worker)分别读入一定数量的以key-value格式存储的数据块(split0 – split4,64MB/block)。如果是对文本文件做单词统计,那么key-value格式的数据可以这么定义:<String filename, String file_content>。

然后每个Map分别对各自数据进行处理,输出以key-value格式组织的中间结果(Intermediate files)。仍以单词统计为例,Map对数据中每一个出现的单词,输出一个记录<word, "1">。这就是说,在一个Map的输出结果中,有可能出现重复n次<word, "1">(可以通过Combiner对其进行优化,使之输出为<word, "n">,以此来减少网络流量)。

随后通过Shuffle把相同key的中间结果汇集到相同节点上,比如说,上图中3个Map phase的worker都有<word, "1">的中间结果,那么通过Shuffle将这些相同key的记录汇集到同一个Reduce phase的worker上,进而使用一个Reduce处理包含相同key的所有记录。也就是说,所有在Map phase阶段产生的<word, "1">,都会到Reduce phase上的一个worker上被一个Reduce处理,进行归并。最后输出结果。

时间: 2024-10-23 09:29:21

大规模分布式数据处理平台Hadoop的介绍 一种可靠、高效、可伸缩的处理方案的相关文章

hadoop-多机分布式大数据处理推导-hadoop概念介绍

原文地址:https://www.cnblogs.com/LXL616/p/10801249.html

微博广告Hubble系统:秒级大规模分布式智能监控平台架构实践

关键词:微博广告 Hubble 监控平台 D+ 大数据 机器学习 LSTM Tensorflow 业务背景 Hubble(哈勃,其含义是数据如浩瀚宇宙之大,Hubble 如太空望远镜,能窥见璀璨的星辰,发现数据的真正价值)平台定位为微博广告智能全景监控.数据透视和商业洞察. 计算广告系统是集智能流量分发.投放.结算.CTR 预估.客户关系管理等为一体的大型互联网业务系统.随着微博业务的快速增长,广告系统复杂度越来越高,成千上万的模块需要不停地进行计算和通信,如何保证这么复杂的系统正常健康运行是一

大规模分布式消息中间件考虑点

当前各种 RPC 中间件技术已经广泛应用于各个领域.其中,服务器之间消息通讯这种功能广泛应用于这些中间件中,于是,将这种面向消息的中间件( Message Oriented Middleware , MOM )抽象出来,形成通用的消息中间件,成为业内主流.目前消息中间件的标准主要有: JMS 和 AMQP .实现则是百花齐放. 消息中间件从功能上需要解决以下问题: 1. 同步或异步的消息传输,尤其是异步的消息传输 同步发送消息是发送消息后,阻塞等待消息是否发送成功的回馈,如果设置有超时时间,则超

转]大规模分布式消息中间件简介

当前各种 RPC 中间件技术已经广泛应用于各个领域.其中,服务器之间消息通讯这种功能广泛应用于这些中间件中,于是,将这种面向消息的中间件( Message Oriented Middleware , MOM )抽象出来,形成通用的消息中间件,成为业内主流.目前消息中间件的标准主要有: JMS 和 AMQP .实现则是百花齐放. 消息中间件从功能上需要解决以下问题: 1. 同步或异步的消息传输,尤其是异步的消息传输 同步发送消息是发送消息后,阻塞等待消息是否发送成功的回馈,如果设置有超时时间,则超

基于hadoop (map/reduce)的大规模分布式并行计算生产排程系统的设计

map/reduce是大数据处理的技术,它的思路是把大规模数据分成一个个小数据块,每个数据块由一个map任务来处理,处理的中间结果汇总到reduce,最后生成最终的处理结果,这个处理和汇总的过程是可以反复多次的,也就是map-reduce-map-reduce 基于map/reduce的思路,我们可以设计基于hadoop(map/reduce)的大规模分布式并行计算生产排程系统,怎么样把大数据处理变成大规模分布式并行计算呢,就是我们不切分数据,每个map任务的数据都是相同的,每个map任务对排程

hadoop大数据处理平台与案例

大数据可以说是从搜索引擎诞生之处就有了,我们熟悉的搜索引擎,如百度搜索引擎.360搜索引擎等可以说是大数据技处理技术的最早的也是比较基础的一种应用.大概在2015年大数据都还不是非常火爆,2015年可以说是大数据的一个分水岭.随着互联网技术的快速发展,大数据也随之迎来它的发展高峰期. 整个大数据处理技术的核心基础hadoop.mapreduce.nosql系统,而这三个系统是建立在谷歌提出的大表.分布式文件系统和分布式计算的三大技术构架上,以此来解决海量数据处理的问题.虽然说大数据处理技术最早兴

大数据平台Hadoop的分布式集群环境搭建

1 概述 本文章介绍大数据平台Hadoop的分布式环境搭建.以下为Hadoop节点的部署图,将NameNode部署在master1,SecondaryNameNode部署在master2,slave1.slave2.slave3中分别部署一个DataNode节点 NN=NameNode(名称节点) SND=SecondaryNameNode(NameNode的辅助节点) DN=DataNode(数据节点)2 前期准备 (1)准备五台服务器 如:master1.master2.slave1.sla

如何低成本、高效率搭建Hadoop/Spark大数据处理平台

原文链接 随着人们逐渐认识到 "大数据"的价值,互联网.电商到金融业.政企等各行业开始处理海量数据.如何低成本.敏捷高效地搭建大数据处理平台,成为影响大数据创新效率的关键. 为了让用户以最简便地方式享用阿里云全球资源,在云端构建敏捷弹性.高可靠和高性价比的大数据平台,近日,阿里云在成都云栖大会上发布了一款Hadoop/Spark场景专用的ECS存储优化型实例D1规格族,单实例提供最高56核CPU,224GB内存,168TB本地盘容量,5GB/S总吞吐,PPS达120万+.这对Hadoo

Hadoop简单介绍

  从数据爆炸開始...  1.1 第三次工业革命 第一次:18世纪60年代.手工工厂向机器大生产过渡,以蒸汽机的发明和使用为标志. 第二次:19世纪70年代.各种新技术新发明不断被应用于工业生产,以电力的发明使用为标志. 第三次:20世界四五十年代末.以高新技术为代表的新科学技术革命,以原子能.航天技术和电子计算机 为标志. 1.2 信息技术发展带来的数据爆炸 纽约证券所交易    每天 1TB FaceBook一千亿照片  1PB 腾讯 每天 300TB 淘宝 每天 pv20亿 数据量 50