首页 理论教育Hadoop概述:技术详解

Hadoop概述:技术详解

【摘要】:Hadoop集群由一个主节点Master和若干个从节点Slaves组成。图7-5 Hadoop MapReduce框架MapReduce的处理程序分为两个阶段:Map和Reduce。通过网络安全、防火墙和认证机制等确认用户身份,确保Hadoop集群访问的安全。通过屏蔽和加密等技术,保护Hadoop集群中的数据不会被非法访问。2)Hadoop缺乏相应的安全授权机制。2009年,关于Hadoop安全性的讨论接近白热化,安全被作为一个高优先级的问题被提出。

1.Hadoop架构

Hadoop架构依据Google研究者所发表的关于BigTable和GFS等学术论文提出的概念克隆而成,因此它与Google内部使用的云端计算架构非常相似。Hadoop在硬件环境兼容性较高,相对于现有的分布式系统,Hadoop更注重在容错性及廉价的硬设备上,用很小的预算就能实现大数据量的读取。

Hadoop包含有三个核心模块,即HDFS、Hbase和MapReduce。

HDFS为Hadoop Distributed File System的缩写。HDFS由名字节点(NameNode)和数据节点(DataNode)两个角色组成,HDFS是将数据文件以块(Block)方式存储在许多的DataNode上,再通过NameNode来处理和分析。此外HDFS与GFS不同的地方在于,它改进了NameNode的数量,已经不是只有一台NameNode来应付所有可能发生的情形,也大大改善了当只有一台NameNode主机时随时可能会故障的情形。HDFS的主要概念是以有效率的数据处理方式一次写入、多次读取,当数据经过建立、写入后就不允许更改,采用附加的方式,加在原有数据后面。通常数据会以预设64MB为单位切割成区块分散存储在不同数据节点上。而HDFS会将区块复制为多个副本存储在不同的数据节点作为备份。

HBase是一个分布式数据库,建构于HDFS之上。由行与列构成一个数据表,数据表单元格是有版本的,主要的索引为行键(Row Key),由HBase通过主要索引做排序,在同一个Row Key上有着不同版本的时间戳,每写进一次数据表都是一个新的版本。写入的数据都为字符串,并没有形态。当HBase在写入数据时会先写入Log(WAL Log)和目标主机的易失存储器,若主机无法正常运作时,此时使用Log来恢复检查点(Checkpoint)之后的数据,无法搜寻到数据时就会从HDFS中寻找。

MapReduce是一个大型分布式框架,利用大量的运算资源,加速处理庞大的数据量。MapReduce框架是典型的Master/Slaves(主/从)结构,也称为JobTracker-TaskTracker。JobTracker负责资源的管理(节点资源和计算资源等)以及任务生命周期管理(任务调度、进度查看和容错等)。TaskTracker主要负责任务的开启/销毁、向JobTracker汇报任务状态。JobTracker所在节点称为Master,TaskTracker所在节点称为Slaves。Hadoop集群由一个主节点Master和若干个从节点Slaves组成。Hadoop MapReduce的框架如图7-5所示。

978-7-111-53353-5-Chapter07-6.jpg

图7-5 Hadoop MapReduce框架

MapReduce的处理程序分为两个阶段:Map和Reduce。当数据开始进行运算,系统会将输入和输出都采用Key-value对方式切割成许多部分,分别传给不同的Mapper做处理,在集群中的计算机都会参与运算的过程,位于Master的JobTracker负责发送Map指令或Reduce指令给Slave中的TaskTracker,经由Map处理过后的数据,会暂存在内存内,这些数据称为中介数据,Reduce再将具有相同中介值的数据整合出最后的结果,并存储在用户设定的位置如HDFS。

2.Hadoop的安全问题

对于像金融、政府、医疗保健和其他对敏感数据的访问有严格监管的行业,如若使用Hadoop进行大数据处理,则必须确保Hadoop集群满足如下几个要求:(www.chuimin.cn)

1)周边安全。通过网络安全防火墙和认证机制等确认用户身份,确保Hadoop集群访问的安全。

2)数据安全。通过屏蔽和加密等技术,保护Hadoop集群中的数据不会被非法访问。

3)访问安全。通过ACL和细粒度授权,定义授权用户和应用程序对集群数据的权限。

但是,Hadoop最初的设想是:Hadoop集群总是处于可信环境中,由可信用户使用的相互协作的可信计算机组成;另外,其应用场景主要是围绕着如何管理大量的公共Web数据,无须考虑数据的安全性问题,因此Hadoop的早期版本中并没有考虑安全性问题。

随着Hadoop在数据分析和处理平台中的地位日益凸显,安全专家开始关注来自Hadoop集群内部的恶意用户的威胁。比如:

1)Hadoop并没有设计用户及服务器的安全认证机制,由于Hadoop并没有设计用户认证,使得任何用户都能冒充其他用户非法访问被冒充用户的HDFS或MapReduce,从而进行一些非法的对被冒充用户有危害的操作,如恶意提交作业、篡改HDFS上的数据和修改JobTracker状态等。尽管在版本0.16以后,HDFS增加了文件和目录的权限,但是由于用户无须认证,HDFS的权限控制还是极其容易绕过,允许一个用户伪装成任意一个用户,同时Hadoop计算框架也没有进行双向验证,一个恶意的网络用户可以模拟一个正常的集群服务加入Hadoop集群,去接受JobTracker和NameNode的任务指派。

2)Hadoop缺乏相应的安全授权机制。Hadoop在DataNode服务器上不仅缺乏相应的认证,而且也缺少相应的访问控制机制。当用户知道BlockID后,可以绕过相对应的认证和授权机制,直接对DataNode上的Block进行访问,而且可以随意写入或修改DataNode上的数据。由于缺乏相应的安全授权机制,用户还可以任意修改或销毁其他用户的作业。

3)Hadoop缺乏相关的传输以及数据加密。虽然在Master与Slave之间、Client与服务器之间的数据传输以Socket方式实现,采用的是TCP/IP,但是在传输和加密时并没有进行加密处理。而且由于各节点之间的数据是通过明文传输的,数据容易在传输的过程中被窃取。

2009年,关于Hadoop安全性的讨论接近白热化,安全被作为一个高优先级的问题被提出。Apache专门为了解决Hadoop的安全漏洞问题组成了一个团队,为Hadoop增加安全认证和授权机制,后来又为其加入Kerberos身份认证和基于ACL的访问控制机制。