HDFS文件管理方式
对大数据HDFS文件的管理一般有如下几种方式:
- 通过服务器端linux命令行
- 通过HDFS Web端
- 通过本地客户端
使用linux命令行抑或Web端来管理HDFS文件系统,固而简单方便,但通过在客户端使用脚本语言能够实现对Hadoop更加灵活多样的操作,比如实时参数配置(脚本语言里的参数配置优先级最高),循环处理文件等。
前置准备
-
在准备Hadoop客户端API之前,需要有已搭建好的
完全分布式集群
,集群的搭建可以参考 -
zookeeper、hadoop集群已经启动并正常运行
-
电脑(以mac为例)已安装配置jdk环境,要求1.8版本或以上
-
已安装
IntelliJ IDEA
软件下载专业版,可以临时使用下面提供的激活码进行学习,IDEA使用体验超好,推荐大家购买支持正版软件
-
安装配置好的maven环境,参考
-
主机名配置
#在终端里修改hosts vi /etc/hosts #添加主机名,比如我的集群有三个节点:node1、node2、node3 172.19.0.3 node1 172.19.0.4 node2 172.19.0.5 node3
HDFS的API操作
Mac的Hadoop客户端无需下载Hadoop及配置环境变量,在IDEA中maven会下载连接需要的依赖包。
-
打开IDEA,点击
文件-新建-项目
,选择
Maven
-
填写
GroupId
和
ArtifactId
,完成Maven项目的创建
-
项目创建后,一般会自动打开
pom.xml
文件
-
注意按上面maven配置文章里在idea的
偏好设置
里完成对maven环境的配置
-
依赖包的配置:在
pom.xml
文件中的
properties
标签下面添加以下依赖包代码。代码添加后会自动联网下载所需的依赖包,可以在上面maven
本地仓库
配置的路径下查看,成功下载所有依赖包后,
pom.xml
文件代码中将没有红色字体<!-- 注意代码里面的Hadoop版本3.3.0要和服务器上部署的版本一致,按实际情况修改 --> <dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>3.3.0</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>
-
在IDEA的
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
-
在IDEA的
src-main-java
路径下创建包
com.axl.hdfs
,然后在这个包里创建类
HdfsClient
,在类文件里面填入以下代码package com.axl.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.io.IOException; import java.net.URI; import java.net.URISyntaxException; public class HdfsClient { @Test public void testMkdirs() throws IOException, URISyntaxException, InterruptedException { //连接集群的namenode地址,node1要修改成自己集群的节点名称 URI uri = new URI("hdfs://node1:8020"); //创建配置文件 Configuration configuration = new Configuration(); //指定用户 String user = "root"; //获取客户端对象 FileSystem fs = FileSystem.get(uri,configuration,user); //创建测试文件夹 fs.mkdirs(new Path("/test")); //关闭 fs.close(); } }
-
执行以上代码,在
http://node1:9870
Web文件系统里查看,可以看到文件夹通过客户端成功创建
- 除了创建文件夹以外,还可以在客户端对文件进行上传下载、增删改查等操作,大家可以自己尝试