一、材料准备
三台虚拟机(2C4G,关闭防火墙,创建用户atguigu,配置sudo免密)
192.168.1.11
192.168.1.12
192.168.1.13
系统:CentOS-6.5
平台:华为云
hadoop版本:2.7.7
JDK版本:1.8.0_144
二、前期准备
1.配置主机名解释
[atguigu@hadoop101 opt]$ sudo vim /etc/hosts
172.16.31.11 hadoop101
172.16.31.12 hadoop102
172.16.31.13 hadoop103
[atguigu@hadoop101 opt]$ sudo scp /etc/hosts hadoop102:/etc/hosts
[atguigu@hadoop101 opt]$ sudo scp /etc/hosts hadoop103:/etc/hosts
2.hadoop101、hadoop102的atguigu用户,hadoop101的root用户能免密登录所有主机
ssh-keygen
ssh-copy-id 到三台主机
3.解压软件包到/opt/module,并设置权限
chown -R atguigu:atguigu /opt
三、集群部署
1.角色规划
hadoop101 NameNode,DataNode,NodeManager
hadoop102 DataNode,ResourceManager,NodeManager
hadoop103 SecondaryNameNode,DataNode,NodeManager
2.配置集群
(1)核心配置文件
[atguigu@hadoop101 hadoop-2.7.7]$ vim etc/hadoop/core-site.xml
指定HDFS中namenode的地址,指定hadoop运行时产生文件的存储目录(会自动创建)
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop101:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.7/data/tmp</value>
</property>
(2)HDFS配置文件
设置JAVA_HOME
[atguigu@hadoop101 hadoop-2.7.7]$ vim etc/hadoop/hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
设置副本数为3【现在是3台服务器】
指定SecondaryNameNode为hadoop103
[atguigu@hadoop101 hadoop-2.7.7]$ vim etc/hadoop/hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop103:50090</value>
</property>
(3)YARN配置文件
设置JAVA_HOME
[atguigu@hadoop101 hadoop-2.7.7]$ vim etc/hadoop/yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
指定resourcemanager的主机为hadoop102
reducer获取数据的方式
[atguigu@hadoop101 hadoop-2.7.7]$ vim etc/hadoop/yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop102</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
(4)MapReduce配置
设置JAVA_HOME
[atguigu@hadoop101 hadoop-2.7.7]$ vim etc/hadoop/mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
配置etc/hadoop/mapred-site.xml文件
[atguigu@hadoop101 hadoop-2.7.7]$ mv etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
vim etc/hadoop/mapred-site.xml
指定mapreduce运行在YARN上
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
3.同步配置文件到其它主机
拷贝hadoop和JDK安装目录,并在相应主机修改属主和属组
hadoop和jdk已经解压到/opt/module下
[atguigu@hadoop101 opt]$ scp -r module root@hadoop102:/opt/
[atguigu@hadoop101 opt]$ scp -r module root@hadoop103:/opt/
[atguigu@hadoop102 opt]$ sudo chown -R atguigu:atguigu module/
[atguigu@hadoop103 opt]$ sudo chown -R atguigu:atguigu module/
4.拷贝/etc/profile到其他主机,并重新加载该文件,使环境变量生效
配置环境变量
[atguigu@hadoop101 opt]$ vim /etc/profile
## JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
## HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
[atguigu@hadoop101 opt]$ sudo scp /etc/profile hadoop102:/etc/profile
[atguigu@hadoop101 opt]$ sudo scp /etc/profile hadoop103:/etc/profile
[atguigu@hadoop102 opt]$ source /etc/profile
[atguigu@hadoop103 opt]$ source /etc/profile
启动集群
1.格式化namenode,生成元数据,如fsimage、fsedits
bin/hdfs namenode -format
2.配置集群节点
vi etc/hadoop/slaves
hadoop101
hadoop102
hadoop103
不允许有空格和空行
使用scp将slaves同步到其它主机
3.启动集群
[atguigu@hadoop101 hadoop-2.7.7]$ sbin/start-dfs.sh
在hadoop102上启动yarn
[atguigu@hadoop102 hadoop-2.7.7]$ sbin/start-yarn.sh
启动完成后用jps查看角色是否与自己规划的一致,至此集群搭建完成
测试集群
1.上传文件测试
bin/hdfs dfs -put wcinput/wc.input /
查看:
bin/hdfs dfs -ls /