Hadoop平台简述

Hadoop 是 Apache 下一个开源的分布式的软件计算框架,它是由Doug Cutting根据 Google提出的分布式文件系统 GFS 和 MapReduce 编程模型而实现的。Hadoop 由许多部分组成,其核心是用于数据存储的分布式文件系统HDFS与用于分布式计算的 MapReduce 编程模型。HDFS 用于 Hadoop 平台中所有数据文件的存储,采用 master/slave 架构,包含一个名字节点(NameNode)和若干个数据节点(DataNode)。MapReduce 主要是进行分布式计算,由一个 JobTracker 和若干个TaskTracker 组成。

1 分布式存储HDFS

HDFS采用主从式结构,包含三个核心角色:名称节点(NameNode),第二名称节点(SecondNameNode)以及数据节点(DataNode)。并且采用master/slave的架构运行,即一个NameNode和若干个DataNode。一般情况下,在一台机器上运行NameNode实例,而在集群中的其他机器上均运行一个DataNode实例。NameNode是分布式文件系统中的管理者,主要负责管理文件系统的命名空间、集群配置信息和存储块的复制等。DataNode是文件存储的基本单元,它将块(Block)存储在本地文件系统中,并且保存了块的元数据,还将周期性地将所有存在的块信息发送给NameNode。下图是HDFS的组成示意图。

图1 HDFS组成示意图

2 编程模式MapReduce

MapRedude是并行化编程的一种范式。利用并行计算可以把一个庞大的计算任务分解为若干个小的计算任务,将这些小任务在不同的计算机上并行执行,可以在接受的时间内解决使用传统算法难以完成的复杂运算问题。MapReduce被设计成基于数据并行进行编程,用来并行处理大规模数据,并且数据之间没有依赖,不需要负担因保持节点间数据的同步而产生的通信开销,因而可以把工作流划分到集群中的多个机器上去,使得系统在大规模机器上变得可靠和效率高。Hadoop的MapReduce是Google的MapReduce的开源实现,其实质是一样的。从设计思想上来讲,Map就是将一个任务分解成为多个任务,Reduce就是将分解后多任务处理的结果汇总起来,得出最后的分析结果。下图是MapReduce的原理图。

图2 MapReduce原理图

MapReduce主要包括Map端和Reduce端。执行Map任务的过程中,首先将块数据切分成输入分片,每个分片的内容形式是key-value对的形式。经过map函数后将得到一组新的key-value对,这些结果不会直接写入本地磁盘,而是写入到一个环形内存缓冲区。当缓存内容超过某个阈值时,一个后台线程便开始把内容写到磁盘。在写入磁盘之前,缓冲区内的数据会被划分成多个分区,分区是由数据最终被划分到哪一个reducer所决定的,也就是说是由partition接口方法决定。在每个分区中,会将数据按照key进行排序,如果有一个combiner,它将对相同的key进行一次规约操作以减少数据的写入和传输消耗,不过combiner是一个优化函数,它并不一定会执行,但也可能多次应用。这些溢写文件最终被合并成一个已分区并且已排序的输出文件,这个过程叫合并。当有Map任务完成后,可用的Reduce任务通过HTTP拉取map端的数据,如果数据很小,会存储在内存中,否则被写入磁盘。这些混合存储在内存和磁盘上的数据会被合并成一个更大的,排好序的文件。这个合并过程会循环执行,最终的文件会被写入磁盘中。数据形式是key-valuelist,然后reduce过程将输入的相同key的各个value进行规约操作,并将得到的输出写到HDFS上。

时间: 2024-12-16 17:54:29

Hadoop平台简述的相关文章

高可用Hadoop平台-Flume NG实战图解篇

1.概述 今天补充一篇关于Flume的博客,前面在讲解高可用的Hadoop平台的时候遗漏了这篇,本篇博客为大家讲述以下内容: Flume NG简述 单点Flume NG搭建.运行 高可用Flume NG搭建 Failover测试 截图预览 下面开始今天的博客介绍. 2.Flume NG简述 Flume NG是一个分布式,高可用,可靠的系统,它能将不同的海量数据收集,移动并存储到一个数据存储系统中.轻量,配置简单,适用于各种日志收集,并支持Failover和负载均衡.并且它拥有非常丰富的组件.Fl

Hadoop平台搭建(1)

摘要:本文主要讲述在Linux环境下搭建hadoop平台的准备工作,内容涵盖Linux中用户的添加与权限管理.更改软件源.更新软件安装工具apt.安装vim编辑器.安装SSH并配置无密码登录. 环境说明:文章中采用Ubuntu15.10操作系统,Ubuntu其他版本操作系统的操作类似,Linux其他系列操作系统适当做相应调整. 1.添加用户 对Linux环境下的开发,为了安全起见,一般情况下不直接在root用户下进行.所以,我们首先添加一个新的用户名,并设置新用户密码. 命令:sudo user

c#WEB转入大数据HADOOP平台的2014总结

浮浮沉沉的那是流水,起起落落的才是人生嘛. 抽根烟先--(各位同学都知道我不抽烟哈,这个,哈哈,思考人生的时候还是会抽根)刚刚和同学吃完饭从滨江路回来,我和他在一起一般都是谈谈自己的近况.我和他住得不远,上班离得很近,但是也不经常见面,但是需要对方的时候打个电话,总会在一个电话后及时出现在你的面前(搞得像基友一样,罪过,罪过).这个是必须的,我和他也算一种前世修来的缘份吧,认识马上快10年了,大学同学中,我是他在这里的唯一,他也是我在这里的唯一,也许这辈子剩下的时间还得走下去,生活中的坎坷我们互

关于如何挑选适合自己的Hadoop平台解析

Hadoop平台的多种选择  下图展示了Hadoop平台的多种选择.你可以只安装Apache 发布版本,或从不同提供商所提供的几个发行版本中选择一个,或决定使用某个大数据套件.每个发行版本都包含有Apache Hadoop,而几乎每个大数据套件都包含或使用了一个发行版本,理解这一点是很重要的. 下面我们首先从Apache Hadoop开始来好好看看每种选择. Apache Hadoop; Apache Hadoop项目的目前版本(2.0版)含有以下模块Hadoop通用模块:支持其他Hadoop模

论文学习 - 《Hadoop平台下的海量数据存储技术研究》

摘要 研究背景: 1. 互联网的图片数据急剧膨胀 2. Hadoop平台下的Hdfs分布式文件系统能够很好的处理海量数据 研究内容: 1. Hadoop平台工作原理 2. Hadoop平台下图片存储系统的设计与实现 3. Hadoop平台与Web的整合 创新点: 1. 通过Web方式来访问Hdfs 2. 存储性能测试自动化 第一章 绪论 Pass 第二章 Hadoop工作原理 本章可以参考对照Hadoop相关手册,不在此纠结. 第三章 Hadoop图片存储系统设计 模块划分: 1. 普通用户模块

高可用Hadoop平台-Ganglia安装部署

1.概述 最近,有朋友私密我,Hadoop有什么好的监控工具,其实,Hadoop的监控工具还是蛮多的.今天给大家分享一个老牌监控工具Ganglia,这个在企业用的也算是比较多的,Hadoop对它的兼容也很好,不过就是监控界面就不是很美观.下次给大家介绍另一款工具——Hue,这个界面官方称为Hadoop UI,界面美观,功能也比较丰富.今天,在这里主要给大家介绍Ganglia这款监控工具,介绍的内容主要包含如下: Ganglia背景 Ganglia安装部署.配置 Hadoop集群配置Ganglia

高可用Hadoop平台-启航

1.概述 在上篇博客中,我们搭建了<配置高可用Hadoop平台>,接下来我们就可以驾着Hadoop这艘巨轮在大数据的海洋中遨游了.工欲善其事,必先利其器.是的,没错:我们开发需要有开发工具(IDE):本篇文章,我打算讲解如何搭建和使用开发环境,以及编写和讲解WordCount这个例子,给即将在Hadoop的海洋驰骋的童鞋入个门.上次,我在<网站日志统计案例分析与实现>中说会将源码放到Github,后来,我考虑了下,决定将<高可用的Hadoop平台>做一个系列,后面基于这

高可用Hadoop平台-实战

1.概述 今天继续<高可用的Hadoop平台>系列,今天开始进行小规模的实战下,前面的准备工作完成后,基本用于统计数据的平台都拥有了,关于导出统计结果的文章留到后面赘述.今天要和大家分享的案例是一个基于电商网站的用户行为分析,这里分析的指标包含以下指标: 统计每日PV 每日注册用户 每日IP 跳出用户 其他指标可以参考上述4个指标进行拓展,下面我们开始今天的分析之旅. 2.流程 首先,在开发之前我们需要注意哪些问题?我们不能盲目的按照自己的意愿去开发项目,这样到头来得不到产品的认可,我们的工作

Hadoop平台的基本组成与生态系统

Hadoop系统运行于一个由普通商用服务器组成的计算集群上,该服务器集群在提供大规模分布式数据存储资源的同时,也提供大规模的并行化计算资源. 在大数据处理软件系统上,随着Apache Hadoop系统开源化的发展,在最初包含HDFS.MapReduce.HBase等基本子系统的基础上,至今Hadoop平台已经演进为一个包含很多相关子系统的完整的大数据处理生态系统.图1-15展示了Hadoop平台的基本组成与生态系统. 1.MapReduce并行计算框架 MapReduce并行计算框架是一个并行化