Hadoop基本介绍

news/2024/5/20 3:09:28 标签: hadoop, mapreduce, hdfs

1、Hadoop的整体框架
Hadoop由HDFS、MapReduce、HBase、Hive和ZooKeeper等成员组成,其中最基础最重要元素为底层用于存储集群中所有存储节点文件的文件系统HDFS(Hadoop Distributed File System)来执行MapReduce程序的MapReduce引擎。

这里写图片描述

(1)Pig是一个基于Hadoop的大规模数据分析平台,Pig为复杂的海量数据并行计算提供了一个简单的操作和编程接口;
(2)Hive是基于Hadoop的一个工具,提供完整的SQL查询,可以将sql语句转换为MapReduce任务进行运行;
(3)ZooKeeper:高效的,可拓展的协调系统,存储和协调关键共享状态;
(4)HBase是一个开源的,基于列存储模型的分布式数据库;
(5)HDFS是一个分布式文件系统,有着高容错性的特点,适合那些超大数据集的应用程序;
(6)MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。
下图是一个典型的Hadoop集群的部署结构:
这里写图片描述

接着给出Hadoop各组件依赖共存关系:
这里写图片描述

2、Hadoop的核心设计
这里写图片描述

(1)HDFS
HDFS是一个高度容错性的分布式文件系统,可以被广泛的部署于廉价的PC上。它以流式访问模式访问应用程序的数据,这大大提高了整个系统的数据吞吐量,因而非常适合用于具有超大数据集的应用程序中。
HDFS的架构如图所示。HDFS架构采用主从架构(master/slave)。一个典型的HDFS集群包含一个NameNode节点和多个DataNode节点。NameNode节点负责整个HDFS文件系统中的文件的元数据的保管和管理,集群中通常只有一台机器上运行NameNode实例,DataNode节点保存文件中的数据,集群中的机器分别运行一个DataNode实例。在HDFS中,NameNode节点被称为名称节点,DataNode节点被称为数据节点。DataNode节点通过心跳机制与NameNode节点进行定时的通信。
这里写图片描述
•NameNode
可以看作是分布式文件系统中的管理者,存储文件系统的meta-data,主要负责管理文件系统的命名空间,集群配置信息,存储块的复制。

•DataNode
是文件存储的基本单元。它存储文件块在本地文件系统中,保存了文件块的meta-data,同时周期性的发送所有存在的文件块的报告给NameNode。

•Client
就是需要获取分布式文件系统文件的应用程序。

以下来说明HDFS如何进行文件的读写操作:
这里写图片描述

文件写入:
1. Client向NameNode发起文件写入的请求
2. NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。
3. Client将文件划分为多个文件块,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。

这里写图片描述

文件读取:
1. Client向NameNode发起文件读取的请求
2. NameNode返回文件存储的DataNode的信息。
3. Client读取文件信息。

(2)MapReduce

MapReduce是一种编程模型,用于大规模数据集的并行运算。Map(映射)和Reduce(化简),采用分而治之思想,先把任务分发到集群多个节点上,并行计算,然后再把计算结果合并,从而得到最终计算结果。多节点计算,所涉及的任务调度、负载均衡、容错处理等,都由MapReduce框架完成,不需要编程人员关心这些内容。
下图是MapReduce的处理过程:

这里写图片描述

 用户提交任务给JobTracer,JobTracer把对应的用户程序中的Map操作和Reduce操作映射至TaskTracer节点中;输入模块负责把输入数据分成小数据块,然后把它们传给Map节点;Map节点得到每一个key/value对,处理后产生一个或多个key/value对,然后写入文件;Reduce节点获取临时文件中的数据,对带有相同key的数据进行迭代计算,然后把终结果写入文件。

 如果这样解释还是太抽象,可以通过下面一个具体的处理过程来理解:(WordCount实例)
 这里写图片描述

Hadoop的核心是MapReduce,而MapReduce的核心又在于map和reduce函数。它们是交给用户实现的,这两个函数定义了任务本身。

map函数:接受一个键值对(key-value pair)(例如上图中的Splitting结果),产生一组中间键值对(例如上图中Mapping后的结果)。Map/Reduce框架会将map函数产生的中间键值对里键相同的值传递给一个reduce函数。
reduce函数:接受一个键,以及相关的一组值(例如上图中Shuffling后的结果),将这组值进行合并产生一组规模更小的值(通常只有一个或零个值)(例如上图中Reduce后的结果)

但是,Map/Reduce并不是万能的,适用于Map/Reduce计算有先提条件:
(1)待处理的数据集可以分解成许多小的数据集;
(2)而且每一个小数据集都可以完全并行地进行处理;
若不满足以上两条中的任意一条,则不适合适用Map/Reduce模式。

本文转载自http://www.cnblogs.com/edisonchou/p/3485135.html


http://www.niftyadmin.cn/n/1801576.html

相关文章

Hive(一)数据类型、文件格式和数据定义

1、基本数据类型 Hive支持多种不同长度的整型和浮点型数据类型,支持布尔类型,也支持无长度限制的字符串类型,后续的Hive增加了时间戳数据类型和二进制数组数据类型。 和其他的SQL语言一样,这些都是保留字。需要注意的是所有…

kafka本地单机安装部署

kafka是一种高吞吐量的分布式发布订阅消息系统,这几天要上kafka,只在其中的一个节点使用,结合具体的项目实践在此将kafka的本地安装部署流程记录下来与各位同仁分享交流。 准备工作: 上述的文件除了jdk以外均放在/usr/local/k…

java socket的网络编程一些小结

网络编程的实质就是实现网络中的两个或者多个设备之间的数据传输,虽然计算机网络中分为很多层,但是对于网络编程来说,很多程序语言都有预先留好的API接口,我们只要调用即可。 关于比较通俗的解释,可以参考以下这篇博文…

HDFS的原理漫画详解

1、3个部分,客户端client,nameNode(存放元数据及其他信息的节点),dataNode(实际存放数据的节点) 2、如何写数据过程 3、读取数据的过程 4、容错:故障类型及其检测方法 5、读写容错 6…

Eclipse导入Maven项目详解(新手初学)

最近遇到Maven管理下的Spring MVC项目&#xff0c;组内某位将项目代码扔过来&#xff0c;一脸懵逼&#xff08;囧&#xff09;&#xff0c;查阅了一些资料后终于将此项目运行通了&#xff08;>_<&#xff09;&#xff0c;特此记录下来与各位分享。 通俗的来说&#xff0…

git 服务器+git linux客户端搭建

最近团队中在开发一些项目&#xff0c;由于代码经常改动&#xff0c;搞得头大&#xff0c;就想找个代码管理工具。查了一些资料&#xff0c;最后选择使用git管理代码&#xff0c;下面将搭建的过程记录下来与各位同仁分享。&#xff08;亲测可以使用&#xff09; 一、准备工作 …

ElasticSearch概述及Linux下的单机ElasticSearch安装

这两天在项目中要涉及到ElasticSearch的使用&#xff0c;就上网去搜索了一些这方面的资料&#xff0c;发现elasticSearch的安装分为单机和集群两种方式。在本例中&#xff0c;我们重点介绍单机下的ElasticSearch的安装&#xff0c;亲测可用&#xff0c;记录下来与各位同仁分享。…

基于Centos7的pip安装tensorflow

前言 tensorflow是谷歌的第二代机器学习的框架&#xff0c;tensorflow0.6只支持python2.7以上和python3&#xff0c;两者选一个安装即可&#xff0c;本例的python版本是python2.7.6&#xff0c;在安装的过程中遇到很多问题&#xff0c;特此记录下&#xff0c;以便日后查阅。 …