当前位置: 首页 > news >正文

Hadoop的Windows环境准备

一、将Hadoop传输到Windows中

1、备份副本

cp -r /opt/softs/hadoop3.1.3/ /opt/softs/hadoop3.1.3_temp

2、删除备份的share目录

cd /opt/softs/hadoop3.1.3_temp
rm -rf share/

3、下载到Windows中

重命名去掉_temp 

4、删除备份文件

rm -rf /opt/softs/hadoop3.1.3_temp

二、配置Windows环境

1、将Windos依赖目录下的bin目录中的全部文件,复制粘贴到hadoop3.1.3的bin目录下,有重复直接覆盖

2、双击winutils.exe,如果有窗体一闪而过,说明成功,如果失败则安装微软运行库

3、将hadoop.dll复制一份到C:\Windows\System32目录中

4、配置环境变量

(1)控制面板查找“高级系统设置”,打开后点击“环境变量”

(2)选择“系统变量”的“新建”输入如下信息:

(3)选中“系统变量”的Path选择“编辑”后选择“新建”,输入如下信息

D:\softs\dashuju\bigdata\hadoop3.1.3   //输入你自己的地址

三、创建Java的Maven项目

idea版本:2023.2.5

1、新建项目

创建好后目录如下:

2、添加项目依赖

<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common -->
<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>3.1.3</version>
</dependency><!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-hdfs -->
<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>3.1.3</version>
</dependency><!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client -->
<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>3.1.3</version>
</dependency>

3、编写代码

package cn.edu.just.hdfs;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.fs.permission.FsPermission;
import org.apache.hadoop.io.IOUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;/***调用hdfs的Java Api*/
public class hdfsApiClient {//文件系统对象FileSystem fileSystem = null;/*** 初始化hdfs文件系统* @Before:在具体方法前会调用被注解的方法*/@Beforepublic void init() throws URISyntaxException, IOException, InterruptedException {//创建文件系统配置对象Configuration conf = new Configuration();//创建文件系统对象fileSystem = FileSystem.get(new URI("hdfs://bigdata03:8020"), conf, "root");System.out.println("hdfs文件系统初始化成功!");}/*** 创建hdfs目录*/@Testpublic void createPath() throws IOException {if (fileSystem != null) {boolean result = fileSystem.mkdirs(new Path("/hdfs_api"));if (result) {System.out.println("创建目录成功");}else {System.out.println("创建目录失败");}}}/*** 删除目录或者文件*/@Testpublic void deletePath() throws IOException {if (fileSystem != null) {Path deletePath = new Path("/hdfs_api");//判断hdfs上是否存在该目录if (fileSystem.exists(deletePath)){/*** 目录存在,调用delete(Path f, boolean recursive)方法进行删除* 第一个参数是要删除的目录的路径* 第二个参数表示:是否要递归删除*/boolean deleteResult = fileSystem.delete(deletePath, false);System.out.println(deleteResult == true ? "删除目录成功":"删除目录失败");}else {System.out.println("要删除的目录在hdfs上不存在");}}}/*** 在hdfs上创建一个文件,并写入指定的内容*/@Testpublic void createHdfsFile() throws IOException {//获取数据输出流对象FSDataOutputStream fsDataOutputStream =fileSystem.create(new Path("/api_file.txt"));//定义要输出的文件的内容String line = "Hello bigdata";//将指定内容写入文件fsDataOutputStream.write(line.getBytes());//对数据输出流对象进行刷新fsDataOutputStream.flush();//关闭输出流对象fsDataOutputStream.close();}/*** 先运行一下createPath,确保hdfs上目录存在* 修改hdfs上的文件的路径和名称*/@Testpublic void moveHdfsFile() throws IOException {//文件的原路径Path src = new Path("/api_file.txt");//文件的新路径Path dst = new Path("/hdfs_api/api_file_new.txt");boolean moveResult = fileSystem.rename(src, dst);if (moveResult){System.out.println("文件路径修改成功");}else {System.out.println("文件路径修改失败");}}/*** 读取hdfs上的文件内容*/@Testpublic void readHdfsFile() throws IOException {//获取数据输入流对象FSDataInputStream fsDataInputStream =fileSystem.open(new Path("/hdfs_api/api_file_new.txt"));//通过IO工具类读取文件中的数据//System.out代表队是PrintStream对象,该对象是OutputStream类的间接子类IOUtils.copyBytes(fsDataInputStream,System.out,2048,false);//换行System.out.println();}/*** 从本地上传文件到hdfs上*/@Testpublic void uploadFile() throws IOException {//本地文件的路径Path src = new Path("E:\\centos&&hadoop\\words.txt");//文件上传到到hdfs的路径Path dst = new Path("/hdfs_api");//文件上传成功后,本地文件是否删除,默认为falseboolean delSrc = true;//上传文件是否覆盖,默认为trueboolean overwrite = false;fileSystem.copyFromLocalFile(delSrc,overwrite,src,dst);}/***从hdfs上下载文件到本地*/@Testpublic void downloadFile() throws IOException {//在hdfs上的文件Path src = new Path("/hdfs_api/api_file_new.txt");//文件的下载路径Path dst = new Path("E:\\centos&&hadoop\\api_file_new.txt");//文件下载后,是否删除hdfs上的源文件boolean delSrc = false;//        false:下载的文件会存在crc校验文件
//        true:不会存在crc校验文件boolean useRawLocalFileSystem = false;fileSystem.copyToLocalFile(src, dst);}/*** 查看hdfs上的文件信息*/@Testpublic void queryHdfsFileInfo() throws IOException {//查询的起始路径Path path = new Path("/");//是否递归查询boolean recursive = true;//获取迭代器RemoteIterator<LocatedFileStatus> locatedFileStatusRemoteIterator =fileSystem.listFiles(path, recursive);//进行遍历输出while ( locatedFileStatusRemoteIterator.hasNext()) {//获取迭代器中需要迭代的元素LocatedFileStatus next = locatedFileStatusRemoteIterator.next();//获取文件路径Path filePath = next.getPath();System.out.println("文件的路径是:"+filePath);//获取文件的权限FsPermission permission = next.getPermission();System.out.println("文件的权限是:"+permission);//获取文件的所属用户String owner = next.getOwner();System.out.println("文件的所属用户是:"+owner);//获取文件的所属用户的用户组String group = next.getGroup();System.out.println("文件的所属用户的用户组是:"+group);//获取文件的副本数short replication = next.getReplication();System.out.println("文件的副本数是:"+replication);//获取文件的块大小,单位是字节long blockSize = next.getBlockSize();System.out.println("文件的块大小是:"+blockSize/1024/1024+"MB");System.out.println("--------------------------------------------------------");}}/*** 关闭文件系统对象* @After:在具体方法执行完毕后会调用被注解的方法*/@Afterpublic void close() throws IOException {if (fileSystem != null) {fileSystem.close();System.out.println("hdfs文件系统已关闭!");}}
}

运行前开启hadoop集群,在NameNode节点开启hdfs(start-dfs.sh)

可打开NameNode的web服务网址,便于后续查看

相关文章:

Hadoop的Windows环境准备

一、将Hadoop传输到Windows中 1、备份副本 cp -r /opt/softs/hadoop3.1.3/ /opt/softs/hadoop3.1.3_temp 2、删除备份的share目录 cd /opt/softs/hadoop3.1.3_temp rm -rf share/ 3、下载到Windows中 重命名去掉_temp 4、删除备份文件 rm -rf /opt/softs/hadoop3.1.3_t…...

使用亮数据代理IP爬取PubMed文章链接和邮箱地址

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;注册地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…...

electron调用dll时应用程序闪退

electron调用dll时&#xff0c;直接闪退&#xff0c;且用如下方式监听无任何输出&#xff1a; window-all-closed 或 will-quit 此时需要检查传给dll的参数及参数类型是否正确&#xff0c;特别是使用ffi-napi时调用dll&#xff0c;使用 ref-napi定义类型&#xff0c;经常容易…...

单片机原理及技术(三)—— AT89S51单片机(二)(C51编程)

一、AT89S51单片机的并行I/O端口 1.1 P0口 AT89S51的P0口是一个通用的I/O口&#xff0c;可以用于输入和输出。每个引脚都可以通过软件控制为输入或输出模式。 1.1.1 P0口的工作原理 P0口的工作原理是通过对P0寄存器的读写操作来控制P0口的引脚。 输出模式&#xff1a;当P0口…...

摄影店展示服务预约小程序的作用是什么

摄影店包含婚照、毕业照、写真、儿童照、工作照等多个服务项目&#xff0c;虽然如今人们手机打开便可随时拍照摄影&#xff0c;但在专业程度和场景应用方面&#xff0c;却是需要前往专业门店服务获取。 除了进店&#xff0c;也有外部预约及活动、同行合作等场景&#xff0c;重…...

【数据分析基础】实验一 Python运算符、内置函数、序列基本用法

一、实验目的 熟练运用Python运算符。熟练运用Python内置函数。掌握Python的基本输入输出方法。了解lambda表达式作为函数参数的用法。掌握列表、元组、字典、集合的概念和基本用法。了解Python函数式编程模式。 二、实验内容&#xff1a; 1. 在命令模式测试如下命令&#x…...

【Redis】构建强韧的远程Redis连接与端口保障机制完美指南

【Redis】构建强韧的远程Redis连接与端口保障机制完美指南 大家好 我是寸铁&#x1f44a; 总结了【Redis】构建强韧的远程Redis连接与端口保障机制完美指南✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言 在当今的软件开发领域中&#xff0c;远程访问和操作数据存储是极为常见…...

Flowable项目启动报错#java.time.LocalDateTime cannot be cast to java.lang.String

Flowable 项目启动后报错 flow项目第一次启动创建表成功&#xff0c;但是第二次启动时报错信息如下&#xff1a; 1、Error creating bean with name ‘appRepositoryServiceBean’ defined in class 2、Error creating bean with name ‘flowableAppEngine’: FactoryBean t…...

《数字电路》

问答题4*5 在数字电路中&#xff0c;三极管经常工作在哪两种开关状态&#xff1f; 在数字电路中&#xff0c;三极管经常工作在饱和导通状态和截止状态。 时序电路根据输出信号分为哪两类&#xff1f; 时序电路根据输出信号分为莫尔型和米里型两类。 写出三种以上常用的二-十…...

STM32F103 点亮LED闪烁与仿真

STM32F103 点亮LED闪烁与仿真 今天给大家分享一下STM32 流水灯简单的仿真吧&#xff0c;我感觉这个提供有用的&#xff0c;但是自己也是第一次使用&#xff0c;主要是感觉曲线很高级。在PWM中查看脉宽很有用。 code: led.c #include "led.h" #include "delay…...

阿里云服务器发送邮件失败 Could not connect to SMTP host: smtp.xxx.com, port: 465;

最近做了一个发送邮件的功能&#xff0c; 在本地调试完成后&#xff0c;部署到阿里云服务器就一直报错&#xff0c; Could not connect to SMTP host: smtp.qiye.aliyun.com, port: 465; 网上也搜索了很多的资料&#xff0c;最后花了好几个小时才解决&#xff0c; 报错日志如下…...

Socket编程权威指南(二)完美掌握TCP流式协议及Socket编程的recv()和send()

在上一篇文章中&#xff0c;我们学习了Socket编程的基础知识&#xff0c;包括创建Socket、绑定地址、监听连接、接收连接等操作。然而&#xff0c;真正的套接字编程远不止于此。本文将重点介绍TCP 流式协议&#xff0c;什么是粘包问题&#xff1f;如何解决粘包问题 &#xff1f…...

当C++的static遇上了继承

比如我们想要统计下当前类被实例化了多少次&#xff0c;我们通常会这么写 class A { public:A() { Count_; }~A() { Count_--; }int GetCount() { return Count_; }private:static int Count_; };class B { public:B() { Count_; }~B() { Count_--; }int GetCount() { return …...

Three.js中的Raycasting技术:实现3D场景交互事件的Raycaster详解

前言 在Web开发中&#xff0c;Three.js是一个极为强大的库&#xff0c;它让开发者能够轻松地在浏览器中创建和展示3D图形。随着3D技术在网页设计、游戏开发、数据可视化等领域的广泛应用&#xff0c;用户与3D场景的交互变得日益重要。而要实现这种交互&#xff0c;一个核心的技…...

5 分钟内构建一个简单的基于 Python 的 GAN

文章目录 一、说明二、代码三、训练四、后记 一、说明 生成对抗网络&#xff08;GAN&#xff09;因其能力而在学术界引起轩然大波。机器能够创作出新颖、富有灵感的作品&#xff0c;这让每个人都感到敬畏和恐惧。因此&#xff0c;人们开始好奇&#xff0c;如何构建一个这样的网…...

智能硬件产品中常用的参数存储和管理方案

一、有哪些参数需要管理? 在智能硬件产品中,一般有三类数据需要存储并管理: 1. 系统设置数据 系统设置数据是指产品自身正常工作所依赖的一些参数。 这类数据的特点:只能在生产过程中修改,出厂后用户无权限修改。 比如:产品SN、产品密钥/token/license、传感器校准值…...

SwiftUI中Mask修饰符的理解与使用

Mask是一种用于控制图形元素可见性的图形技术&#xff0c;使用给定视图的alpha通道掩码该视图。在SwiftUI中&#xff0c;它类似于创建一个只显示视图的特定部分的模板。 Mask修饰符的定义&#xff1a; func mask<Mask>(alignment: Alignment .center,ViewBuilder _ ma…...

全光网络与传统网络架构的对比分析

随着信息技术的飞速发展&#xff0c;网络已经成为我们日常生活中不可或缺的一部分。在这个信息爆炸的时代&#xff0c;全光网络和传统网络架构作为两种主流的网络技术&#xff0c;各有其特点和适用范围。本文将对这两种网络架构进行详细的对比分析&#xff0c;帮助读者更好地了…...

stack overflow复现

当你在内存的栈中&#xff0c;存放了太多元素&#xff0c;就有可能在造成 stack overflow这个问题。 今天看看如何复现这个问题。 下图&#xff0c;是我写的程序&#xff0c;不断的创造1KB的栈&#xff0c;来看看执行了多少次&#xff0c;无限循环。 最后结果是7929kB时, 发…...

mybatis使用笔记

文章目录 打印sql日志mybatis-config.xml方式application.yml里面配置配置类配置方式 其他扫描方式官网文档 mybatis用了那么久&#xff0c;实际一直不明白&#xff0c;做个笔记吧。 打印sql日志 实测&#xff0c;mybatis-config.xml方式好用(记得注掉yml里的相关配置) mybat…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...