Hadoop云网盘实现-大数据作业
这是一个大数据作业完成过程的记录,基础仅有一个Ubuntu系统,学习过程中借鉴了很多博主的相关介绍,在这里作一下总结,也记录一下自己学习过程中遇到的坑和解决方案。希望对其他做类似工作的人有所帮助。
目录
(一)前期环境准备
一、项目环境
二、安装Ubuntu18.04
三、安装Hadoop2.10.1+JDK1.8
四、安装Eclipse(2020-03)
五、创建一个工程
六、安装MySQL5.7
七、安装MySQL驱动包5.1.49
八、安装MySQL可视化界面
九、安装Tomcat8.5
(二)Hadoop云网盘项目
一、项目具体实现
二、注意事项
(一)前期环境准备
一、项目环境
- Ubuntu 18.04(本人在Win10下装了双系统)
- hadoop 2.10.1
- JDK1.8
- Eclipse(2020-03):必须要带有JavaEE Development Tools的版本
- MySQL5.7、MySQL驱动包5.1.49
- Tomcat 8.5(tomcat7和jdk1.8不兼容)
二、安装Ubuntu18.04
这个我之前装了,可以百度找到很多。Linux系统在本项目的使用过程中感觉都差不多,我看的有些教程是装CentOS。
如果嫌麻烦,可以用VMware虚拟机。
好处:
- 可以装很多个系统,并且同时启动;
- 可以和Windows主系统进行方便的文件传输。
缺陷:
由于不能使用全部内存,运行可能并不流畅hh
注:我的Hadoop云网盘项目使用的是伪分布式Hadoop,所以只用到了1台主机,1个系统。
三、安装Hadoop2.10.1+JDK1.8
建议大家先了解一下Hadoop,以及Hadoop的分布式文件系统HDFS。
在部署Hadoop集群时,因为双系统只能启动一个,所以我部署的是只有1台主机的伪分布式集群。
主要是跟着这个教程走的:
ubantu18.04安装hadoop-博客园
可能也有参考这个教程:
Ubuntu18.04安装hadoop-CSDN
四、安装Eclipse(2020-03)
我们的网页编写等等会用到JavaEE,Eclipse是一个好用的IDE。
没学过Java什么的?没建立过工程?
没关系,我也没有。
只要有编程基础(学过面向对象的编程语言会好一点),像我一样照猫画虎还是可以的。
主要参考了这个链接
Eclipse IDE for Java EE Developers 去哪里了?
五、创建一个工程
我整个项目的学习很大一部分是跟着这个博主的教程入门的。
基于Hadoop的数据云盘的实现(学的过程中遇到一些没读懂的地方,所以我直接转载了部分内容,后面根据步骤进行解读)
打开安装好的eclipse,file–>New–>Dynamic Application Project
注:如果没有这个项目,上一步重装,安装带Java EE 的Eclipse。
项目名称自己设置,一直点击下一步,最后一步时,最后一步最好勾选创建web.xml,没有勾选后面自己在WEB-INF下new一个名为web.xml的xml File
创建后如图
六、安装MySQL5.7
这是一个建立、管理关系型数据库的软件。
我们的项目需要将用户注册信息存放在数据库中。更高级的Hadoop云盘项目还会使用数据库存储管理员信息、用户文件信息等等。
主要参考这个博客:
Ubuntu18.04下安装MySQL
七、安装MySQL驱动包5.1.49
主要参考这个博客
mysql:Java通过驱动包(jar包)连接MySQL数据库—步骤总结及验证
这里介绍一下,jar包有点类似于python的库,都是根据程序需要添加的,所以别人项目有的jar包我们未必需要,不用急着添加。(当然多了也不影响)
八、安装MySQL可视化界面
熟悉数据库的大佬可以直接使用终端进行操作。跳过此步。
安装可视化界面可以让我们更方便地进行数据库操作。
我安装的是MySQL自己的可视化应用程序。
安装:
sudo apt-get install mysql-workbench[sudo] ubuntu 的密码:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
启动:
mysql-workbenchReady.
...
也可以直接找到这个图标启动
【查看table信息:在workbench中展开你建立的表,点第三个图标,会自动生成sql语句,点击上方闪电图标运行sql语句即可】
有同学推荐Navicat更好用,也是一个数据库可视化工具,大家可以试试。
九、安装Tomcat8.5
Tomcat是一个免费的Web服务器,可以让我们在浏览器敲网址访问我们的项目。反正我们的项目就是要用到它。
主要参考这个博客:
Ubuntu18.04 安装Tomcat 8.5
我原来装了Tomcat7,后来发现和JDK1.8不兼容,所以又装了8.5
到此为止,我们完成了所有前期安装工作,接下来,才是Hadoop云网盘项目的部署。
(二)Hadoop云网盘项目
一、项目具体实现
项目的具体实现使用了这位博主开源的代码。
基于hdfs+javaweb的简易网盘–(1)项目前言
这位博主对项目的整体架构进行了非常详细的介绍,可以先看看这位博主针对此项目的4篇博文,再自己一层层去理解代码。
事实上,在完成这个Hadoop云网盘作业的时候,我建了不止一个项目,试了3个博主开源的代码。就是因为什么都不懂,在不断地尝试过程中逐渐了解整个项目的架构和逻辑,最终能够根据自己的项目需求“拼凑”出一个完整的项目。
二、注意事项
- 在Eclipse打开网页之前,要先启动Hadoop和MySQL
终端mysql启动命令:mysql -u root -p
- 注意IP地址的使用,HDFS和数据库的连接都涉及IP地址,注意在每次运行本项目时保持同一IP。
- 如果你的数据库等放在不同的系统,在数据库连接代码中记得使用对应系统的IP。
- 自己建立的数据库名、表名、字段名、约束条件(如非空)等应与项目代码中的调用代码相匹配。
- 不同项目需要的jar包不同,如果程序报错,复制报错语句去网上找,下载对应缺少的包。
- 在网页设计中,一些样式可能需要联网下载,所以项目运行需要联网。比如:
#这种超链接需要联网
<link href="https://cdn.bootcdn.net/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" rel="stylesheet">
#这种超链接将样式表下载在本地并放在项目的WebContent目录下
<link rel="stylesheet" href="css/style.css">
项目代码中
.java文件定义的类名必须与该文件名相同
java包名也要与实际import的包相同,区分大小写数据库和hdfs连接问题,一个可能的原因是IP写成localhost无法识别,localhost在IP映射表中对应的是默认网关,不直接对应本机IP,可能还要经过一些分配操作。
数据库连接方式不止一种,我用过2种,第2种对我有用。
(1)直接用java.sql.DriverManager,类似这种
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;public class UserDao {// 获得连接public static Connection getConnection() String url = "jdbc:mysql://127.0.0.1:3306/panUser?serverTimezone=UTC"String name = "root";String password = "000";Connection conn = nulltry {Class.forName("com.mysql.cj.jdbc.Driver");conn = DriverManager.getConnection(url, name, password);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}return conn;}
// 关闭连接public void closeCon(Connection con) throws Exception{if(con!=null){con.close();}}
(2)利用C3p0连接池。
先去网上下载C3p0的jar包,将这两个导入项目中
c3p0-0.9.5.2-sources.jar
c3p0-0.9.5.2.jar
然后,新建一个包com.cloud.util,其下新建一个类文件C3p0UtilsConfig.java
package com.cloud.util;import java.sql.Connection;
import java.sql.SQLException;
import com.mchange.v2.c3p0.ComboPooledDataSource;public class C3p0UtilsConfig {//这个类是自己写的工具类,在这里创建了一个连接池对象,所有的连接都存在对象里,这个对象就是连接池private static ComboPooledDataSource dataSource = null;static {//创建一个连接池,这里的创建的时候在构造函数里传入一个连接池名字,它会自动的根据名字去找配置文件dataSource = new ComboPooledDataSource("c3p0-config");}public static ComboPooledDataSource getDataSource(){//返回这个连接池return dataSource;}public static Connection getConnection() throws SQLException {//返回一条连接return dataSource.getConnection();}}
在src目录下添加文档c3p0-config.xml(一定是直接在src目录下,不要放在某个包里)
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config><named-config name = "c3p0-config" ><property name="driverClass">com.mysql.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql://你的数据库所在系统的IP:3306/数据库名?useSSL=false&useUnicode=true&characterEncoding=utf-8</property><property name="user">你的数据库用户名</property><property name="password">你的密码</property><property name="checkoutTimeout">30000</property><property name="idleConnectionTestPeriod">30</property><property name="initialPoolSize">10</property><property name="maxIdleTime">30</property><property name="maxPoolSize">100</property><property name="minPoolSize">10</property><property name="maxStatements">200</property>
</named-config>
</c3p0-config>
最后调用C3p0,我的UserDao.java是这么写的,
package com.wy.pojo;import java.sql.SQLException;import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import com.cloud.util.C3p0UtilsConfig;public class UserDao { // 根据用户名查找用户密码public User findUser(User u) throws SQLException {User rs=null;try {QueryRunner qr = new QueryRunner(C3p0UtilsConfig.getDataSource());String sql="select * from user where uname=? and upassword=?";rs=qr.query(sql, new BeanHandler<User>(User.class),u.getUser(),u.getPassword());} catch (SQLException e) {e.printStackTrace();}return rs;}// 添加用户public int addUser(User u) throws SQLException{int i=0;try {QueryRunner qr = new QueryRunner(C3p0UtilsConfig.getDataSource());i = qr.update("insert into user values(null,?,?)",u.getUser(),u.getPassword());} catch (SQLException e) {e.printStackTrace();}return i;//返回的这个值代表注册是否成功,0代表失败}
}
这篇博文是作业完成2个多月后总结的,可能会有一些遗漏,仅供参考。
Hadoop云网盘实现-大数据作业相关推荐
- 最全面的Hadoop框架以及整个大数据生态介绍
1. hadoop 生态概况 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储. 具有可 ...
- Hadoop怎么了,大数据路在何方?
导读:近期Hadoop消息不断,众说纷纭.本文以Hadoop的盛衰变化为楔子聊下大数据分析的发展现状和未来趋势. 作者:姚延栋 来源:数字化三部曲(ID:digitxcn) 00 15秒钟简缩版 Ha ...
- Hadoop+hive+flask+echarts大数据可视化项目之hive环境搭建与系统数据的分析思路
Hadoop+hive+flask+echarts大数据可视化项目(四) --------------hive环境搭建与系统数据的分析思路---------------- 关注过Hadoop+hive ...
- Hadoop+hive+flask+echarts大数据可视化之系统数据收集
Hadoop+hive+flask+echarts大数据可视化项目(一) --------------系统数据收集---------------- 谈到大数据的项目,一般以数据可视化为主体,收集大数据 ...
- 【博客507】学习阿里巴巴如何扩展Kubernetes 调度器支持 AI 和大数据作业
学习阿里巴巴如何扩展Kubernetes 调度器支持 AI 和大数据作业
- 用集群脚本功能安装大象医生优化你的大数据作业
dr-elephant是linkedin开源的大数据作业诊断优化工具,可以读取作业的日志信息,给出可视化的问题诊断和优化建议. 本文介绍如何在emr集群上安装大象医生,并提供一个优化hive参数的完整 ...
- Hadoop+hive+flask+echarts大数据可视化项目之系统数据整合和hadoop环境搭建
Hadoop+hive+flask+echarts大数据可视化项目(二) --------------系统数据整合和hadoop环境搭建---------------- 关注Hadoop+Hive+F ...
- Hadoop+hive+flask+echarts大数据可视化项目之flask结合echarts前后端结合显示hive分析结果
Hadoop+hive+flask+echarts大数据可视化项目(五) ------flask与echarts前后端结合显示hive分析结果------- 关注过Hadoop+hive+flask+ ...
- Snowflake如日中天是否代表Hadoop已死?大数据体系到底是什么?
简介: 本文作者关涛是大数据系统领域的资深专家,在微软(互联网/Azure云事业群)和阿里巴巴(阿里云)经历了大数据发展20年过程中的后15年.本文试从系统架构的角度,就大数据架构热点,每条技术线的发 ...
最新文章
- Login failed for user 'NT AUTHORITY\SYSTEM'. 原因: 无法打开明确指定的数据库。异常处理...
- SqlServer数据库端口默认是1433吗?
- python控制gpio的一段代码抄的
- 模拟——扫雷游戏(洛谷 P2670)
- win系统流畅度测试软件,视频对比:老电脑装Win7、Win10流畅性测试
- 开了个股票模拟仓来玩玩
- thinkphp 学习_4中URL模式
- Spring MVC起步(一)
- 销售行业ERP数据统计分析都有哪些维度?
- Go语言实现文本文件拷贝
- [转] 做一个让人欣赏的女子
- 为什么.class文件查看不了_恕我直言,这可能是你见过最详细的class文件结构分析
- “一个优秀程序员可抵五个普通程序员!”
- 史上最全的程序员求职渠道总结
- 计算机数字媒体专业职业规划书,如何写数字媒体技术的职业生涯规划书?
- 泰坦尼克号各种因素对存活率的影响
- 南京都昌公司乔迁之志
- 校招/社招/秋招/春招求职指南
- 搞懂JS的强制类型转换
- 客户开发篇 | 外贸业务员怎么打电话开发跟进客户呢?