最近尝试了以普通用户权限配置Hadoop,现已配置成功。Hadoop版本为1.0.3。
完全分布的结构如下:
1台master,2台slave;
ip:
192.168.1.10 master
192.168.1.11 slave01
192.168.1.12 slave02
其中用户名为hadoop,添加用户命令如下:
$sudo adduser hadoop
Hadoop安装路径为/home/hadoop/workplace/hadoop-1.0.3;
jdk安装路径为/home/hadoop/software/java/jdk1.7;
HDFS的路径为/home/hadoop/workplace/hdfs。
配置过程如下:
修改每台机器下/etc文件夹下的hosts文件
127.0.0.1 localhost
192.168.0.10 master
192.168.0.11 slave01
192.168.0.12 slave02
(2)SSH配置——实现master与slaves之间的免密码通信
如果本机上未安装ssh服务,需要安装,测试命令如下:
$ssh localhost
$ssh slave01
$ssh slave02
若出现错误:
ssh: connect to host xxx port 22: Connection refused
(其中xxx为主机ip名)
则输入ssh安装命令:
$sudo apt-get install openssh-server
启动ssh服务后,在/home/hadoop文件夹下创建文件.ssh:
$mkdir .ssh
在namenode机器的/home/hadoop文件夹下生成密钥对,执行:
$ ssh-keygen -t rsa
然后一直按Enter键,就会按照默认选项生成密钥对保存在/home/hadoop/.ssh/id_rsa文件中。
继续执行如下命令,把密钥传递给每个datanode节点:
$ cd ~/.ssh
$ cp id_rsa.pub authorized_keys
$ scp authorized_keys slave01:/home/hadoop/.ssh/authorized_keys
$ scp authorized_keys slave02:/home/hadoop/.ssh/authorized_keys
打开/etc下的profile文件,并在结尾处加下面几行
export JAVA_HOME=/home/hadoop/software/jdk1.7
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export HADOOP_HOME=/home/hadoop/workplace/hadoop-1.0.3
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$PATH
然后使文件生效
$ source /etc/profile
在workplace文件夹下需要建立几个文件夹,如下:
$ mkdir hdfs
$ mkdir hdfs/name
$ mkdir hdfs/data
Hadoop的主要配置:
进入hadoop-1.0.3/conf文件夹下,
修改hadoop-env.sh,加入如下语句,使得hadoop能够找到java的路径:
export JAVA_HOME=/home/hadoop/software/java/jdk1.7
修改core-site.xml,如下:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
修改hdfs-site.xml,如下:
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/workplace/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/workplace/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
修改mapred-site.xml,如下:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
</configuration>
修改masters和slaves文件:
masters文件里写入作为namenode节点机器的名称,我们这里是:
master
slaves里写入作为datanode节点的机器名,这里是:
slave01
slave02
(4)datanode机器上的配置
将namenode机器下的jdk文件夹,hadoop-1.0.3文件夹传送到slave01和slave02上,其中datanode的安装路径与namenode的路径相同:使用命令:
$scp -r /home/hadoop/software/jave/jdk1.7 slave01:/home/hadoop/software/jave/
$scp -r /home/hadoop/software/jave/jdk1.7 slave02:/home/hadoop/software/jave/
$scp -r /home/hadoop/workplace/hadoop-1.0.3 slave01:/home/hadoop/workplace/
$scp -r /home/hadoop/workplace/hadoop-1.0.3 slave02:/home/hadoop/workplace/
然后修改datanode上的/etc/profile文件,其配置与namenode的配置相同。
(5)到此基本配置已经完成,在namenode机器上cd到hadoop-1.0.3文件夹下,格式化分布式文件系统:
$ bin/hadoop namenode -format
下面接着在namenode端启动hadoop进程,cd到~/workplace/hadoop-1.0.3,然后键入命令:
$ bin/start-all.sh
如果没有其它差错的话,hadoop可以正常启动,并能够看到如下结果:
在namenode端用jps命令查看启动情况,如下:
hadoop@master:~/workplace/hadoop-1.0.3$ jps
xxxx Jps
xxxx Namenode
xxxx Secondarynamenode
xxxx JobTracker
在datanode端用jps查看启动情况,如下:
hadoop@slave01:~/workplace/hadoop-1.0.3$ jps
xxxx Jps
xxxx DataNode
xxxx TaskTracker
hadoop@slave02:~/workplace/hadoop-1.0.3$ jps
xxxx Jps
xxxx DataNode
xxxx TaskTracker
然后可以通过如下地址来查看集群运行状况:
http://master:50030
http://master:50070
为方便配置,大家可以到hadoop-1.0.3下载。
本人也是刚刚接触hadoop,还有许多不懂的方面,希望大家可以交流,共同促进。