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