zoukankan      html  css  js  c++  java
  • 95日每周总结

    这周是假期的最后一周,也完成Hadoop的API操作,就是从java连接Hadoop。

    客户端环境 准备
    1)找到资料包路径下的 Windows 依赖文件夹,拷贝 hadoop-3.1.0 到非中文路径(比如 d:\)。
    2 ) 配置 HADOOP_HOME 环境 变量

    3 ) 配置 Path 环境 变量

    4 )在 在 IDEA 中 创建一个 Maven 工程 HdfsClientDemo ,并 导入相应的依赖 坐标+ 日志添加
    <dependencies>
    <dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-client</artifactId>
    <version>3.1.3</version>
    </dependency>
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    </dependency>
    <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.30</version>
    </dependency>
    </dependencies>
    在项目的 src/main/resources 目录下,新建一个文件,命名为“log4j.properties”,在文件
    中填入
    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.atguigu.hdfs
    6 ) 创建 HdfsClient 类
    public class HdfsClient {
    @Test
    public void testMkdirs() throws IOException, URISyntaxException,
    InterruptedException {
    // 1 获取文件系统

    Configuration configuration = new Configuration();
    // FileSystem fs = FileSystem.get(new
    URI("hdfs://hadoop102:8020"), configuration);
    FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:8020"),
    configuration,"atguigu");
    // 2 创建目录
    fs.mkdirs(new Path("/xiyou/huaguoshan/"));
    // 3 关闭资源
    fs.close();
    }
    }
    7 ) 执行 程序
    客户端去操作 HDFS 时,是有一个用户身份的。默认情况下,HDFS 客户端 API 会从采
    用 Windows 默认用户访问 HDFS,会报权限异常错误。所以在访问 HDFS 时,一定要配置
    用户。
    org.apache.hadoop.security.AccessControlException: Permission denied:
    user=56576, access=WRITE,
    inode="/xiyou/huaguoshan":atguigu:supergroup:drwxr-xr-x

    HDFS 文件 上传

    @Test
    public void testCopyFromLocalFile() throws IOException,
    InterruptedException, URISyntaxException {
    // 1 获取文件系统
    Configuration configuration = new Configuration();
    configuration.set("dfs.replication", "2");
    FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:8020"),
    configuration, "atguigu");
    // 2 上传文件
    fs.copyFromLocalFile(new Path("d:/sunwukong.txt"), new
    Path("/xiyou/huaguoshan"));
    // 3 关闭资源
    fs.close();

     将 hdfs-site.xml 拷贝到项目的 resources 资源 目录下

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
    <property>
    <name>dfs.replication</name>

    <value>1</value>
    </property>
    </configuration>  

    HDFS 文件

    @Test
    public void testCopyToLocalFile() throws IOException,
    InterruptedException, URISyntaxException{
    // 1 获取文件系统
    Configuration configuration = new Configuration();
    FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:8020"),
    configuration, "atguigu");
    // 2 执行下载操作
    // boolean delSrc 指是否将原文件删除
    // Path src 指要下载的文件路径
    // Path dst 指将文件下载到的路径
    // boolean useRawLocalFileSystem 是否开启文件校验
    fs.copyToLocalFile(false, new
    Path("/xiyou/huaguoshan/sunwukong.txt"), new Path("d:/sunwukong2.txt"),
    true);
    // 3 关闭资源
    fs.close();
    }

    HDFS 文件 更 名和移动

    @Test
    public void testRename() throws IOException, InterruptedException,
    URISyntaxException{
    // 1 获取文件系统
    Configuration configuration = new Configuration();
    FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:8020"),
    configuration, "atguigu");
    // 2 修改文件名称
    fs.rename(new Path("/xiyou/huaguoshan/sunwukong.txt"), new
    Path("/xiyou/huaguoshan/meihouwang.txt"));
    // 3 关闭资源
    fs.close();
    }

    HDFS 删除 文件 和目录

    @Test
    public void testDelete() throws IOException, InterruptedException,
    URISyntaxException{
    // 1 获取文件系统
    Configuration configuration = new Configuration();
    FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:8020"),
    configuration, "atguigu");
    // 2 执行删除
    fs.delete(new Path("/xiyou"), true);
    // 3 关闭资源
    fs.close();
    }

  • 相关阅读:
    eclipse写javaee的时候js文件新增函数找不到
    baidu春招题:熊回家
    java自定义容器排序实现接口
    Thread主体和执行主体
    jqurey定位 id
    c中二维数组与指针访问
    ubuntu上浏览器上不了网
    前端经典面试题
    HTML,CSS,JS试题
    CSS3实现文字浮雕效果,镂刻效果,火焰文字
  • 原文地址:https://www.cnblogs.com/ruangongwangxiansheng/p/14161494.html
Copyright © 2011-2022 走看看