首先恢复单机配置,可以参考教程:
http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/
本文大部分参考了这个《Hadoop集群配置教程》,非常感谢!
Master:10.182.165.114 node1 (Namenode 和 JobTracker)
Slave:10.182.165.156 node2
1、下载、创建用户
/usr/sbin/adduser hadoop cd /home/hadoop #切换为hadoop用户 su hadoop wget http://apache.mirrors.tds.net//hadoop/common/hadoop-0.20.203.0/hadoop-0.20.203.0rc1.tar.gz tar -xzvf hadoop-0.20.203.0rc1.tar.gz mv hadoop-0.20.203.0rc1 hadoop_home
2、设置为ssh为:无需密码的、自动登录
ssh-keygen -t rsa -P "" cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys cat "StrictHostKeyChecking no" >> ~/.ssh/config #测试一下是否无需密码自动登录 ssh localhost
3、安装JDK,设置环境变量
#安装JDK sudo apt-get install sun-java6-jdk #HADOOP_HOME和JAVA_HOME sudo vim ~/.bashrc #添加如下 #ENV for Hadoop export HADOOP_HOME=/home/hadoop/hadoop_home export JAVA_HOME=/usr/lib/jvm/java-6-sun/ #hadoop_home/conf下env也要配置 vim ./hadoop-env.sh #添加 export JAVA_HOME=/usr/lib/jvm/java-6-sun/
4、配置conf(Master和Slave)
配置文件:conf/core-site.xml
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>fs.default.name</name> <value>hdfs://node1:54310</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/hadoop_home/var</value> </property> </configuration>
配置文件:conf/mapred-site.xml
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>mapred.job.tracker</name> <value>node1:54311</value> </property> <property> <name>mapred.local.dir</name> <value>/home/hadoop/hadoop_home/var</value> </property> </configuration>
配置文件:conf/hdfs-site.xml
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>dfs.replication</name> <!-- 我们的集群又两个结点,所以rep两份 --> <value>2</value> </property> </configuration>
5、格式化namenode,启动
bin/hadoop namenode -format ./bin/start-all.sh #jps,应该能看到如下5个进程 $jps 18940 JobTracker 18775 DataNode 18687 NameNode 19027 TaskTracker 18871 SecondaryNameNode
6、拷贝数据
#拷贝 ./bin/hadoop dfs -copyFromLocal ./book_data/ /user/hadoop/book_data #执行 bin/hadoop jar hadoop-examples-0.20.203.0.jar wordcount /user/hadoop/book_data /user/hadoop/book_data_out #耗时 real 0m39.694s user 0m2.330s sys 0m0.260s
以上的单机配置完毕,下面开始集群配置
0、做Host映射
不要像我一样耍小聪明,以为IP也行,Hadoop会做反向DNS,所以老老实实的Host吧……
vim /etc/hosts 10.182.165.114 node1 10.182.165.156 node2
1、在master上配置IP列表
vim conf/master node1 vim conf/slaves node1 node2
2、在两台机器上,都设置map/reduce的slots
mapred.map.tasks:一般是slaves * 10 -> 20
mapred.reduce.tasks:一般是slave_cpu_core * 2 -> 8
配置文件:conf/mapred-site.xml
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>mapred.job.tracker</name> <value>node1:54311</value> </property> <property> <name>mapred.local.dir</name> <value>/home/hadoop/hadoop_home/var</value> </property> <property> <name>mapred.map.tasks</name> <value>20</value> </property> <property> <name>mapred.reduce.tasks</name> <value>8</value> </property> </configuration>
3、重新格式化Namenode,每次重新建集群时候都要?
bin/hadoop namenode -format
4、启动dfs,在master上执行
bin/start-dfs.sh #如果启动成功的话, #Master上: 20160 DataNode 20070 NameNode 20278 SecondaryNameNode #Slave上: 1009 DataNode
5、重新拷贝文件
./bin/hadoop dfs -copyFromLocal ./book_data/ /user/hadoop/book_data
6、启动map-reduce
bin/start-mapred.sh #现在Master: 20160 DataNode 20568 TaskTracker 20070 NameNode 20478 JobTracker 20278 SecondaryNameNode #现在Slave: 1168 TaskTracker 1009 DataNode
7、运行
bin/hadoop jar hadoop-examples-0.20.203.0.jar wordcount /user/hadoop/book_data /user/hadoop/book_data_out
又添加了几组数据,也是37秒,数据还是太小。。