赞
踩
<dependencies>
<!--hadoop客户端-->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.3.4</version>
</dependency>
<!--单元测试框架-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
</dependencies>
log4j.rootLogger=stdout, logfile
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/hdfs.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
start-dfs.sh
package net.kox.hdfs; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.junit.Test; import java.net.URI; public class CreateFileOnHDFS { @Test public void create1() throws Exception { // 创建配置对象 Configuration conf = new Configuration(); // 定义统一资源标识符(uri:uniform resource identifier) String uri = "hdfs://192.168.218.141:9000"; // 创建文件系统对象(基于HDFS的文件系统) FileSystem fs = FileSystem.get(new URI(uri), conf); // 创建路径对象(指向文件) Path path = new Path(uri + "/ied01/hadoop.txt"); // 基于路径对象创建文件 boolean result = fs.createNewFile(path); // 根据返回值判断文件是否创建成功 if (result) { System.out.println("文件[" + path + "]创建成功!"); } else { System.out.println("文件[" + path + "]创建失败!"); } } }
@Test public void create2() throws Exception { // 创建配置对象 Configuration conf = new Configuration(); // 定义统一资源标识符(uri:uniform resource identifier) String uri = "hdfs://192.168.218.141:9000"; // 创建文件系统对象(基于HDFS的文件系统) FileSystem fs = FileSystem.get(new URI(uri), conf); // 创建路径对象 Path path = new Path(uri + "/ied01/hadoop.txt"); // 判断路径对象指向的文件是否存在 if (fs.exists(path)) { // 提示用户文件已存在 System.out.println("文件[" + path + "]已经存在!"); } else { // 基于路径对象创建文件 boolean result = fs.createNewFile(path); // 根据返回值判断文件是否创建成功 if (result) { System.out.println("文件[" + path + "]创建成功!"); } else { System.out.println("文件[" + path + "]创建失败!"); } } }
package net.kox.hdfs; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.junit.Test; import java.net.URI; public class WriteFileOnHDFS { @Test public void write1() throws Exception { // 创建配置对象 Configuration conf = new Configuration(); // 设置节点主机名属性 conf.set("dfs.client.use.datanode.hostname", "true"); // 定义统一资源标识符(uri: uniform resource identifier) String uri = "hdfs://master:9000"; // 创建文件系统对象(基于HDFS的文件系统) FileSystem fs = FileSystem.get(new URI(uri), conf); // 创建路径对象(指向文件) Path path = new Path(uri + "/ied01/hello.txt"); // 创建文件系统数据字节输出流(出水管:数据从程序到文件) FSDataOutputStream out = fs.create(path); // 通过字节输出流向文件写数据 out.write("Hello Hadoop World".getBytes()); // 关闭文件系统数据字节输出流 out.close(); // 关闭文件系统对象 fs.close(); // 提示用户写文件成功 System.out.println("文件[" + path + "]写入成功!"); } }
运行程序,查看结果:
利用Hadoop WebUI查看hello.txt文件
@Test
public void write2() throws Exception {
// 创建配置对象
Configuration conf = new Configuration();
// 设置数据节点主机名属性
conf.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。