Hadoop•搭建完全分布式集群

server/2025/1/23 7:58:32/

听说这里是目录哦

  • 一、安装Hadoop🥕
  • 二、配置Hadoop系统环境变量🥮
  • 三、验证Hadoop系统环境变量是否配置成功🧁
  • 四、修改Hadoop配置文件🍭
  • 五、分发Hadoop安装目录🧋
  • 六、分发系统环境变量文件🍨
  • 七、格式化HDFS文件系统🍰
  • 八、启动Hadoop🎂
  • 九、查看Hadoop运行状态🍬
  • 搭建时遇到的问题⚠️
    • logs does not exist. Creating
    • secondary namenode等丢失(jps时看不到)
  • 能量站😚

前提是集群里的虚拟机间实现了免密登录以及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/datahadoop文件夹(三台机子都要)
    在这里插入图片描述
    (二)删除/export/servers/hadoop-3.1.4/logs(三台机子都要)
    也是先刷新哦,然后整个文件夹直接删掉,格式化后会自己创建的
    在这里插入图片描述

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

能量站😚

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

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


http://www.ppmy.cn/server/160676.html

相关文章

Threejs的学习-常用的API

为了方便自己后期查询方便&#xff0c;这里做个记录记录使用过的Threejs的对象&#xff0c;后续慢慢更新&#xff0c;如果觉得有用的话别忘了收藏下 渲染器 WebGLRenderer 负责将3D场景渲染到HTML元素&#xff08;通常是<canvas>&#xff09;上 常用的参数&#xff1…

机器学习练习day1

使用scikit-learn中的KNN包实现对鸢尾花数据集或者自定义数据集的的预测 KNN算法有三要素&#xff1a;1.K值选择&#xff1b;2.距离选择&#xff1b;3.分类规则选择。 步骤1 导入数据集 步骤2 将数据集设置标签 步骤3 设置超参数 代码 from sklearn.neighbors import KNei…

信号失真度测试仪、音频失真度测试仪、失真度仪、全自动数字失真度测量仪

谐波失真是由放大器的非线性引起的&#xff0c;失真的结果是使放大器输出产生了原信号中没有的谐波分量&#xff0c;使声音失去了原有的音色&#xff0c;严重时声音会发破、刺耳。多媒体音箱的谐波失真在标称额定功率时的失真度均为10%&#xff0c;要求较高的一般应该在1%以下。…

Vue 3 的 keep-alive 及生命周期钩子

在 Vue 3 中&#xff0c;keep-alive 是一个内置组件&#xff0c;用于提高性能和减少不必要的组件销毁与重建。它与组件的生命周期紧密相关&#xff0c;特别是在动态组件和路由切换场景下&#xff0c;能够缓存组件的状态并避免重新渲染。 而 onActivated 和 onDeactivated 是 …

ubuntu20.04搭建wordpress时出现问题汇总

主要参考教材&#xff1a;ubuntu20.04安装wordpress教程 问题1&#xff1a; rootracknerd-e7ec47c:~# sudo apt-get install php8.1 Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package php8.1 E…

【25考研】也很难!清华大学计算机考研复试难度分析!

一、复试内容 复试考核注意事项&#xff1a; 1、笔试环节&#xff1a;笔试部分包括英语和专业课的考查。其中英语笔试部分把包括英语听力和口语测试&#xff1b;关于专业课考试&#xff0c;有的学校规定了考试范围&#xff0c;考生可以在初试结束后尽快开始复习&#xff1b;对…

电子应用设计方案101:智能家庭AI喝水杯系统设计

智能家庭 AI 喝水杯系统设计 一、引言 智能家庭 AI 喝水杯系统旨在为用户提供个性化的饮水提醒和健康管理服务&#xff0c;帮助用户养成良好的饮水习惯。 二、系统概述 1. 系统目标 - 精确监测饮水量和饮水频率。 - 根据用户的身体状况和活动量&#xff0c;智能制定饮水计划。…

jenkins-通过api获取所有job及最新build信息

日常维护的API接口功能&#xff1a; 前提&#xff1a; python 1. 获取所有job&#xff1a; def get_all_jobs(jenkins_url, username, password):url f"{jenkins_url}/api/json"response requests.get(url, auth(username, password))if response.status_code 2…