1、采用一台机器开两个虚拟机的方式构成两台电脑的环境,用root登录。
分别查看其IP地址:输入# ifconfig,可得主机IP:192.168.1.99;分机为:192.168.1.100。
2、在两台机器上的/etc/hosts均添加相应的主机名和IP地址:这里主机名命名为shenghao,分机名命名为slave:保存后重启网络:3、两台机器上均创立hadoop用户(注意是用root登陆)# useradd hadoop# passwd hadoop输入111111做为密码登录hadoop用户:注意,登录用户名为hadoop,而不是自己命名的shenghao。
4、ssh的配置进入centos的“系统→管理→服务器设置→服务,查看sshd服务是否运行。
在所有的机器上生成密码对:# ssh-keygen -t rsa这时hadoop目录下生成一个.ssh的文件夹,可以通过# ls .ssh/来查看里面产生的私钥和公钥:id_rsa和id_rsa.pub。
更改.ssh的读写权限:# chmod 755 .ssh在namenode上(即主机上)进入.ssh,将id_rsa.pub直接复制为authorized_keys(namenode的公钥):# cp id_rsa.pub authorized_keys更改authorized_keys的读写权限:# chmod 644 authorized_keys 【这个不必须,但保险起见,推荐使用】然后上传到datanode上(即分机上):# scp authorized_keys hadoop@slave:/home/hadoop/.ssh# cd .. 退出.ssh文件夹这样shenghao就可以免密码登录slave了:然后输入exit就可以退出去。
然后在datanode上(即分机上):将datanode上之前产生的公钥id_rsa.pub复制到namenode上的.ssh目录中,并重命名为slave.id_rsa.pub,这是为了区分从各个datanode上传过来的公钥,这里就一个datanode,简单标记下就可。
# scp -r id_rsa.pub hadoop@shenghao:/home/hadoop/.ssh/slave.id_rsa.pub复制完毕,此时,由于namenode中已经存在authorized_keys文件,所以这里是追加,不是复制。
在namenode上执行以下命令,将每个datanode的公钥信息追加:# cat slave.id_rsa.pub >> authorized_keys这样,namenode和datanode之间便可以相互ssh上并不需要密码:然后输入exit就可以退出去。
5、hadoop的集群部署配置hadoop前一定要配置JDK,请参考相关资料,这里就不赘述了。
将下载好的hadoop-0.19.0.tar.gz文件上传到namenode的/home/hadoop/hadoopinstall解压文件:# tar zxvf hadoop-0.19.0.tar.gz在/erc/profile的最后添加hadoop的路径:# set hadoop pathexport HADOOP_HOME=/home/hadoop/hadoopinstall/hadoop-0.20.2export PATH=$HADOOP_HOME/bin:$PATH之后配置hadoop/conf中的4个文件:(1)*******配置core-site.xml********<configuration><property><name>hadoop.tmp.dir</name><value>/home/hadoop/hadoopinstall/tmp</value>(注意,请先在hadoopinstall目录下建立tmp文件夹)<description>A base for other temporary directories.</description></property><!-- file system properties --><property><name></name><value>hdfs://192.168.1.99:9000</value></property></configuration>(2)************配置mapred-site.xml**************<configuration><property><name>mapred.job.tracker</name><value>192.168.1.99:9001</value></property></configuration>(3)************配置hdfd-site.xml***************<configuration><property><name>dfs.replication</name><value>1</value>(replication 是数据副本数量,默认为3,datanode 少于3台就会报错)</property></configuration>(4)配置masters,加入shenghao 192.168.1.99 (建议同时去掉localhost)(5)配置slaves,加入slave 192.168.1.98 (建议同上)6、将namenode的hadoop复制到datanode之上,可以用上面所述的传送指令的方法打包传送,也可以通过VMtools的文件夹共享功能复制过去。
之后在datanode上将hadoop的路径添加到/etc/profile中(这个不是必须的):# set hadoop pathexport HADOOP_HOME=/home/zkl/hadoopinstall/hadoop-0.20.1export PATH=$HADOOP_HOME/bin:$PATH至此,配置完毕。
7、在namenode(主机)上启动hadoop并查看集群状态格式化hadoop:启动hadoop:<1>先启动dfs<2>再启动mapred【这里推荐用start-dfs.sh和start-mapred.sh来代替start-all.sh】【在退出hadoop时,也用相应的stop-dfs.sh和stop-mapred.sh来代替】查看namenode上的进程:查看datanode上的进程:在namenode(主机)上查看集群状态:7、在hadoop上执行wordcount任务将conf/目录下的core-site.xml做为输入放在input2中;执行任务,并将结果输出至output文件夹中这两个步骤如下图:查看输出结果信息:遇见的问题与解决方案:1、hadoop格式化失败###############################################################################[hadoop@shenghao hadoop-0.20.2]$ bin/hadoop namenode -format10/11/14 12:12:19 INFO Node: STARTUP_MSG:/************************************************************STARTUP_MSG: Starting NameNodeSTARTUP_MSG: host = shenghao/192.168.1.99STARTUP_MSG: args = [-format]STARTUP_MSG: version = 0.20.2STARTUP_MSG: build = https:///repos/asf/hadoop/common/branches/branch-0.20 -r 911707; compiledby 'chrisdo' on Fri Feb 19 08:07:34 UTC 2010************************************************************/10/11/14 12:12:19 INFO namenode.FSNamesystem: fsOwner=hadoop,hadoop10/11/14 12:12:19 INFO namenode.FSNamesystem: supergroup=supergroup10/11/14 12:12:19 INFO namenode.FSNamesystem: isPermissionEnabled=true10/11/14 12:12:19 ERROR Node: java.io.IOException: Cannot create directory/home/hadoop/hadoopinstall/tmp/dfs/name/currentatmon.Storage$StorageDirectory.clearDirectory(Storage.java:295)at node.FSImage.format(FSImage.java:1086)at node.FSImage.format(FSImage.java:1110)at Node.format(NameNode.java:856)atNode.createNameNode(NameNode.java:948)at Node.main(NameNode.java:965)10/11/14 12:12:19 INFO Node: SHUTDOWN_MSG:/************************************************************SHUTDOWN_MSG: Shutting down NameNode at shenghao/192.168.1.99************************************************************/###############################################################################解决方案:此时,在hadoop用户下,用ls指令可能也看不到hadoopinstall文件夹里要求新建的tmp文件夹,主要原因是在操作配置的时候,hadoop的解压和tmp文件夹的建立可能是在root下建立的,故而hadoop没有权限进行读写。