hdfs与webhdfs之比较

jvlzgdj9  于 2021-05-29  发布在  Hadoop
关注(0)|答案(4)|浏览(1263)

我正在用webhdfs在hadoophdfs中加载28gb的文件,加载大约需要25分钟。
我试着用hdfs-put加载同一个文件,花了大约6分钟。为什么在性能上有这么大的差异?
建议使用什么?有人可以解释或指导我一些好的链接,这将是真的很有帮助。
在我们下面是我的命令

curl -i --negotiate -u: -X PUT "http://$hostname:$port/webhdfs/v1/$destination_file_location/$source_filename.temp?op=CREATE&overwrite=true"

这将重定向到一个datanode地址,我将在下一步中使用该地址来写入数据。

f87krz0w

f87krz0w1#

hadoop提供了一个文件系统shell api来支持文件系统操作,如创建、重命名或删除文件和目录、打开、读取或写入文件。filesystem shell是一个java应用程序,它使用java filesystem类来提供文件系统操作。文件系统shell api为操作创建rpc连接。
如果客户机在hadoop集群中,那么这很有用,因为它使用 hdfs uri方案,用于连接hadoop分布式文件系统,因此客户机直接进行rpc连接,将数据写入hdfs。
这对于在hadoop集群中运行的应用程序是很好的,但是在某些用例中,外部应用程序可能需要操作hdfs,就像它需要创建目录并将文件写入该目录或读取hdfs上存储的文件的内容一样。hortonworks开发了一个api来支持这些基于标准rest功能的需求,称为webhdfs。
webhdfs提供restapi功能,任何外部应用程序都可以通过http连接连接分布式文件系统。不管外部应用程序是java还是php。
webhdfs的概念是基于http操作,比如get、put、post和delete。open、getfilestatus、liststatus等操作使用httpget,create、mkdirs、rename、setpermissions等其他操作依赖于httpput
它通过http提供对hdfs的安全读写访问。它基本上是作为hftp(通过http的只读访问)和hsftp(通过https的只读访问)的替代品 webhdfs 与分布式文件系统连接的uri方案。
如果客户机在hadoop集群之外并且试图访问hdfs。webhdfs对它很有用。另外,如果您试图连接两个不同版本的hadoop集群,那么webhdfs也很有用,因为它使用restapi,所以它独立于mapreduce或hdfs版本。

ecfdbz9o

ecfdbz9o2#

您可以使用传统的java客户机api(hdfs的linux命令正在内部使用)。
从我在这里读到的。
java客户机的性能与基于rest的方法具有相似的性能。

klsxnrf1

klsxnrf13#

hadoop提供了几种访问hdfs的方法
以下所有特性几乎都支持文件系统的所有特性-
1filesystem(fs)shell命令:提供对hadoop文件系统操作以及hadoop支持的其他文件系统(如local fs、hftp fs、s3fs)的轻松访问。
这需要安装hadoop客户机,并且需要客户机将块直接写入一个数据节点。所有版本的hadoop都不支持在文件系统之间进行复制的所有选项。
2webhdfs:它定义了一个公共的httprestapi,它允许客户端从多种语言访问hadoop,而无需安装hadoop,其优点是语言不可知(curl、php等等)。
webhdfs需要访问集群的所有节点,当一些数据被读取时,它直接从源节点传输,但是在(1)fs shell上有一个http开销,但是工作不可知,不同的hadoop集群和版本没有问题。
三。httpfs。在防火墙后面的集群中读写数据到hdfs。单个节点将充当网关节点,所有数据都将通过网关节点进行传输,从性能Angular 来看,我认为这可能会更慢,但在需要将数据从公共源拉入安全集群时,这是首选。
所以选择正确!。。当你无法选择上面的选项时,下表总是一种选择。

ijxebb2r

ijxebb2r4#

hdfs访问和webhdfs之间的区别在于可伸缩性,这是由于hdfs的设计以及hdfs客户机将文件分解为位于不同节点上的分区的事实。当hdfs客户机访问文件内容时,它会在封面下转到namenode,并获取文件拆分列表及其在hadoop集群上的物理位置。
然后,它可以在所有这些位置上执行datanodes操作,并行地获取拆分中的块,将内容直接传输到客户机。
webhdfs是hdfs集群中的一个代理,它在hdfs上分层,因此在将所有数据传输到webhdfs客户机之前,需要将数据流传输到代理。从本质上讲,它变成了单点访问和io瓶颈。

相关问题