Hadoop生态系统将长期存在。作为近年来最紧张的大数据支持技能之一,并且预计未来几年仍将继续发挥紧张作用,Hadoop现在已成为通用数据集成系统(如数据虚拟化平台)的关键目标数据源之一。然而,Hadoop不但仅是一个数据库或一款软件。它是一个复杂的生态系统,由多种高度异构的软件组成,运行于分布式数据情况中——几乎可以看作是一个独立的操作系统。因此,将Hadoop作为数据源举行集成,带来了一系列其他系统所没有的挑战。我们可以从思索将Hadoop作为数据源集成毕竟意味着什么开始。
我们可以通过定义一系列独立的集成点来分析这个场景,将其分为两组:基本集成点和专业集成点。这些集成点将赋予数据虚拟化平台使用Hadoop安装的特定部分作为独立数据源的能力,每个部分具有自己的特性和功能。
基本集成点
Hadoop核心的两个最紧张组件之一是Hadoop分布式文件系统(HDFS)。HDFS是一个独立于主机操作系统的文件系统,其维护方式使得全部存储在此中的文件都被分布到Hadoop集群的不同节点上。HDFS对于数据虚拟化(DV)平台极为紧张,由于全部数据都存储在这里,而这些数据大概被各种Hadoop支持的软件所使用。如果我们执行自定义的MapReduce任务,它们的结果会输出到HDFS文件中;如果我们使用Hive或HBase,它们的数据也会存储在HDFS中;如果我们使用任何Hadoop脚本语言,操作的也是HDFS文件。数据就存储在这里,我们大概需要以某种方式访问它,就像我们大概需要直接访问DV平台主机系统上当地或远程文件夹中的文件一样,无论这些文件的格式或创建它们的软件是什么。
除了下令行,HDFS还提供了一种二进制API库,可以资助数据虚拟化平台访问此中的数据。这个API支持文件系统中的不同范例的文件以及可以对它们执行的操作。但是,它是一个二进制API,因此使用它时,我们在软件和Hadoop的API之间创建了一个硬链接或依赖关系。当开发定制的内部解决方案时,这并不是什么大题目,但当创建通用的数据集成工具时,要求它们能够在各种不同的场景中开箱即用时,这就构成了一个紧张挑战。此外,数据虚拟化系统通常摆设在远程的Hadoop集群上,因此,很多时间,使用这些高性能二进制库的好处大概相较于使用更尺度的接口有所限制。
大多数Hadoop安装还允许通过REST API访问HDFS及其操作,紧张通过两个接口:WebHDFS和HttpFS。它们之间存在一些概念上的差异(例如,WebHDFS会将客户端重定向到数据所在的特定节点,而HttpFS则可以作为单服务器署理),这大概使我们根据特定场景的需求偏好此中一个。不过,通常情况下,它们是互操作的,提供了非常好的性能,最紧张的是为外部/远程数据集成软件(如DV)提供了一个基于HTTP协议的尺度、解耦的接口来访问数据。
因此,一旦文件系统的访问题目解决,接下来我们大概需要的其他基本/核心集成点是什么呢?安全性,当然!
Hadoop中的安全性几乎成为了一个独立的行业。Hadoop系统中有很多不同的数据加密、身份验证和授权解决方案,这也是必须的,由于我们批评的是掩护大量大概敏感的数据以及处理这些数据的过程。多年来,各个企业级Hadoop发行商都为生态系统贡献了自己的力量,安全性是创新(以及异构化)最为显著的领域之一。
然而,从数据虚拟化平台的角度来看,集成Hadoop(或其部分)作为数据源时,我们通常将Hadoop安全性视为外部/远程客户端,因此,大多数加密和授权机制应该对我们透明。这意味着我们可以专注于身份验证,特殊是专注于几乎全部Hadoop服务中最普遍的身份验证机制:Kerberos。
通过设置一个密钥分发中心(KDC),Kerberos能够以会集方式掩护Hadoop安装中的全部用户密码,但这要求Hadoop客户端在身份验证过程中能够使用Kerberos协议,即获取并管理特定的身份验证凭证(票证),并将它们发送给Hadoop中的Kerberos化服务。这要求数据虚拟化系统集成(或至少能够与之交互)Kerberos客户端软件,以便能够与Hadoop服务创建安全通信通道。
对于像WebHDFS和HttpFS如许的HTTP REST API,通常会提供一种名为Kerberos SPNEGO的特定机制,数据虚拟化平台可以使用该机制访问这些服务。
通过HDFS和安全性,我们已经涵盖了基本要素:我们可以以安全的方式访问Hadoop安装中的数据。然而,实际上,大多数Hadoop安装并不但仅运行自定义开发的MapReduce任务,并将文件输出到HDFS。相反,更多复杂的Hadoop支持软件在Hadoop核心上运行,能够更高效地举行数据存储、查询和分析,这些数据虚拟化平台可以作为其数据源,而不必直接访问HDFS。这就是我们脱离Hadoop核心并开始讨论专业集成点的地方,也就是与运行在Hadoop系统上的特定数据服务的集成。
专业集成点
Hadoop是一个非常康健且富有生机的生态系统,有大量不同的数据导向工具可以在Hadoop核心上运行。从数据虚拟化平台的角度来看,很多这些工具可以作为数据源,但它们的异质性使得每一个工具都必须单独研究。从数据消耗者的角度来看,没有“与Hadoop集成”这一说法,只有“与Hadoop的X服务集成”这一说法。
让我们扼要批评两个最受欢迎的Hadoop数据服务:Apache HBase和Apache Hive。
Apache HBase是一个运行在HDFS上的NoSQL数据存储。它的关键特点是能够提供对存储在HDFS中的数据的随机实时访问(而HDFS本身无法提供这种访问)。它具有类似于Google BigTable设计的键值数据存储情势,并根据具体的Hadoop发行版提供多种访问方式,从二进制API库到REST接口等,接纳不同的安全机制(紧张基于Kerberos认证)。
从数据虚拟化平台的角度来看,访问HBase通常意味着远程访问。为此,REST API是一个良好的尺度且解耦的选择,但出于性能或架构缘故起因,我们大概更倾向于选择二进制API。在这种情况下,和直接访问HDFS一样,我们将面临将代码与这些二进制API的特定版本高度耦合的题目,因此我们实际上是在以性能为代价,换取了维护上的便利。需要注意的是,HBase并不是一个关系型数据存储,因此它并没有(直接)提供任何尺度的SQL接口供我们通过尺度API(如JDBC或ODBC)远程访问。
Apache Hive是一个针对大数据集的查询和分析工具。它运行在HDFS之上,并提供了类似SQL的接口,得当从数据虚拟化平台举行简单查询。此外,Hive不但可以直接对HDFS存储的数据集举行操作——实际上,它还可以使用现有的HBase基础办法,借助Hive强大而灵活的数据分析工具对已存储和/或处理的数据举行分析。数据虚拟化平台可以通过尺度的JDBC或ODBC驱动程序轻松访问Hive服务,通过Kerberos举行身份验证,并将来自Hadoop安装的数据几乎与任何其他关系型数据库管理系统(DBMS)一样举行集成。
然而,HBase和Hive只是两个(非常盛行的)示例。可以作为数据虚拟化数据源使用的Hadoop数据服务非常多,另有很多其他盛行的软件包,如Apache Phoenix、Cloudera Impala、Pivotal HAWQ、MapR-DB等。在几乎每种情况下,我们都会发现数据虚拟化系统作为远程客户端,使用二进制库、基于REST的API或SQL API(如JDBC)来检索数据,并使用Kerberos认证。每种接口的选择将在每种情况下决定这些集成的可维护性、性能和开发工作量,终极将根据每种场景接纳的方法和架构,资助数据虚拟化平台从Hadoop大数据系统中提取最大价值。
5分钟相识Denodo
GitHub - denodo/denodoconnect-hadoop: This repository contains code for the Denodo Distributed FileSystem Custom Wrapper and the Denodo HBase Custom Wrapper, all part of the DenodoConnect component collection.This repository contains code for the Denodo Distributed FileSystem Custom Wrapper and the Denodo HBase Custom Wrapper, all part of the DenodoConnect component collection. - denodo/denodoconnect-hadoophttps://github.com/denodo/denodoconnect-hadoop
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |