自学内容网 自学内容网

Hadoop•搭建完全分布式集群


前提是集群里的虚拟机间实现了免密登录以及JDK的成功安装(执行 java -version查看JDK版本号)。【可以参考 Hadoop•FinalShell连接VMware&免密登录Hadoop•安装JDK】【这里是以test为主结点、test1和test2为从结点。如果看到node了,就是我忘改了,node的是以node1为主结点、node2和node3为从结点。怕真出现了会迷惑,还是谨慎一点点~😗】

一、安装Hadoop🥕

三台机子的JDK和Hadoop版本必须一致

  • 电脑下载Hadoop安装包(需要该安装包可以在文章下面评论1,如果宝贝是学生,你们老师应该会给,命令记得要根据安装包名字对应更改哦😚)
  • 用FinalShell直接上传到虚拟机,用mv命令移动到所需文件夹。如mv /jdk-8u271-linux-x64.tar.gz /export/software,即mv /要移动文件的名字/要移动到的文件夹(如果显示没有那个文件或目录,“Hadoop•安装JDK”里有解决办法)
  • 将位于/export/software的文件名为hadoop-3.3.0.tar.gz的Hadoop安装包解压缩到/export/servers,命令为tar -zxvf /export/software/hadoop-3.3.0.tar.gz -C /export/servers (这里的目录约定在Hadoop•安装JDK有说明)

二、配置Hadoop系统环境变量🥮

编辑环境变量的配置文件,命令为vi /etc/profile,在文件底部添加这些你所安装的Hadoop(解压缩后)的路径以及它的bin目录(包含Hadoop可执行文件)和sbin目录(包含系统级别的Hadoop可执行文件,用于启动和停止Hadoop服务)的路径。编好后保存退出,用source /etc/profile使环境变量生效。
添加:

  • export HADOOP_HOME=/export/servers/hadoop-3.3.0
  • export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

增加理解:
在这里插入图片描述

三、验证Hadoop系统环境变量是否配置成功🧁

执行hadoop version命令可以查看到Hadoop版本号就成功了(跟查看JDK版本号的命令不同,这个命令version前没有横杠-

在这里插入图片描述

四、修改Hadoop配置文件🍭

修改的都是自己后来装的Hadoop3.3.0【/export/servers/hadoop-3.3.0/etc/hadoop】里的,一共要修改个文件。

  1. hadoop-env.sh
    在底部添加
export JAVA_HOME=/export/servers/jdk1.8.0_271
#文件最后添加
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root

🧀🧀🧀我是分割线

在这里插入图片描述

  1. core-site.xml
    在底部添加
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://test:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/export/data/hadoop-3.3.0</value>
</property>
<!-- 设置HDFS web UI用户身份 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<!-- 整合hive -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<!-- 文件系统垃圾桶保存时间 -->
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
</configuration>

🧀🧀🧀我是分割线

在这里插入图片描述

  1. hdfs-site.xml
    在底部添加
<configuration>
<property>
name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>test1:9868</value>
</property>
</configuration>

🧀🧀🧀我是分割线

在这里插入图片描述

  1. mapred-site.xml
    在底部添加
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>test:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>test:19888</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
</configuration>

🧀🧀🧀我是分割线

在这里插入图片描述

  1. yarn-site.xml
    在底部添加
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>test</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 是否将对容器实施物理内存限制 -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!-- 是否将对容器实施虚拟内存限制。 -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<!-- 开启日志聚集 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 保存的时间7-->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>

🧀🧀🧀我是分割线

在这里插入图片描述

  1. workers
    最终修改为(core-site.xml已经指定了主节点的地址,这里只要列出从节点地址就能让集群识别主从结点了)【下面是两个从节点的名字】:
test1
test2

五、分发Hadoop安装目录🧋

  • 分发到test1
    scp -r /export/servers/hadoop-3.3.0 root@test1:/export/servers

  • 分发到test2
    scp -r /export/servers/hadoop-3.3.0 root@test2:/export/servers

六、分发系统环境变量文件🍨

  • 分发到test1
    scp /etc/profile root@test1:/etc

  • 分发到test2
    scp /etc/profile root@test2:/etc

分发完后在test1test2执行source /etc/profile

七、格式化HDFS文件系统🍰

在主结点test执行hdfs namenode -format,注意只有初次启动Hadoop集群前才需要格式化

在这里插入图片描述

八、启动Hadoop🎂

在主结点test执行start-dfs.shstart-yarn.sh实现在三台虚拟机上启动HDFS和YARN的相关服务。如果要关闭Hadoop,则在主结点test执行stop-dfs.shstop-yarn.sh的命令。(或者start-all.sh一键启动)
start-all.sh一键启动在Hadoop 2.x版本中已经被弃用,在Hadoop 3.x版本中,仍然可以使用,但建议分别使用start-dfs.shstart-yarn.sh来启动HDFS和YARN服务,以避免潜在的问题。总的来说,就是最好分别启动。

在这里插入图片描述

🧀🧀🧀我是分割线

在这里插入图片描述

九、查看Hadoop运行状态🍬

分别在三台虚拟机执行jps命令查看Hadoop运行状态。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

搭建时遇到的问题⚠️

logs does not exist. Creating

这里是以test为主结点、test1和test2为从结点。
问题test1: WARNING: /export/servers/hadoop-3.3.0/logs does not exist. Creating.
解决办法:在三个节点上启动journalnode,命令是hdfs --daemon start journalnode,就是三台虚拟机都需要执行这个命令。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

secondary namenode等丢失(jps时看不到)

问题:多次格式化导致secondary namenode等丢失(jps时看不到)
解决办法

  1. 关闭集群
    stop-all.shstop-dfs.shstop-yarn.sh

  2. 删除集群产生的缓存文件(三台机子都要!!!)
    (一)/export/data的hadoop文件夹(三台机子都要)
    在这里插入图片描述
    (二)删除/export/servers/hadoop-3.1.4/logs(三台机子都要)
    也是先刷新哦,然后整个文件夹直接删掉,格式化后会自己创建的
    在这里插入图片描述

  3. 重新格式化
    hdfs namenode -format
    在这里插入图片描述

能量站😚

我遇到的挑战可以帮助我成长。
请添加图片描述

❤️谢谢你为自己努力❤️


原文地址:https://blog.csdn.net/2301_80766171/article/details/145189440

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!