电脑的操作系统是Ubuntu12.04 32位,ubuntu-12.04.4-desktop-i386.iso。
集群介绍:
三台电脑的用户名都为hadoop
主机名:master 10.10.6.176
服务机:slaver1 10.10.6.242;slaver2 10.10.6.131
一、配置
以下是三台机器都要安装和相同配置
在/etc/hostname下修改自己的机器名
在/etc/hosts下将所有机器名和对应的IP添加
二、安装JDK
三台机器都需要,我用的是jdk-7u71-linux-i586.tar.gz。
2.1在usr/local目录下新建java目录,将解压后的jdk1.7.0_71放到java目录下
2.2在/etc/profile里最后添加JAVA环境(sudo gedit /etc/profile)
# for java
export JAVA_HOME=/usr/local/java/jdk1.7.0_71
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH
2.3保存设置生效 ($ source /etc/profile)
2.4测试($ java -version)
三、安装SSH并实现无密码访问
3.1 安装SSH(sudo apt-get install ssh),包括openssh-server和openssh-client。
安装过程一直默认就可以。三台机器都需要安装。
3.2建立ssh无密码登录,采用rsa方式生成(ssh-keygen -t rsa)
一直默认回车就可以,安装完cd .ssh 可以发现 id_rsa(密钥)和id_rsa.pub(公钥)两个文件。
3.3无密码访问master本机
将id_rsa.pub添加到authorized_keys(存放所有公钥)(cp id_rsa.pub authorized_keys), 这时就可以无密码访问localhost (ssh localhost)。
3.4无密码访问slaver1和slaver2
将公钥复制到slaver1机器上:scp id_rsa.pub hadoop@slaver1:~/.ssh/master_key
将master_key 追加到slaver1和slaver2的authorized_keys文件里 cat master_key >> authorized_keys(可以通过cat authorized_keys查看是否添加成功)
四、安装Hadoop(三台相同)
我用的是hadoop-1.2.1.tar.gz
4.1 将文件解压要目录
sudo tar -zxf *.tag.gz,得到hadoop-1.2.1
4.2 修改conf/hadoop-env.sh
JAVA_HOME=/usr/local/java/jdk1.7.0_71(对应自己的jdk)
4.3 修改conf目录下的配置文件masters,slaves,core-site.xml,mapred-site.xml,hdfs-site.xml
masters文件 master
slaves文件 slaver1
slaver2
修改core-site.xml文件
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
修改mapred-site.xml文件
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
</configuration>
修改hdfs-site.xml文件
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
4.4测试
格式化HDFS以做好数据存储 bin/hadoop namenode -format
启动 bin/start-all.sh
在master下[hadoop@master]$ jps后有4的进程 Jps、NameNode、JobTracker、SecondaryNameNode
在slaves下[hadoop@slaver1]$ jps 后有3个进程 Jps、DataNode、TaskTracker
停止 bin/stop-all.sh