我需要以最快的速度访问单个文件,该文件的多个副本存储在使用Hadoop的许多系统中。我还需要以排序的方式找到每个文件的ping时间。我应该如何学习hadoop来完成这个任务?请快点帮忙。我的时间非常少。
如果需要更快地访问文件,只需使用setrep命令增加对该文件的复制因子。由于当前的硬件限制,这可能不会按比例增加文件吞吐量。
ls命令没有给出目录和文件的访问时间,它只显示了修改时间。使用离线图像查看器将hdfs fimage文件的内容转储为人类可读的格式。下面是使用缩进选项的命令。
bin/hdfs oiv -i fsimagedemo -p缩进-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。
我应该如何学习hadoop来完成这个任务?请快点帮忙。我的时间非常少。
如果你想在一两天内学会Hadoop是不可能的。