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

HDFS 的API的操作

3.1 客户端环境准备(windows)

1)拷贝hadoop-3.1.X到非中文路径(比如d:\)。

2)配置HADOOP_HOME环境变量

3)配置Path环境变量。

注意:如果环境变量不起作用,可以重启电脑试试。

也可以直接添加地址D:\大数据实训汇总\hadoop-3.3.4\hadoop-3.3.4\bin

验证Hadoop环境变量是否正常。双击winutils.exe,如果报如下错误。说明缺少微软运行库(正版系统往往有这个问题)。

 

4)在IDEA中创建一个Maven工程HdfsClientDemo,并导入相应的依赖坐标+日志添加(配置maven环境和下载)

<!-- 添加一个操作hadoop的依赖包-->
<dependencies>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>3.1.4</version>
    </dependency>
    <!-- 单元测试 -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
        <scope>compile</scope>
    </dependency>
    <!-- 日志包 -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.32</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
</dependencies>

在项目的src/main/resources目录下,新建一个文件,命名为“log4j.properties”,在文件中填入 

 //key=value

log4j.rootLogger=INFO, stdout  //什么级别的日志,在控制台打印输出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender  
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout  
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n  
log4j.appender.logfile=org.apache.log4j.FileAppender  
log4j.appender.logfile.File=target/spring.log  
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout  
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

 5)创建包名:com.example.hdfs

6)创建HdfsClient 

public class HdfsClient {
    @Test
    public void testMkdir()throws IOException, URISyntaxException,InterruptedException{
       //获取配置对象
        Configuration conf =new Configuration();
        //设置dfs不需要权限
        conf.set("dfs.permissions","false");
        //获取hdfs文件系统
        FileSystem fs=FileSystem.get(new URI("hdfs://hadoop101:8020/"),conf);
       // System.out.println(fs);
                //创建目录
        boolean isOk=fs.mkdirs(new Path("/cc"));
        System.out.println(isOk?"yes":"no");

    }

错误 :

权限问题permission

方法一:(Hadoop101)

解决在hdfs.site.xml

<property>
        <name>dfs.permissions.enabled</name>
        <value>false</value>
</property>

然后用脚本分发

方法二:

导包问题

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Test;

import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URI;


http://www.kler.cn/a/501822.html

相关文章:

  • 如何将 sqlserver 数据迁移到 mysql
  • 【ArcGIS微课1000例】0137:色彩映射表转为RGB全彩模式
  • springboot vue uniapp 仿小红书 1:1 还原 (含源码演示)
  • 细说STM32F407单片机以DMA方式读写外部SRAM的方法
  • docker的数据卷和自定义镜像
  • redisson分布式锁关的疑问和解答记录
  • 【Rust】函数
  • 【网络协议】EIGRP - 第二部分
  • 使用Deepseek搭建类Cursor编辑器
  • SQL语言的计算机基础
  • LeetCode:216.组合总和III
  • 基于单片机的书写坐姿规范提醒器的设计(论文+源码)
  • 自动化机械臂视觉跟踪和手眼校准
  • Docker Swarm、Kubernetes 和 LVS 的功能对比
  • Go语言如何实现高性能缓存服务
  • 青少年编程与数学 02-006 前端开发框架VUE 24课题、UI表单
  • virtual box虚拟机误删Python3.6后导致UBUNTU18.04开机无UI界面(进不了desktop)的解决方法
  • docker推送本地仓库报错
  • 2025年VGC大众汽车科技社招入职测评综合能力英语口语SHL历年真题汇总、考情分析
  • 嵌入式入门Day42
  • Centos8部署Redis Cluster
  • STM32——点亮LED
  • shell脚本回顾1
  • [文献精汇]使用 LSTM Networks 的均值回归交易策略
  • 2024年开发语言热度排名
  • ECharts实战:在UniApp中实现动态数据可视化