ITPub博客

首页 > 大数据 > Hadoop > hadoop hdfs api 操作

hadoop hdfs api 操作

原创 Hadoop 作者:元亨利贞 时间:2023-09-28 10:30:44 0 删除 编辑

配置客户端环境

1 )找到资料包路径下的 Windows 依赖文件夹,拷贝 h adoop-3.1.0 到非中文路径(比如 d :\ )。

2 ) 配置 HADOOP _HOME 环境 变量

3 ) 配置 Path 环境 变量 。

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

验证 Hadoop 环境变量是否正常。双击 w inutils.exe ,如果报如下错误。说明缺少微软运行库(正版系统往往有这个问题)。再资料包里面有对应的微软运行库安装包双击安装即可。

4 )在 IDEA 中创建一个 Maven 工程 Demo ,并导入相应的依赖坐标 + 日志添加

<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


Hadoop HDFS API的Java代码示例:

创建HDFS客户端:

Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:8020"), conf, "hadoop");

上传文件到HDFS

fs.copyFromLocalFile(new Path("d:/sunwukong.txt"), new Path("/xiyou/huaguoshan"));

从HDFS下载文件

FSDataInputStream in = fs.open(new Path("/filename.tar.gz"));
FileOutputStream out = new FileOutputStream(new File("c:/filename.tar.gz"));
IOUtils.copyBytes(in, out, 4096);

随机定位读取文件

FSDataInputStream in = fs.open(new Path("/iloveyou.txt"));
in.seek(22);
FileOutputStream out = new FileOutputStream(new File("c:/iloveyou.line.2.txt"));
IOUtils.copyBytes(in,out,19L,true);

显示HDFS上文件内容

FSDataInputStream in = fs.open(new Path("/iloveyou.txt"));
IOUtils.copyBytes(in, System.out, 1024);

上传大文件并显示进度

File file = new File("D:\\kafka.tgz");
final float fileSize = file.length();
InputStream in = new BufferedInputStream(new FileInputStream(file));
FSDataOutputStream out = fileSystem.create(new Path("/hdfs-api/test/kafka5.tgz"), new Progressable() {
    long fileCount = 0;
    public void progress() {
        fileCount++;
        System.out.println("上传进度:" + (fileCount * 64 * 1024 / fileSize) * 100 + " %");
    }
});
IOUtils.copyBytes(in, out, 4096);


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70024433/viewspace-2986481/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2022-11-21

  • 博文量
    383
  • 访问量
    247954