(转)今天的進度是研究如何讓使用者透過網路來下載 HDFS 上的檔案,基本上這和壓縮一般的檔案沒什麼兩樣,直接透過 java 內建的
java.util.zip 套件就可以輕易做到了。唯一的差別,在這裡要用 Hadoop API 提供的 FSDatainputStream
來開啟檔案串流,然後逐一寫入到壓縮串流就可以完成檔案壓縮的目的。
而在操作流程的上,使用者會先選擇要下載的檔案,這個對 HTML 有基礎瞭解的開發人員不是什麼問題,利用 Form 加 Checkbox 就可以輕易的達成目的,當使用者選擇確認後,再送到 servlet 處理就可以了。
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String photoYear = request.getParameter("photoYear");
String id = request.getParameter("id");
Configuration conf = new Configuration();
conf.set("hadoop.job.ugi","hadoop,supergroup");
String uriBase= String.format("hdfs://cloud:9000/%s/%s/", photoYear, id);
String files[] = request.getParameterValues("SelectPic");
BufferedOutputStream dest = new BufferedOutputStream(response.getOutputStream());
ZipOutputStream outZip = new ZipOutputStream(new BufferedOutputStream(dest));
response.setHeader("Content-Type", "application/zip");
int bytesRead;
Path sourceFilePath;
FileSystem fs = FileSystem.get(URI.create(uriBase),conf);
try {
for (int i=0; i < files.length; i++) {
sourceFilePath = new Path(uriBase + files[i]);
//開啟資料輸入串流
FSDataInputStream in = fs.open(sourceFilePath);
//建立檔案的 entry
ZipEntry entry = new ZipEntry(files[i]);
outZip.putNextEntry(entry); //將壓縮串流移到此 entry 的資料位置
//透過檔案輸入串流, 將 HDFS 檔案內容寫入到壓縮串流
byte[] buffer = new byte[4096];
while ((bytesRead = in.read(buffer)) < 0) {
outZip.write(buffer, 0, bytesRead);
}
in.close();
}
outZip.flush();
outZip.close();
} catch(Exception e) {
outZip.close();
e.printStackTrace();
}
}
分享到:
相关推荐
实验报告“云计算技术实验报告四HDFS文件的读写”主要涵盖了如何在Hadoop的分布式文件系统(HDFS)上进行文件操作,包括文件的上传和下载,以及文件的合并。该实验是针对计算机科学专业的《云计算技术》课程设计,...
- `hdfs dfs -get`:用于从HDFS下载文件。 - `hdfs dfs -ls`:列出指定目录下的所有文件和子目录。 - `hdfs dfs -rm`:删除指定的文件。 - `hdfs dfs -mkdir`:创建新的目录。 - `hdfs dfs -cat`:显示文件...
### Hadoop-HDFS环境下文件上传与下载操作指南 #### 一、Windows环境下配置Hadoop环境 **1.1 下载Hadoop** 为了在Windows环境下配置Hadoop环境,首先需要下载Hadoop软件包。推荐下载Hadoop 2.7.7版本,可以从清华...
"实验二:熟悉常用的HDFS操作.docx.zip" 这个标题表明这是一个关于Hadoop分布式文件系统(HDFS)操作的学习实验文档,以.docx格式压缩成.zip文件。实验的目的是帮助用户熟悉HDFS的基本操作,这通常包括数据的上传、...
启动Hadoop后,可以在HDFS中创建用户目录,并通过Hadoop命令如`hadoop fs -mkdir`创建目录,`hadoop fs -put`上传文件,`hadoop fs -ls`查看目录内容,以及`hadoop fs -get`将HDFS上的文件或目录下载到本地。...
这个压缩文件"hadoop-3.1.4.tar.zip"包含了Hadoop的源代码、文档、配置文件以及相关的依赖库,使得用户可以方便地在本地环境中安装和运行Hadoop。 在解压文件"hadoop-3.1.4.tar.gz"后,我们可以得到Hadoop的完整...
通过关联规则挖掘分析Hadoop系统中的审计日志,能够识别出小文件之间的关联规则,从而指导合并算法将小文件合并压缩后存储到HDFS中。 在HDFS中请求文件时,ARMFS方法通过关联规则挖掘得到的高频访问模式和预取机制...
Hadoop的文件系统(HDFS)是其数据存储的核心,提供了一种分布式、容错性的大容量存储方案。文件归档是Hadoop中管理大量历史数据的重要手段,它可以将不再频繁访问的数据转移到更经济的存储介质上,以节省昂贵的主...
但是,对于那些习惯于Windows环境的开发者和学习者,这个压缩包提供了方便。以下是这个压缩包可能包含的文件和组件: 1. **Hadoop Common**: 这是Hadoop的基础组件,包含了一套通用工具和服务,如文件系统接口、...
3. **WebHDFS接口**:通过编程方式,如使用Java API、Python的`hdfs3`库或Hadoop的RESTful API,可以实现文件的上传。 4. **Hadoop的集成工具**:如Apache Hue或Cloudera Manager等可视化界面,提供了友好的图形用户...
这些压缩格式可以有效地减少数据在HDFS(Hadoop分布式文件系统)中的存储空间和网络传输的数据量,从而提高整体性能。在这个例子中,可能涉及到自定义的压缩器,这通常是为了优化特定场景下的压缩效率或解压速度。 ...
4. 使用:现在,你可以利用插件提供的功能,如浏览HDFS文件系统、提交MapReduce作业、查看作业执行状态等。 总结来说,这个"Hadoop2x集成eclipse插件压缩包"是一个强大的工具,它使得Hadoop开发更加直观和高效,...
- 理解Hive的基本概念和架构,包括元数据、HDFS上的数据存储以及如何使用Hive CLI或Hue等工具。 - 学习Hive SQL语法,包括SELECT、JOIN、GROUP BY、WHERE等基本操作,以及窗口函数、分区等高级特性。 - 掌握ORC格式...
在实际使用中,首先需要解压缩这些文件,然后配置Spark的`spark-defaults.conf`文件以指向Hive的元数据存储位置(如HDFS或本地文件系统上的metastore_db)。接着,通过设置`spark.sql.hive.metastore.uris`等参数,...
* 以这种格式存储的文件,可以直接在 HDFS 上 cat 查看数据。 * 可以用任意分隔符对列分割,建表时需要指定分隔符。 * 不会对文件进行压缩,因此加载数据的时候会比较快,因为不需要解压缩;但也因此更占用存储空间...
- 命令行接口:用户可以通过命令行与HDFS交互,进行文件的上传、下载、删除等操作。 - Java接口:对于开发人员,Hadoop提供了Java API来操作HDFS,便于编程集成。 - 数据流和复制:讨论了数据在节点间的流动,...
2. **解压Hadoop**: 解压缩下载的Hadoop文件到你希望的目录,例如`C:\hadoop`. 3. **配置环境变量**: 在系统环境变量中添加`HADOOP_HOME`,值设为Hadoop的安装路径,如`C:\hadoop`。 4. **配置PATH**: 同样在环境...
描述中没有提供具体信息,但我们可以推测这个压缩文件可能是为了存储或传输一个大型Hive表的数据。".tar.gz"是一个常见的压缩格式,用于归档多个文件或目录,通过tar命令创建并用gzip压缩,以节省存储空间和提高传输...