集群模式
master:deepin,slaves:ubuntu server 12.04(一台master,两台slave)
更改所有机器的主机名/etc/hostname,分别为HadoopMaster、HadoopSlave1、HadoopSlave2,并且添加各自ip到/etc/hosts,更改主机名是为了后续操作方便容易管理,不更改也可以,如果已经在$HOME/.ssh/config中配置了Host信息,也无需修改/etc/hosts。如果slave的ip地址带端口,还需要将slave机器上的/etc/ssh/sshd_config 中的Port Num(Num即该机器端口号,注意,更改之后连接本地会失败,但对集群无影响)
我们的操作全部在hduser:hadoop上面,在另外两台机器上也新建hadoop组和用户hduser(这一步不是必须的)
1. 两台slave同样需要安装ssh,安装配置java环境和hadoop环境,两台slave上的都执行sudo chown hduser:hadoop -R /usr/local/hadoop/(用户和组名根据自己本机真实情况而定)。接着在执行sudo apt-get install rsync,安装完成后重启,接下来基本都在master上进行配置
2. master机器上cd 到/usr/local/hadoop/etc/hadoop
a. core-site.xml
<property> <name>fs.default.name</name> <value>hdfs://HadoopMaster:9000</value> </property>b. hdfs-site.sh
<property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop_tmp/hdfs/namenode</value> </property>c. yarn-site.xml
<property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>HadoopMaster:8025</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>HadoopMaster:8035</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>HadoopMaster:8050</value> </property>d. mapred-site.xml
<property> <name>mapreduce.job.tracker</name> <value>HadoopMaster:5431</value> </property> <property> <name>mapred.framework.name</name> <value>yarn</value> </property>e. 同样在该目录下:
sudo gedit masters, 在里面添加 HadoopMaster sudo gedit slaves,在里面添加 HadoopSlave1 HadoopSlave2
3. 将上述修改用rsync同步到两台slave机器上,
sudo rsync -avxP /usr/local/hadoop/ hduser@HadoopSlave1:/usr/local/hadoop/ sudo rsync -avxP -e 'ssh -p 23' /usr/local/hadoop/ hduser@HadoopSlave2:/usr/local/hadoop/<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">( -e 'ssh -p 23' 连接23号端口)</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">4. 将master上的hadoop_tmp删除,重新创建hadoop_tmp/hdfs/namenode,并为其分配用户持有者</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">5. 将slave上面的hadoop_tmp删除,重新创建</span><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">hadoop_tmp/hdfs/datanode,并为其分配用户持有者</span>
6. 同步之后在slave上需要做一些修改,首先你得保证master和两台slave的jdk环境是一致的,如果不同,slave中的hadoop-env.sh文件里的JAVA_HOME应该修改为与本机一致,另外在hdfs-site.xml中,由于slave是用作datanode的,所有应该将其内容修改为:
<property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop_tmp/hdfs/datanode</value> </property>
7. 将master的ssh公钥传到两台slave上,实现免密码登录
ssh-copy-id -i $HOME/.ssh/id_rsa.pub HadoopSlave1 ssh-copy-id -i $HOME/.ssh/id_rsa.pub HadoopSlave28. 在master上hdfs namenode -format
9. 同样使用start-dfs.sh 和start-yarn.sh启动hadoop,然后在三台机器上分别jps,可以看到:
Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=gasp 2675 SecondaryNameNode 2524 NameNode 2850 ResourceManager 3110 Jps
hduser@HadoopSlave1:~$ jps 2148 Jps 1800 DataNode 1932 NodeManager
hduser@HadoopSlave2:~$ jps 1377 NodeManager 1250 DataNode 1594 Jps成功。
(注意:文件用户权限分配,ssh连接端口问题,ubuntu server 安装时探测光盘失败解决方法,亲测可用)