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.77node1
192.168.14.155node2
192.168.14.99node3
注: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節點上,例如:
scp [email protected]:/home/hadoop/.ssh/
並在各節點設置權限,例如:
[[email protected]]$ chmod 644 authorized_keys
(4)對ssh服務進行配置,去除密碼驗證,在每個節點上對/etc/ssh/sshd_config文件進行修改,例如:
[hadoop@node2:~]$sudo vi /etc/ssh/sshd_config
在文件中進行如下修改:
去除#
PasswordAuthenticationno
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 755jdk-6u21-linux-i586-rpm.bin
$./jdk-6u21-linux-i586-rpm.bin
$rpm –ivhjdk-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