Hadoop初接触

       之前学习了下weka,真是相当好用。无论是界面、api可读性、文档丰富程度还是各种算法的可设置参数的自由度。。(口水下),真是居家必备之良器啊。。但性能确实是个问题。。想起之前近40000条实例,做个3属性的监督学习的分类算法,运行将近10分钟。。额,虽然weka的部分算法也支持增量学习和“分布式”,但仍觉得悬乎。干脆试试看hadoop和mahout了。

      hadoop是个家喻户晓的家伙,就不多说了。mahout也是apache旗下产品,提供一些可扩展的机器学习领域经典算法的实现。按照网上大众教程搭建好hadoop的环境后,接下来的就是搭建hadoop开发环境了。虽说eclipse很流行,但它对俺来说,就像养不熟的豆豆,用起来不顺手。俺还是喜欢用netbean(还有VisualVM)。配置netbean-hadoop开发环境,可以参考以下老外的文章:http://arifn.web.id/blog/2010/01/23/hadoop-in-netbeans.html

      需注意的是,这篇文章中的添加Hadoop类库时选的是 Hadoop 0.20.0,而java文件直接用文章中的代码示例的话,会出现几个类是“deprecateed”的情况。这时可以将已选的Hadoop 0.20.0删除,选择Hadoop 0.18.0这个版本的Hadoop类库。也可以仍使用Hadoop 0.20.0,但是java代码就要换成Hadoop 0.20.0以上的发行包中的示例代码。
Copy好代码后,生成jar文件,接下来就是部署到hadoop环境中测试了。俺本来想,如果能本地IDE生成jar包后,再直接部署到远程hadoop,本地IDE还能监测下程序运行情况,真是件乐事。不过,当俺配置后远程的Hadoop Clusters和HDFS后,在运行示例程序的Job时,报错说Hadoop JobClient only run on Unix based system,you can use Karmasphere api to rewrite job in order to run on win system.....T_T算了,手动把示例程序jar包拖到远程Hadoop主机的本地环境中。在HDFS上创建程序需要的input目录,再从远程hadoop主机的本地文件系统中将测试文件导入HDFS上的input中(hadoop dfs -copyFromLocal source destination),运行示例程序jar包(hadoop -jar jarPath inputfilespath outputfilepath ),等执行完后,直接查看结果即可(hadoop dfs -cat ouputfilepath/(.*)_00000)

你可能感兴趣的:(hadoop)