Hadoop伪分布模式简易安装手册

那本《Hadoop权威指南》入手了漫长时间,一直处于看了小半的状态。最近晚上有点空闲时间,准备重新开看。时间过了蛮久,机器都重装过了,hadoop当然需要重新安装,写个简化安装手册,免得以后每次都要去看我写在书上的小抄。

0. 上下文环境

操作系统: Fedora18 x86_64

Java环境: 1.7.0_17 设置环境变量JAVA_HOME和bin在

Hadoop: 1.1.2 (下的那个hadoop-1.1.2-bin.tar.gz包,2.x因为还在alpha版本就暂时算了,其实书上说的还在0.x版本)

1. 创建用户hadoop 设置密码

在hadoop用户的主目录解压hadoop-1.1.2-bin.tar.gz,在hadoop用户主目录创建目录hadoop-data用做hadoop的数据目录

给hadoop的程序目录和数据目录及它们的子目录设定为hadoop所有(chown -R)

修改hadoop主目录的~/.bash_profile文件,添加HADOOP_HOME指向hadoop的程序目录,以及将$HADOOP_HOME/bin添加到path里面(因为是hadoop用户的主目录 就没有必要加到/etc/profile里面了),之后注销重新登陆hadoop用户

2. 修改配置文件

修改$HADOOP_HOME/conf/hadoop-env.sh 将其中的export JAVA_HOME改为本机的JAVA_HOME路径,(光靠在profile里面添加JAVA_HOME并不能正常启动Hadoop)

修改$HADOOP_HOME/conf/core-site.xml 添加两个配置项fs.default.name和hadoop.tmp.dir指定到刚才创建的数据目录上(默认是/tmp目录,Linux重启会会清空它所以一定要改)

<property><name>fs.default.name</name><value>hdfs://localhost/</value></property>
<property><name>hadoop.tmp.dir</name><value>/home/hadoop/hadoop-data</value></property>

修改$HADOOP_HOME/conf/hdfs-site.xml 添加两个配置项dfs.replication和dfs.http.address

<property><name>dfs.replication</name><value>1</value></property>
<property><name>dfs.http.address</name><value>localhost:50070</value></property>

修改$HADOOP_HOME/conf/mapred-site.xml 添加配置项mapred.job.tracker

<property><name>mapred.job.tracker</name><value>localhost:8021</value></property>

3. 修改好上述文件后,执行命令初始化namenode,执行成功后可以看到数据目录下会产生相应的文件

hadoop namenode -format

运行$HADOOP_HOME/bin/start-all.sh 输入hadoop用户的密码启动,运行jps可以看到hadoop的TaskTracker,JobTracker,DataNode,NameNode,SecondaryNameNode都已经启动了,执行如下命令返回正常,这样基本的配置就完成了。

hadoop fs -ls ~

4. 修改ssh配置,让hadoop启动时不需要输入密码(本节参考网上文章)

在hadoop用户下执行命令

ssh-keygen -t rsa -f ~/.ssh/id_rsa

直接回车使用空密码,这样就生成了id_rsa和对应的公钥id_rsa.pub文件。再将公钥添加到对应用户(这里其实还是hadoop用户)的~/.ssh/authorized_keys中

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

赋予.ssh文件夹权限711,authorized_keys的权限644

然后启动ssh-agent

eval `ssh-agent -s`

然后添加公钥

ssh-add

这样我们用hadoop用户执行start-all.sh和stop-all.sh命令都不需要再输入密码了。为了以后每次登陆都让ssh-agent启动,我们在/etc/profile.d/下添加一个文件ssh-agent.sh,内容如下:

#!/bin/sh
if [ -f ~/.agent.env ]; then
        . ~/.agent.env >/dev/null
        if ! kill -0 $SSH_AGENT_PID >/dev/null 2>&1; then
                echo "Stale agent file found. Spawning new agent..."
                eval `ssh-agent |tee ~/.agent.env`
                ssh-add
        fi
else
        echo "Starting ssh-agent..."
        eval `ssh-agent |tee ~/.agent.env`
        ssh-add
fi

5. 在系统公用的目录创建start-hadoop和stop-hadoop文件为开关hadoop进程

#!/usr/bin/bash
# start-hadoop
sudo -i -u hadoop start-all.sh
#!/usr/bin/bash
# stop-hadoop
sudo -i -u hadoop stop-all.sh

这样hadoop的简易环境配置完毕。

原文地址:https://www.cnblogs.com/shishuifox/p/2967063.html