加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

如何将数据移入和移出Hadoop?

发布时间:2018-10-17 14:08:41 所属栏目:教程 来源:赵钰莹
导读:【新产品上线啦】51CTO播客,随时随地,碎片化学习 企业在项目中完全使用Hadoop之前,数据移动是必须解决的事情之一。如何将数千台主机日志数据放入Hadoop?从关系型或者No/NewSQL系统以及Hadoop中获取数据的最有效方法是什么?如何将Hadoop中生成的Lucene索

值得一提的是WebHDFS提供的一些附加功能。首先,文件的第一个块存放数据位置。NameNode将客户端重定向到承载第一个块的DataNode,提供强大的数据位置。对于文件中的后续块,DataNode充当代理,并将数据流入保存块数据的节点或从中保存数据。

WebHDFS还与Hadoop的安全身份验证集成,这意味着可以启用Kerberos并在HTTP请求中使用委派令牌。此外,API将保持跨Hadoop版本的兼容性,这意味着目前发布的命令将适用于未来版本的Hadoop(反之亦然)。 这是一个有用的工具,用于访问运行不同Hadoop版本的多个集群。

如何将数据移入和移出Hadoop?
表5.1 WebHDFS库

当客户端可以访问所有NameNode和DataNode时,WebHDFS非常有用。在锁定环境中,情况可能并非如此,可能需要查看HttpFS。

从防火墙后面访问HDFS

生产Hadoop环境通常被锁定以保护这些集群中的数据。部分安全程序可能包括将集群置于防火墙之后,如果尝试从防火墙外部读取或写入HDFS,这将是一件麻烦事。 这种技术着眼于HttpFS网关,它可以使用HTTP(通常在防火墙上打开)提供HDFS访问。

问题

想要写入HDFS,但有一个防火墙限制对NameNode或DataNode的访问。

解决方案

使用HttpFS网关,它是一个独立的服务器,可通过HTTP提供对HDFS的访问。因为它是一个单独的服务而且是HTTP,所以可以配置为在任何可以访问Hadoop节点的主机上运行,并且可以打开防火墙规则以允许流量到服务。

讨论

HttpFS非常有用,因为它不仅允许使用REST访问HDFS,而且具有完整的Hadoop文件系统实现,这意味着可以使用CLI和本机HDFS Java客户端与HDFS进行通信,如图5.2所示。

如何将数据移入和移出Hadoop?
图5.2 HttpFS网关架构

要启动并运行HttpFS,必须指定代理用户。这是将运行HttpFS进程的用户,此用户也将在Hadoop中配置为代理用户。假设有一个名为foxyproxy的用户,你将其指定为代理用户。你用以下代码更新core-site.xml:

如何将数据移入和移出Hadoop?

基本上,这表明Hadoop应该只接受来自主机localhost的代理请求,并且foxyproxy可以冒充任何用户(你可以通过提供以逗号分隔的组列表来锁定可以模拟的用户集名)。更改用户名,主机和组值,以便它们在环境中有意义。

在对core-site.xml进行更改后,我们需要启动HttpFS进程:

  1. $ sbin/httpfs.sh start 

现在,可以使用WebHDFS发出与之前技术中相同的curl命令。这是关于HttpFS网关的好处之一 :语法完全相同。要在根目录上执行目录列表,需要执行以下操作:

如何将数据移入和移出Hadoop?

此curl命令与先前技术中使用的curl命令的唯一区别是端口号。默认情况下,HttpFS在端口14000上运行,但可以通过编辑httpfs-env.sh来更改。表5.2中显示了可以在文件中更改的一些有趣属性。

如何将数据移入和移出Hadoop?
表5.2 HttpFS属性

可以在httpfs-site.xml中配置其他Kerberos以及用户和组级别设置。

WebHDFS和HttpFS之间的差异

WebHDFS和HttpFS之间的主要区别在于客户端对所有数据节点的可访问性。如果客户端可以访问所有数据节点,那么WebHDFS将正常工作,因为读取和写入文件涉及客户端直接与数据节点通信以进行数据传输。另一方面,如果位于防火墙之后,客户端可能无法访问所有数据节点,在这种情况下,HttpFS选项最适合。使用HttpFS,服务器将与数据节点通信,客户端只需要与单个HttpFS服务器通信。

如果可以,请选择WebHDFS,因为客户端直接与数据节点通信具有固有的优势:这允许轻松扩展多个主机并发客户端数量,而不会遇到通过HttpFS流式传输数据的网络瓶颈。如果客户端本身在数据节点上运行,则更是如此,因为将通过直接从本地文件系统而不是网络流式传输本地托管的HDFS数据块来使用WebHDFS的优势。

使用NFS挂载Hadoop

通常,如果Hadoop数据可以作为文件系统的常规安装来访问,那么使用Hadoop数据要容易得多。这允许使用现有脚本,工具和编程语言,并与HDFS中的数据进行交互。本节介绍如何使用NFS挂载轻松地将数据复制到HDFS中和从HDFS复制数据。

问题

将HDFS视为常规Linux文件系统,并使用标准Linux工具与HDFS进行交互。

解决方案

使用Hadoop的NFS实现来访问HDFS中的数据。

讨论

在Hadoop 2.1之前,NFS安装HDFS的唯一方法是使用FUSE。由于各种性能和可靠性问题,不建议将其用于一般用途。它还引入了额外的负担,要求在任何客户端计算机上安装驱动程序(换句话说,它没有提供NFS网关)。

Hadoop中的新NFS实现解决了旧的基于FUSE系统的所有缺点。这是一个合适的NFSv3实现,允许运行一个或多个NFS网关以提高可用性和吞吐量。

要启动并运行NFS服务,首先需要停止在主机上运行的NFS服务。在Linux系统上,可以使用以下命令实现:

如何将数据移入和移出Hadoop?
如何将数据移入和移出Hadoop?
图5.3 Hadoop NFS

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读