文章目录
  1. 1. 一、安装jdk
  2. 2. 二、配置ssh无密码登陆
  3. 3. 三、安装hadoop
  4. 4. 四、配置环境变量
  5. 5. 五、配置hadoop
  6. 6. 六、后记

伪分布模式就是在一台单机上运行hadoop,开发测试的时候非常有用,特别是针对那些想学习又没多余的机子的童鞋。不过初次安装hadoop还是碰到挺多问题的,经查找都是一些版本问题引起的,当然还有权限和配置不当的关系。

首先去下载jdk和hadoop,我下的是 jdk-6u31-linux-x64.binhadoop-0.20.205.0.tar.gz

一、安装jdk

将下载过来的文件存到~目录下然后执行:

chmod +x jdk-6u31-linux-x64.bin
./jdk-6u31-linux-x64.bin

安装完后会在~目录下出现一个jdk1.6.0_31目录,记住这个路径,等会要在hadoop-env.sh文件里面设置环境变量

二、配置ssh无密码登陆

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

用如下命令验证一下:

ssh localhost

三、安装hadoop

将下载过来的hadoop解压到~目录,并进入hadoop-0.20.205.0目录中。 :

tar xvzf hadoop-0.20.205.0.tar.gz -C ~/
cd ~/hadoop-0.20.205.0

四、配置环境变量

在conf/hadoop-env.sh文件的最后添加如下代码:

export JAVA_HOME=~/jdk1.6.0_31
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

五、配置hadoop

修改conf/core-site.xml文件,添加namenode的配置

1
2
3
4
5
6
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

修改conf/hdfs-site.xml文件,设定文件在hdfs中只保留一份,因为伪分布只有一台datanode。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<configuration>
<!-- dfs.name.dir和dfs.data.dir最好设置一下 -->
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

tip

这里要使用绝对路径。

修改conf/mapred-site.xml文件,添加jobtracker配置

1
2
3
4
5
6
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>

最后运行bin目录下的start-all.sh就可以启动了。 :

bin/start-all.sh

可以通过运行jdk的bin里的jps命令查看是否已经成功运行。

六、后记

刚开始配置这个的时候下了个jdk1.7版本的,结果死活无法启动,提示没有-jvm参数。后来想到可能是版本问题就又去下了个jdk1.6的,然后启动namenode成功了。想复制一个文件到hdfs,发现jobtracker居然没启动起来。错误提示信息如下:

Does not contain a valid host:port authority: local

看了半天没看出来就又去网上找了找别人写的教程,原来我下的这个版本的配置文件是分开的,而官网上的0.18版本的教程里面的配置文件都是写在core-site.xml文件里面的。所以jobtracker的配置无法识别到了。

有些linux下如果没有配置dfs.name.dir和dfs.data.dir的目录的话有可能会出现明明live datanodes有一个,而且也不是处在safemode下,但就是put的时候会出错:

could only be replicated to 0 nodes, instead of 1

提示没有datanode可用,后来经常多方排查才知道,原来像ubuntu和debian之类的tmp目录的文件系统是不能被hadoop所支持的,所以最好自己设置一下。

文章目录
  1. 1. 一、安装jdk
  2. 2. 二、配置ssh无密码登陆
  3. 3. 三、安装hadoop
  4. 4. 四、配置环境变量
  5. 5. 五、配置hadoop
  6. 6. 六、后记