【Hadoop的初级理解】

Hadoop的基本概念

Hadoop分为狭义和广义两个概念。
狭义的Hadoop呢就是指HDFS还有Mapreduce以及YARN(2.X版本)。
广义的就是指Hadoop的生态圈,其中还包括Flink和HBase等好多的热门框架。
本文仅从狭义角度去解释Hadoop的基本概念。
首先要解释的就是Hadoop是要解决怎样一个问题!
这里要阐述Hadoop的一个来源,它源自Apache的一个爬虫项目,Apache想要在网上爬取很多的数据,但是大量的数据如何存放如何处理都是一个非常大的问题,于是就去求助Google,用Google曾经做的一些研究去实现出来了这样一个可以存储海量数据并且对其处理的一个功能。
大数据
因此,Hadoop其实就是要解决海量数据如何存储并处理的问题。

Hadoop有什么样的优点呢?

1、高可靠性:Hadoop为处理海量数据,需要提供可靠的数据处理服务,这个可靠体现在数据在存储和计算过程中可能会因一些意外而导致失败,那么它就要维护多个数据副本,确保能够针对失败的节点重新分布处理。实现的方法就是通过集群的思想,假设,数据通过三个电脑去传输到终端,那么三个电脑其中有一个坏掉了,另外两个也可以继续去传输。所谓集群,就是多个服务器去做同样的事情。
2、高扩展性:Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中[1]。但是,增添或者删除DataNode(支持热插拔,即无需重新启动集群),都会通知NameNode及时更新metadata。因此,Hadoop同时也带来了两面性,它适用于大文件的批处理;不适用于大量小文件的实时流处理(大量小文件会占据太多的NameNode内存空间,数据访问延迟较高)。
3、高效性:在MapReduce的思想下,Hadoop是并行工作的,能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快 。
4、高容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配 [1] 。

Hadoop核心架构

Hadoop 由许多元素构成。其最底部是 Hadoop Distributed File System(HDFS),它存储 Hadoop 集群中所有存储节点上的文件。HDFS的上一层是MapReduce 引擎,该引擎由 JobTrackers 和 TaskTrackers 组成。通过对Hadoop分布式计算平台最核心的分布式文件系统HDFS、MapReduce处理过程,以及数据仓库工具Hive和分布式数据库Hbase的介绍,基本涵盖了Hadoop分布式平台的所有技术核心 [1] 。

HDFS

HDFS的全称为Hadoop Distributed File System,就其字面意思理解就是一个分级的文件系统。可以增删改查文件,它就像一个Mysql数据库,其中不同之处在于Mysql存储的是关系型数据,而HDFS存储的是文件数据。
HDFS
详情见图,HDFS是通过节点来完成文件存储。这些节点包括 NameNode(仅一个),它在 HDFS 内部提供元数据服务;DataNode,它为 HDFS 提供存储块。由于仅存在一个 NameNode,因此这是 HDFS 1.x版本的一个缺点(单点失败)。在Hadoop 2.x版本可以存在两个NameNode,解决了单节点故障问题 [1]
另外,HDFS 内部的所有通信都基于标准的 TCP/IP 协议。

NameNode

NameNode 是一个通常在 HDFS 实例中的单独机器上运行的软件。它负责管理文件系统名称空间和控制外部客户机的访问。NameNode 决定是否将文件映射到 DataNode 上的复制块上。对于最常见的 3 个复制块,第一个复制块存储在同一机架的不同节点上,最后一个复制块存储在不同机架的某个节点上 [2]。

NameNode它不参与I/O事务,其核心作用就是作为一个中介控制内部的名称空间和外部的访问权限。

DataNode

DataNode 响应来自 HDFS 客户机的读写请求。它们还响应来自 NameNode 的创建、删除和复制块的命令。NameNode 依赖来自每个 DataNode 的定期心跳(heartbeat)消息。每条消息都包含一个块报告,NameNode 可以根据这个报告验证块映射和其他文件系统元数据。如果 DataNode 不能发送心跳消息,NameNode 将采取修复措施,重新复制在该节点上丢失的块[3]。

MAPREDUCE

Mapreduce是Hadoop中的一个应用程序,是用于并行处理大数据集的软件框架。MapReduce 的根源是函数性编程中的 map 和 reduce 函数。它由两个可能包含有许多实例(许多 Map 和 Reduce)的操作组成。Map 函数接受一组数据并将其转换为一个键/值对列表,输入域中的每个元素对应一个键/值对。Reduce 函数接受 Map 函数生成的列表,然后根据它们的键(为每个键生成一个键/值对)缩小键/值对列表 [3]。
这里提供一个示例,帮助您理解它。假设输入域是 one small step for man,one giant leap for mankind。在这个域上运行 Map 函数将得出以下的键/值对列表 [6] :
(one,1)(small,1) (step,1) (for,1) (man,1)(one,1) (giant,1) (leap,1) (for,1) (mankind,1)
如果对这个键/值对列表应用 Reduce 函数,将得到以下一组键/值对:
(one,2) (small,1) (step,1) (for,2) (man,1)(giant,1) (leap,1) (mankind,1)
可以看到Reduce实际上就是对每个单词进行归约计数。
Mapreduce解决的问题是,one small step for man,one giant leap for mankind作为一整个输入信息输入,和one small step for man还有one giant leap for mankind两个句子分别输入,其规约得到的结果是相同的,这样对处理索引十分有用。同时,这表示Hadoop通过Mapreduce程序,并没有将存储移动到某个位置以供处理,而是将处理移动到存储,这带来了极大的效率提升,而且并行功能可在任意数量的系统上使用。

[1] 李小华,周毅主编;刘晓辉等副主编,医院信息系统数据库技术与应用=Technology and application of database of hospital information system,中山大学出版社,2015.10,第431页~第433页
[2] 李浪主编,网络安全与密码技术导论,华中科技大学出版社,2015.09,第175页~第177页
[3] 杨旭,汤海京,丁刚毅编著,数据科学导论 第2版,北京理工大学出版社,2017.01,第168页

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值