大数据接私活200元,做个简易的HDFS浏览器(一)

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 大数据接私活200元,做个简易的HDFS浏览器(一)

需求


接到一个单子说是用制作一个简单的HDFS浏览器。


功能包括:基于HDFS的文件浏览、上传和下载。


58d203e1fa3c4e6f9837124885206bda.png


需求分析


用到的技术包括Java、HDFSAPI、tomcat的配置等


代码实现


项目架构:


fde1a3b0966b47768bdb02bdee60d04d.png


Controller层代码:


@Controller
@RequestMapping("/hdfs")
public class hdfsController {
   private hdfsService hdfsService;   
   public hdfsService getHdfsService() {
      return hdfsService;
   }
    @Resource
   public void setHdfsService(hdfsService hdfsService) {
      this.hdfsService = hdfsService;
   }
   @RequestMapping("/delete")  
    public String toDelete(@RequestParam(value="path",required=false) String path)
       throws IOException{  
        hdfsService.delete(path);            
          return "success";       
}
    @RequestMapping(value="/ls",method=RequestMethod.GET)
       public ModelAndView home(@RequestParam(value="path",required=false) String path, HttpServletRequest request, HttpServletResponse response) 
          throws Exception {
          ModelAndView model = new ModelAndView();
           if (StringUtils.isEmpty(path)) {
               path = "/";
           } 
         List<hdfsBean> hdfsFiles =hdfsService.ls(path);
           model.addObject("file", hdfsFiles);
           model.setViewName("/ls");
           return model;
       }
    @RequestMapping("/download")  
       public String toDownload(@RequestParam(value="path",required=false) String path)
          throws IOException{  
          hdfsService.download(path);           
             return "success";       
   }
    @RequestMapping(value="/upload")
    public String upLoad(HttpServletRequest request, HttpServletResponse response) 
               throws IllegalStateException, IOException{
           //解析器解析request的上下文
           CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext()); 
           //先判断request中是否包涵multipart类型的数据,
           if(multipartResolver.isMultipart(request)) {
               //再将request中的数据转化成multipart类型的数据
               MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
               Iterator<String> iter = multiRequest.getFileNames();
               while(iter.hasNext()) {
                   MultipartFile file = multiRequest.getFile(iter.next());
                   if(file != null) {
                      String FileName = file.getOriginalFilename();
                      System.out.println(FileName);
                       CommonsMultipartFile cf= (CommonsMultipartFile)file; 
                       DiskFileItem fi = (DiskFileItem)cf.getFileItem(); 
                       File inputFile = fi.getStoreLocation();
                       hdfsService.createFile(inputFile, "hdfs://192.168.88.100:8020/upload/"+FileName);
                   }
               }
           }
           return "success";
       }


前端部分页面:


<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page isELIgnored="false" %> 
<%String ref = request.getHeader("REFERER");%>  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>HDFS文件管理器</title>
</head>
<body>
<table>
   <tr>
      <td>文件名</td>
      <td>文件大小  </td>
      <td>拥有者 </td>
      <td>权限  </td>
      <td>时间  </td>
      <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;操作</td>
   </tr>
     <c:forEach var="file" items="${file}">
     <tr>
          <td><a href="${pageContext.request.contextPath}/hdfs/ls.do?path=${file.fileName}" style="color:#666666;text-decoration:none;">
               ${file.fileName}</a></td>
          <td> ${file.fileSize}</td>    
          <td> ${file.owner}</td>   
          <td> ${file.permission}</td>  
          <td> ${file.modificationTime}</td>    
          <td><a href="${pageContext.request.contextPath}/hdfs/delete.do?path=${file.fileName}" style="color:#666666;text-decoration:none;"
           class="button border-dot button-little" onclick="return confirm('确认删除?')" >
                            删除  </a>
          &nbsp;&nbsp;
          <a href="${pageContext.request.contextPath}/hdfs/download.do?path=${file.fileName}" style="color:#666666;text-decoration:none;">
          下载</a></td>
    </tr>
   </c:forEach>
 <input type="button" value="返回"   onclick="javascript:window.location='<%=ref%>'" >
</table>
</body>
</html>


效果演示


HDFS简易Web浏览器


HDFS简易Web浏览器_哔哩哔哩_bilibili


总结


比较轻松的需求,主要是之前做过类似的小项目直接拿来用即可。

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
476 6
|
消息中间件 分布式计算 关系型数据库
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
225 0
|
存储 分布式计算 资源调度
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
270 5
|
资源调度 数据可视化 大数据
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
157 4
|
XML 分布式计算 资源调度
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
457 5
|
XML 资源调度 网络协议
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
527 4
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
326 4
|
2月前
|
机器学习/深度学习 传感器 分布式计算
数据才是真救命的:聊聊如何用大数据提升灾难预警的精准度
数据才是真救命的:聊聊如何用大数据提升灾难预警的精准度
157 14
|
4月前
|
数据采集 分布式计算 DataWorks
ODPS在某公共数据项目上的实践
本项目基于公共数据定义及ODPS与DataWorks技术,构建一体化智能化数据平台,涵盖数据目录、归集、治理、共享与开放六大目标。通过十大子系统实现全流程管理,强化数据安全与流通,提升业务效率与决策能力,助力数字化改革。
137 4
|
3月前
|
机器学习/深度学习 运维 监控
运维不怕事多,就怕没数据——用大数据喂饱你的运维策略
运维不怕事多,就怕没数据——用大数据喂饱你的运维策略
127 0

热门文章

最新文章