刚接触linux大概半个月。只是熟悉一些简单的指令。装个hadoop,还是照着练数成金的视频教程装的。还装了整整两天。其实第一次装就没有把hadoop装到用户目录下,不然也就成功了。就因为这个原因。又重装,又出新的错误。现在给出一个新手小白也能装上的方案。
要准备的软件:VMware workstation ,ssh client,linux,hadoop-0.20.2
1.首先在VMware 中装上三个linux系统,并根据windows中的VMnet地址,配置要linux中的IP地址。这块大家可以看其他前辈的帖子。最后要达到linux和windows之间互ping可以ping通。然后用3个ssh client分别连接到三个虚拟机linux系统上。我的三个linux系统的IP分别为192.168.16.77,192.168.16.88,192.168.16.99.
2。在每个linux系统中装上jdk,并且要配置/etc/profile文件中的JAVA_HOME,PATH,CLASSPATH.EXPORT。这部分大家也可以参考其他的帖子。
3,配置/etc/hosts。在其中加入三句语句,分三行写哦。
192.168.16.77 h1
192.168.16.88 h2
192.168.16.99 h3
其实配置这个文件的作用就是今后你写 h1,系统就能自动将其翻译成192.168.16.77。
注意事项:在三个linux系统中都要修改。其次是修改之后必须得reboot才能生效。
4.在每个系统中添加相同的用户 hadoop用于启动运行hadoop。这边有点绕口啊,前面的第一个hadoop是你自己useradd的用户,第二个是运行hadoop程序。
即你要在三个系统中分别useradd hadoop,passwd hadoop。
注意:三个系统中的用户名一定要一样。
5.设置免密码登录:
将三个linux系统logout,然后用hadoop用户分别登陆三个linux系统。默认就是进入用户的目录下。输入
ssh-keygen -t rsa。然后其中输入几个回车就好了。然后在用户目录下输入 ls -la 就可以看到.ssh目录。
进入.ssh文件夹中。执行一条命令 cp id_rsa.pub authorized_keys.
然后在其他两个系统分别按照上述步骤操作。最后。将三个系统的中authorized_keys都复制到每个系统的中的authorized_keys中。这个就可以实现ssh免密码登陆了。
6.将hadoop-0.20.2复制到第一台机器的h1的hadoop用户的目录下。用tar -zxvf hadoop-0.20.2.tar.gz命令进行解压。
7.配置四个文件。
首先进入hadoop-0.20.2目录的conf目录中,vihadoop-env.sh文件,将JAVA_HOME修改成自己的路径,并且去掉前面的#号、
再配置conf 目录下的core_site.xml.如下
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://h1:9000</value>
</property>
</configuration>
再配置mapred_site.xml如下:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>h1:9001</value>
</property>
</configuration>
最后配置hdfs_site.xml,如下
[hadoop@h3 conf]$ cat hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
#<property>
#<name>dfs.data.dir</name>
#<value>/home/hadoop/dfs/data</value>
#</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
注意这些配置必须在h1主机上面进行配置。注意这里的第一个配置,我一开始是没有配置的。找了半天没找到。也就是存数据的地方。最后找到在/tmp/hadoop-hadoop(第一个为hadoop程序,第二个是我的用户名)/dfs/data/current。这个目录中保存了所谓的VERSION和你在hadoop使用的数据,blk*********************形式存放的。也就是说我不配置这个路径也是可以的。我看练数成金的视频没有配置就没配置。然后他视频又要找数据块,我一开始又找不到,就按网上的教程重新配置之后,又对namenode进行格式化,格式化就造成了namenode和datanode的namespaceID不一样。说改成一样就好了。所以就又去找ID,找到后改成一样的了,还是不行。所以现在准备第三次重装。这已经是我装hadoop的第三天了。真的是没日没夜的装啊。每次装都能碰到新的问题。虽然感觉很繁琐。但是也感觉的到自己真的是在进步啊!加油啊!!!
8.配置主从机器。
在conf目录下面,配置vi masters ,输入h1。再配置 vi slaves,输入 h2,h3即可。
9.将在h1主机上配置好的hadoop-0.20.2拷贝到其他两台主机上面。
将目录切换到用户hadoop目录下,然后执行 scp -r ./hadoop-0.20.2 h2:/home/hadoop.
再执行scp -r ./hadoop-0.20.2 h2:/home/hadoop.
10.然后格式化namenode.
切换到hadoop0.20.2目录下面。执行bin/hadoop namenode -format
11最后执行启动任务。bin/start-all.sh即可。
查看系统运行:在h1 上切换到jdk 的安装目录,再到bin目录,再执行jps可以看到
6877 JobTracker
7012 Jps
6703 NameNode
6821 SecondaryNameNode。
在h2,h3执行相同的jps,可以看到
[hadoop@h3 bin]$ jps
4929 DataNode
5051 Jps
4985 TaskTracker。
这样就证明系统完全运行。