基于Hadoop的数据云盘的实现

本文介绍了如何在CentOS环境中,基于Hadoop实现一个数据云盘系统。涵盖了用户注册、登录、文件上传、下载和删除等功能。通过Eclipse创建Java Web项目,导入Hadoop jar包,并配置web.xml文件。使用jsp文件创建前端界面,结合MySQL数据库进行用户管理,利用Hadoop的HDFS进行分布式存储。最后,确保Tomcat和Hadoop集群正常运行,即可部署并运行系统。
摘要由CSDN通过智能技术生成

环境:centos6.6   Tomcat7.0  eclipse  MySQL  

首先介绍一下这个简单网盘的功能:实现用户的注册,登录;上传、下载、删除文件;

基于Hadoop hdfs的集群分布式系统做成的这个简单的云盘实现;

首先启动centos,打开安装好的eclipse,file-->New-->Dynamic Application Project

注:如果没有这个项目,安装Java EE 

   

项目名称自己设置,一直点击下一步,最后一步时,最后一步最好勾选创建web.xml,没有勾选后面自己在WEB-INF下new一个名为web.xml的xml File

           创建后如图 

创建后,导入Hadoop下的jar包,位于安装Hadoop文件下下的share文件中,选中后粘贴到WEB-INF下的lib文件中

eclipse中选中所有的jar包,右键-->Build Path-->Add to build path。或者是选中项目,按alt+enter,进入界面,左侧选择java build path ,右侧libraries, add jars,

选择你要导入的jar包ok就好啦,

接下来就是真正开始创建了,选中java Resources,右键new-->package,创建三个package,可自己命名,我这里分别是,com.Bean, com.model, com.controller

右键com.controller,创建上传文件的名为uploadServlet.java类文件

package com.controller;

import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.hadoop.fs.FileStatus;

import com.simple.model.HdfsDAO;

public class UploadServlet extends HttpServlet{
	protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
		this.doPost(request,response);
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
		request.setCharacterEncoding("utf-8");
		File file;
		int maxFileSize = 50 * 1024 * 1024;  //50M
		int maxMemSize = 50 * 1024 * 1024;  //50M
		ServletContext context = getServletContext();
		String filePath = context.getInitParameter("file-upload");
		System.out.println("source file path:"+filePath+"");
		//验证上传内容的类型
		String contentType = request.getContentType();
		if((contentType.indexOf("multipart/form-data") >= 0)){
			DiskFileItemFactory factory = new DiskFileItemFactory();
			//设置内存中存储文件的最大值
			factory.setSizeThreshold(maxMemSize);
			//本地存储的数据大于maxMemSize
			factory.setRepository(new File("/soft/file-directory"));
			//创建一个新的文件上传处理程序
			ServletFileUpload upload = new ServletFileUpload(factory);
			//设置最大上传文件大小
			upload.setSizeMax(maxFileSize);
			try{
				//解析获取新文件
				List fileItems = upload.parseRequest(request);
				//处理上传的文件
				Iterator i = fileItems.iterator();
				System.out.println("begin to upload file to tomcat server</p>");
				while(i.hasNext()){
					FileItem fi = (FileItem)i.next();
					if(!fi.isFormField()){
						//获取上传文件的参数
						String fieldName = fi.getFieldName();
						String fileName = fi.getName();
						String fn = fileName.substring(fileName.lastIndexOf("/")+1);
						System.out.println("<br>"+fn+"<br>");
						boolean isInMemory = fi.isInMemory();
						long sizeInBytes = fi.getSize();
						//写入文件
						if(fileName.lastIndexOf("/") >= 0 ){
							file = new File(filePath,fileName.substring(fileName.lastIndexOf("/")));
						}else{
							file = new File(filePath,fileName.substring(fileName.lastIndexOf("/")+1));
						}
						fi.write(file);
						System.out.println("upload file to tomcat server success!");
						System.out.println("begin to upload file to hadoop hdfs</p>");
						String name = filePath + "/"+fileName;
						//将tomcat上的文件上传到hadoop上
						HdfsDAO hdfs = new HdfsDAO();
						hdfs.copyFile(name);
						System.out.println("upload file to hadoop hdfs success!");
						FileStatus[] documentList = hdfs.getDirectoryFromHdfs();
						request.setAttribute("documentList", documentList);
						System.out.println("得到list数据"+documentList);
						request.getRequestDispatcher("index.jsp").forward(request, response);
					}
				}
			}catch(Exception ex){
				System.out.println(ex);
			}
		}else{
			System.out.println("<p>No file uploaded</p>");
		}
	}
}

继续在com.controller下创建名为downloadServlet.java类文件,

package com.controller;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.hadoop.fs.FileStatus;

import com.simple.model.HdfsDAO;

public class DownloadServlet extends HttpServlet{
	private static final long serialVersionUID = 1L;
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
		String local = "/soft/download-directory";//选择一个你centos下的目录作为你的下载文件存放地址
		String filePath = new String(request.getParameter("filePath").getBytes("ISO-8859-1"),"GB2312");
		HdfsDAO hdfs = new HdfsDAO();
		hdfs.download(filePath, local);
		FileStatus[] documentList = hdfs.getDirectoryFromHdfs();
		request.setAttribute("documentList", documentList);
		System.out.println("得到list数据"+documentList);
		request.getRequestDispatcher("index.jsp").forward(request, response);
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
		this.doGet(request, response);
	}
}

继续在com.controller下创建名为registerServlet.java的类文件,和注册你的用户有关的文件

package com.controller;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
i
  • 20
    点赞
  • 198
    收藏
    觉得还不错? 一键收藏
  • 40
    评论
基于Hadoop数据云盘实现是利用Hadoop分布式文件系统(HDFS)和Hadoop MapReduce技术来构建一个高可靠、高扩展性的数据存储和处理平台。在这个实现中,数据云盘会将用户上传的文件分散存储在Hadoop集群的各个节点上,实现数据分布式存储和备份。同时,利用Hadoop MapReduce技术,可以实现数据的分布式计算和处理,对大规模数据进行并行处理和分析。在用户上传、下载和管理文件时,可以通过Hadoop集群的负载均衡和故障恢复机制来提供高可靠性和高性能的服务。 为了实现基于Hadoop数据云盘,需要进行以下步骤: 1. 搭建Hadoop集群:首先需要搭建一个包含多台服务器的Hadoop集群,其中包括主节点和多个从节点,用于存储和处理用户上传的文件。 2. 配置HDFS:在Hadoop集群中,配置Hadoop分布式文件系统(HDFS),将用户上传的文件进行分块存储并分散在不同的数据节点上,以实现数据分布式存储和备份。 3. 实现用户管理和权限控制:在数据云盘中,需要实现用户管理和权限控制的功能,确保用户可以上传、下载和管理自己的文件,并能够设置访问权限和共享权限。 4. 开发文件上传、下载和管理的接口:在数据云盘中,需要实现上传、下载和管理文件的功能,可以通过Web界面或API接口来实现用户和系统的交互。 通过以上步骤,就可以实现基于Hadoop数据云盘,为用户提供高可靠、高扩展性的数据存储和处理平台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 40
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值