两台主机:
A 192.168.1.22 名字myserver1 配置为namenode
B 192.168.1.23 名字myserver2 配置为datanode
需要:
每台机子有一个单独的名字
互相可以ping通对方和自己的名字
每台机器上执行ping ,不能返回127.0.0.1,返回本机IP才可以:
ping myserver1
ping myserver2
查看和修改机器名字
#查看主机名 hostname #修改机器名字【机器重启完失效】 hostname myserver1 #修改永久生效 vi /etc/sysconfig/network HOSTNAME=myserver1
修改IP和主机映射
#查看本机IP ifconfig 192.168.1.22 #ping 主机名 ping myserver #若返回127.0.0.1,需作ip映射 vi /etc/hosts 192.168.1.22 myserver1 192.168.1.23 myserver2 ping myserver 192.168.1.22
2、两台机器添加hadoop组和账号,配免登录SSH
#两台机器上执行 groupadd hadoop useradd -g hadoop hadoop su - hadoop ssh-keygen -t rsa -P "" #将A机器上的.ssh/id_rsa.pub 复制到B机器上,在B机器上使用hadoop账号执行 #A为namenode节点,B为datanode节点,A需要免登录到B上 cat id_rsa.pub >> .ssh/authorized_keys chmod 644 .ssh/authorized_keys #在A上使用hadoop账号登录后测试ssh登上B su - hadoop ssh -p 22 192.168.1.23 如果登录成功,则配置完成
3、A配置hadoop2.3为namenode
在A主机上
创建tmp目录
mkdir tmp/hadoop
修改4个配置文件core-site.xml、mapred-site.xml、hdfs-site.xml、yarn-site.xml
# vi etc/hadoop/core-site.xml hadoop.tmp.dir /xx/xx/tmp/hadoop A base for other temporary directories. fs.defaultFS hdfs://192.168.1.22:54310 本机IP:54310
vi etc/hadoop/mapred-site.xmlmapreduce.framework.name yarn mapreduce.cluster.temp.dir /xx/xx/tmp/hadoop/ mapreduce.cluster.local.dir /xx/xx/tmp/hadoop/
vi etc/hadoop/hdfs-site.xmldfs.replication 1 dfs.permissions false
vi etc/hadoop/yarn-site.xmlyarn.nodemanager.aux-services mapreduce_shuffle yarn.nodemanager.aux-services.mapreduce_shuffle.class org.apache.hadoop.mapred.ShuffleHandler yarn.resourcemanager.resource-tracker.address 192.168.1.22:8031 本机IP:8031yarn.resourcemanager.scheduler.address 192.168.1.22:8030 本机IP:8030yarn.resourcemanager.address 192.168.1.22:8032 本机IP:8032
启动测试,查看日志,看是否运行成功
./bin/hadoop namenode -format
./sbin/start-hdfs.sh
运行成功后,测试端口54310是否可以连上
telnet 192.168.1.22 54310
连上测表示namenode启动成功。
关闭服务
./sbin/stop-hdfs.sh
4、配置主机B为datanode
在B主机上,解压hadoop2.3
创建tmp目录
mkdir tmp/hadoop
修改配置文件与A主机配置一样,只是resourceManager的IP要换成namenode的,即指向A主机
即
修改4个配置文件core-site.xml、mapred-site.xml、hdfs-site.xml、yarn-site.xml
# vi etc/hadoop/core-site.xml hadoop.tmp.dir /xx/xx/tmp/hadoop A base for other temporary directories. fs.defaultFS hdfs://192.168.1.22:54310 namenode A主机:54310
vi etc/hadoop/mapred-site.xmlmapreduce.framework.name yarn mapreduce.cluster.temp.dir /xx/xx/tmp/hadoop/ mapreduce.cluster.local.dir /xx/xx/tmp/hadoop/
vi etc/hadoop/hdfs-site.xmldfs.replication 1 dfs.permissions false
vi etc/hadoop/yarn-site.xmlyarn.nodemanager.aux-services mapreduce_shuffle yarn.nodemanager.aux-services.mapreduce_shuffle.class org.apache.hadoop.mapred.ShuffleHandler yarn.resourcemanager.resource-tracker.address 192.168.1.22:8031 namenode A主机:8031yarn.resourcemanager.scheduler.address 192.168.1.22:8030 namenode A主机:8030yarn.resourcemanager.address 192.168.1.22:8032 namenode A主机:8032
5、格式化和启动
两台主机上清空日志和测试文件
rm -fr logs/* rm -fr tmp/hadoop/*
A主机上
格式化namenode
./bin/hadoop namenode -format
A主机上启动
./sbin/start-dfs.sh; ./sbin/start-yarn.sh;
两台服务器日志是否正常,若全都正常
访问namenode的节点管理器: http://192.168.1.22:8088
可以看到两台主机
6、运行wordcount
上传一个文本文件到hdfs里,
#创建目录 ./bin/hadoop fs -mkdir input #上传文件,可以稍大点,我上传了一个900M的文件。 ./bin/hadoop fs -put ./word.txt input #执行 ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.3.0.jar wordcount input/words.txt out
访问namenode的节点管理器: http://192.168.1.22:8088查看执行状态
执行完成后,下载结果
http://192.168.1.22:50070/explorer.html
/user/hadoop/output/
删除执行结果
./bin/hadoop fs -rm -r output