首页 > 大数据 > Hadoop > hadoop搭建集群
在看了hadoop-daemon.sh代码后,我发现脚本是通过pid文件来停止hadoop服务的,而我的集群配置是
仔细寻思下,确实是这个道理。
hadoop在启动时,会在daemon 通过pid先杀死hadoop进程。可问题是,stopall的时候,所有进程都已经杀死!
所以觉得是hadoop-daemon启动的问题。所以试着在start-all。sh里添加 kill -9 `cat hadoop.pid`
结果扔未解决问题。
但又仔细读了一下hadoop-daemon.sh脚本。发现其在启动之前的时候,根据pid里的进程号杀进程。hadoop进程启动后,会把进程id写入pid中。hadoop服务关掉之后,pid文件自然没用了。那么,还留着它干神马?所以最后在启动hadoop之前,先删掉pid文件。果然在无此错误!
2:Directory
/data/tmp/dfs/name is in an inconsistent state
出现这个错误是因为这个文件目录不存在,手动添加就好。
3:java.io.IOException: NameNode is not formatted.
重新启动hadoop的话,可能是因为上次启动hadoop不成功,namenode没被格式化,重新格式化一下namenode就行了。
bin/hadoop name -format
然后重新启动bin/start-all.sh 就行了
4:出现$JAVA_HOME is noe set
在conf文件夹下找到hadoop-encv.sh,编辑export JAVA_HOME=你系统里面JAVA_HOME的路径,保存重新运行即可
5.bin/stop-all.sh后,用jps查看还有namenode、jobtracker等进程存在。
解决方法:利用netstat -apt 查看机器上的tcp的进程,把与hadoop有关的java进程终止
然后删除hadoop.tmp.dir下的所有文件,把tmp下的log文件删除,格式化hadoop文件系统:
bin/hadoop namenode
-format
然后重启hadoop即可。
菜鸟学东西就是慢啊!!!!搭了一天,勉强把三台机子搭成集群了
1、首先是编辑三台机子的/etc/hosts文件:
172.18.217.209 master
172.18.217.79 slave1
172.18.217.69 slave2
2、(三台机子都需要)配置java_home
编辑~/.bashrc 文件,添加
export JAVA_HOME=/usr/lib/jvm/java-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
然后再输入命令 source ~/.bashrc,使其生效,输入echo $JAVA_HOME,若输出/usr/lib/jvm/java-openjdk-amd64 则表明java环境变量设置成功
3、在三台机子上均增加新用户
增加新用户,如hadoop:sudo
adduser hadoop
输入密码后,会有一大堆提示,回车就行,输入密码就输入密码。
4、配置ssh
在各台机子上,切换到新创建的用户上:
su hadoop
然后 ssh-keygen
-t rsa
接下来在各节点上,master节点
cd .ssh
cat id_rsa.pub >>authorized_keys
scp
authorized_keys hadoop@slave1:/home/hadoop/.ssh
在slave1节点:
cd .ssh
cat id_rsa.pub >>authorized_keys
scp authorized_keys hadoop@slave2:/home/hadoop/.sshcd .ssh
cat id_rsa.pub >>authorized_keys
scp authorized_keys hadoop@master:/home/hadoop/.ssh
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22549829/viewspace-1120130/ ,如需转载,请注明出处,否则将追究法律责任。