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-workbench
Ready.
...
也可以直接找到这个图标启动
【查看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 = null
try {
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个多月后总结的,可能会有一些遗漏,仅供参考。
标签:java,项目,数据库,作业,Hadoop,import,安装,云网盘 来源: https://blog.csdn.net/Passersby__/article/details/113823010