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;