最近在忙于写论文等工作,有一段时间没有看Hadoop源码了,觉得不能中断,所以就自己思考着实现hdfs文件系统的本地可视化界面。从昨天上午构思,到今天中午,完成了基本的功能。
(1)设计思路:
在hadoop节点上,运行程序后,可显示可视化界面,和普通的资源管理器类似,实现简单的文件树查看、创建文件、删除文件等操作。
目前界面设计如下:
主要界面包括工具栏、文件树、查看区、状态栏四个部分。
工具栏提供如下功能: 刷新(更新文件树和hdfs同步)、新建目录、删除目录或文件、查看目录(相当于ls命令)、查看文件(返回文件内容)
状态栏显示当前文件系统的操作结果。
查看区根据操作不同,显示不同的结果。
(2)基本实现
上述是设计思路,下面该说如何实现了。
对于实现我有以下几个思路:通过namenode的rpc机制(C/S架构方式)、运行在namenode上调用fs命令(本地模式)、直接读取镜像文件实现(dfs服务不启动也可以实现文件树的查看)
本地实现采用第二种方式,即直接在namenode上调用fs命令来解析结果和调用fs命令实现hdfs的操作。采用这样方式的原因在于较简单,同时也为另2种实现方式做一些基本的技术准备。(个人倾向于直接对镜像文件和数据块文件操作的方式实现,这个等同于在hdfs内核级别的操作,但是要注意和dfs服务本身的同步;所以或者折中的方式是采用rpc方式)。
由于目前的实现方式中,还没有涉及到hadoop的api接口调用,都是通过命令行方式来操作的,所以直接用Java -jar命令即可运行。如果代码中用了hadoop的api,则需要用hadoop脚本来运行jar包。
(3)后续
由于时间原因,对文件操作错误的处理还没有实现。
后续希望实现新建文件、追加文件内容功能,由于工作任务较紧,所以这个只能先放着了。追加文件需要对hadoop的设置进行修改,改为支持追加方式后才可以进行文件追加。
由于代码为功能实现,一些细节处理很糟糕,效率也并不好,所以如果时间允许,需要重新设计,并对效率方面进行优化。
(4)源码
HDFS本地查看器下载
具体下载目录在 /2012年资料/10月/11日/Hadoop本地可视化界面的设计及基本实现