Hadoop 之 HDFS 伪集群模式配置与使用(二)

news2025/3/13 17:38:38

HDFS 配置与使用

  • 一.HDFS配置
  • 二.HDFS Shell
    • 1.默认配置说明
    • 2.shell 命令
  • 三.Java 读写 HDFS
    • 1.Java 工程配置
    • 2.测试

一.HDFS配置

## 基于上一篇文章进入 HADOOP_HOME 目录
cd $HADOOP_HOME/etc/hadoop
## 修改文件权限
chown -R root:root /usr/local/hadoop/hadoop-3.3.6/*
## 修改配置给文件:core-site.xml 和 hdfs-site.xml
vim core-site.xml
vim hdfs-site.xml

给 core-site.xml 添加如下信息,9000为RPC端口

<property>
    <name>hadoop.http.staticuser.user</name>
    <value>root</value>
</property>
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://<你的IP>:9000</value>
</property>

在这里插入图片描述

给 hdfs-site.xml 添加如下信息,副本数量设置为 1

<property>
	<name>dfs.replication</name>
	<value>1</value>
</property>

在这里插入图片描述

## 格式化文件结构
hdfs namenode -format
## 修改环境配置信息添加如下内容
vim hadoop-env.sh
export JAVA_HOME=/usr/local/java/jdk-11.0.19/
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

在这里插入图片描述

## 关闭并禁用防火墙
systemctl stop firewalld
systemctl disable firewalld
## 启动 HDFS
start-dfs.sh
## 查看进程
jps

在这里插入图片描述

## 停止 HDFS
stop-dfs.sh

在这里插入图片描述

查看 HDFS 自带面板:http://192.168.1.6:9870/

在这里插入图片描述

二.HDFS Shell

1.默认配置说明

hdfs-site.xml 文件中设置 dfs.name.dir 和 dfs.data.dir 
dfs.name.dir 的默认值为 ${hadoop.tmp.dir}/dfs/name
dfs.data.dir 的默认值为 ${hadoop.tmp.dir}/dfs/data
hadoop.tmp.dir 的值如果未使用 -D 选项或配置文件设置,则默认值为 /tmp/hadoop-${user.name}

默认值可参考如下文件
core-default.xml、hdfs-default.xml 和 mapred-default.xml

在这里插入图片描述

2.shell 命令

# 显示根目录 / 下的文件和子目录,绝对路径
hadoop fs -ls /
# 新建文件夹,绝对路径
hadoop fs -mkdir /testData
## 创建文件
echo 123 >> /home/test.txt
# 上传文件
hadoop fs -put /home/test.txt /testData/
# 下载文件
hadoop fs -get /testData/test.txt
# 输出文件内容
hadoop fs -cat /testData/test.txt

在这里插入图片描述

查看目录:hadoop fs -ls /

在这里插入图片描述

通过UI查看文件

在这里插入图片描述

三.Java 读写 HDFS

在本地idea上运行Hadoop相关服务,控制台打印出此错误“HADOOP_HOME and hadoop.home.dir are unset”,需要在本地Windows系

统配置 Hadoop 环境变量(重启IDEA)

GitHub 下载包路径

在这里插入图片描述

解压取出对应版本放到某个目录,如:D:\hadoop-3.3.5\bin

在这里插入图片描述

添加到环境变量 HADOOP_HOME

在这里插入图片描述

修改 PATH

在这里插入图片描述

1.Java 工程配置

Xml 配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>HadoopDemo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>19</maven.compiler.source>
        <maven.compiler.target>19</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring.version>3.1.1</spring.version>
        <hadoop.version>3.3.6</hadoop.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.26</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>2.0.32</version>
        </dependency>
        
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>${hadoop.version}</version>
        </dependency>

    </dependencies>

</project>

启动类

package org.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author Administrator
 */
@SpringBootApplication
public class HadoopApp {
    public static void main(String[] args) {
        SpringApplication.run(HadoopApp.class,args);
    }
}

读写类

package org.example.controller;

import jakarta.annotation.PostConstruct;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.IOException;

/**
 * @author Administrator
 * @Description
 * @create 2023-07-13 23:19
 */
@RestController
@RequestMapping("/test")
public class TestController {

    @PostConstruct
    public void init(){
        System.setProperty("HADOOP_USER_NAME","root");
    }

    @GetMapping("/get")
    public String get(){
        String result = "";
        try {
            // 配置连接地址
            Configuration conf = new Configuration();
            conf.set("fs.defaultFS", "hdfs://192.168.1.6:9000");
            FileSystem fs = FileSystem.get(conf);
            // 打开文件并读取输出
            Path path = new Path("/testData/test.txt");
            FSDataInputStream ins = fs.open(path);
            StringBuilder builder = new StringBuilder();
            int ch = ins.read();
            while (ch != -1) {
                builder.append((char)ch);
                ch = ins.read();
            }
            result = builder.toString();
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
        return result;
    }


    @GetMapping("/set")
    public void set() {
        FileSystem fs = null;
        FSDataOutputStream ws = null;
        try {
            // 配置连接地址
            Configuration conf = new Configuration();
            conf.set("fs.defaultFS", "hdfs://192.168.1.6:9000");
            fs = FileSystem.get(conf);
            // 打开文件并读取输出
            Path path = new Path("/testData/test.txt");
            ws = fs.append(path);
            ws.writeBytes("Hello World!");
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } finally {
            if (null != fs){
                try {
                    fs.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            if (null != ws){
                try {
                    ws.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }
}

2.测试

读数据

在这里插入图片描述

写数据

在这里插入图片描述

读数据

在这里插入图片描述

Windows 下 JDK 版本为 19

在这里插入图片描述

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

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

相关文章

JVM 运行流程、类加载、垃圾回收

一、JVM 简介 1、JVM JVM 是 Java Virtual Machine 的简称&#xff0c;意为 Java 虚拟机。 虚拟机是指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统。 常见的虚拟机&#xff1a;JVM、VMwave、Virtual Box。 JVM 和其他两个虚拟机的区别…

Android Profiler 内存分析器使用

Android Profiler是Android Studio的一部分&#xff0c;提供了一个集成的性能分析工具套件&#xff0c;包括内存分析。Android Profiler 工具可提供实时数据&#xff0c;帮助您了解应用的 CPU、内存、网络和电池资源使用情况。 在Android Profiler中&#xff0c;您可以查看内存…

赋能安防“新视界”!智汇云舟亮相中国安防工程商集成商大会

7月14日&#xff0c;备受业界关注的中国安防工程商&#xff08;系统集成商&#xff09;大会暨第67届中国安防新产品、新技术成果展示在上海盛大开幕。来自上海、苏州、南京、无锡等城市的200余位行业领导、嘉宾莅临参会&#xff0c;智汇云舟副总裁陈虹旭受邀出席活动并发表《视…

2、Redis高级特性和应用(发布 订阅、Stream)

Redis高级特性和应用(发布 订阅、Stream) 发布和订阅 Redis提供了基于“发布/订阅”模式的消息机制&#xff0c;此种模式下&#xff0c;消息发布者和订阅者不进行直接通信,发布者客户端向指定的频道( channel)发布消息&#xff0c;订阅该频道的每个客户端都可以收到该消息。 …

【云原生|Docker系列第3篇】Docker镜像的入门实践

欢迎来到Docker入门系列的第三篇博客&#xff01;在前两篇博客中&#xff0c;我们已经了解了什么是Docker以及如何安装和配置它。本篇博客将重点介绍Docker镜像的概念&#xff0c;以及它们之间的关系。我们还将学习如何拉取、创建、管理和分享Docker镜像&#xff0c;这是使用Do…

链表OJ(LeetCode)

文章目录 1.移除链表元素2.反转链表3.链表的中间结点4.倒数第k个结点5.合并两个有序链表6.链表分割7.链表的回文结构8.相交链表9.环形链表10.环形链表Ⅱ1.常规思路2.新型思路【无码】 1.移除链表元素 法一&#xff1a;遍历删除 struct ListNode {int val;struct ListNode* nex…

采集极验4滑块验证码图片数据

在网络安全领域&#xff0c;验证码是一种常见的用于验证用户身份或防止恶意机器人攻击的技术。而极验4滑块验证码作为一种广泛应用的验证码形式&#xff0c;其具有较高的安全性和防御能力。本文将以获取极验4滑块验证码图片数据为主题&#xff0c;介绍相关技术和方法。 一、极…

【Jenkins入门到实战】忽如一夜春风来,千树万树梨花开

自动化运维之Jenkins 前提条件&#xff1a;安装好jdk &#xff08;版本要求11-17&#xff09;并配置好环境变量 一、Jenkins 1、Jenkins是什么 Jenkins是一个开源的持续集成服务&#xff0c;用于实施软件开发和发布流程。它帮助软件开发和运维团队在构建、测试和部署软件上实…

cesium的使用

cesium的使用 cesium的使用创建一个vue项目 vuevitecesium参数的使用常用点位标记删除动态渲染路线借助truf.js的算法进行渲染地块的实现topojson cesium的使用 1.下载或者安装cesium的插件 官方文档 下载下来后创建文件夹整个包引入 2.生成token 新的包应该有默认token如果没…

前端学习记录~2023.7.10~CSS杂记 Day5

前言一、样式化表格1、一个典型的 HTML 表格2、进行样式化&#xff08;1&#xff09;间距和布局&#xff08;2&#xff09;简单地排版&#xff08;3&#xff09;图形和颜色&#xff08;4&#xff09;图案&#xff08;5&#xff09;样式化标题 最终效果如下 ![在这里插入图片描述…

【Spring Cloud Alibaba】Nacos的服务注册和发现(discovery)的使用

【Spring Cloud Alibaba】系列文章 标题链接【Spring Cloud Alibaba】Nacos的安装与介绍以及Nacos集群的安装https://masiyi.blog.csdn.net/article/details/129530053【Spring Cloud Alibaba】Nacos config的使用和高阶用法https://masiyi.blog.csdn.net/article/details/129…

LabVIEW通过嘴唇图像识别为残疾人士开发文本输入系统

LabVIEW通过嘴唇图像识别为残疾人士开发文本输入系统 近年来&#xff0c;计算机已经成为现代人日常生活中的一种信息器具。人们可以使用计算机来处理复杂的文件&#xff0c;获取新信息并在线购物等。但是&#xff0c;上面讲的使用电脑的所有好处对普通人来说都很方便&#xff…

React05-样式隔离

一、样式隔离方案 css 的样式是全局样式&#xff0c;在书写react组件时&#xff0c;如果写了相同的样式类名&#xff0c;很容易造成样式污染。 在 vue 中&#xff0c;vue 官方提供了样式隔离方法&#xff0c;在组件代码中的 style 标签中加入 scoped&#xff0c;可以让这部分…

Python案例分析|使用Python图像处理库Pillow处理图像文件

本案例通过使用Python图像处理库Pillow&#xff0c;帮助大家进一步了解Python的基本概念&#xff1a;模块、对象、方法和函数的使用 使用Python语言解决实际问题时&#xff0c;往往需要使用由第三方开发的开源Python软件库。 本案例使用图像处理库Pillow中的模块、对象来处理…

Java中的JDBC编程(数据库系列6)

目录 前言&#xff1a; 1.什么是Java的JDBC编程 2.JDBC的数据库驱动包的导入过程 3.JDBC代码的编写 3.1创建并初始化一个数据源 3.2和数据库服务器建立连接 3.3构造SQL语句 3.4执行SQL语句 3.5释放必要的资源 3.6整体代码的展示及演示 3.7代码的优化 3.8 查询操作的…

「深度学习之优化算法」(十四)麻雀搜索算法

1. 麻雀搜索算法简介 (以下描述,均不是学术用语,仅供大家快乐的阅读)   麻雀搜索算法(sparrow search algorithm)是根据麻雀觅食并逃避捕食者的行为而提出的群智能优化算法。提出时间是2020年,相关的论文和研究还比较少,有可能还有一些正在发表中,受疫情影响需要论…

关于学习过程中的小点

nfev : 函数求值次数njev : Jacobian 评估的数量nit :算法的迭代次数 permute(dims)#维度转换 torch.split #[按块大小拆分张量] Pytorch.view Pytorch中使用view()函数对张量进行重构维度&#xff0c;类似于resize()、reshape()。用法如下&#xff1a;view(参数a,参数b,...)&a…

Nacos1.4.2单机与集群的安装部署

CentOS 部署Nacos1.4.2 下载 nacos 下载链接&#xff1a;https://github.com/alibaba/nacos/tags 如何选择我们下载的 nocas 版本&#xff1f; 查看 Spring Cloud Alibaba 与 nacos 版本对应关系&#xff1a;SpringCloudAlibaba 组件对应关系说明 本项目使用 nacos 1.4.2 …

Python(十七)数据类型转换——str()函数和int()函数

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

2023年上半年:C#、Python和一些实用语言

文章目录 C#Pythonerlang和exilirfortranR语言 最近半年的开发任务主要集中在C#和Python上&#xff0c;所以博客内容也几乎围绕这两个部分&#xff0c;偶尔会穿插一些其他语言。下面就对2023年上半年的博客做一个总结。 C# 主要用C#写了一个文本阅读器&#xff0c;提供生成目…