在此就不详细介绍HDFS是啥东西了,你只要问问google大神或度娘就一清二楚了。
在此我主要用java代码实现对HDFS的增、删、查操作。
由于本工程是用Maven管理的,则pom文件如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.cloud.hdfs</groupId> <artifactId>java-hdfs</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>java-hdfs</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-core</artifactId> <version>1.2.1</version> </dependency> </dependencies> </project>
HDFSClient.java
package com.cloud.hdfs; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; public class HDFSClient { private FileSystem fileSystem; /** * 在创建对象时,把fileSystem实例化。 * @param conf * @throws IOException */ public HDFSClient(Configuration conf) throws IOException { fileSystem = FileSystem.get(conf); } public void close() throws IOException { fileSystem.close(); } /** * 实现的命令: * hadoop fs -ls /chris * @param folder * @throws IOException */ public void ls(String folder) throws IOException { Path path = new Path(folder); FileStatus[] fileStatus = fileSystem.listStatus(path); System.out.println("===================================================="); for (FileStatus fs : fileStatus) { System.out.println("name: " + fs.getPath() +" folder: " + fs.isDir() + " size: " + fs.getLen() + " permission: " + fs.getPermission()); } System.out.println("===================================================="); } /** * 实现的命令: * hadoop fs -mkdir /chris/client * @param folder * @throws IOException */ public void mkdir(String folder) throws IOException { Path path = new Path(folder); if (!fileSystem.exists(path)) { fileSystem.mkdirs(path); System.out.println("Created " + folder); } } /** * 实现的命令: * haoop fs -rmr /chris/client * @param folder * @throws IOException */ public void rmr(String folder) throws IOException { Path path = new Path(folder); fileSystem.deleteOnExit(path); System.out.println("Delete the " + folder); } /** * 实现的命令: * hadoop fs -copyFromLocal /home/chris/test /chris/ * 注意:此处由于ubuntu操作系统是安装在win7的虚拟机上的,而这段程序是在win7下run的 * 所以此处的本地路径就是win7的。 * @param local * @param remote * @throws IOException */ public void copyFile(String local, String remote) throws IOException { fileSystem.copyFromLocalFile(new Path(local), new Path(remote)); System.out.println("Copy from " + local +" to " + remote); } /** * 实现命令: * hadoop fs -cat /chris/test * @param file * @throws IOException */ public void cat(String file) throws IOException { Path path = new Path(file); FSDataInputStream in = fileSystem.open(path); IOUtils.copyBytes(in, System.out, 4096, false); IOUtils.closeStream(in); } /** * 实现的命令: * hadoop fs -copyToLocal /tmp/core-site.xml /home/chris * 注意:此处的本地也是win7的路径,理由同上。 * @param remote * @param local * @throws IOException */ public void download(String remote, String local) throws IOException { fileSystem.copyToLocalFile(new Path(remote), new Path(local)); System.out.println("Download from " + remote + " to " + local); } /** * 这个是没法通过一条命令来实现的。 * 但是创建文件是有命令的:hadoop fs -touchz /chris/hehe * 只不过里面的内容是空的。 * @param file * @param content * @throws IOException */ public void createFile(String file, String content) throws IOException { byte[] buff = content.getBytes(); FSDataOutputStream out = fileSystem.create(new Path(file)); out.write(buff, 0, buff.length); out.close(); } public static void main(String[] args) throws Exception { //在实现这个config时,它会自动去加载resources下的这几个配置文件 Configuration config = new Configuration(); HDFSClient client = new HDFSClient(config); // client.mkdir("/chris/client"); // client.ls("/chris"); // client.rmr("/chris/client"); // client.ls("/chris"); // client.cat("/chris/test"); // client.copyFile("src/main/resources/core-site.xml", "/tmp/"); // client.download("/chris/test", "src/main/resources/"); // client.createFile("/chris/client.txt", "ddddddddd"); client.close(); } }
相关推荐
- 编写一个简单的 MapReduce 任务或者 HDFS 操作程序进行测试。 #### 四、常见问题与解决方法 - **问题**:启动 Hadoop 服务时出现错误。 - **解决方法**:检查 `core-site.xml` 和 `hdfs-site.xml` 的配置是否...
"haoop-2.6.0-bin"包含了适用于Windows环境的Winutils,特别是其中的"winutils.exe"文件,它提供了与Hadoop在Linux平台上的"Hadoop命令行工具"类似的功能,对于在本地进行Hadoop相关的操作极其有用。 【详细知识点...
**问题描述**:配置Hadoop环境变量后,在命令行中执行Hadoop命令时可能会遇到`bash:haoop:commandnotfound`错误。 **原因分析**:这通常是由于环境变量配置错误导致的,比如在配置文件中少了必要的符号 `$`。 **...
同时,检查环境是否已按照初始化指导完成,这包括网络配置、Java环境、硬件资源等。 2、安装Hadoop 3.1.0: 安装过程主要包括将Hadoop软件包解压缩到指定目录,如/opt,然后修改配置文件以适应当前环境。核心配置...
标题中的“haoop除share部分的工具类”指的是这个压缩包包含了Hadoop项目中除了`share`目录下的部分工具类。在Hadoop的源代码结构中,`share`目录通常包含可跨模块共享的资源,如配置文件、文档、JAR包等。由于这个...
创建新的Java项目,添加Hadoop的jar包到项目的类路径中,这通常包括hadoop-common、hadoop-hdfs、hadoop-mapreduce等模块的jar文件。`hadoop-libr`可能包含这些库的文件,它们是构建和运行Hadoop程序所必需的依赖。 ...
首先,我们要了解Hadoop的两个核心组件:HDFS(Hadoop Distributed File System)和MapReduce。HDFS是分布式文件系统,负责数据的存储,而MapReduce则用于处理和分析这些数据。在Windows环境下搭建Hadoop并不常见,...
首先,需要掌握Java编程语言,因为Hadoop最初的MapReduce框架是基于Java实现的。当然,随着技术的发展,如今已经支持通过其他语言如Python、Ruby等访问Hadoop。其次,需要理解Hadoop的安装、配置和使用,以及了解...
MapReduce通常与HDFS一起使用,可以并行处理数据,以提高效率。 YARN(Yet Another Resource Negotiator)是一个资源管理平台,负责集群资源的分配和任务调度。YARN通过一个资源管理器(ResourceManager)和每个...
3. **程序包**:在所有主机上安装必要的依赖包,包括Java开发套件(JDK)和SSH客户端/服务器。 4. **hosts**:更新所有主机的`/etc/hosts`文件,添加彼此的IP地址和主机名映射,确保集群内的通信畅通。 5. **SSH互...
2. Java SDK:后台服务日志生成与发送工具,特点是代码简单,可以打成jar包或者直接拷贝类到具体的项目中。 3. Nginx:web服务器软件,特点是小巧而高效,基于事件的,内存使用很低,系统资源消耗小。 4. Shell脚本...
源码中,`fs`包提供了对多种文件系统的抽象接口,使得Hadoop能够透明地操作本地文件系统或分布式文件系统,如HDFS和Amazon S3。`ipc`包则包含了简单IPC实现,用于不同组件间的通信,依赖于`io`包提供的数据编码解码...
文章目录一、MapReduce跑得慢的原因二、MapReduce优化方法(一)数据输入(二)Map阶段(三)Reduce阶段(四)I/O阶段(五)数据倾斜问题(六)常用的调优参数三、HDFS小文件优化方法 一、MapReduce跑得慢的原因 ...
在IT行业中,尤其是在大数据处理领域,Linux操作系统与Hadoop框架的结合使用是非常常见的。这篇内容主要探讨了如何在Linux环境下,通过Shell脚本将大量小文件结构化地合并成一个大文件,以便更高效地上传到Hadoop...
- **Pig**:一种用于处理大型数据集的高级数据流语言及其运行环境,允许非Java开发人员利用Hadoop进行复杂数据处理。 - **HBase**:一个分布式的、面向列的开源数据库,非常适合用于处理半结构化或非结构化数据。 - ...
在Centos7.0中搭建Haoop伪分布式环境,并用Java接口上传文件进行测试。
sqoop安装详解以及sqoop内容介绍使用介绍 ...2、导入数据:从结构化数据(Mysql,oracle,db2,)导入到半结构化或非结构化hadoop中(HDFS、HIVE、HBASE) 3、导出数据:从haoop中将数据导出到关系数据库中MySql
二、配置Hadoop环境变量 1. 查询Hadoop解压后的根路径,使用cd命令切换到/usr/local/hadoop/hadoop-2.8.5目录下,使用pwd命令获取当前目录路径。 2. 修改/etc/bash.bashrc文件,添加Hadoop环境变量。使用sudo vim /...