Node.js+HDFS开发的简易网盘

最近研究了HDFS的相关内容,基于WebHDFS REST APIHadoop-1.1.2版)制作了一个了简易的网盘。实现了账号注册,文件的上传、下载、删除等功能。由于基于Hadoop,参考Dropbox的命名,将其名字定为Doopbox。项目地址:https://github.com/xushvai/Doopbox

业务/应用服务(调用HDFS服务的服务)使用node.js+Express开发。

数据库中只有一个account表 ...


用于修改VMware虚机hosts文件的Python脚本

基于VMware Fusion虚拟机搭建Hadoop集群。宿主系统OSX,虚机均为Linux系统。

配置集群时需要修改每个节点的hosts文件,指出相应节点的IP地址。为保证这些虚机的IP地址不会发生变化,应使用Host-only的联网方式。

在Host-only组网方式下,各节点的hosts只需配置一次,今后就不用修改了,比较方便。只是,要想从宿主直接访问Hadoop接口的话,就没办法了,因为宿主与这些虚机不在一个网络内。

若改成Bridge方式,就可以解决网络不通的问题。但只要宿主机器换了网络环境,这些Bridge到它的虚机的IP就有可能发生变化 ...


实现一个TagCloud

Tag Cloud即:标签云,是把标签汇集起来形成的界面,多出现在一些使用标签来组织内容的页面上,通常就是这种形式:
标签的显示效果是随着其出现的频率或重要程度被不断加强的,越是凸显的标签就说明其出现的频率越高或者越重要。基于这个特点来看,标签云其实起到了推荐和引导的作用。

制作一个简单的Tag Cloud:“被引用次数越多的标签其字号越大”(某个文章的Tag属性中若是设置了某个标签,就说该标签被引用了一次)。

首先要确定标签被引用的次数与字号之间的对应关系,也就是说拿到一个数值x,你得能算出对应的字号f ...


Tcpdump与Wireshark的渊源

1988年春,Steve McCanne在加州大学伯克利分校修完了计算机科学中的编译器课程,当时负责授课的是来自劳伦斯伯克利国家实验室的教授Van Jacobson,这个课程主要讨论了标准编译器的工作原理,包括:词法分析,语法分析,目标代码生成,程序优化等主题。学期末,Steve获得了Van研究小组的暑期实习机会。

不久之后,Steve便成为了由Van领导的“网络研究小组”的正式科研人员。在Steve刚加入这个网络研究小组的时候,Van正致力于TCP拥塞控制方面的研究,他对ARPANET频繁崩溃的机理做出了合理推测,为彻底查明问题,实施有效修复,他需要一个可靠的网络分析工具来进行分析和研究。

起初,Van用的是SunOS平台上的网络分析工具:etherfind,然而,其表现却不尽如人意,复杂的命令格式,令人困惑的协议解析,糟糕的性能,总之,你无法准确高效地看到自己想要的东西,尤其是当LAN中存在大量广播数据包的时候。

在这种情况下,研究工作无法展开,于是,Van放弃了etherfind,进而开发了全新的工具,叫做tcpdump,初期的tcpdump参考了etherfind的部分代码,为避免版权纠纷,Steve ...


集群小结

原本互不相关的n(n > 1)台计算机,以某种方式被组织起来,协同地去完成一些任务,这一“组”机器即为一个集群。

LB(Load Balancing)集群:负载均衡集群

当用单台机器对外提供服务时,随着客户量的不断增加,其所具备的资源将有可能无法满足客户的需求。一旦大量客户并发地请求服务,后端的计算,存储,网络等资源将会吃紧。这种情况下,对客户的服务质量将大大下降(响应变慢),或者根本无法再为用户提供服务。

要解决这个问题,努力方向主要有两个:一是为这台机器增加资源(或换机器),让它变得更强大;二是增加更多的机器,组织成集群,来分担压力。第一种方法叫”scale on”,即:向上扩展,着眼于机器本身,在垂直方向上做文章;第二是”scale out”,即:向外扩展,自己不变,多找几个帮手。

scale on是容易想到的做法 ...


避免误启动Jenkins任务的临时办法

个人使用CI工具jenkins自动化测试与部署工作,日积月累数个任务,出现误操作的可能性还是不小的,今日修复了一个棘手的bug,急着要发布版本进行测试,一不留神点错了任务,本要将新版后端发布到stage环境进行测试(dev->stage任务),结果误点成dev->production任务将其直接发布到了生产环境。

然后想了一些避免误操作的办法,找了一些插件来用,期望能限制特定任务的操作,不过没找到满足需求的插件 ...