Hadoop入门学习笔记——二、在虚拟机里部署HDFS集群

视频课程地址:https://www.bilibili.com/video/BV1WY4y197g7
课程资料链接:https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd=5ay8

Hadoop入门学习笔记(汇总)

目录

  • 二、在虚拟机里部署HDFS集群
    • 2.1. 部署node1虚拟机
    • 2.2. 部署node2和node3虚拟机
    • 2.3. 初始化并启动Hadoop集群(格式化文件系统)
    • 2.4. 快照部署好的集群
    • 2.5. 部署过程中可能会遇到的问题
    • 2.5. Hadoop HDFS集群启停脚本

二、在虚拟机里部署HDFS集群

下载Hadoop:https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
本次演示部署结构如下图所示:
在这里插入图片描述
本次部署服务清单如下表所示:

节点部署的服务
node1NameNode、DataNode、SecondaryNameNode
node2DataNode
node3DataNode

2.1. 部署node1虚拟机

1、将下载好的Hadoop压缩包上传至node1虚拟机的root目录;
2、将Hadoop压缩包解压至/export/server目录下

tar -zxvf hadoop-3.3.4.tar.gz -C /export/server/

3、创建hadoop目录的软链接

# 切换工作目录
cd /export/server/
# 创建软连接
ln -s /export/server/hadoop-3.3.4/ hadoop

4、hadoop目录结构如下
在这里插入图片描述

目录存放内容
bin存放Hadoop的各类程序(命令)
etc存放Hadoop的配置文件
include存放Hadopp用到的C语言的头文件
lib存放Linux系统的动态链接库(.so文件)
libexec存放配置Hadoop系统的脚本文件(.sh和.cmd文件)
licenses_binary存放许可证文件
sbin管理员程序(super bin)
share存放二进制源码(jar包)

5、配置workers文件

cd etc/hadoop/
vim workers

将workers文件原有的内容删掉,改为

node1
node2
node3

保存即可;
6、配置hadoop-env.sh文件,使用vim hadoop-env.sh打开,修改以下配置:

# 指明JDK安装目录
export JAVA_HOME=/export/server/jdk
# 指明HADOOP安装目录
export HADOOP_HOME=/export/server/hadoop
# 指明HADOOP配置文件的目录
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
#指明HADOOP运行日志文件的目录
export HADOOP_LOG_DIR=$HADOOP_HOME/logs

7、配置core-site.xml文件,使用vim core-site.xml打开文件,修改以下配置:

<configuration>
  <property>
    <!--HDFS 文件系统的网络通讯路径-->
    <name>fs.defaultFS</name>
    <value>hdfs://node1:8020</value>
  </property>
  <property>
    <!--io 操作文件缓冲区大小-->
    <name>io.file.buffer.size</name>
    <value>131072</value>
  </property>
</configuration>

8、配置hdfs-site.xml文件,修改以下配置:

<configuration>
  <property>
  	<!--hdfs 文件系统,默认创建的文件权限设置-->
    <name>dfs.datanode.data.dir.perm</name>
    <!-- 700权限即rwx------ -->
    <value>700</value>
  </property>
  <property>
  	<!--NameNode 元数据的存储位置-->
    <name>dfs.namenode.name.dir</name>
    <!-- 在 node1 节点的 /data/nn 目录下 -->
    <value>/data/nn</value>
  </property>
  <property>
    <!--NameNode 允许哪几个节点的 DataNode 连接(即允许加入集群)-->
    <name>dfs.namenode.hosts</name>
    <value>node1,node2,node3</value>
  </property>
  <property>
    <!--hdfs 默认块大小-->
    <name>dfs.blocksize</name>
    <!--268435456即256MB-->
    <value>268435456</value>
  </property>
  <property>
    <!--namenode 处理的并发线程数-->
    <name>dfs.namenode.handler.count</name>
    <value>100</value>
  </property>
  <property>
    <!--从节点 DataNode 的数据存储目录,即数据存放在node1、node2、node3三台机器中的路径-->
    <name>dfs.datanode.data.dir</name>
    <value>/data/dn</value>
  </property>
</configuration>

9、根据上一步的配置项,在node1节点创建/data/nn/data/dn目录,在node2和node3节点创建/data/dn目录;
10、将已配置好的hadoop程序从node1分发到node2和node3:

# 切换工作目录
cd /export/server/
# 将node1的hadoop-3.3.4/目录复制到node2的同样的位置
scp -r hadoop-3.3.4/ node2:`pwd`/
# 将node1的hadoop-3.3.4/目录复制到node3的同样的位置
scp -r hadoop-3.3.4/ node3:`pwd`/

11、将Hadoop加入环境变量,使用vim /etc/profile打开环境变量文件,将以下内容添加在文件末尾:

export HADOOP_HOME=/export/server/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

执行source /etc/profile命令使环境变量配置生效;
12、修改相关目录的权限:

chown -R hadoop:hadoop /data
chown -R hadoop:hadoop /export/

2.2. 部署node2和node3虚拟机

本小节内容如无特殊说明,均需在node2和node3虚拟机分别执行!

1、为hadoop创建软链接,命令都是一样的,如下所示:

cd /export/server/
ln -s /export/server/hadoop-3.3.4/ hadoop

2、将Hadoop加入环境变量,使用vim /etc/profile打开环境变量文件,将以下内容添加在文件末尾:

export HADOOP_HOME=/export/server/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

执行source /etc/profile命令使环境变量配置生效;
3、修改相关目录的权限:

chown -R hadoop:hadoop /data
chown -R hadoop:hadoop /export/

2.3. 初始化并启动Hadoop集群(格式化文件系统)

1、在node1虚拟机上执行以下命令:

# 切换为hadoop用户
su - hadoop
# 格式化namenode
hadoop namenode -format

2、启动集群,在node1虚拟机上执行以下命令:

# 一键启动整个集群,包括namenode、secondarynamenode和所有的datanode
start-dfs.sh
# 查看当前系统中正在运行的Java进程,可以看到每台虚拟机上hadoop的运行情况
jps

3、执行上述步骤之后,我们可以在我们自己的电脑(非虚拟机)上查看 HDFS WEBUI(即HADOOP管理页面),可以通过访问namenode所在服务器的9870端口查看,在本案例中因为namenode处于node1虚拟机上,所以可以访问http://node1:9870/打开。PS:因为之前我们已经配置了本机的hosts文件,所以这里可以使用node1访问,其实这个地址对应的就是http://192.168.88.101:9870/。
4、如果看到以下界面,代表Hadoop集群启动成功了。
在这里插入图片描述

2.4. 快照部署好的集群

为了保存刚部署好的集群,在后续如果出现无法解决的问题,不至于重新部署一遍,使用虚拟机快照的方式进行备份。
1、一键关闭集群,在node1虚拟机执行以下命令:

# 切换为hadoop用户
su - hadoop
# 一键关闭整个集群
stop-dfs.sh

关闭完成后,可以在node1、node2、node3虚拟机中使用jps命令查看相应Java进程是否已消失。
2、关闭三台虚拟机;
3、在VMware中,分别在三台虚拟机上右键,“快照”-“拍摄快照”功能创建快照。

2.5. 部署过程中可能会遇到的问题

  1. 在以Hadoop用户身份执行start-dfs.sh命令时,提示Permission denied。此时需要检查三台虚拟机上相关路径(/data、/export/server及其子路径)上hadoop用户是否具有读、写、执行的权限。
  2. 在执行start-dfs.sh命令后,使用jps命令可以查看已启动的服务,若发现有服务未启动成功的,可以查看/export/server/hadoop/logs目录下的日志文件,若在日志文件中看到类似于无权限、不可访问等报错信息,同样需要检查对应机器的相关路径权限。
  3. 执行hadoop namenode -formatstart-dfs.shstop-dfs.sh等Hadoop相关命令时,若提示command not found,则代表着环境变量没配置好,需要检查三台机器的/etc/profile文件的内容(需要使用source命令使环境变量生效)以及hadoop的软连接是否正确。
  4. 执行start-dfs.sh命令后,node1的相关进程启动成功,但node2和node3没有启动的,需要检查workers文件的配置是否有node2和node3。
  5. 若在日志文件中看到WstxEOFExceptionUnexpected EOF等信息,大概率是xml配置文件有问题,需要仔细检查core-site.xml和hdfs-site.xml文件里面的内容(少了某个字母或字符、写错了某个字母或字符),尤其是符号。
    综上,常见出错点总结为:
  • 权限未正确配置;
  • 配置文件错误;
  • 未格式化

2.5. Hadoop HDFS集群启停脚本

注意:在使用以下命令前,一定要确保当前是hadoop用户,否则将报错或没有效果!!!

  1. Hadoop HDFS 组件内置了HDFS集群的一键启停脚本。

    • $HADOOP_HOME/sbin/start-dfs.sh,一键启动HDFS集群
      执行流程:

      • 在执行此脚本的机器上,启动SecondaryNameNode;
      • 读取core-site.xml内容(fs.defaultFS项),确定NameNode所在机器,启动NameNode;
      • 读取workers内容,确定DataNode所在机器,启动全部DataNode。
    • $HADOOP_HOME/sbin/stop-dfs.sh,一键关闭HDFS集群
      执行流程:

      • 在执行此脚本的机器上,关闭SecondaryNameNode;
      • 读取core-site.xml内容(fs.defaultFS项),确定NameNode所在机器,关闭NameNode;
      • 读取workers内容,确认DataNode所在机器,关闭全部NameNode。
  2. 除了一键启停外,也可以单独控制某个进程的启停。

    • $HADOOP_HOME/sbin/hadoop-daemon.sh,此脚本可以单独控制所在机器的进程启停
      用法:hadoop-daemon.sh (start|status|stop) (namenode|secondarynamenode|datanode)

    • $HADOOP_HOME/sbin/hdfs,此程序也可以单独控制所在机器的进程启停
      用法:hdfs --daemon (start|status|stop) (namenode|secondarynamenode|datanode)

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

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

相关文章

如何在更新 Windows 11 后恢复误删除的文件

在本分步指南中&#xff0c;您将找到在 Windows 11 更新后恢复已删除文件的有用提示和方法。了解数据丢失的原因&#xff1a; 最新版本的 Windows 11 一直是热门话题之一&#xff0c;微软以突破性的方式重新推出了他们的操作系统。 从优雅的界面到严格的安全管理&#xff0c;…

敏捷时代的架构

在敏捷时代&#xff0c;架构如何适应敏捷原则&#xff0c;架构师如何以敏捷的方式与各个团队合作&#xff0c;本文希望能够给出这些问题的答案。原文: Architecture in the Age of Agile 前言 在快节奏的软件开发领域&#xff0c;架构和敏捷这两个看似截然不同的概念碰撞在一起…

Java设计模式-适配器模式

目录 一、生活中的适配器例子 二、基本介绍 三、工作原理 四、类适配器模式 &#xff08;一&#xff09;类适配器模式介绍 &#xff08;二&#xff09;应用实例 &#xff08;三&#xff09;类适配器模式注意事项和细节 五、对象适配器模式 &#xff08;一&#xff09…

【架构】ServerLess

文章目录 概述什么是serverless无服务与传统模式架构区别serverless优缺点使用serverless的应用场景有哪些“无服务器”搭建网站Serverless的落地案例来源 概述 架构 单体&#xff08;三层架构&#xff09;微服务分布式ServerLess 什么是serverless无服务 serverless中文的…

鸿蒙开发语言介绍--ArkTS

1.编程语言介绍 ArkTS是HarmonyOS主力应用开发语言。它在TypeScript (简称TS)的基础上&#xff0c;匹配ArkUI框架&#xff0c;扩展了声明式UI、状态管理等相应的能力&#xff0c;让开发者以更简洁、更自然的方式开发跨端应用。 2.TypeScript简介 自行补充TypeScript知识吧。h…

深入理解Python的logging模块:从基础到高级

在Python编程中&#xff0c;日志记录是一种重要的调试和错误追踪工具。Python的logging模块提供了一种灵活的框架&#xff0c;用于发出日志消息&#xff0c;这些消息可以被发送到各种输出源&#xff0c;如控制台、文件、HTTP GET/POST位置等。本文将深入探讨Python的logging模块…

冒泡排序之C++实现

描述 冒泡排序算法是一种简单的排序算法&#xff0c;它通过将相邻的元素进行比较并交换位置来实现排序。冒泡排序的基本思想是&#xff0c;每一轮将未排序部分的最大元素逐个向右移动到已排序部分的最右边&#xff0c;直到所有元素都按照从小到大的顺序排列。 冒泡排序的算法…

前端工程注入版本号

文章目录 一、前言二、webpack三、vite四、最后 一、前言 容器化时代&#xff0c;当页面出现问题时&#xff0c;如果你的新版本有可能已经修复了&#xff0c;那样你再排查它就没有意义了。为什么不一定是最新版本呢&#xff1f;一是可能是缓存作祟&#xff0c;二是可能运维成员…

每日一题——LeetCode860

个人方法&#xff1a; 用change数组保存我们拥有的零钱的数量&#xff0c;change数组只有change[5]、change[10]、change[20]是有效的&#xff0c;其值代表了不同面值的零钱拥有多少张 顾客付了多少钱&#xff0c;先把钱存入零钱数组&#xff0c;然后计算需要找零的金额&…

HarmonyOS - 鸿蒙开发入门

文章目录 HarmonyOS核心资源特性&#xff1a;全场景终端HarmonyOS 版本 HarmonyOS 和 OpenHarmony教程资源开发环境开发工具 - DevEco开发语言 - ArkTS核心框架 - ArkUI 考证 HarmonyOS 开发交流秋秋群&#xff1a;23458659&#xff0c;V : ez-code&#xff0c;期待交流和合作 …

vue 实验报告8 基于Nuxt.js开发一个Vue程序,实现登录和注册切换

一、步骤&#xff1a; 保证node.js版本在14以上 1. 全局安装create-nuxt-app: npm install -g create-nuxt-app2.9.x 2. 创建项目: create-nuxt-app my-nuxt-demo 选项这么选&#xff1a; 然后输入&#xff1a; cd my-nuxt-demo 3. 创建登录和注册页面: 在/pages目录下创建logi…

Docker知识总结

Docker 学习目标&#xff1a; 掌握Docker基础知识&#xff0c;能够理解Docker镜像与容器的概念 完成Docker安装与启动 掌握Docker镜像与容器相关命令 掌握Tomcat Nginx 等软件的常用应用的安装 掌握docker迁移与备份相关命令 能够运用Dockerfile编写创建容器的脚本 能够…

【小沐学写作】Docsify制作在线电子书、技术文档(Docsify + Markdown + node)

文章目录 1、简介2、安装2.1 node2.2 docsify-cli 3、配置3.1 初始化3.2 预览效果3.3 加载对话框3.4 更多页面3.5 侧 栏3.6 自定义导航栏 结语 1、简介 https://docsify.js.org/#/?iddocsify 一个神奇的文档网站生成器。 简单轻巧没有静态构建的 html 文件多个主题 Docsify…

跨平台Markdown编辑软件Typora mac功能介绍

Typora mac是一款跨平台的Markdown编辑器&#xff0c;支持Windows、MacOS和Linux操作系统。它具有实时预览功能&#xff0c;能够自动将Markdown文本转换为漂亮的排版效果&#xff0c;让用户专注于写作内容而不必关心格式调整。Typora Mac版除了支持常见的Markdown语法外&#x…

【测试开发】测试用例讲解

文章目录 目录 文章目录 前言 一、测试用例的基本要素 二、测试用例的设计方法 1.基于需求的设计方法 对日历根据web界面的功能布局分析出的功能框图如下&#xff1a; 继续举一个例子百度云盘非功能测试的案例&#xff1a; 2.等价类 3.边界值 5.正交表 6.场景设计法 7…

leetcode 268. 丢失的数字(优质解法)

链接&#xff1a;268. 丢失的数字 代码: class Solution {public int missingNumber(int[] nums) {int result0;for(int i0;i<nums.length;i){result^i;}for(int i0;i<nums.length;i){result^nums[i];}return result;} } 题解&#xff1a; 本题是比较简单的题&#xff…

c语言:递归法求n的阶乘|练习题

一、题目 输入一个数n&#xff0c;用递归法求n的阶乘 二、思路分析 1、因为n!(n-1)!*n,所以&#xff0c;可以选择用递归法 三、代码截图【带注释】 四、源代码【带注释】 #include <stdio.h> //思路&#xff1a; //因为n!(n-1)!*n,所以&#xff0c;可以选择用递归法 int…

数据资源工具断点续传及下载重试功能

我们可以利用数据资源工具下载各类卫星及矢量数据&#xff0c;具体方法见&#xff1a;Sentinel-2 下载&#xff08;其它数据操作方式类似&#xff09;&#xff0c;但在使用资源工具下载数据时可能会出现由于网络不稳定&#xff0c;网站关闭连接而造成下载的错误或中断。尤其是下…

微信小程序图片压缩原来这么easy!

前言 在日常业务中我们可能会涉及到图片上传功能&#xff0c;现代影像设备大多数的照片都是几MB&#xff0c;甚至几十MB大小&#xff0c;大文件的上传会导致上传进度缓慢、占用云存储空间。所以&#xff0c;我们会根据需求来做图片压缩&#xff0c;将过大的图片文件压缩到指定…