下面两个命令是把文件从HDFS上下载到本地的命令。
get
使用方法:hadoop fs -get [-ignorecrc] [-crc] <src> <localdst>
复制文件到本地文件系统。可用-ignorecrc选项复制CRC校验失败的文件。使用-crc选项复制文件以及CRC信息。
示例:
- hadoop fs -get /user/hadoop/file localfile
- hadoop fs -get hdfs://host:port/user/hadoop/file localfile
返回值:
成功返回0,失败返回-1。
copyToLocal
使用方法:hadoop fs -copyToLocal [-ignorecrc] [-crc] URI <localdst>
除了限定目标路径是一个本地文件外,和get命令类似。
也可以用如下的程序可实现将HDFS上的文件下载到本地。
import java.net.URI;
import java.io.OutputStream;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
public class FileCopy2Local
{
public static void main(String[] args) throws Exception
{
String dest = "hdfs://localhost:9000/user/laozhao0/cite2.txt";
String local = "/home/laozhao0/cite2.txt";
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(URI.create(dest),conf);
FSDataInputStream fsdi = fs.open(new Path(dest));
OutputStream output = new FileOutputStream(local);
IOUtils.copyBytes(fsdi,output,4096,true);
}
}
分享到:
相关推荐
客户端在写入文件时,会先将文件块写入本地DataNode,然后将元数据信息更新到NameNode。读取文件时,NameNode会根据元数据信息指引客户端找到数据块的位置,通常是从最近或负载较低的DataNode开始读取。 HDFS的另一...
在Java编程实现部分,学生通过`org.apache.hadoop.conf.Configuration`,`org.apache.hadoop.fs.FileSystem`和`org.apache.hadoop.fs.Path`等类,实现了文件存在性判断和本地文件复制到HDFS的功能。`FileSystem.get...
例如,使用`hadoop fs -put`命令将本地文件上传到HDFS,使用`hadoop fs -get`下载文件,`hadoop fs -rm`删除文件,以及如何查看目录结构等。这些基本操作是日常管理和维护HDFS的基础。 在Hadoop__java标签中,意味...
1. **fs**: 这是文件系统接口层,提供了一种抽象,使得Hadoop可以在不同类型的文件系统上运行,包括本地文件系统、HDFS以及Amazon S3等。这个包包含了FileContext接口,它是访问文件系统的主要入口点。 2. **hdfs**...
写入时,数据块先写入本地DataNode,再复制到其他节点,提高写入速度。同时,HDFS的容错机制确保了即使部分节点故障,数据也能被安全地恢复。 本课程涵盖了Hadoop的多个关键组件,如MapReduce、YARN、Hive、HBase、...
HDFS提供了一系列API供用户与系统交互,如`hdfs.copyFromLocalFile()`方法用于将本地文件上传到HDFS。开发者可以利用这些API进行数据的读写、操作和管理,实现对大数据的高效处理。 总的来说,Hadoop的HDFS是一个...
- **示例**:假设你想将名为`myfile.txt`的文件从本地文件系统复制到HDFS的根目录下,可以使用命令:`hadoop fs -copyFromLocal myfile.txt hdfs://localhost/` #### 五、HDFS命令行接口其他常见命令 除了上述提到...
1. 块级存储:HDFS将大文件切分成多个固定大小的块,每个块多副本分布在不同的DataNode上,提高了容错性和读取效率。 2. 写入流程:客户端首先与NameNode交互,确定写入的块位置,然后直接向DataNode写入数据,最后...
例如,`hadoop fs -put localfile hdfs://namenode:port/destinationpath`会将localfile文件复制到HDFS的指定路径下。 4. **使用Hadoop API**:如果你是在编程环境中工作,可以使用Hadoop的Java API或者其他的语言...
- **数据持久性和可靠性**:为了保证数据的持久性和可靠性,HDFS通过将文件内容复制到多个DataNode上来实现。这种方式不仅保证了数据的可靠性,还提高了数据传输带宽和计算本地化的可能性。 #### 3. HDFS的关键技术...
然后,SecondaryNameNode会将旧的Fsimage和Edits文件复制到本地,并在内存中合并它们,生成一个新的fsimage.chkpoint文件。 3. **同步回NameNode:** 合并完成后,SecondaryNameNode会将fsimage.chkpoint文件传回...
然而,Namenode是整个系统的单点故障,如果Namenode失效,文件系统的可用性将受到影响。为了保证容错性,Hadoop提供了多种策略。首先,可以配置Namenode在多个文件系统上同步保存元数据,通常包括本地磁盘和网络文件...
- `hadoop fs -put <localfile> <hdfsdir>`:将本地文件上传到HDFS。 - `hadoop fs -ls <path>`:列出HDFS路径下的文件和目录列表。 #### HDFS Java API 除了命令行工具之外,HDFS还提供了Java API,允许开发者...
- 复制本地文件到HDFS,覆盖已存在的文件:利用`FileSystem.copyFromLocalFile()`方法。 - 追加文件内容:使用`FileSystem.append()`方法创建一个`FSDataOutputStream`,将内容追加到文件末尾。 四、Java API实现...
4. 数据读写流程:读操作通常从最近或最忙的DataNode开始,写操作则先在NameNode上创建文件,然后DataNodes接收数据并将Block写入本地磁盘,最后NameNode更新元数据。 5. 故障恢复:当DataNode故障时,NameNode会...
二、HDFS——分布式文件系统 HDFS的设计目标是高容错性、可扩展性和高吞吐量。它将大文件分割成块,并在多台服务器上冗余存储,确保即使部分节点故障,数据仍然可访问。HDFS的关键特性包括数据自动复制、数据本地化...
客户端将数据写入第一个DataNode,后者再将数据复制到其他DataNode。 4. 当块写满后,关闭当前块并开始下一个块的写入过程。 5. 写入完成后,客户端通知NameNode,后者更新元数据。 - **读取流程**: 1. 客户端...
### Hadoop 2.7.1 —— NFS 部署详解 ... 从 HDFS 复制文件到本地:** ```bash cp /mnt/hdfs/jdk.tar.gz . ``` 完成上述步骤后,即可实现Hadoop 2.7.1 的 NFS 部署,并能够进行数据的高效读写操作。
在Hadoop环境中,文件上传通常通过`hadoop fs -put`命令完成,该命令将本地文件或目录复制到HDFS中。在本示例的"bigdata-demo"压缩包中,可能包含了一个模拟的文件上传脚本或者程序,用于演示如何通过编程方式实现...
二、HDFS——分布式文件系统 1. 数据块与副本策略:HDFS将大文件分割为多个小的数据块,每个数据块默认有三份副本,分别存储在不同的节点上,增强了数据的可靠性和可用性。 2. NameNode与DataNode:NameNode是HDFS...