ITPub博客

首页 > 大数据 > Hadoop > hadoop搭建集群

hadoop搭建集群

Hadoop 作者:wandifei 时间:2013-07-13 09:40:36 0 删除 编辑
老板给了个方向 要去搞分布式 要搭hadoop 学习分布式和集群
在实验室装了几台机子之后 开始折腾hadoop 一开始问题就一大堆了
1:
在搭建hadoop集群时,又出现这个新异常。从前并没见过。
jobtracker running as process 4823. Stop it first
当然,不止jobtracker ,也有namenode,datenode等等。

在看了hadoop-daemon.sh代码后,我发现脚本是通过pid文件来停止hadoop服务的,而我的集群配置是 使用的默认配置,pid文件位于/tmp目录下,于是我对比了/tmp目录下hadoop pid文件中的进程idps ax查出来的进程id,发现两个进程id不一致,终于找到了问题的根源。

仔细寻思下,确实是这个道理。

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进程终止

      kill -9 进程号

然后删除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   Enter,按默认设置

接下来在各节点上,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/.ssh
在slave2节点:

cd .ssh

cat id_rsa.pub >>authorized_keys

scp authorized_keys hadoop@master:/home/hadoop/.ssh
master节点:
scp authorized_keys hadoop@slave1:/home/hadoop/.ssh
scp authorized_keys hadoop@slave2:/home/hadoop/.ssh
至此,从master节点ssh到各slave点均不需要密码验证了,可输入:
ssh slave1
作测试,若出错则应该是

authorized_keys文件的权限问题,可对所有节点root用户执行:
chmod  600  authorized_keys
5、安装hadoop软件
下载hadoop1.1.2的包,解压:
tar -zxvf hadoop-1.1.2.tar.gz
进入conf文件夹,编辑3个配置文件:core-site.xml  hdfs-site.xml  mapred-site.xml
core-site.xml:


    
         fs.default.name
        hdfs://master:9000
    

    
     hadoop.tmp.dir
    /data/hadoop-data    //这里需手动在/data下创建一个hadoop-data文件夹
    



hdfs-site.xml:


   
    dfs.replication
     2
   



mapred-site.xml:


   
    mapred.job.tracker
    hdfs://master:9001
   



另外需配置一下hadoop-env.sh中:
# The java implementation to use.  Required.
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64

配置masters文件,将localhost改成Master;
配置slaves文件,将localhost改成:
slave1
slave2
6、master节点向各节点复制配置好的hadoop
scp -r /home/hadoop/hadoop-1.1.2/hadoop-1.1.2/ hadoop@slave1:/home/hadoop/hadoop-1.1.2/
scp -r /home/hadoop/hadoop-1.1.2/hadoop-1.1.2/ hadoop@slave2:/home/hadoop/hadoop-1.1.2/
7、启动hadoop
在matser节点中,cd进入到hadoop-1.1.2中,执行命令:
bin/hadoop namenode -format   //格式化namenode
然后执行:
bin/start-all.sh
在master节点上只能看到namenode和jobtracker,看不到datanode和tasktracker:
9341 JobTracker
9635 Jps
8928 NameNode
9239 SecondaryNameNode
同样的,在slave节点上,看不到namenode和jobtracker,只能看到datanode和tasktracker:
9599 DataNode
9839 TaskTracker
9978 Jps

还没想到要来跑什么程序,不过能搭起来,在日志中没报错,还算顺利了,菜鸟在路上,要继续努力!!!!

 

<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22549829/viewspace-1120130/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-09-17