目录
现在将我们配置的hadoop3.1.3,分发到bigdata04和bigdata05
还有在bigdata03中配置的Hadoop环境变量也要传到04,05中
首先克隆三个bigdata
此下操作是在bigdata02中的
安装hadoop
打开/opt/install_packages
目前只配置了jdk
将hadoop配置文件拖拽到 /opt/install_packages目录下
输入
tar -zxvf /opt/install_packages/hadoop-3.1.3.tar.gz -C /opt/softs/
进行解压
查看是否已经解压到
之后修改下目录名称 我有强迫症
mv hadoop-3.1.3/ hadoop3.1.3/
配置环境变量
vim /etc/profile
在底部添加
#HADOOP_HOME
export HADOOP_HOME=/opt/softs/hadoop3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
保存退出
输入
source /etc/profile
验证一下
echo $HADOOP_HOME
这里是成功的
IP地址和主机的映射
输入
vim /etc/hosts
输入克隆的主机与IP的映射
保存退出
使用远程传输命令
scp 要远程传输的文件 目标主机的用户名@目标主机的IP或者hostname:文件远程传输的位置
将03上的hosts文件传到04和05上
scp /etc/hosts root@bigdata04:/etc/
打开bigdata04,在其中打印/etc/hosts
成功了,之后的bigdata05同理
每台虚拟机上都进行免密登录操作
bigdata03
进入根目录,显示隐藏文件
进入.ssh目录
生成公钥和私钥
ssh-keygen -t rsa
将公钥发送给需要免密登录的主机
ssh-copy-id bigdata03
ssh-copy-id bigdata04
ssh-copy-id bigdata05
之后的bigdata04,05也进行一样的操作
回到第一台虚拟机(bigdata02),进行集群的搭建
集群规划
bigdata03 | bigdata04 | bigdata05 | |
HDFS | NameNode,DataNode | 2nn,DataNode | DataNode |
YARN | NodeManager | NodeManager | ResourceManager,NodeManager |
因为NameNode,2nn,ResourceManager都很占用资源,所以避免将这些放到同一个节点
开始操作
首先进入 /opt/softs/hadoop3.1.3/etc/hadoop
先配置JAVA_HOME
vim hadoop-env.sh
修改core-site.xml核心配置文件
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata03:8020</value>
</property>
<!-- 指定hadoop数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/softs/hadoop3.1.3/data</value>
</property>
<!-- 配置HDFS网页登录使用的静态用户为root -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
</configuration>
修改 hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- HDFS数据副本数 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- namenode数据的存储目录 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/softs/hadoop3.1.3/data/dfs/name</value>
</property>
<!-- datanode数据的存储目录 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/softs/hadoop3.1.3/data/dfs/data</value>
</property>
<!-- NameNode web端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>bigdata03:9870</value>
</property>
<!-- SecondaryNameNode web端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>bigdata04:9868</value>
</property>
</configuration>
修改mapred-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定MapReduce程序运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
修改yarn-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定mapreduce走shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata05</value>
</property>
<!-- 环境变量的继承 -->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<!-- 开启日志聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://bigdata05:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
配置Datanode
在/opt/softs/hadoop3.1.3/etc/hadoop目录下修改workers
vim workers
现在将我们配置的hadoop3.1.3,分发到bigdata04和bigdata05
用scp远程传输命令
scp -r 要远程传输的目录 目标主机的用户名@目标主机的IP或者hostname:目录远程传输的位置
scp -r /opt/softs/hadoop3.1.3/ root@bigdata04:/opt/softs/
scp -r /opt/softs/hadoop3.1.3/ root@bigdata05:/opt/softs/
在bigdata04中查看
存在share就表示成功了。
还有在bigdata03中配置的Hadoop环境变量也要传到04,05中
scp /etc/profile root@bigdata04:/etc/
scp /etc/profile root@bigdata05:/etc/
另外两台也是也要
source /etc/profile
初始化Hadoop
在NameNode所在的节点(bigdata03)执行初始化,因为NameNode在Hadoop分布式文件系统(HDFS)中扮演着核心角色。NameNode负责维护HDFS的目录树结构及文件的元数据信息,包括文件名、文件大小、文件块的位置信息等。初始化过程确保NameNode能够正确加载或创建这些元数据信息。
bigdata03
hdfs namenode -format
查看/opt/softs/hadoop3.1.3/m目录下是否有data
此时04,05上是没有data的
在bigdata03节点上启动SDFH
start-dfs.sh
启动yarn
在ResourceManager所在的节点,即bigdata05
启动的脚本在/opt/softs/hadoop3.1.3/sbin目录下
start-yarn.sh
此时报错
定义YARN用户环境变量:在Hadoop的配置文件中,需要设置YARN ResourceManager和NodeManager应该使用的用户账户,在03的/etc/profile中加入
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
用scp传给04,05。
重新启动yarn
此时多了04 ResourceManager和NodeManager
检查集群的搭建
bigdata03 | bigdata04 | bigdata05 | |
HDFS | NameNode,DataNode | 2nn,DataNode | DataNode |
YARN | NodeManager | NodeManager | ResourceManager,NodeManager |
bigdata03
bigdata04
bigdata05
显示无误就成功了
关闭虚拟机(一定要关闭!!)
bigdata03关闭HDFS
stop-dfs.sh
bigdata05关闭yarn
stop-yarn.sh
此时三台虚拟机的进程都是