本地开发IDEA 开发hdfs api
1.先下载window环境编译好的Hadoop安装包,到安装目录下
注意一定得要有(winutils.exe)这个文件
下载地址:https://pan.baidu.com/s/1tcwFOjbQJlFKR-t5S_wxxw
2.跟配置jdk环境变量一样配置Hadoop的环境变量
HADOOP_HOME
D:\XXX\hadoop-2.6.1\
PATH #末尾追加
%HADOOP_HOME%\bin;%HADOOP_HOME%\sbin
3.idea新建一个maven项目
在pom文件中引入cloudera仓库
<repositories>
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</repository>
</repositories>
4.修改maven配置文件
*注意:如果原来有加入阿里云,这里是修改。下配置中 ,!cloudera 表示除了aliyun仓库还使用cloudera仓库
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*,!cloudera</mirrorOf>
<name>Nexus aliyun</name>
<url>
http://maven.aliyun.com/nexus/content/groups/public
</url>
</mirror>
5.添加hadoop-client依赖
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.6.0</version>
</dependency>
6.写测试demo
Configuration conf = new Configuration();
//注意这个地方是设置fs.defaultFS不是dfs.defaultFS ,注意URI中的地址在配置文件core-site.xml文件中有配置
/* <property>
<name>fs.defaultFS</name>
<value>hdfs://master001:9000</value>
</property>*/
FileSystem fs = FileSystem.get(new URI("hdfs://master001:9000"), conf, "root");
fs.mkdirs(new Path("/ruozedata/"));
7.运行程序前,先启动Hadoop环境,这里伪分布式,或者集群模式均可以,确保关闭了防火墙(目的界面上可见),hdfs退出了安全模式
运行结果
遇到的问题
①
Exception in thread "main" java.io.IOException: (null) entry in command string: null chmod 0700 F:\tmp\hadoop-user\mapred\staging\user1361051838\.staging
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:770)
at org.apache.hadoop.util.Shell.execCommand(Shell.java:866)
at org.apache.hadoop.util.Shell.execCommand(Shell.java:849)
at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:733)
at org.apache.hadoop.fs.RawLocalFileSystem.mkOneDirWithMode(RawLocalFileSystem.java:491)
at org.apache.hadoop.fs.RawLocalFileSystem.mkdirsWithOptionalPermission(RawLocalFileSystem.java:532)
解决:记得将hadoop bin目录下的hadoop.dll 复制一份到 Windows/system32/目录下
②
Exception in thread “main” java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z Ask Question
解决:将 winutils 版本升高
https://github.com/4ttty/winutils(这个github可以下到hadoop所有版本对应的winutils)