大数据之Hadoop3.2 三节点完全分布式部署
大数据:指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合。
大数据5V特点:Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。
Hadoop:有Apache基金会所开发的分布式系统基础架构。主要用来解决海量数据的存储和分析计算,本身来说,Hadoop指Hadoop生态圈。
Hadoop的优势:
1、高可靠性(底层维护多个数据副本,即使hadoop的某计算原件出现故障,不会导致数据丢失)
2、高扩展性:在集群分配任务数据,方便扩招数千节点。
3、高效性:在MapReduce的思想下,hadoop并行工作的,加快任务处理速度。
4、高容错率:能够将失败的任务重新分配。
安装部署:Hadoop3.1
卸载默认的jdk
![0](https://img2020.cnblogs.com/blog/2168843/202106/2168843-20210629172639191-1468896288.jpg)
Hadoop集群的三种模式:本地模式,伪分布式模式,完全分布式模式,区别如下:
![0](https://img2020.cnblogs.com/blog/2168843/202106/2168843-20210629172639158-320330473.jpg)
进入正题:完全分布式:
节点规划:
由于namenode、resourcenamenode、secondarynamenode比较吃内存资源,因此三台机器分开配置
本出操作系统为centos7.8,内存2G,磁盘40G,注意三台机器之间的免密互信。
名称
|
node1
|
node2
|
node3
|
HDFS
|
NameNode
DataNode
|
DataNode
|
SecondaryNameNode
DataNode
|
YARN
|
NodeManager
|
ResourceManager
NodeManager
|
NodeManager
|
参数配置开始:
core-site.xml参数以及说明:
<configuration> <property> <!-- 指定NameNode的内部通信地址 --> <name>fs.defaultFS</name> <value>hdfs://node1:8020</value> </property> <property> <!-- 指定Hadoop数据的存储目录 --> <name>hadoop.tmp.dir</name> <value>software/hadoop3.2/data</value> </property> </configuration>
hdfs-site.xml配置参数以及说明:
<configuration> <property> <!-- namenode web端访问的地址 --> <name>dfs.namenode.http-address</name> <value>node1:9870</value> </property> <property> <!-- secondarynamenode(简称2nn) web端访问的地址 --> <name>dfs.namenode.secondary.http-address</name> <value>node3:9868</value> </property> </configuration>
yarn-site.xml配置参数以及说明:
<configuration> <property> <!-- 开启日志聚集功能 --> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <property> <!-- 设置日志聚集服务器地址 --> <name>yarn.log.server.url</name> <value>http://192.168.10.102:19888jobhistory/logs</value> </property> <property> <!-- 设置日志保留时间为7天 --> <name></name> <value604800></value> </property> </configuration>
mapred-site.xml配置文件:
<configuration> <property> <!-- 指定MapReduce程序运行在yarn上 --> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <!-- 历史服务器端地址 --> <name>mapreduce.jobhistory.adress</name> <value>node1:10020</value> </property> <property> <!-- 历史服务器web端地址 --> <name>mapreduce.jobhistory.webapp.adress</name> <value>node1:19888</value> </property> </configuration>
最后配置node1上的workers(参与集群的节点)。
![0](https://img2020.cnblogs.com/blog/2168843/202106/2168843-20210629172639105-1358477273.jpg)
配置完了之后,将node1 Hadoop的配置参数同步到node2和node3
随后格式化在node1上namenode,(做初始化)
[root@node1 current]# hdfs namenode -format(是否成功,可从日志看)
启动集群:
先启动node1上的hdfs,再启动node2上的yarn
启动的常见报错一:
![0](https://img2020.cnblogs.com/blog/2168843/202106/2168843-20210629172639131-936120047.jpg)
因为是root用户,启动报错,是用户变量的问题,解决方法(两种):
方法一:
vim /etc/profile
export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root
方法二:
将start-dfs.sh,stop-dfs.sh(在hadoop安装目录的sbin里)两个文件顶部添加以下参数
HDFS_DATANODE_USER=root HADOOP_SECURE_DN_USER=hdfs HDFS_NAMENODE_USER=root HDFS_SECONDARYNAMENODE_USER=root
将start-yarn.sh,stop-yarn.sh(在hadoop安装目录的sbin里)两个文件顶部添加以下参数
YARN_RESOURCEMANAGER_USER=root HADOOP_SECURE_DN_USER=yarn YARN_NODEMANAGER_USER=root
启动常见报错二:
java环境未找到
![0](https://img2020.cnblogs.com/blog/2168843/202106/2168843-20210629172639129-2000686345.jpg)
解决方法:
配置hadoop-env.sh文件,将java环境再次写入
![0](https://img2020.cnblogs.com/blog/2168843/202106/2168843-20210629172639104-897511311.jpg)
现在在node1上启动dfs(start-dfs.sh),再去node2上启动yarn(start-yarn.sh)
启动完成之后,用jps命令查看进程。对比一下是否与之前的规划一致。
![0](https://img2020.cnblogs.com/blog/2168843/202106/2168843-20210629172639158-351671401.jpg)
关闭系统的防火墙。
浏览器访问node1:9870端口。
yarn则为node2:8088
![0](https://img2020.cnblogs.com/blog/2168843/202106/2168843-20210629172639158-75206484.jpg)
最后我总结了一下端口号:如下图
![0](https://img2020.cnblogs.com/blog/2168843/202106/2168843-20210629172639130-1652037177.jpg)