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文章链接和邮箱地址
💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交…...
electron调用dll时应用程序闪退
electron调用dll时,直接闪退,且用如下方式监听无任何输出: window-all-closed 或 will-quit 此时需要检查传给dll的参数及参数类型是否正确,特别是使用ffi-napi时调用dll,使用 ref-napi定义类型,经常容易…...
单片机原理及技术(三)—— AT89S51单片机(二)(C51编程)
一、AT89S51单片机的并行I/O端口 1.1 P0口 AT89S51的P0口是一个通用的I/O口,可以用于输入和输出。每个引脚都可以通过软件控制为输入或输出模式。 1.1.1 P0口的工作原理 P0口的工作原理是通过对P0寄存器的读写操作来控制P0口的引脚。 输出模式:当P0口…...
摄影店展示服务预约小程序的作用是什么
摄影店包含婚照、毕业照、写真、儿童照、工作照等多个服务项目,虽然如今人们手机打开便可随时拍照摄影,但在专业程度和场景应用方面,却是需要前往专业门店服务获取。 除了进店,也有外部预约及活动、同行合作等场景,重…...
【数据分析基础】实验一 Python运算符、内置函数、序列基本用法
一、实验目的 熟练运用Python运算符。熟练运用Python内置函数。掌握Python的基本输入输出方法。了解lambda表达式作为函数参数的用法。掌握列表、元组、字典、集合的概念和基本用法。了解Python函数式编程模式。 二、实验内容: 1. 在命令模式测试如下命令&#x…...
【Redis】构建强韧的远程Redis连接与端口保障机制完美指南
【Redis】构建强韧的远程Redis连接与端口保障机制完美指南 大家好 我是寸铁👊 总结了【Redis】构建强韧的远程Redis连接与端口保障机制完美指南✨ 喜欢的小伙伴可以点点关注 💝 前言 在当今的软件开发领域中,远程访问和操作数据存储是极为常见…...
Flowable项目启动报错#java.time.LocalDateTime cannot be cast to java.lang.String
Flowable 项目启动后报错 flow项目第一次启动创建表成功,但是第二次启动时报错信息如下: 1、Error creating bean with name ‘appRepositoryServiceBean’ defined in class 2、Error creating bean with name ‘flowableAppEngine’: FactoryBean t…...
《数字电路》
问答题4*5 在数字电路中,三极管经常工作在哪两种开关状态? 在数字电路中,三极管经常工作在饱和导通状态和截止状态。 时序电路根据输出信号分为哪两类? 时序电路根据输出信号分为莫尔型和米里型两类。 写出三种以上常用的二-十…...
STM32F103 点亮LED闪烁与仿真
STM32F103 点亮LED闪烁与仿真 今天给大家分享一下STM32 流水灯简单的仿真吧,我感觉这个提供有用的,但是自己也是第一次使用,主要是感觉曲线很高级。在PWM中查看脉宽很有用。 code: led.c #include "led.h" #include "delay…...
阿里云服务器发送邮件失败 Could not connect to SMTP host: smtp.xxx.com, port: 465;
最近做了一个发送邮件的功能, 在本地调试完成后,部署到阿里云服务器就一直报错, Could not connect to SMTP host: smtp.qiye.aliyun.com, port: 465; 网上也搜索了很多的资料,最后花了好几个小时才解决, 报错日志如下…...
Socket编程权威指南(二)完美掌握TCP流式协议及Socket编程的recv()和send()
在上一篇文章中,我们学习了Socket编程的基础知识,包括创建Socket、绑定地址、监听连接、接收连接等操作。然而,真正的套接字编程远不止于此。本文将重点介绍TCP 流式协议,什么是粘包问题?如何解决粘包问题 ?…...
当C++的static遇上了继承
比如我们想要统计下当前类被实例化了多少次,我们通常会这么写 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开发中,Three.js是一个极为强大的库,它让开发者能够轻松地在浏览器中创建和展示3D图形。随着3D技术在网页设计、游戏开发、数据可视化等领域的广泛应用,用户与3D场景的交互变得日益重要。而要实现这种交互,一个核心的技…...
5 分钟内构建一个简单的基于 Python 的 GAN
文章目录 一、说明二、代码三、训练四、后记 一、说明 生成对抗网络(GAN)因其能力而在学术界引起轩然大波。机器能够创作出新颖、富有灵感的作品,这让每个人都感到敬畏和恐惧。因此,人们开始好奇,如何构建一个这样的网…...
智能硬件产品中常用的参数存储和管理方案
一、有哪些参数需要管理? 在智能硬件产品中,一般有三类数据需要存储并管理: 1. 系统设置数据 系统设置数据是指产品自身正常工作所依赖的一些参数。 这类数据的特点:只能在生产过程中修改,出厂后用户无权限修改。 比如:产品SN、产品密钥/token/license、传感器校准值…...
SwiftUI中Mask修饰符的理解与使用
Mask是一种用于控制图形元素可见性的图形技术,使用给定视图的alpha通道掩码该视图。在SwiftUI中,它类似于创建一个只显示视图的特定部分的模板。 Mask修饰符的定义: func mask<Mask>(alignment: Alignment .center,ViewBuilder _ ma…...
全光网络与传统网络架构的对比分析
随着信息技术的飞速发展,网络已经成为我们日常生活中不可或缺的一部分。在这个信息爆炸的时代,全光网络和传统网络架构作为两种主流的网络技术,各有其特点和适用范围。本文将对这两种网络架构进行详细的对比分析,帮助读者更好地了…...
stack overflow复现
当你在内存的栈中,存放了太多元素,就有可能在造成 stack overflow这个问题。 今天看看如何复现这个问题。 下图,是我写的程序,不断的创造1KB的栈,来看看执行了多少次,无限循环。 最后结果是7929kB时, 发…...
mybatis使用笔记
文章目录 打印sql日志mybatis-config.xml方式application.yml里面配置配置类配置方式 其他扫描方式官网文档 mybatis用了那么久,实际一直不明白,做个笔记吧。 打印sql日志 实测,mybatis-config.xml方式好用(记得注掉yml里的相关配置) mybat…...
学习笔记——路由网络基础——路由概述
一、路由概述 1、路由定义与作用 路由(routing)是指导报文转发路径信息,通过路由可以确认转发IP报文的路径。 路由:是指路由器从一个接口上收到数据包,根据数据包的目的地址进行定向并转发到另一个接口的过程。 路由(routing)的定义是指分…...
在量子计算时代,大数据技术将面临哪些挑战和机遇?
在量子计算时代,大数据技术将面临以下挑战和机遇: 挑战: 处理速度:量子计算机具有极高的计算速度,大数据技术需要适应和充分利用这种速度。现有的大数据算法和架构可能需要重新设计和优化,以充分发挥量子计…...
怎么换自己手机的ip地址
在互联网时代,IP地址已经成为了我们数字身份的一部分。无论是浏览网页、下载文件还是进行在线交流,我们的IP地址都在默默发挥着作用。然而,有时出于安全或隐私保护的考虑,我们可能需要更换手机的IP地址。那么,如何轻松…...
搭建 Langchain-Chatchat 详细过程
前言 本文参考官网和其他多方教程,将搭建 Langchain-Chatchat 的详细步骤进行了整理,供大家参考。 我的硬件 4090 显卡win10 专业版本 搭建环境使用 chatglm2-6b 模型 1. 创建虚拟环境 chatchat ,python 3.9 以上 conda create -n chat…...
C++期末复习
目录 1.基本函数 2.浅拷贝和深拷贝 3.初始化列表 4.const关键字的使用 5.静态成员变量和成员函数 6.C对象模型 7.友元 8.自动类型转换 9.继承 1.基本函数 (1)构造函数,这个需要注意的就是我们如果使用类名加括号,括号里面…...
2005-2022年各省居民人均消费支出数据(无缺失)
2005-2022年各省居民人均消费支出数据(无缺失) 1、时间:2005-2022年 2、来源:国家统计局、统计年鉴 3、指标:全体居民人均消费支出 4、范围:31省 5、缺失情况:无缺失 6、指标解释 居民人…...
swaggerHole:针对swaggerHub的公共API安全扫描工具
关于swaggerHole swaggerHole是一款针对swaggerHub的API安全扫描工具,该工具基于纯Python 3开发,可以帮助广大研究人员检索swaggerHub上公共API的相关敏感信息,整个任务过程均以自动化形式实现,且具备多线程特性和管道模式。 工具…...
【Rust】——面向对象设计模式的实现
🎼个人主页:【Y小夜】 😎作者简介:一位双非学校的大二学生,编程爱好者, 专注于基础和实战分享,欢迎私信咨询! 🎆入门专栏:🎇【MySQL࿰…...
C#朗读语音
最近有个需求,需要在C#程序发生异常时候,朗读文字,C#提供了.net framework可以提供简单的语音朗读功能。 引入依赖 using System.Media; using System.Speech.Synthesis; using System.Runtime.InteropServices; //报警音量 SystemSounds.…...
c++ 简单的日志类 CCLog
此日志类,简单地实现了向标准输出控制台和文件输出日志信息的功能,并能在这两者之间进行切换输出,满足输出日志的不同需求。 代码如下: /** CCLog.h* c_common_codes** Created by xichen on 12-1-12.* Copyright 2012 cc_te…...
天津网站制作福州/怎么自己做一个网址
如果你有一个自定义的属性 "CompanyId" 在你的 AppSession 类之中,如果你想要获取这个属性等于某值的 的所有 Session, 你可以使用 AppServer 的方法 GetSessions(...): var sessions appServer.GetSessions(s > s.CompanyId companyId);…...
建设工程安全监督备案网站/如何弄一个自己的网站
本文由Jamie Shields和Wern Ancheta进行了同行评审。 感谢所有SitePoint的同行评审人员使SitePoint内容达到最佳状态! SoundCloud提供了一个API,使开发人员可以获取他们想要的几乎所有数据。 但是它的用法可能会引起混淆,尤其是对于初学者而言…...
做网站cdn加速有什么用/推广优化排名
#include<iostream> #include<Windows.h>//Sleep调用 using namespace std; int main() {std::cout << "\n正在输出记录数据...... ";for( int i0; i < 100; i ) // 打印百分比 {std::cout.width(3);//i的输出为3位宽std::cout << i…...
搜索推广 外贸/天津seo诊断技术
vue3 watch及computed的使用案例 //可以多个watch 一起使用 () => state.selectTreeList,(val) => {const treeData = _.cloneDeep(val)// 所属行业为:保理(6640),且所属地区只有省份,没有城市区县// 去...
赣州58同城网/整站seo外包
题目大意: 给你一个N个点的图,求1点到其他每个点最短路权值之和sum1,然后再求反向最短路(其他所有点到1点最短距离)之和sum2。输出sum1sum2 解题思路: 别人说的题意,正好最短路也忘了࿰…...
做亚马逊学英语有什么网站吗/网络营销中的seo是指
转载于:https://www.cnblogs.com/lr86/p/6656115.html...