一、实验环境,三台虚拟机。
做/etc/hosts解析。
[root@master ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.122.100 master
192.168.122.144 node1
192.168.122.247 node2
二、每台机器安装jdk环境,配置/etc/profile
root推公钥(mv id_rsa authorized_keys )。
三、master上下载hadoop并解压安装到/usr/local/,依据自己的安装路径配置/etc/profile
export HADOOP_HOME=/usr/local/hadoop-2.7.7
export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
四、master端修改配置文件
创建三个目录存放文件
mkdir /usr/local/hadoop-2.7.7/hdfs/data -p
mkdir /usr/local/hadoop-2.7.7/hdfs/tmp -p
mkdir /usr/local/hadoop-2.7.7/hdfs/name -p
[root@master hadoop-2.7.7]# pwd
/usr/local/hadoop-2.7.7
[root@master hadoop-2.7.7]# cd etc/hadoop/
[root@master hadoop]# ls
capacity-scheduler.xml httpfs-env.sh mapred-env.sh
configuration.xsl httpfs-log4j.properties mapred-queues.xml.template
container-executor.cfg httpfs-signature.secret mapred-site.xml
core-site.xml httpfs-site.xml mapred-site.xml.template
hadoop-env.cmd kms-acls.xml slaves
hadoop-env.sh kms-env.sh ssl-client.xml.example
hadoop-metrics2.properties kms-log4j.properties ssl-server.xml.example
hadoop-metrics.properties kms-site.xml yarn-env.cmd
hadoop-policy.xml log4j.properties yarn-env.sh
hdfs-site.xml mapred-env.cmd yarn-site.xml
修改core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop-2.7.7/hdfs/tmp/</value> \\指定hadoop运行时产生文件的存储路径
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value> \\ 指定HDFS老大(namenode)的通信地址
</property>
</configuration>
修改hdfs-site.xml配置文件
[root@master hadoop]# pwd
/usr/local/hadoop-2.7.7/etc/hadoop
[root@master hadoop]# vim hdfs-site.xml
<configuration>
<property>
<name>dfs.datanode.data.dir</name> //设置datanode存放的路径
<value>file:/usr/local/hadoop-2.7.7/hdfs/data</value>
<final>true</final>
</property>
<property>
<name>dfs.namenode.name.dir</name> //设置namenode存放的路径
<value>file:/usr/local/hadoop-2.7.7/hdfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.replication</name> //设置hdfs副本数量
<value>2</value>
</property>
<property>
<name>dfs.namenode.http-address</name> //设置namenode的http通讯地址
<value>master:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
//设置secondarynamenode的http通讯地址,真正的集群中应该设置到其他的节点中,如果设置其他节点上,需要新建一个masters的文件,指定是secondary namenode 的主机,此处设在master上,使master担当secondarynamenode的角色,不用进行这个操作,但也不能起到备份的效果。
<value>master:50090</value>
</property>
</configuration>
修改mapred-site.xml文件,本没有这个文件,故复制一下。
[root@master hadoop]# cp mapred-site.xml.template mapred-site.xml
添加以下配置,使其使用yarn框架
[root@master hadoop]#vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name> //设置 resourcemanager 在哪个节点
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name> //reducer取数据的方式是mapreduce_shuffle
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
修改slaves文件,指定datanode
[root@master hadoop]# cat slaves
node1
node2
五、将master端的整个/usr/local/hadoop-2.7.7目录拷贝到所有节点中的相同目录下。
六、启动服务
首先格式化
[root@master hadoop-2.7.7]#./bin/hdfs namenode -format
启动全部服务
[root@master hadoop-2.7.7]#./sbin/start-all.sh
查看master端和node端,看是否启动该有的角色
[root@master hadoop-2.7.7]# jps
3424 SecondaryNameNode
3827 Jps
3236 NameNode
3575 ResourceManager
[root@node2 hadoop-2.7.7]# jps
3309 DataNode
4013 Jps
3375 NodeManager
若node端的datanode角色不成功,请查看每台主机的/usr/local/hadoop-2.7.7/hdfs下的文件是否完全相同,node端必须跟master的一样。