转自:http://blog.csdn.net/msc067/article/details/7239563
运行方式:指定两个输入参数,依次为本地文件(或文件夹)路径、HDFS文件(或文件夹)路径
import java.io.File;
import java.io.FileOutputStream;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileUtil;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.io.IOUtils;
public class HDFS_Downloader
{
public static FileSystem hdfs;
public static void downloadFile(String srcPath, String dstPath) throws Exception
{
FSDataInputStream in = null;
FileOutputStream out = null;
try
{
in = hdfs.open(new Path(srcPath));
out = new FileOutputStream(dstPath);
IOUtils.copyBytes(in, out, 4096, false);
}
finally
{
IOUtils.closeStream(in);
IOUtils.closeStream(out);
}
}
public static void downloadFolder(String srcPath, String dstPath) throws Exception
{
File dstDir = new File(dstPath);
if (!dstDir.exists())
{
dstDir.mkdirs();
}
FileStatus[] srcFileStatus = hdfs.listStatus(new Path(srcPath));
Path[] srcFilePath = FileUtil.stat2Paths(srcFileStatus);
for (int i = 0; i < srcFilePath.length; i++)
{
String srcFile = srcFilePath[i].toString();
int fileNamePosi = srcFile.lastIndexOf('/');
String fileName = srcFile.substring(fileNamePosi + 1);
download(srcPath + '/' + fileName, dstPath + '/' + fileName);
}
}
public static void download(String srcPath, String dstPath) throws Exception
{
if (hdfs.isFile(new Path(srcPath)))
{
downloadFile(srcPath, dstPath);
}
else
{
downloadFolder(srcPath, dstPath);
}
}
public static void main(String[] args)
{
if (args.length != 2)
{
System.out.println("Invalid input parameters");
}
else
{
try
{
Configuration conf = new Configuration();
hdfs = FileSystem.get(URI.create(args[0]), conf);
download(args[0], args[1]);
}
catch (Exception e)
{
System.out.println("Error occured when copy files");
}
}
}
}
分享到:
相关推荐
hdfs dfs -test -e 文件或目录名 第三步,查看检测结果: echo $? 若输出结果为0,则说明文件或目录存在,若为1,则说明文件或目录不存在。 二、Java代码实现 import org.apache.hadoop.conf.Configuration; ...
本文将深入探讨使用Java管理HDFS文件和文件夹的关键知识点,特别是基于Hadoop 2.4版本。 首先,理解HDFS的基础概念至关重要。HDFS是一种分布式文件系统,设计用于跨大量廉价硬件节点存储和处理大数据。它遵循主从...
为了高效地与HDFS交互,Java API 提供了一套丰富的工具和类库,使得开发者能够方便地进行文件的读写、上传、下载、遍历、查找、拷贝以及管理HDFS上的文件和目录。以下将详细讲解如何使用Java API 操作HDFS。 ### 一...
标题中的知识点主要涉及Python连接HDFS进行文件上传下载以及Pandas转换文本文件到CSV的操作。在描述中,提到了Python在Linux环境下与HDFS交互的需求,以及使用Pandas进行数据处理的场景。从标签中我们可以进一步了解...
hdfs文件的下载
4. 删除 HDFS 文件或目录:使用 FileSystem.delete() 方法删除 HDFS 文件或目录。 以下是一个使用 HDFS API 编写的操作文件系统的程序: ```java import org.apache.hadoop.conf.Configuration; import org.apache...
hdfs文件的查看 hdfs fs -cat /文件名
本教程将详细讲解如何利用HDFS API进行文件的上传、创建、删除以及重命名等基本操作。这些API是Java编程接口,为开发者提供了与HDFS交互的便利。 首先,我们需要导入Hadoop相关的库,通常在Java项目中,这可以通过...
通过 Shell 命令,可以对 HDFS 进行文件操作,例如上传文件、下载文件、删除文件等。 Java 程序操作 HDFS Java 程序操作 HDFS 是使用 HDFS 的一种方式。通过 Java API,可以对 HDFS 进行文件操作,例如上传文件、...
此外,如果你需要处理图像文件(由“image”标签提示),可以使用`PIL`或`opencv-python`库将HDFS上的图片文件下载并进行操作。例如,用PIL处理JPEG图像: ```python from PIL import Image # 从HDFS下载图像到...
### Hadoop存储系统HDFS的文件分块存储 #### HDFS文件分块机制 Hadoop分布式文件系统(HDFS)是一种专为存储大型文件而设计的文件系统,它能够高效地处理海量数据。HDFS的基本设计理念之一就是将文件分割成多个块...
特别是`bin`子目录,其中包含了一系列用于操作Hadoop的命令行工具,例如`hadoop`命令,可以用来启动、停止HDFS和MapReduce服务,以及执行其他Hadoop相关的任务。 为了在Eclipse中成功操作HDFS,我们需要进行以下...
在这个“HDFS实例基本操作”中,我们将深入探讨如何在已经安装好的HDFS环境中执行基本操作,包括文件上传、下载以及创建文件夹。 一、HDFS的基本架构 HDFS基于主从结构,主要由NameNode和DataNode组成。NameNode...
此外,它还处理客户端的所有文件系统层面上的操作请求,如打开、关闭、重命名文件或目录等。 - **功能**: - 管理数据块映射; - 处理客户端的读写请求; - 配置副本策略; - 管理HDFS的名称空间; - **...
每个文件、目录或数据块大约占用150字节的内存。因此,存储大量的小文件会迅速消耗Namenode的内存资源。 2. **高吞吐量而非低延迟**:HDFS优化了高吞吐量的数据访问,而不是低延迟。这意味着处理大量小文件时可能会...
而`GetMerger`功能则涉及从HDFS下载一个包含多个文件的路径(即一个文件夹),并将这些文件合并成一个单一文件存储在本地。 为了实现这些功能,学生需要在Linux环境中使用Eclipse集成开发环境(IDE)。首先,他们...
例如,可能会有一个名为`HdfsUploader`的类,其中包含如`uploadFile()`这样的方法,该方法接受文件路径和HDFS目标路径作为参数,执行上传操作。这个类可能会用到Hadoop的`Configuration`、`FileSystem`和`Path`等...
该文件位于Hadoop安装目录下的`conf`文件夹内,主要用来定义Hadoop集群的基本配置信息。其中最重要的配置项是`fs.default.name`或`fs.defaultFS`,用于指定HDFS集群的名称节点的地址。 ##### 关键配置项解释 - **fs...
3. 文件下载:可以将HDFS中的文件或目录下载到本地文件系统。 4. 文件操作:包括创建、重命名、移动、删除文件或目录,以及设置权限等。 5. 元数据查看:显示文件大小、修改时间、所有者等信息。 6. 快捷操作:如...
- **文件和目录操作**:HDFS Explorer提供类似Windows资源管理器的界面,可以进行文件的上传、下载、删除、重命名、创建目录等基本操作。 - **文件预览**:用户可以直接在浏览器中查看文本文件内容,无需下载到本地...