最近想看看什么推荐系统之类的东西,了解下发现常用的就是在big data平台上跑一些协同过滤算法。感觉还是潮流啊,没办法,也弄下玩玩吧,不然又要孤陋寡闻了。于是就想简单地弄个hadoop了。
为什么是windows
上班用的电脑就是windows的啊,还有个macbook,不过暂时没插座了就没用了,如果不用windows的话估计随随便便就搞好了吧。
为什么是intellij idea
电脑就这点内存,这破东西我也不想用啊,可是也没怎么用过其他的,这个ui看上去还行吧就用了,毕竟android studio也就差不多这个破东西。
基本的东西就略过了
虽然说写的这些也是很基本的东西,但是像安装idea啊maven啊新建project啊什么的大谷鸽一下很快就就有能用的信息了,这里就不重复了吧。我主要是想记录一下我谷鸽了好久都是没卵用的东西。
仅仅跑一下最基本的wordcount例子
需要依赖些什么包
maven这东西用起来挺爽的,我这里也用了,在pom.xml里写一下依赖idea就帮你搞定依赖了,就直接把内容记录一下好了。
|
|
需不需要hadoop啊hdfs啊之类的
严格来说,只是跑一下最简单的wordcount,什么集群啊伪集群的都是不需要的,但是依我亲测,windows上的hadoop工具,which provides basic command line utilities for Hadoop on Windows,这个破东西是必须的。只用一台windows电脑,装上idea和maven,下载好windows上的hadoop工具,就是winutils.exe和hadoop.dll那几个文件,建一个工程,copy一下wordcount的代码,run,就ok了。
想想也知道肯定需要一个hadoop的运行程序的,毕竟你写的只是mapreduce程序的逻辑,然后还是要用hadoop去调用的。hadoop官网上的示例都写了,是bin/hadoop jar your_mapreduce.jar这要跑的。你依赖里都是hadoop的库而已,哪来hadoop可执行文件,所以得弄一个啊。像大谷鸽一下就搜到的这些文章,虽然没错,但都tm是标题党。幸好只是基本的尝试的话,这个windows的hadoop工具并不需要跟你依赖的hadoop包版本一致,所以我依赖的2.9.0版本,也可以用2.8.1版本的工具。因为这个现成的是别人弄好的,没法对版本要求太多啊,要自己编译的话那就很蛋疼了。┑( ̄Д  ̄)┍
关于环境变量
虽然我现在还不知道为什么,但有两个环境变量是需要设置的,否则一坨错误就冒出来了。
首先是HADOOP_HOME,这个要设置为前面提到的windows上的hadoop工具所在的目录。更具体一点,是要在%HADOOP_HOME%/bin里找到winutils.exe和hadoop.dll那几个文件,否则就会出现”java.io.FileNotFoundException: java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset.”这样的异常。也可以再代码里设置:”System.setProperty(“hadoop.home.dir”, “路径”);”。
然后是HADOOP_HOME要添加到PATH里面,否则会出现”org.apache.hadoop.io.nativeio.NativeIO$Windows.a
ccess0(Ljava/lang/String;I)Z”这样的错误。有的文章说用管理员权限运行idea能处理这个错误,毛线,忽悠人的。
还有一个不是必须的,hadoop.tmp.dir要设置一下,否则hadoop工具会在你不知道的路径上创建一坨文件目录。可以这样设置:”conf.set(“hadoop.tmp.dir”, “你想要的路径”);”。
最后
目前就记下这些,后面有再补充吧。