Hadoop•搭建完全分布式集群

听说这里是目录哦

  • 一、安装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/data的hadoop文件夹(三台机子都要)
    在这里插入图片描述
    (二)删除/export/servers/hadoop-3.1.4/logs(三台机子都要)
    也是先刷新哦,然后整个文件夹直接删掉,格式化后会自己创建的
    在这里插入图片描述

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

能量站😚

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/958735.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

安卓动态设置Unity图形API

命令行方式 Unity图像api设置为自动,安卓动态设置Vulkan、OpenGLES Unity设置 安卓设置 创建自定义活动并将其设置为应用程序入口点。 在自定义活动中,覆盖字符串UnityPlayerActivity。updateunitycommandlineararguments (String cmdLine)方法。 在该方法中,将cmdLine…

Java春招面试指南前言

在当今竞争激烈的就业市场中&#xff0c;对于即将踏入职场的Java开发者而言&#xff0c;春招是一次宝贵的机会。本博客专栏旨在为大家提供一份全面且实用的Java春招面试指南&#xff0c;助力大家顺利通过面试&#xff0c;开启职业生涯的新篇章。 无论你是初出茅庐的应届生&…

记录一次k8s起不来的排查过程

我在k8s集群&#xff0c;重启了一个node宿主机&#xff0c;竟然发现kubelet起不来了&#xff01;报错如下 这个报错很模糊&#xff0c;怎么排查呢。这样&#xff0c;开两个界面&#xff0c;一个重启kubelet&#xff0c;一个看系统日志(/var/log/message:centos&#xff0c;/va…

利用Qt5.15.2编写Android程序时遇到的问题及解决方法

文章目录 背景1.文件读写 背景 目前我用的是Qt5.15.2来编写Qt程序&#xff0c;环境的配置看我这篇文章【Qt5.15.2配置Android开发环境】 项目中的一些配置的截图&#xff1a; 1.文件读写 假如直接用 QFileDialog::getExistingDirectory来获取路径的话&#xff0c;会得到类…

JVM深入学习(一)

目录 一.JVM概述 1.1 为什么要学jvm&#xff1f; 1.2 jvm的作用 1.3 jvm内部构造 二.JVM类加载 2.1类加载过程 2.2类加载器 2.3类加载器的分类 2.4双亲委派机制 三.运行时数据区 堆空间区域划分&#xff08;堆&#xff09; 为什么分区(代)&#xff1f;&#xff08…

o1 医学推理:基于推断时长扩展与旅程学习,仅用 500 条蒸馏示例,实现 6%~11% 性能提升

o1 医学推理&#xff1a;基于推断时长扩展与旅程学习&#xff0c;仅用 500 条蒸馏示例&#xff0c;实现 6%&#xff5e;11% 性能提升 论文大纲1. 提出背景是什么&#xff1f;2. 概念的性质是什么&#xff1f;是什么导致这个性质&#xff1f;3. 请举一个正例、一个反例&#xff…

微信小程序隐藏右侧胶囊按钮,分享和关闭即右侧三个点和小圆圈按钮

在微信小程序开发过程中&#xff0c;可能需要将右侧的胶囊按钮、即右侧的三个点和小圆圈按钮关闭掉。如图&#xff1a; 这时&#xff0c;我们只需在该页面的json文件中进行相关配置即可 {"navigationBarTitleText": "商品详情页","navigationStyle&q…

chrome小插件:长图片等分切割

前置条件&#xff1a; 安装有chrome谷歌浏览器的电脑 使用步骤&#xff1a; 1.打开chrome扩展插件 2.点击管理扩展程序 3.加载已解压的扩展程序 4.选择对应文件夹 5.成功后会出现一个扩展小程序 6.点击对应小程序 7.选择图片进行切割&#xff0c;切割完成后会自动保存 代码…

检测到联想鼠标自动调出运行窗口,鼠标自己作为键盘操作

联想鼠标会自动时不时的调用“运行”窗口 然后鼠标自己作为键盘输入 然后打开这个网页 &#xff08;不是点击了什么鼠标外加按键&#xff0c;这个鼠标除了左右和中间滚轮&#xff0c;没有其他按键了&#xff09;

深入MapReduce——计算模型设计

引入 通过引入篇&#xff0c;我们可以总结&#xff0c;MapReduce针对海量数据计算核心痛点的解法如下&#xff1a; 统一编程模型&#xff0c;降低用户使用门槛分而治之&#xff0c;利用了并行处理提高计算效率移动计算&#xff0c;减少硬件瓶颈的限制 优秀的设计&#xff0c…

【大数据】机器学习----------强化学习机器学习阶段尾声

一、强化学习的基本概念 注&#xff1a; 圈图与折线图引用知乎博主斜杠青年 1. 任务与奖赏 任务&#xff1a;强化学习的目标是让智能体&#xff08;agent&#xff09;在一个环境&#xff08;environment&#xff09;中采取一系列行动&#xff08;actions&#xff09;以完成一个…

Android中Service在新进程中的启动流程

目录 1、Service与AMS交互框架介绍 1.1、认识AMS代表IActivityManager 1.2、认识客户端代表IApplicationThread 2、Service启动流程概览 我们知道Android有四大组件&#xff0c;Activity、Service、ContentProvider、Broadcast&#xff0c;每个组件在系统运行中或者我们编写…

华为EC6110T-海思Hi3798MV310_安卓9.0_通刷-强刷固件包

华为EC6110T-海思Hi3798MV310_安卓9.0_通刷-强刷固件包 刷机教程说明&#xff1a; 适用机型&#xff1a;华为EC6110-T、华为EC6110-U、华为EC6110-M 破解总分为两个部分&#xff1a;拆机短接破解&#xff08;保留IPTV&#xff09;和OTT卡刷&#xff08;不保留IPTV&#xff09…

2025.1.20——二、buuctf BUU UPLOAD COURSE 1 1 文件上传

题目来源&#xff1a;buuctf BUU UPLOAD COURSE 1 1 目录 一、打开靶机&#xff0c;查看信息 二、解题思路 step 1&#xff1a;上传一句话木马.php文件康康回显 step 2&#xff1a;蚁剑连接 三、小结 一、打开靶机&#xff0c;查看信息 这里提示到了文件会被上传到./uplo…

移动端VR处理器和传统显卡的不同

骁龙 XR 系列芯片 更多地依赖 AI 技术 来优化渲染过程&#xff0c;而传统的 GPU 渲染 则倾向于在低画质下运行以减少负载。这种设计是为了在有限的硬件资源下&#xff08;如移动端 XR 设备&#xff09;实现高性能和低功耗的平衡。以下是具体的分析&#xff1a; 1. AI 驱动的渲染…

[java] java基础-字符串篇

目录 API String 创建字符串对象的两种方式&#xff1a; Java的内存模型 字符串常量池&#xff08;串池&#xff09;存放地址 两种构造方法的内存分析 String的常用方法 号比较的是什么 字符串比较&#xff08;比较字符串的数据值&#xff09; 遍历字符串 StringBui…

C# 多线程同步(Mutex | Semaphore)

Mutex: 用于保护临界区&#xff0c;确保同一时间只有一个线程能够访问共享资源&#xff1b; Semaphore: 允许同时有多个线程访问共享资源&#xff0c;但会限制并发访问的数量。 Mutex运行输出 Semaphore运行输出 namespace SyncThreadDemo {internal class Program{static stri…

易语言模拟真人鼠标轨迹算法 - 防止游戏检测

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序&#xff0c;它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言&#xff0c;原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势&#xff1a; 模拟…

ThinkPhp伪静态设置后,访问静态资源也提示找不到Controller

ThinkPhp没有配置伪静态时&#xff0c;除了默认的IndexController能访问&#xff0c;其他路由Controller都访问不到&#xff0c;提示404错误。配置了伪静态后就解决了这个问题。 但是当我的ThinkPhp后台项目中有静态资源放在public目录&#xff08;或子目录&#xff09;中需要…

C#编译报错: error CS1069: 未能在命名空间“System.Windows.Markup”中找到类型名“IComponentConnector”

文章目录 问题现象解决方案 问题现象 一个以前使用.NET Framwork 3.0框架开发的项目&#xff0c;在框架升级到.NET Framwork 4.7.2后&#xff0c; 如下代码&#xff1a; #pragma checksum "..\..\XpsViewer.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}&qu…