引自:http://blog.sina.com.cn/s/blog_6524b4b50100lobs.html
1.基本准备
操作系统:redhat 5.2
jdk: jdk-6u21-linux-i586-rpm.bin(安装1.6或以上版本,安装步骤请参考其他文)
hadoop:hadoop-0.21.0.tar.gz
硬件:三台机器,IP配置如下:
node1:192.168.14.77
node2:192.168.14.155
node3:192.168.14.99
2.系统配置
(1)以root身份打开/etc/hosts文件
192.168.14.77 node1
192.168.14.155 node2
192.168.14.99 node3
注:node2,node3也需要同样设置
(2)每个节点都有相同的用户,例如:hadoop(账号默认的主目录为:/home/hadoop)
用有root权限的用户登录系统,执行:
[root@node1:~]$sudo visudo –f /etc/sudoers
在打开的文件中加入:
hadoop ALL=(ALL) ALL
注:方便hadoop用户访问和修改系统文件与配置
3.配置ssh(redhat本身默认安装)
(1)生成密钥:
[hadoop@node1:~]$ssh-keygen –t dsa
一路回车,会在/home/hadoop/.ssh文件中添加两个文件(id_dsa和id_dsa.pub)成对出现。
(2)复制:
[hadoop@node1 .ssh]$cp id_dsa.pub authorized_keys
(3)复制密钥到各节点,并赋权限:
以hadoop登录到其他DataNode上,并在各DataNode上建立文件.ssh:
[hadoop@node2:~]$mkdir /home/hadoop/.ssh
[hadoop@node3:~]$mkdir /home/hadoop/.ssh
以hadoop登录到NameNode:
权限配置完全如图。
把authorized_keys文件拷贝到各NameNode节点上,例如:
[hadoop@node1.ssh]$
scp authorized_keys hadoop@192.168.14.155:/home/hadoop/.ssh/
并在各节点设置权限,例如:
[hadoop@node2.ssh]$ chmod 644 authorized_keys
(4)对ssh服务进行配置,去除密码验证,在每个节点上对/etc/ssh/sshd_config文件进行修改,例如:
[hadoop@node2:~]$sudo vi /etc/ssh/sshd_config
在文件中进行如下修改:
去除#
PasswordAuthentication no
AuthorizedKeysFile .ssh/authorized_keys
重启sshd服务:
sudo /etc/init.d/ssh restart
测试ssh连接:
[hadoop@node1~]$ssh node2
4.jdk安装及配置
安装jdk
(1)查看本机jdk安装
$rpm –qa|grep gcj
本版不足1.6,卸载后重现安装
(2)卸载jdk
$rpm –qa|grep gcj
从下向上卸载:
[root@localhost ~]# rpm libgcj-4.1.2-42.el5
[root@localhost ~]# rpm java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
(3)安装jdk
$chmod 755 jdk-6u21-linux-i586-rpm.bin
$./jdk-6u21-linux-i586-rpm.bin
$rpm –ivh jdk-6u21-linux-i586-rpm.bin
配置
(1)在/etc/profile中
(2)在hadoop-env.sh
注:具体在hadoop安装及配置中,每个节点的jdk安装路径最好一致。
5.hadoop安装及配置(以hadoop身份进行如下操作)
(1)安装:
mkdir /home/hadoop/hadoopinstall
cd /home/hadoop/hadoopinstall
[hadoop@node1 hadoopinstall]$ tar -zvxf hadoop-0.21.0.tar.gz
(2)配置:
环境变量:
/etc/profile文件下配置环境变量:
JAVA_HOME
HADOOP_HOME
CLASSPATH
PATH
/home/hadoop/hadoopinstall/hadoop-0.21.0/conf/hadoop-env.sh文件下配置环境变量:
JAVA_HOME
HADOOP_HOME
Hadoop配置文件修改
需修改/home/hadoop/hadoopinstall/hadoop-0.21.0/conf下的几个文件:
core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.14.77:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tmp</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/hdfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/hdfs/data</value>
<final>true</final>
</property>
<property>
<name>fs.checkpoint.dir</name>
<value>/home/hadoop/hdfs/namesecondary</value>
<final>true</final>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.14.77:9000</value>
<final>true</final>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>192.168.14.77:9001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/home/hadoop/mapred/local</value>
<final>true</final>
</property>
<property>
<name>mapred.system.dir</name>
<value>/tmp/hadoop/mapred/system</value>
<final>true</final>
</property>
<property>
<name>mapred.tasktracker.map.tasks.maximum</name>
<value>2</value>
<final>true</final>
</property>
<property>
<name>mapred.tasktracker.reduce.tasks.maximum</name>
<value>2</value>
<final>true</final>
</property>
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx400m</value>
</property>
</configuration>
masters
192.168.14.77
slaves
192.168.14.155
192.168.14.99
注:以上为NameNode的配置,有关DateNode把NameNode的hadoopinstall整个文件复制到各节点的/home/hadoop下即可,以hadoop身份
6.基本操作
(1)主节点NameNode文件系统格式化为HDFS
[hadoop@node1 bin]$ cd /home/hadoop/hadoopinstall/hadoop-0.21.0/bin
[hadoop@node1 bin]$ hadoop namenode –format
(2)启动
[hadoop@node1 bin]$ start-all.sh
(3)停止
[hadoop@node1 bin]$ stop-all.sh
(4)创建一个目录
[hadoop@node1 bin]$ hadoop dfs –mkdir mytest
(5)查看根目录下有哪些文件和子目录
[hadoop@node1 bin]$ hadoop dfs -ls