Hadoop 系列 HDFS 的JavaAPI Windows+IDEA+HDFS快速入门

数据准备

通过HDFS 命令方式将本地words.txt文件上传到HDFS上

首先使用hdfs 来创建input文件夹

[root@node1 ~]#  hdfs dfs -mkdir /input
[root@node1 ~]# hdfs dfs -ls /input
[root@node1 ~]# hdfs dfs -put /root/words.txt /input
[root@node1 ~]# hdfs dfs -ls /input
Found 1 items
-rw-r--r--   3 root supergroup         42 2017-11-26 04:10 /input/words.txt
[root@node1 ~]# hdfs dfs -cat /input/words.txt
Java Java
dtt dtt
Hello World Hello World


 

 

目录结构

点击打开pom.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>com.dtt.hadoop</groupId>
    <artifactId>hadoop-test</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-core</artifactId>
        <version>2.6.0-mr1-cdh5.11.0</version>
    </dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common -->
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>2.7.3</version>
    </dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-hdfs -->
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-hdfs</artifactId>
        <version>2.7.3</version>
    </dependency>
 <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client -->
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-mapreduce-client-core</artifactId>
        <version>2.7.3</version>
    </dependency>


    </dependencies>
<!-- 设定主仓库,按设定顺序进行查找。 --> <repositories> <repository> <id>maven-aliyun</id> <name>maven-aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </repository> </repositories>
<!-- 设定插件仓库 --> <pluginRepositories> <pluginRepository> <id>maven-aliyun</id> <name>maven-aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </pluginRepository> </pluginRepositories> </project>

编辑Java代码

在HdfsTest.java类中编辑代码如下:

package com.hadoop.hdfs;


import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

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

public class HdfsTest {
    public static void main(String[] args) throws IOException {
        String uri = "hdfs://192.168.55.128:9000/input/words.txt";
        Configuration cfg = new Configuration();
        FileSystem fs = FileSystem.get(URI.create(uri), cfg);
        InputStream in = null;
        in = fs.open(new Path(uri));
        IOUtils.copyBytes(in, System.out, 4096, false);

        IOUtils.closeStream(in);
    }
}

 

程序说明:

    Configuration类:该类的对象封转了客户端或者服务器的配置。
    FileSystem类:该类的对象是一个文件系统对象,可以用该对象的一些方法来对文件进行操作。FileSystem fs = FileSystem.get(conf);通过FileSystem的静态方法get获得该对象。
    String uri="hdfs://192.168.55.128:9000/user/root/input/word.txt"要与core-site.xml文件中的fs.defaultFS配置对应,其值是hdfs://node1:9000。由于本地Windows系统的hosts文件没有配置node1,所以这里需要IP地址表示。

本地运行

右键单击hdfsTest类,在弹出的快捷菜单中选择“Run ”。
等待数秒后,将看到输入结果。

导出Jar包

将该类导出为 hadooptest.jar.j:

 

 

将jar上传集群中一个节点下 ,比如node3。
这里还是通过SFX上传

在node3(192.168.55.130)节点上执行命令:

hadoop jar hadooptest.jar com.hadoop.hdfs.HdfsTest

 

原文地址:https://www.cnblogs.com/mtime2004/p/10019508.html