公司一个项目涉及到云计算,通过学习了解计划采用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