使用Hadoop最快地访问文件

时间:2011-10-03 10:27:58

标签: hadoop

我需要以最快的速度访问单个文件,其中一些副本使用Hadoop存储在许多系统中。我还需要以排序的方式查找每个文件的ping时间。 我该如何处理学习hadoop来完成这项任务? 请快点帮忙。我的时间很少。

1 个答案:

答案 0 :(得分:1)

如果您需要更快地访问文件,只需使用setrep命令将复制因子增加到该文件。由于您当前的硬件限制,这可能不会按比例增加文件吞吐量。

ls命令没有给出目录和文件的访问时间,它只显示修改时间。使用Offline Image Viewer将hdfs fsimage文件的内容转储为人类可读的格式。下面是使用缩进选项的命令。

  

bin / hdfs oiv -i fsimagedemo -p Indented -o fsimage.txt

来自fsimage.txt的示例o / p,查找ACCESS_TIME列。

INODE
  INODE_PATH = /user/praveensripati/input/sample.txt
  REPLICATION = 1
  MODIFICATION_TIME = 2011-10-03 12:53
  ACCESS_TIME = 2011-10-03 16:26
  BLOCK_SIZE = 67108864
  BLOCKS [NUM_BLOCKS = 1]
    BLOCK
      BLOCK_ID = -5226219854944388285
      NUM_BYTES = 529
      GENERATION_STAMP = 1005
  NS_QUOTA = -1
  DS_QUOTA = -1
  PERMISSIONS
    USER_NAME = praveensripati
    GROUP_NAME = supergroup
    PERMISSION_STRING = rw-r--r--

要以排序方式获取ping时间,您需要编写一个shell脚本或其他程序来为每个INODE部分提取INODE_PATH和ACCESS_TIME,然后根据ACCESS_TIME对它们进行排序。您也可以使用Pig here

  

我应该如何处理学习hadoop来完成这项任务?请快点帮忙。我的时间很少。

如果你想在一两天内学习Hadoop,那是不可能的。 Here是一些视频和文章。