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

news2025/1/14 18:36:58

视频课程地址: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.coloradmin.cn/o/1331957.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue如何请求接口——axios请求

1、安装axios 在cmd或powershell打开文件后&#xff0c;输入下面的命令 npm install axios 可在项目框架中的package.json中查看是否&#xff1a; 二、引用axios import axios from axios 在需要使用的页面中引用 三、get方式使用 get请求使用params传参,本文只列举常用参数…

基于 Sentry 的前端监控系统搭建(Linux)

一、前言 随着技术这几年的发展与沉淀&#xff0c;线上数据指标监控也变得尤为重要&#xff0c;研发人员和运营人员需要对线上的产品指标有所感知&#xff0c;同时风险也需要及时暴露&#xff0c;很多公司开始自建监控系统&#xff0c;但对于一些定制化要求不是特别高的团队&a…

LV.13 D6 Linux内核安装及交叉编译 学习笔记

一、tftp加载Linux内核及rootfs 1.1 uboot内核启动命令 bootm 启动指定内存地址上的Linux内核并为内核传递参数 bootm kernel-addr ramdisk-addr dtb-addr 注: kernel-addr: 内核的下载地址 ramdisk-addr: 根文件系统的下载地址 …

蓝牙物联网室内定位系统解决方案

目前国内外室内定位技术较多&#xff0c;常见的有无线局域网(Wireless Fidelity,WiFi)、射频识别(Radio FrequencyIdentification,RFID)、蓝牙低功耗(Bletooth Low EnergyBLE)、超宽带(Ultra Wide BandUWB)技术等。近几年智能设备的迅速发展和蓝牙设备的生产制造成本越来越低&a…

单元测试(超详细整理)

前言 为什么我们需要测试&#xff1f; 让产品可以快速迭代&#xff0c;同时还能保持高质量 对于一些相对稳定的系统级别页面&#xff0c;自动化测试在提高测试的效率的方面起到非常重要的作用。前端的自动化测试主要包括&#xff1a;浏览器测试和单元测试。Vue官方脚手架自带…

Unity中Shader观察空间推导(在Shader中实现)

文章目录 前言一、观察空间矩阵推导1、求观察空间基向量2、求观察空间的基向量在世界空间中的矩阵 的 逆矩阵2、求平移变换矩阵3、相乘得出 观察空间转化矩阵4、得到顶点的世界空间坐标&#xff0c;然后转化到观察空间5、把观察空间坐标转化为齐次裁剪坐标输出到屏幕 二、最终效…

Python入门学习篇(五)——列表字典

1 列表 1.1 定义 ①有序可重复的元素集合 ②可以存放不同类型的数据 ③个人理解:类似于java中的数组1.2 相关方法 1.2.1 获取列表长度 a 语法 len(列表名)b 示例代码 list2 [1, 2, "hello", 4] print(len(list2))c 运行结果 1.2.2 获取列表值 a 语法 列表名…

STM32实现三个小灯亮

led.c #include"led.h"void Led_Init(void) {GPIO_InitTypeDef GPIO_VALUE; //???RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//???GPIO_VALUE.GPIO_ModeGPIO_Mode_Out_PP;//???? ????GPIO_VALUE.GPIO_PinGPIO_Pin_1|GPIO_Pin_2|GPIO_P…

深度学习中的池化

1 深度学习池化概述 1.1 什么是池化 池化层是卷积神经网络中常用的一个组件&#xff0c;池化层经常用在卷积层后边&#xff0c;通过池化来降低卷积层输出的特征向量&#xff0c;避免出现过拟合的情况。池化的基本思想就是对不同位置的特征进行聚合统计。池化层主要是模仿人的…

Openwrt AP 发射 WiFi 信号

问题 想一次把 OpenWrt 路由器 wifi 问题给解决&#xff0c;完全取代路由器。 使用 倍控的 N5105 设备&#xff0c;有 mPCIe 接口&#xff0c;使用了 intel AX200 无线网卡&#xff0c;支持 2.4G 与 5G。 设置步骤 OpenWrt 镜像 第一次使用的镜像不支持 wifi&#xff0c;在…

Docker知识总结

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

51单片机拆字程序实验

一、实验内容 1.基本要求 熟悉51仿真系统&#xff1b;设计并单步调试&#xff0c;实现将R5中数值&#xff08;初值为本人学号后两位&#xff09;拆分成两位独立的数据分别存于R6,R7中&#xff1b; 2.扩展要求 将R6,R7中的被拆出来的一位HEX数据转换为可显示的ASCII编码&…

Python算法例27 对称数

1. 问题描述 对称数是一个旋转180后&#xff08;倒过来&#xff09;看起来与原数相同的数&#xff0c;找到所有长度为n的对称数。 2. 问题示例 给出n2&#xff0c;返回[&#xff02;11&#xff02;&#xff0c;&#xff02;69&#xff02;&#xff0c;&#xff02;88&#x…

docker构建镜像及项目部署

文章目录 练习资料下载一、docker基础1. 基本概念2. docker常见命令3. 命令别名4. 数据卷 二、docker自定义镜像1. 了解镜像结构2. 了解Dockerfile3. 构建Dockerfile文件&#xff0c;完成自定义镜像 三、网络1. docker常见网络命令2. docker自带虚拟网络3. 自定义网络 四、dock…

Web前端 ---- 【Vue】vue路由守卫(全局前置路由守卫、全局后置路由守卫、局部路由path守卫、局部路由component守卫)

目录 前言 全局前置路由守卫 全局后置路由守卫 局部路由守卫之path守卫 局部路由守卫之component守卫 前言 本文介绍Vue2最后的知识点&#xff0c;关于vue的路由守卫。也就是鉴权&#xff0c;不是所有的组件任何人都可以访问到的&#xff0c;需要权限&#xff0c;而根据权限…

simulinkveristandlabview联合仿真——模型导入搭建人机界面

目录 1.软件版本 2.搭建simulink仿真模型 编译错误 3.导入veristand并建立工程 4.veristand导入labview labview显示veristand工程数据 labview设置veristand工程数据 运行labview工程 1.软件版本 matlab2020a&#xff0c;veristand2020 R4&#xff0c;labview2020 SP…

第1课 配置FFmpeg+OpenCV开发环境

一、配置开发环境 1.下载FFmpegOpenCV开发所用的SDK压缩包&#xff0c;并解压到E:\SDK下&#xff0c;解压后的路径应为&#xff1a;E:\SDK\ffmpeg-sdk\58\x86\dll及E:\SDK\opencv-sdk\340\x86\dll。 2.新建VC项目&#xff0c;名称为demo1&#xff0c;项目类弄为MFC应用程序&a…

2023年浙大城市学院新生程序设计竞赛(同步赛)G

登录—专业IT笔试面试备考平台_牛客网 题意 思路 首先想法非常单一&#xff0c;一定是去枚举操作点&#xff0c;然后看它染白和不染的价值差值 也就是说&#xff0c;把一个黑色结点染白之后&#xff0c;对哪些结点的价值会影响 不难想象其实就是操作结点的子树和该点连通的…

嵌入式硬件电路原理图之跟随电路

描述 电压跟随电路 电压跟随器是共集电极电路&#xff0c;信号从基极输入&#xff0c;射极输出&#xff0c;故又称射极输出器。基极电压与集电极电压相位相同&#xff0c;即输入电压与输出电压同相。这一电路的主要特点是&#xff1a;高输入电阻、低输出电阻、电压增益近似为…

C/C++ 连接访问 MySQL数据库

前面我们已经讲述了MySQL的基础使用&#xff0c;现在我们来看一下如何使用语言来操作数据库。在实际开发中&#xff0c;语言连接MySQL是为了能够在编程语言中与MySQL数据库进行交互和操作。大部分情况我们都是通过语言连接MySQL&#xff0c;建立与MySQL数据库的连接&#xff0c…