前言:实验室网络真心坑爹啊有木有!花了我整整一个周末终于把Hadoop配置成功了,虽然只有两台电脑(自己笔记本+实验室的台式机)= =,期间各种错误多得我都记不清了...
准备工作:Java sdk 1.6及以上配置完成,ssh配置完成。
开始:在master 机器上更改配置,然后再拷贝到 slave 机器上,这样所有机器上的 hadoop 就能保证一模一样了。我这里把台式都hostname改为了master、笔记本的hostname改为了slave1(在ect/hostname中修改,下面就这么区分了),并且把hosts文件也做了相应都修改。
下载并且解压 hadoop-0.20.2.tar.gz,放到自己想放都地方去。我放到了/root/下。
Ok,更改配置开始了,包括 hadoop-env.sh , masters , slaves , core-site.xml, hdfs-site.xml, mapred-site.xml 一共 6 个文件。
hadoop-env.sh
添加以下两行(根据实际路径可能有变化哦):
export JAVA_HOME=/root/hadoop/jdk1.7.0_07
masters:
master
slaves:
slave1
core-site.xml:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
<name>hadoop.tmp.dir</name>
<value>/root/hadoop/tmp-hadoop</value>
<description>这里这个 tmp-hadoop 目录需要自己手动建立,在 master 和 slave1机器上都需要手动创建 </description>
</property>
</configuration>
hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
<description>这里指定数据文件默认保留几份备份,默认的是 3 ,自己可以指定,测试时可以指定 1 减少空间需求。
</description>
</property>
</configuration>
mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapred.job.tracker</name>
<value> master :9001</value>
<description>同意这里指定 Master 的 IP 或者 host ,最好指定 IP 。
</description>
</property>
</configuration>
至此,所有配置已经完成,hadoop 的配置文件只需要更改自己需要更改的,以上就仅仅更改了很少属性,而其自身有相当多的属性, hadoop 在工作时如果用户更改了,则使用更改后的属性值,如果没有在 *-site.xml 文档里出现,则 hadoop 使用默认的属性,默认属性值 *-default.xml 文档里(默认文档中 /hadoop-0.20.2/src/ 目录下);当然也可以将整个 -default.xml 文档内容拷贝过来,修改需要更改的属性。
以上配置是在master 上进行的,现在将整个 hadoop-0.20.2 文件夹拷贝到 slave 机器上,使用命令:
[root@master:~]$ scp -r root/hadoop/hadoop-0.20.2 slave1:/root/hadoop/
启动hadoop
Hadoop的命令在/hadoop-0.20.2/bin/目录下,启动过程在master机器上进行。
启动之前需要进行格式化,类似于Windows文件系统格式化,hadoop的文件系统也需要格式化后才能被hadoop使用。
[hadoop@hadoop1:hadoop-0.20.2]$bin/hadoop namenode -format
此时配置文件里设置的HadoopTemp目录会发生变化,check一下了。如果此命令出错,请百度/Google了。
启动:
[hadoop@hadoop1:hadoop-0.20.2]$bin/start-all.sh
如果有错误,请查看log文件
测试:
[hadoop@hadoop1:hadoop-0.20.2]$bin/hadoop dfs -mkdir testdir #创建一个文件夹
[hadoop@hadoop1:hadoop-0.20.2]$bin/hadoop dfs -put /home/hadoop/test.txt /testdir/test.txt
#上传一个文件
[hadoop@hadoop1:hadoop-0.20.2]$bin/hadoop dfs -ls #列出文件目录
当然也可以访问:
停止:bin/stop-all.sh