Hadoop完全分布式部署


Hadoop下载地址:https://archive.apache.org/dist/hadoop/common/

Hadoop各组件常用端口说明

服务规划

注:NameNode和SecondaryNameNode和ResourceManager尽量不要安装在同一台服务器,很耗内存

该部署以Red Hat 7为例

安装前提

需先配置好1.8的JAVA环境,可参考,Hadoop和Java版本对应关系可参考https://blog.csdn.net/m0_67393619/article/details/123933614

关闭防火墙和SELinux(所有设备)

systemctl stop firewalld.service

systemctl disable firewalld.service

setenforce 0               

vi /etc/selinux/config   

SELINUX=enforcing改为SELINUX=disabled

配置IP地址和主机名之间的映射(所有设备)

vi /etc/hosts 

192.168.111.129 node1
192.168.111.130 node2
192.168.111.131 node3

需重启设备生效

创建用户(所有设备)

useradd hadoop

passwd hadoop

SSH免密登录配置(所有设备互相进行配置)

su - hadoop

ssh-keygen -t rsa

ssh-copy-id node1

ssh-copy-id node2

ssh-copy-id node3

Hadoop完全分布式部署

Hadoop完全分布式的数据是存储在hadoop上的,并且是多台服务器进行的工作

先在192.168.111.129上的操作

1.解压安装包

tar -zxvf hadoop-3.0.3.tar.gz -C /usr/local/

2.修改环境变量

vim /etc/profile

export HADOOP_HOME=/usr/local/hadoop-3.0.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

source /etc/profile

3.修改hadoop配置文件

cd /usr/local/hadoop-3.0.3/etc/hadoop

vim hadoop-env.sh

export JAVA_HOME=/usr/local/java/jdk1.8.0_60

核心配置文件

vim core-site.xml

 
   
   
    fs.defaultFS 
    hdfs://node1:8020 
   
 
   
   
    hadoop.tmp.dir 
    /usr/local/hadoop-3.0.3/data 
   
 
   
   
    hadoop.http.staticuser.user 
    hadoop 
   

HDFS配置文件

vim hdfs-site.xml

 
   
   
    dfs.namenode.http-address 
    node1:9870 
   

   
   
    dfs.namenode.secondary.http-address 
    node3:9868 
   

  
  
    dfs.replication
    3
  
   

YARN配置文件

vim yarn-site.xml   

 
   
   
    yarn.nodemanager.aux-services 
    mapreduce_shuffle 
   
 
   
   
    yarn.resourcemanager.hostname 
    node2 
   
 
   
   
    yarn.nodemanager.env-whitelist 
    JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME 
  
 

MapReduce配置文件

vim mapred-site.xml 

 
   
   
    mapreduce.framework.name 
    yarn 
   
 

workers节点文件(hadoop3.0以下版本为slave文件)

vim workers

node1
node2
node3

4.创建相关目录

mkdir -p /usr/local/hadoop-3.0.3/data

5.给Hadoop目录授权

chown -R hadoop:hadoop /usr/local/hadoop-3.0.3 

6.复制Hadoop目录至其他节点

scp -r /usr/local/hadoop-3.0.3 node2:/usr/local

scp -r /usr/local/hadoop-3.0.3 node3:/usr/local

复制完成后记得去其他设备上给hadoop目录授权(chown -R hadoop:hadoop /usr/local/hadoop-3.0.3) 

7.初始化HDFS

#第一次启动HDFS需要先进行格式化,需要在NameNode节点上执行

su - hadoop

cd /usr/local/hadoop-3.0.3/bin

./hdfs namenode -format

8.启动HDFS

#hadoop用户启动

cd /usr/local/hadoop-3.0.3/sbin

./start-dfs.sh

9.启动YARN

#来到配置了 ResourceManager 的节点启动,这里我的是node2

#hadoop用户启动

cd /usr/local/hadoop-3.0.3/sbin

./start-yarn.sh

10.查看启动情况

分别登陆三个节点使用jps命令查看

####192.168.111.129(node1)
jps
39264 NodeManager
38836 NameNode
39367 Jps
38954 DataNode

####192.168.111.130(node2)
jps
3937 NodeManager
4296 Jps
3417 DataNode
3820 ResourceManager

####192.168.111.131(node3)
jps
5412 Jps
5206 SecondaryNameNode
5096 DataNode
5309 NodeManager

11.访问页面是否正常

访问HDFS的NameNode WEB:http://192.168.111.129:9870/

访问YARN的ResourceManager WEB:http://192.168.111.130:8088/

#当我们有MapReduce任务执行时,在该页面上即可查看到

12.Hadoop集群奔溃处理方式

#若练习的时候出现奔溃,可以使用以下方式,生产环境的话就算了

删除每个hadoop下的data和logs文件,然后重新格式化HDFS并启动即可

13.配置历史服务器(在此我们配置在node1上)

作用:可以查看到程序的历史运行情况

cd /usr/local/hadoop-3.0.3/etc/hadoop

MapReduce配置文件

vim mapred-site.xml

 
 
  mapreduce.jobhistory.address 
   node1:10020 
 
 
 
 
   mapreduce.jobhistory.webapp.address 
   node1:19888 
  

启动历史服务器

cd /usr/local/hadoop-3.0.3/bin

./mapred --daemon start historyserver

jps
39264 NodeManager
38836 NameNode
40501 Jps
38954 DataNode
40444 JobHistoryServer

访问JobHistoryServer WEB: http://192.168.111.129:19888/

配置了历史服务器后,我们YARN的ResourceManager WEB页面里的历史任务才可以进行查看

#需重启YARN(在此我们是在node2上操作)

cd /usr/local/hadoop-3.0.3/sbin

./stop-yarn.sh

./start-yarn.sh

#不过对于我目前的这个环节单单重启YARN还不够,因为我hadoop配置的都是域名,所以需要在本机进行域名配置,修改C:\Windows\System32\drivers\etc下的hosts文件

然后通过ResourceManager WEB中的任务history选项即可进行跳转

14.配置日志聚集功能(所有节点) 

可以看到上方jobhistory有个logs选项,该选项是记录我们程序的运行日志,不过只有配置了日志聚集功能才可以查看,日志聚集功能会将所有服务器日志聚集到HDFS上

cd /usr/local/hadoop-3.0.3/etc/hadoop

vim yarn-site.xml

 
 
  yarn.log-aggregation-enable 
  true 
 
 
 
  yarn.log.server.url 
  http://node1:19888/jobhistory/logs 
 
 
 
  yarn.log-aggregation.retain-seconds 
  604800 

注:开启日志聚集功能,需重新启动Yarn、HistoryServer 

#重启HistoryServer(在此我们是在node1上操作)

cd /usr/local/hadoop-3.0.3/bin

./mapred --daemon stop historyserver

./mapred --daemon start historyserver

#重启YARN(在此我们是在node2上操作)

cd /usr/local/hadoop-3.0.3/sbin

./stop-yarn.sh

./start-yarn.sh

#然后新增的任务就可以通过ResourceManager WEB中的任务history选项进行跳转至History,再跳转至logs。不过这里必须是新增的,之前的任务还是不可以。logs跳转后的页面如下所示

15.Hadoop集群启动/停止方式总结

整体启动/停止 HDFS 

start-dfs.sh/stop-dfs.sh

整体启动/停止 YARN

start-yarn.sh/stop-yarn.sh 

逐一启动/停止 HDFS 组件 

hdfs --daemon start/stop namenode/datanode/secondarynamenode

逐一启动/停止 YARN 组件

yarn --daemon start/stop resourcemanager/nodemanager

逐一启动/停止 historyserver 组件 

mapred --daemon stop historyserver