hadoop相关的文档比较详细,基本上照做即可。但是因为是FreeBSD下使用,所以一些细节需要注意。另外,因为仅单机使用,作为开发测试环境,所以设置都是伪分布式的。
hadoop
FreeBSD有hadoop2.7.2的package。所以安装很简单。
sudo pkg install hadoop2
使用参考hadoop2.7.3Setting up a Single Node Cluster即可。其中需要注意的点:
配置文件目录在/usr/local/etc/hadoop
/usr/local/etc/hadoop/core-site.xml内容:
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>
如果不想hadoop将目录创建在/tmp下,可以添加:
<property> <name>hadoop.tmp.dir</name> <value>/your/target/hadoop/directory</value> </property>
/usr/local/etc/hadoop/hdfs-site.xml内容:
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
另外,还有一个配置文件文档中没有提到:/usr/local/etc/hadoop/slaves,内容为命令"hostname"的输出(注意/etc/hosts里要有该hostname的配置)。
若没有该配置文件slaves,则后面执行"start-dfs.sh"的时候不成功,没有datanode进程。启动过程中会有log提示:
cat: /usr/local/etc/hadoop/slaves: No such file or directory
权限
文档中提到需要可以无密码ssh到localhost,而后面提到的start-dfs.sh需要root执行(记得好像是要在/var下写log之类),所以实际是需要root可以ssh登录localhost。将/etc/ssh/sshdconfig中的“PermitRootLogin no”修改为“PermitRootLogin yes”,执行:
sudo service sshd onestart sudo hdfs namenode -format sudo start-dfs.sh
注意也要用sudo执行jps查看进程。有三个进程“NameNode“, ”SecondaryNameNode“, ”DataNode“表示成功。
因为前面是用root执行的命令,所以文档中提到的创建目录需要修改如下:
sudo hdfs dfs -mkdir /user sudo hdfs dfs -mkdir /user/<username> sudo hdfs dfs -chown -R <username> /user/<username>
这样后面的hadoop job命令就可以用帐户来执行了。参照文档,稍作修改,即可执行hadoop job了。
hbase
然而FreeBSD下没有hbase package,而ports里的hbase已经broken。没关系,直接去官网下载即可。我下载的是hbase-1.2.4-bin.tar.gz。
tar zxf hbase-1.2.4-bin.tar.gz
sudo mv hbase-1.2.4 /usr/local
echo "set path = ($path /usr/local/hbase-1.2.4/bin)" >> ~/.tcshrc
source ~/.tcshrc
别忘记还要设置JAVAHOME和CLASSPATH。配置参考官网文档[[http://hbase.apache.org/book.html#quickstart]]。
配置文件所在目录,当然是/usr/local/hbase-1.2.4/conf了。按照文档配置好hbase-site.xml, standlone模式直接用普通用户执行start-hbase.sh即可。用jps可以查看到HMaster。可以参照文档执行hbase shell,或者参考https://github.com/hexingb/hadoopdemo。
Pseudo Distributed模式类似,只需要注意文档目录权限和hdfs端口即可。