Hadoop hdfs dfs命令很慢-有没有办法让它更快?
我在Hadoop 2.2.0上运行单节点设置 我的理解是,Hadoop hdfs dfs命令很慢-有没有办法让它更快?,hadoop,hdfs,Hadoop,Hdfs,我在Hadoop 2.2.0上运行单节点设置 我的理解是,hdfs dfs-ls速度很慢,因为每次调用它时,它都会使JVM旋转起来 有没有办法让JVM保持运行,使简单的命令可以更快地完成任务?在pig grunt shell中,像fs-ls这样的命令工作得相当快,因此这可能是一种实用的解决方法。问题是,在尝试将输出通过管道传输到其他命令时,这种方法不起作用 因此,我一起破解了一个脚本,以启动pig grunt shell作为后台进程,并通过命名管道与之通信:。问题是,即使我使用脚本工具来伪造一个
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可以很好地工作(即使是很长的列表),但我认为这是一个更好的解决方案,因为它至少是可靠的。能够在命令行上更快地浏览文件对于提高工作效率非常重要!