hadoop程序开发之——单机配置

hadoop共有三种配置模式:单机、伪分布式、完全分布式。

单机模式:即是hadoop安装完成后的默认模式。

安装完成后,不需要修改任何配置文件,就是按照单机模式运行的。

此时,hadoop程序是作为一个单独的java进程来运行的。

作用:方便程序调试。

运行hadoop自带的jar包程序,验证hadoop是否能正确运行。

例如1,运行grep例子:

创建输入文件夹:mkdir ./input。在/usr/local/hadoop目录下创建程序输入文件夹input。

拷贝配置文件.xml到input文件夹:hadoop@peter-HP-ENVY-Notebook:/usr/local/hadoop$ cp ./etc/hadoop/*.xml ./input/

运行jar包:./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep ./input/ ./output 'dfs[a-z.]+'

警告信息:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

解决方案:找到hadoop安装根目录下/etc/hadoop/的hadoop.env.sh文件。

修改HADOOP_OPTS为:export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib:$HADOOP_PREFIX/lib/native"。

报警消失:网上认为这个原因是操作系统位数不同的解释,我觉得是不对的。用命令file能看到./lib/native/libhadoop.so.1.0.0文件已经支持64位了。

详见参考文献1.2

接着运行,报错如下:

java.net.ConnectException: Call From peter-HP-ENVY-Notebook/127.0.1.1 to localhost:9000 failed on connection exception: java.net.ConnectException: 拒绝连接。

这个很大可能是我之前运行伪分布式hadoop程序时,修改了那几个*-site.xml文件。导致不是默认的单机运行模式。这里不再修改过来。

查看运行结果:cat ./output/*


补充说明:

有些帖子说,运行单机模式时,需要设置hadoop安装目录下/etc/hadoop/下的hadoop-env.sh脚本文件。

设置JAVA_HOME变量如下:export JAVA_HOME=/usr/lib/jvm/java

没验证过,最好设置一下。

再次运行hadoop程序时,如果还放在./output文件夹中,会报错。

必须删除./output,才会成功。删除命令为:rm -rf ./output

参考文章:

1、http://www.aboutyun.com/thread-13073-1-1.html

2、http://www.dataguru.cn/thread-494065-1-1.html

你可能感兴趣的:(hadoop)