Hadoop hdfs dfs命令很慢-有没有办法让它更快?

Hadoop hdfs dfs命令很慢-有没有办法让它更快?,hadoop,hdfs,Hadoop,Hdfs,我在Hadoop 2.2.0上运行单节点设置 我的理解是,hdfs dfs-ls速度很慢,因为每次调用它时,它都会使JVM旋转起来 有没有办法让JVM保持运行,使简单的命令可以更快地完成任务?在pig grunt shell中,像fs-ls这样的命令工作得相当快,因此这可能是一种实用的解决方法。问题是,在尝试将输出通过管道传输到其他命令时,这种方法不起作用 因此,我一起破解了一个脚本,以启动pig grunt shell作为后台进程,并通过命名管道与之通信:。问题是,即使我使用脚本工具来伪造一个

我在Hadoop 2.2.0上运行单节点设置

我的理解是,
hdfs dfs-ls
速度很慢,因为每次调用它时,它都会使
JVM
旋转起来


有没有办法让JVM保持运行,使简单的命令可以更快地完成任务?

在pig grunt shell中,像
fs-ls
这样的命令工作得相当快,因此这可能是一种实用的解决方法。问题是,在尝试将输出通过管道传输到其他命令时,这种方法不起作用

因此,我一起破解了一个脚本,以启动pig grunt shell作为后台进程,并通过命名管道与之通信:。问题是,即使我使用
脚本
工具来伪造一个真实的终端(因为grunt shell期望如此),grunt shell有时仍然会自杀。当使用
head
左右截断输出时,我也会遇到问题,因为它仍然试图写入整个输出,这反过来会在命名管道中留下过时的输出

无论如何,你可以看看它是否适合你。非常感谢您所做的任何改进。

请查看。它提供了与hdfs dfs类似的接口,但速度要快得多。它还支持使用bash completion对HDFS上的文件名进行制表符补全,这大大节省了时间


但是它还不支持
put

我想告诉您我们为解决此问题而采取的解决方案

我们创建了一个新的实用工具-HDFS Shell,以更快地使用HDFS

  • HDFS DFS为每个命令调用启动JVM,HDFS Shell只启动一次,这意味着当您需要更频繁地使用HDFS时,速度会大大提高
  • 命令可以用很短的方式使用-例如,
    hdfs-dfs-ls/
    ls/
    -两者都可以工作
  • 使用TAB键完成HDFS路径
  • 我们可以轻松添加任何其他HDFS操作函数
  • 历史记录日志(~/.hdfs shell/hdfs shell.log)中有一个命令历史记录
  • 支持相对目录+命令
    cd
    pwd
  • 还有更多

尝试在启用日志记录的情况下执行命令
HADOOP\u ROOT\u LOGGER=DEBUG,console hdfs dfs-ls~
。这可能会给你一个线索,你关于JVM启动时间的假设是正确的,还是可能发生了其他事情。我发现当我连接到wifi时,它就会发生。因此,当我需要运行hadoop命令时,我会断开wifi。不确定是什么问题,但我很高兴。我又看了一眼,似乎终于找到了一种重定向方法,可以保持grunt shell的稳定:。所以剩下的就是通过
处理管道的正确方法。现在我想起了为什么我在7月份没有满足于这个解决方案:当输出带有
-text
-cat
的文件内容时,它会在几KB后被截断,不管出于什么原因,但我想要完整的输出,当以不同的方式执行stdout重定向时,它会起作用<虽然code>ls可以很好地工作(即使是很长的列表),但我认为这是一个更好的解决方案,因为它至少是可靠的。能够在命令行上更快地浏览文件对于提高工作效率非常重要!