公司一个项目涉及到云计算,通过学习了解计划采用Hadoop,在网上找文章学习,开始做Hadoop集群安装。
安装3个虚拟机,安装Ubuntu Linux 11.10版本,设置为单CPU,512M内存,20GB硬盘,ip:分别为192.168.1.16、17、22,16做NameNode和JobTracker,17、22做DataNode。
1.建立pc01用户,密码为6个1。
2.恢复root用户和密码,并修改主机名和对应的hosts文件,停止防火墙

恢复root
 sudo passwd root 
修改主机名,运行
 sudo gedit /etc/hostname 
比如16改为UbuntuHM1,17改为UbuntuHS1,22改为UbuntuHS2,,
 修改对应hosts文件sudo gedit /etc/hosts 
改为127.0.0.1 localhost 192.168.1.16 UbuntuHM1 192.168.1.17 UbuntuHS1 192.168.1.22 UbuntuHS2 
改好后重启机器,运行hostname 
看是否修改成功。
停止防火墙 sudo ufw disable


3.去 Java官网

下载JDK1.7.03 Linux版本jdk-7u3-linux-i586.tar.gz


4.解压JDKsudo tar xvzf jdk-7u3-linux-i586.tar.gz /usr/local/lib 
5.运行sudo gedit /etc/profile 
在文件最后添加
#set JAVA environment export JAVA_HOME=/usr/local/lib/jdk1.7.0_03 export CLASSPATH=".:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CLASSPATH" export PATH="$JAVA_HOME/bin:$PATH" 
6.重启机器运行java -version 
会提示如下信息:
java version "1.7.0_03" Java(TM) SE Runtime Environment (build 1.7.0_03-b04) Java HotSpot(TM) Client VM (build 22.1-b02, mixed mode) 
7.下载sshsudo apt-get install ssh 
8.下载rsyncsudo apt-get install rsync 
7.去Hadoop官网下载Hadoop Common 1.0.1hadoop-1.0.1.tar.gz,放到/home/pc01目录下

8.执行sudo tar xvzf hadoop-1.0.1.tar.gz

将解压出hadoop-1.0.1目录

9.运行sudo chmod 777 hadoop-1.0.1 -R

将hadoop-1.0.1目录更改权限

10.参照文章介绍,在本地生成空密码的公钥和私钥,运行ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

11.配置本地访问不需要密码,运行cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys12. 测试本地访问ssh localhost 没有使用过ssh连接localhost, 那么会有提示添加localhost到knowhosts中去,然后要求输入密码,记得运行exit,退出ssh。

13.将192.168.1.16机器上的公有key拷贝到其它两台机器,分别执行scp ~/.ssh/id_dsa.pub pc01@192.168.1.17:/home/pc01/.ssh/16_dsa.pubscp ~/.ssh/id_dsa.pub pc01@192.168.1.22:/home/pc01/.ssh/16_dsa.pub

14.在192.168.1.17和22的机器上将公有key加入,执行cat ~/.ssh/16_dsa.pub >> authorized_keys 15.在192.168.1.16机器上执行ssh 192.168.1.17 同样第一次连接的话会询问是否添加机器以及要求输入密码,第二次就不用了,记得执行exit退出ssh,同理执行ssh 192.168.1.22 16.在192.168.1.16机器上修改hadoop配置文件,修改hadoop目录下conf目录下的hadoop-env.sh,添加export JAVA_HOME=/usr/local/lib/jdk1.7.0_03

17.在192.168.1.16机器上修改hadoop配置文件,修改hadoop目录下conf目录下的core-site.xml、hdfs-site.xml,更改文件
core-site.xml

<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>fs.default.name</name> <value>hdfs://192.168.1.16:54310</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/pc01/hadoop-1.0.1/tmp</value> </property> </configuration> 
hdfs-site.xml 
 <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration> 
18.在192.168.1.16机器上修改hadoop配置文件,修改hadoop目录下conf目录下的mapred-site.xml,更改文件为<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>mapred.job.tracker</name> <value>hdfs://192.168.1.16:54311</value> </property> <property> <name>mapred.child.java.opts</name> <value>-Xmx512m</value> </property> </configuration> 
19.在192.168.1.16机器上修改hadoop配置文件,修改hadoop目录下conf目录下??/span>masters文件,添加192.168.1.16 
20.在192.168.1.16机器上修改hadoop配置文件,修改hadoop目录下conf目录下的slaves文件,添加192.168.1.17 192.168.1.22 
21.将192.168.1.16机器上hadoop-env.sh,core-site.xml,hdfs-site.xml,mapred-site.xml,masters,slaves文件更换17、22机器上hadoop对应目录的同名文件scp -rp ~/hadoop-1.0.1/conf pc01@192.168.1.17/home/pc01/hadoop-1.0.1/ 
22.在192.168.1.16机器上格式化命名空间,执行./hadoop namenode -format 
23.在192.168.1.16机器上启动hadoop,执行./start-all.sh 
24.检查hadoop是否执行成功,在192.168.1.16机器上执行./hadoop dfs -ls 
如果没有错误提示或者出现文件列表,那么Hadoop成功启动了

25.通过访问http://192.168.1.16:50070来查看hdfs的状态,访问http://192.168.1.16:50030来查看map/reduce的状态。如果出现错误,或Hadoop集群未启动,可以查看$HADOOP_HOME/logs/下的日志文件。
26.停止Hadoop,运行

./stop-all.sh

27.如果运行出错,可以将所有机器的 
hadoop.tmp.dir指定的配置路径下文件清除,主要清除掉dfs.data.dir指定目录下内容,一般缺省设置在hadoop.tmp.dir下,再重新运行./hadoop namenode -format 
28.运行出现org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=SED-ITS-HP, access=WRITE, inode="user":pc01:supergroup:rwxr-xr-x类似错误,简单的做法是修改hdfs-site.xml,添加如下内容 <property> <name>dfs.permissions</name> <value>false</value> </property> 
还可以直接往dfs的/user/pc01目录下写,当然要修改pc01目录权限./hadoop dfs -chmod 777 /user/pc01 或 ./hadoop fs -chmod 777 /user/pc01 
29.给虚拟机硬盘扩容可参见文章1,文章2