在讨论如何从windows上传日志到hdfs时,除cygwin外,我们还测试了另外一种手段:webdav。
hdfs-webdav 下载
扩展Hadoop hdfs,实现webdav协议. 以便将hdfs映射为本地文件夹.
具体下载目录在 /2012年资料/1月/16/使用WebDAV从Windows上传日志到HDFS/
网上关于使用webdav进行上传日志的文章,基本上都是以上述链接文档为参考的。而且上述链接文档说的很详细,这里就不再赘述,安装完以后,即可从网页上看到效果。如图:
但是我们在windows上挂载hdfs目录时,出了点问题:必须与webdav同网段的windows机器才能挂载webdav目录!
为了解决这个问题,我们写了一个cshell程序,不用再挂载webdav目录了,直接连接URL进行上传;后来发现一个更简便的方法,就是使用curl的windows版直接上传,创建一个bat文件,用于计划任务,定时执行上传动作。我的bat文件示例如下:
for /R "G:\test" %%s in (*.*) do ( G:\curl_722_0\curl.exe -T %%s :8080/hdfs-webdav/test/ )
注意:webdav的地址最后必须要有一个斜杠 (/)!否则会上传失败。
--------------------------------------------------------------
2011-10-09补充:
按上述做法搭建成功webdav,但是在上传日志到hdfs的时候,发现了一个问题:webdav按照64M大小的分块进行存储文件,默认拷贝3份副本;而我的集群设置为128M的块大小,2份副本。两者不符。
解决办法是,把hadoop的hdfs-site.xml文件拷贝到webdav的WEB-INF/classes目录下,跟hadoop-site.xml文件放到一起。