配置Hadoop,hadoop


Hadoop的各个组件是通过XML配置的。
2.0以后,配置文件的位置发生了小变化,我安装的Hadoop 2.4.1,配置文件的位置在$HADOOP_INSTALL/etc/hadoop/
在初期运行MapReduce DEMO时,我们只需关注三个基本配置就好:
core-site.xml
hdfs-site.xml
yarn-site.xml(2.0后的版本,MapReduce运行在yarn上)


Hadoop有三种运行模式:本地模式(Standalone or local mode),伪分布式模式(Pseudodistributed mode)和分布式模式(Fully distributed mode)。


Standalone mode不需要配置,也不需要启动Daemon进程,学习时可以使用这个模式,Pseudodistributed mode和Fully distributed mode本质是一样的,只不过Pseudodistributed mode是只有一台机器的Fully distributed mode.


下面说一下Pseudodistributed mode如何配置:
core-site.xml中配置:fs.default.name = hdfs://localhost/


hdfs-site.xml中配置:dfs.replication = 1


yarn-site.xml中配置:yarn.resourcemanager.address = localhost:8032, yarn.nodemanager.aux-services = mapreduce.shuffle




接下来,我们需要配置SSH。因为Pseudodistributed mode和Fully distributed mode没有区别,只不过是只有一个节点的分布式而已。而Hadoop通过SSH来启动各个节点的Daemon,所以我们需要让SSH能够不需要输入密码而登录当前localhost。具体做法如下:
先安装SSH,如果是在Ubuntu下,可以使用命令:
安装:sudo apt-get install openssh-server
服务:
sudo service ssh start/stop/restart/status
生成key
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
将key存入~/.ssh/authorized_keys,这样下次登录时就不需要输入密码了。
这时,我们输入:ssh localhost,如果不需要输入密码,直接登录成功,就可以了。


下面插一段,我用的是64位的Ubuntu,而hadoop官网提供的版本是基于32位环境编译的,必须下载源码,在64位系统下重新编译才能正确运行下面命令。编译的方法我是参考这篇文章的:http://blog.csdn.net/tianfei_1984/article/details/20030383
其实就是要编译完之后生成的$HADOOP_INSTALL/lib/native/目前下的那个动态库。


接下来是format hdfs,就像使用一块新硬盘一样,要对其进行格式化。
执行命令:hadoop namenode -format


启动daemon进程:
start-dfs.sh
start-yarn.sh
结束daemon进程:
stop-dfs.sh
stop-yarn.sh


这四个命令脚本位于$HADOOP_INSTALL/sbin/目录下,因为之前我们配置环境变量时把这个目录加到PATH下了,所以可以直接运行。


有可能遇到JAVA_HOME找不到的问题,不了解原因,我配置JAVA_HOME环境变量,但还是找不到,不知道为什么,最后在$HADOOP_INSTALL/etc/hadoop/下找到hadoop-env.sh脚本,打开看里面有
export JAVA_HOME=${JAVA_HOME}
按理说这就应该可以呀,但是把它注释掉,改成JAVA_HOME的真实路径
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_67
问题就解决了。


用jps命令可以确认hadoop daemon进程启动是否成功。
jps是jdk提供的工具,类似于Linux里的ps命令,查看虚拟机进程。


看到ResourceManager, DataNode, SecondaryNameNode都运行起来了


通过浏览器访问:localhost:8088,可以看到ResourceManager的Web UI.












hadoop配置

因为hadoop很多信息都默认存在/tmp目录下,重启之后这个目录下的文件可能被删除了。所以需要修改这些默认配置,主要有dfs.name.dir、dfs.data.dir等,可参考hadoop目录下docs下的文档
 

hadoop 配置问题

bin/hadoop-daemon.sh start DataNode,这个命令是添加节点的时候才会用到的,如果你是在添加节点,那么前提要让新添加的这台datanode和已经配置好的机器可以无密码访问,配置也要一样,比如说hadoop/conf文件下的配置,java的安装等等。然后在去执行上面的命令。
 

相关内容