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
    在这里插入图片描述

能量站😚

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络通信---MCU移植LWIP

使用的MCU型号为STM32F429IGT6&#xff0c;PHY为LAN7820A 目标是通过MCU的ETH给LWIP提供输入输出从而实现基本的Ping应答 OK废话不多说我们直接开始 下载源码 LWIP包源码&#xff1a;lwip源码 -在这里下载 ST官方支持的ETH包&#xff1a;ST-ETH支持包 这里下载 创建工程 …

将 AzureBlob 的日志通过 Azure Event Hubs 发给 Elasticsearch(3.纯python的实惠版)

前情&#xff1a; 将 AzureBlob 的日志通过 Azure Event Hubs 发给 Elasticsearch&#xff08;1.标准版&#xff09;-CSDN博客 将 AzureBlob 的日志通过 Azure Event Hubs 发给 Elasticsearch&#xff08;2.换掉付费的Event Hubs&#xff09;-CSDN博客 python脚本实现 厉害的…

Kafka-常见的问题解答

讲一讲分布式消息中间件 问题 什么是分布式消息中间件&#xff1f;消息中间件的作用是什么&#xff1f;消息中间件的使用场景是什么&#xff1f;消息中间件选型&#xff1f; 分布式消息是一种通信机制&#xff0c;和 RPC、HTTP、RMI 等不一样&#xff0c;消息中间件采用分布式…

Android系统开发(六):从Linux到Android:模块化开发,GKI内核的硬核科普

引言&#xff1a; 今天我们聊聊Android生态中最“硬核”的话题&#xff1a;通用内核镜像&#xff08;GKI&#xff09;与内核模块接口&#xff08;KMI&#xff09;。这是内核碎片化终结者的秘密武器&#xff0c;解决了内核和供应商模块之间无尽的兼容性问题。为什么重要&#x…

数据结构-二叉树

树的相关概念&#xff1a; 1、节点的度&#xff1a;树中一个节点的孩子个数称为该节点的度&#xff0c; 所有节点的度的最大值是树的度 2、分支节点&#xff1a;度大于0的节点称为分支节点 3、叶子结点&#xff1a;度为0的节点称为叶子结点 4、节点的层次&#xff08;深度&…

他把智能科技引入现代农业领域

江苏田倍丰农业科技有限公司&#xff08;以下简称“田倍丰”&#xff09;是一家专注于粮油种植的农业科技公司&#xff0c;为拥有300亩以上田地的大户提供全面的解决方案。田倍丰通过与当地政府合作&#xff0c;将土地承包给大户&#xff0c;并提供农资和技术&#xff0c;实现利…

python进程池、线程池

Python广为使用的并发处理库futures使用入门与内部原理_concurrent.futures-CSDN博客 ThreadPoolExecutor(max_workers1) 池中至多创建max_workers个线程的池来同时异步执行&#xff0c;返回Executor实例、支持上下文&#xff0c;进入时返回自己&#xff0c;退出时调用 submit(…

51c~SLAM~合集1

我自己的原文哦~ https://blog.51cto.com/whaosoft/12327374 #GSLAM 自动驾驶相关~~~ 一个通用的SLAM架构和基准 GSLAM&#xff1a;A General SLAM Framework and Benchmark 开源代码&#xff1a;https://github.com/zdzhaoyong/GSLAM SLAM技术最近取得了许多成功&am…

Node.js 完全教程:从入门到精通

Node.js 完全教程&#xff1a;从入门到精通 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;允许开发者在服务器端使用 JavaScript。它的非阻塞 I/O 和事件驱动架构使得 Node.js 非常适合于构建高性能的网络应用。本文将详细介绍 Node.js 的安装、基本语…

【JVM-9】Java性能调优利器:jmap工具使用指南与应用案例

在Java应用程序的性能调优和故障排查中&#xff0c;jmap&#xff08;Java Memory Map&#xff09;是一个不可或缺的工具。它可以帮助开发者分析Java堆内存的使用情况&#xff0c;生成堆转储文件&#xff08;Heap Dump&#xff09;&#xff0c;并查看内存中的对象分布。无论是内…

(二叉树)

我们今天就开始引进一个新的数据结构了&#xff1a;我们所熟知的&#xff1a;二叉树&#xff1b; 但是我们在引进二叉树之前我们先了解一下树&#xff1b; 树 树的概念和结构&#xff1a; 树是⼀种⾮线性的数据结构&#xff0c;它是由 n &#xff08; n>0 &#xff09; …

电脑如何访问手机文件?

手机和电脑已经深深融入了我们的日常生活&#xff0c;无时无刻不在为我们提供服务。除了电脑远程操控电脑外&#xff0c;我们还可以在电脑上轻松地访问Android或iPhone手机上的文件。那么&#xff0c;如何使用电脑远程访问手机上的文件呢&#xff1f; 如何使用电脑访问手机文件…

ABP - 缓存模块(1)

ABP - 缓存模块&#xff08;1&#xff09; 1. 与 .NET Core 缓存的关系和差异2. Abp 缓存的使用2.1 常规使用2.2 非字符串类型的 Key2.3 批量操作 3. 额外功能 1. 与 .NET Core 缓存的关系和差异 ABP 框架中的缓存系统核心包是 Volo.Abp.Caching &#xff0c;而对于分布式缓存…

【RAG落地利器】向量数据库Chroma入门教程

安装部署 官方有pip安装的方式&#xff0c;为了落地使用&#xff0c;我们还是采用Docker部署的方式&#xff0c;参考链接来自官方部署: https://cookbook.chromadb.dev/running/running-chroma/#docker-compose-cloned-repo 我们在命令终端运行&#xff1a; docker run -d --…

基于Python django的音乐用户偏好分析及可视化系统设计与实现

1.1 论文背景 随着信息技术的快速发展&#xff0c;在线音乐服务已成为日常生活的重要组成部分。QQ音乐&#xff0c;凭借其创新的音乐推荐算法和独特的社交特性&#xff0c;成功在竞争激烈的市场中获得一席之地。该平台的歌单文化和评论文化不仅满足了用户自尊和自我实现的需求…

以Python构建ONE FACE管理界面:从基础至进阶的实战探索

一、引言 1.1 研究背景与意义 在人工智能技术蓬勃发展的当下,面部识别技术凭借其独特优势,于安防、金融、智能终端等众多领域广泛应用。在安防领域,可助力监控系统精准识别潜在威胁人员,提升公共安全保障水平;金融行业中,实现刷脸支付、远程开户等便捷服务,优化用户体…

以单用户模式启动 Linux 的方法

注&#xff1a;本文为 “Linux 启动单用户模式” 相关文章合辑。 未整理去重。 以单用户模式启动 linux 的三种方法 作者&#xff1a; Magesh Maruthamuthu 译者&#xff1a; LCTT Xiaobin.Liu 2020-05-03 23:01 单用户模式&#xff0c;也被称为维护模式&#xff0c;超级用户…

【C++】size_t全面解析与深入拓展

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;一、什么是size_t&#xff1f;为什么需要size_t&#xff1f; &#x1f4af;二、size_t的特性与用途1. size_t是无符号类型示例&#xff1a; 2. size_t的跨平台适应性示例对…

YOLOv9改进,YOLOv9检测头融合RFAConv卷积,适合目标检测、分割任务

摘要 空间注意力已广泛应用于提升卷积神经网络(CNN)的性能,但它存在一定的局限性。作者提出了一个新的视角,认为空间注意力机制本质上解决了卷积核参数共享的问题。然而,空间注意力生成的注意力图信息对于大尺寸卷积核来说是不足够的。因此,提出了一种新型的注意力机制—…

Mysql触发器(学习自用)

一、介绍 二、触发器语法 注意&#xff1a;拿取新的数据时用new&#xff0c;旧数据用old。