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

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 {@PostConstructpublic 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.hqwc.cn/news/27437.html

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

相关文章

C++-string类的模拟实现

本博客基于C官方文档当中给出的string类当中的主要功能实现&#xff0c;来作为参照&#xff0c;简单模拟实现 My-string 。 对于C当中的string类的介绍&#xff0c;在之前的几篇博客当中有说明&#xff0c;如有问题&#xff0c;请参照一下两个博客文章进行参考&#xff1a; (2…

ERROR: Invalid requirement: ‘==‘ 解决python报错

ERROR: Invalid requirement: 错误:无效的要求: 今天安装 selenium包时突然触发这个报错&#xff0c;这个错误通常出现在使用pip安装Python包时&#xff0c;报错的原因是需要注意的是前后没有空格&#xff0c;若是加空格就会出现上述报错。 例如&#xff1a; 安装指定版本的…

python与深度学习(一):ANN和手写数字识别

目录 1. 神经网络2. 线性回归3. 激活函数3.1 Sigmoid函数3.2 Relu函数3.3 Softmax函数 4. ANN(全连接网络)模型结构5. 误差函数5.1 均方差误差函数5.2 交叉熵误差函数 6. 手写数字识别实战6.1 工具说明6.2 导入相关库6.3 加载数据6.4 数据预处理6.5 数据处理6.6 构建网络模型6.…

nginx+lua+redis环境搭建(文末赋上脚本)

目录 需求背景 环境搭建后nginx和redis版本 系统环境 搭建步骤 配置服务器DNS 安装ntpdate同步一下系统时间 安装网络工具、编译工具及依赖库 创建软件包下载目录、nginx和redis安装目录 下载配置安装lua解释器LuaJIT 下载nginx NDK&#xff08;ngx_devel_kit&#xff09…

Vue3警告提示(Alert)

可自定义设置以下属性&#xff1a; 警告提示内容&#xff08;message&#xff09;&#xff0c;类型&#xff1a;string | slot&#xff0c;默认&#xff1a;‘’警告提示的辅助性文字介绍&#xff08;description&#xff09;&#xff0c;类型&#xff1a;string | slot&#…

libvirt 热迁移流程及参数介绍

01 热迁移基本原理 1.1 热迁移概念 热迁移也叫在线迁移&#xff0c;是指虚拟机在开机状态下&#xff0c;且不影响虚拟机内部业务正常运行的情况下&#xff0c;从一台宿主机迁移到另外一台宿主机上的过程。 1.2 虚拟机数据传输预拷贝和后拷贝 预拷贝(pre-copy)&#xff1a; …

Git及Tortoisegit使用教程,设置中文

一、到git官网下载GIT 官网 二、下载安装Tortoisegit及中文语言包,Tortoisegit及语言包 语言包下载地址 三、在电脑某个盘的文件里右键 提示未设置git.exe 路径不能继续, 于是去下载git GIT下载 安装Git时, 一直点击 Next > 不要停, 直到结束 此时再跳到TortoiseGit…

Versal ACAP在线升级之Boot Image格式

1、简介 Xilinx FPGA、SOC器件和自适应计算加速平台&#xff08;ACAPs&#xff09;通常由多个硬件和软件二进制文件组成&#xff0c;用于启动这些设备后按照预期设计进行工作。这些二进制文件可以包括FPGA比特流、固件镜像、bootloader引导程序、操作系统和用户选择的应…

KaiwuDB CTO 魏可伟:多模架构 —“化繁为简”加速器

以下为浪潮 KaiwuDB CTO 魏可伟受邀于7月4日在京举行的可信数据库发展大会发表演讲的实录&#xff0c;欢迎大家点赞、收藏、关注&#xff01; 打造多模引擎&#xff0c;AIoT数据库探索之路 01 何为“繁”&#xff1f; 工业 4.0 时代&#xff0c; 物联网产业驱动数据要素市场不…

蒙德里安的梦想

题目 求把 NM 的棋盘分割成若干个 12 的长方形&#xff0c;有多少种方案。 例如当 N2&#xff0c;M4 时&#xff0c;共有 5 种方案。当 N2&#xff0c;M3 时&#xff0c;共有 3 种方案。 如下图所示&#xff1a; 输入格式 输入包含多组测试用例。 每组测试用例占一行&…

速腾robosense-sdk配置和使用方法

官方的安装和配置教程https://github.com/RoboSense-LiDAR/rslidar_sdk/ 1.手动下载sdk&#xff0c;下载tar.gz&#xff0c;然后解压缩:Releases RoboSense-LiDAR/rslidar_sdk GitHub 2.个人电脑连接速腾激光雷达后&#xff0c;确保能够ping通。当连接网线后&#xff0c;电…

Lua 批量修改文件夹下文件名

local s io.popen("dir C:\\Users\\lizhiyuan\\Desktop\\国家知识产权局ftp法律状态数据\\data /b/s") local filelist s:read("*a")local start_pos 0while 1 do_,end_pos,line string.find(filelist, "([^\n\r].xml)", start_pos)if not e…