假设我们有三台机器。一台做master,另外两台做slave。所有的操作都先只在master上操作,然后scp同步到slaves。
adduser hadoop
usermod hadoop -G sudo -a # 添加到超级管理员用户组
到这里 找一个镜像,然后下载 hadoop 2.3.0 压缩包:
http://www.apache.org/dyn/closer.cgi/hadoop/common/
这里我们解压到 /home/hadoop/hadoop
目录结构如下:
hadoop@master:~/hadoop$ pwd
/home/hadoop/hadoop
hadoop@master:~/hadoop$ ls
bin etc include lib libexec LICENSE.txt logs NOTICE.txt README.txt sbin share
直接到这里下载 jdk:
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
挑选对应自己操作系统的版本,只需要解压到任意目录,不需要执行任何操作。
这里我们解压到/usr/local/jdk
hadoop@master:/usr/local/jdk$ pwd
/usr/local/jdk
hadoop@master:/usr/local/jdk$ ls
bin db jre LICENSE README.html src.zip THIRDPARTYLICENSEREADME.txt
COPYRIGHT include lib man release THIRDPARTYLICENSEREADME-JAVAFX.txt
/etc/hostname:
master 上的这个文件就写master,两个slaves上的这个文件分别写 node1、 node2
/etc/hosts(ip地址根据自己的情况修改)
127.0.0.1 localhost
192.168.204.128 master
192.168.204.129 node1
192.168.204.130 node2
/etc/profile(在最后面添加):
#hadoop
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export HADOOP_ROOT=/home/hadoop
export HADOOP_HOME=$HADOOP_ROOT/hadoop
export PATH=$HADOOP_ROOT/hadoop/bin:$HADOOP_ROOT/hadoop/sbin:$PATH
打开hadoop配置目录(/home/hadoop/hadoop/etc/hadoop)
core-site.xml:
fs.defaultFS
hdfs://master
hdfs-site.xml:
dfs.namenode.name.dir
/data1/hadoop-nn
fs.defaultFS
hdfs://master/
dfs.replication
2
dfs.hosts.exclude
/home/hadoop/hadoop/etc/hadoop/dfs.exclude
dfs.datanode.data.dir
/data1/hadoop-dn,/data2/hadoop-dn
从上面的配置文件可以看出,我们把namenode的数据存储目录定位 /data1/hadoop-nn
datanode的存储目录定位为 /data1/hadoop-dn, /data2/hadoop-dn
所以要保证这两个目录正常存在,并且有空闲硬盘挂在上面。
slaves:
node1
node2
hadoop-daemon.sh --script hdfs start namenode
hadoop-daemon.sh --script hdfs start datanode
hadoop fs -ls /
hadoop fs -put ./test /