这是一个大数据作业完成过程的记录,基础仅有一个Ubuntu系统,学习过程中借鉴了很多博主的相关介绍,在这里作一下总结,也记录一下自己学习过程中遇到的坑和解决方案。希望对其他做类似工作的人有所帮助。


目录

(一)前期环境准备

一、项目环境

二、安装Ubuntu18.04

三、安装Hadoop2.10.1+JDK1.8

四、安装Eclipse(2020-03)

五、创建一个工程

六、安装MySQL5.7

七、安装MySQL驱动包5.1.49

八、安装MySQL可视化界面

九、安装Tomcat8.5

(二)Hadoop云网盘项目

一、项目具体实现

二、注意事项


(一)前期环境准备

一、项目环境

  1. Ubuntu 18.04(本人在Win10下装了双系统)
  2. hadoop 2.10.1
  3. JDK1.8
  4. Eclipse(2020-03):必须要带有JavaEE Development Tools的版本
  5. MySQL5.7MySQL驱动包5.1.49
  6. Tomcat 8.5(tomcat7和jdk1.8不兼容)

二、安装Ubuntu18.04

这个我之前装了,可以百度找到很多。Linux系统在本项目的使用过程中感觉都差不多,我看的有些教程是装CentOS。

如果嫌麻烦,可以用VMware虚拟机

好处:

  1. 可以装很多个系统,并且同时启动;
  2. 可以和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个博主开源的代码。就是因为什么都不懂,在不断地尝试过程中逐渐了解整个项目的架构和逻辑,最终能够根据自己的项目需求“拼凑”出一个完整的项目。

二、注意事项

  1. 在Eclipse打开网页之前,要先启动Hadoop和MySQL
  终端mysql启动命令:mysql -u root -p
  1. 注意IP地址的使用,HDFS和数据库的连接都涉及IP地址,注意在每次运行本项目时保持同一IP
  2. 如果你的数据库等放在不同的系统,在数据库连接代码中记得使用对应系统的IP。
  3. 自己建立的数据库名、表名、字段名、约束条件(如非空)应与项目代码中的调用代码相匹配。
  4. 不同项目需要的jar包不同,如果程序报错,复制报错语句去网上找,下载对应缺少的包。
  5. 在网页设计中,一些样式可能需要联网下载,所以项目运行需要联网。比如:
#这种超链接需要联网
<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">

  1. 项目代码中
    .java文件定义的类名必须与该文件名相同
    java包名也要与实际import的包相同,区分大小写

  2. 数据库和hdfs连接问题,一个可能的原因是IP写成localhost无法识别,localhost在IP映射表中对应的是默认网关,不直接对应本机IP,可能还要经过一些分配操作。

  3. 数据库连接方式不止一种,我用过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&amp;useUnicode=true&amp;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云网盘实现-大数据作业相关推荐

  1. 最全面的Hadoop框架以及整个大数据生态介绍

    1. hadoop 生态概况 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储. 具有可 ...

  2. Hadoop怎么了,大数据路在何方?

    导读:近期Hadoop消息不断,众说纷纭.本文以Hadoop的盛衰变化为楔子聊下大数据分析的发展现状和未来趋势. 作者:姚延栋 来源:数字化三部曲(ID:digitxcn) 00 15秒钟简缩版 Ha ...

  3. Hadoop+hive+flask+echarts大数据可视化项目之hive环境搭建与系统数据的分析思路

    Hadoop+hive+flask+echarts大数据可视化项目(四) --------------hive环境搭建与系统数据的分析思路---------------- 关注过Hadoop+hive ...

  4. Hadoop+hive+flask+echarts大数据可视化之系统数据收集

    Hadoop+hive+flask+echarts大数据可视化项目(一) --------------系统数据收集---------------- 谈到大数据的项目,一般以数据可视化为主体,收集大数据 ...

  5. 【博客507】学习阿里巴巴如何扩展Kubernetes 调度器支持 AI 和大数据作业

    学习阿里巴巴如何扩展Kubernetes 调度器支持 AI 和大数据作业

  6. 用集群脚本功能安装大象医生优化你的大数据作业

    dr-elephant是linkedin开源的大数据作业诊断优化工具,可以读取作业的日志信息,给出可视化的问题诊断和优化建议. 本文介绍如何在emr集群上安装大象医生,并提供一个优化hive参数的完整 ...

  7. Hadoop+hive+flask+echarts大数据可视化项目之系统数据整合和hadoop环境搭建

    Hadoop+hive+flask+echarts大数据可视化项目(二) --------------系统数据整合和hadoop环境搭建---------------- 关注Hadoop+Hive+F ...

  8. Hadoop+hive+flask+echarts大数据可视化项目之flask结合echarts前后端结合显示hive分析结果

    Hadoop+hive+flask+echarts大数据可视化项目(五) ------flask与echarts前后端结合显示hive分析结果------- 关注过Hadoop+hive+flask+ ...

  9. Snowflake如日中天是否代表Hadoop已死?大数据体系到底是什么?

    简介: 本文作者关涛是大数据系统领域的资深专家,在微软(互联网/Azure云事业群)和阿里巴巴(阿里云)经历了大数据发展20年过程中的后15年.本文试从系统架构的角度,就大数据架构热点,每条技术线的发 ...

最新文章

  1. Login failed for user 'NT AUTHORITY\SYSTEM'. 原因: 无法打开明确指定的数据库。异常处理...
  2. SqlServer数据库端口默认是1433吗?
  3. python控制gpio的一段代码抄的
  4. 模拟——扫雷游戏(洛谷 P2670)
  5. win系统流畅度测试软件,视频对比:老电脑装Win7、Win10流畅性测试
  6. 开了个股票模拟仓来玩玩
  7. thinkphp 学习_4中URL模式
  8. Spring MVC起步(一)
  9. 销售行业ERP数据统计分析都有哪些维度?
  10. Go语言实现文本文件拷贝
  11. [转] 做一个让人欣赏的女子
  12. 为什么.class文件查看不了_恕我直言,这可能是你见过最详细的class文件结构分析
  13. “一个优秀程序员可抵五个普通程序员!”
  14. 史上最全的程序员求职渠道总结
  15. 计算机数字媒体专业职业规划书,如何写数字媒体技术的职业生涯规划书?
  16. 泰坦尼克号各种因素对存活率的影响
  17. 南京都昌公司乔迁之志
  18. 校招/社招/秋招/春招求职指南
  19. 搞懂JS的强制类型转换
  20. 客户开发篇 | 外贸业务员怎么打电话开发跟进客户呢?

热门文章

  1. 给大家分享电脑必备软件
  2. GO chan select
  3. Linux开机出现welcome to emergency mode! 解决方法
  4. pk海归--就业感想
  5. iOS 9 人机界面指南(五):图标与图形设计(附指南全文pdf下载)
  6. 史上最全最完整,最详细,软件保护技术-程序脱壳篇-逆向工程学习记录
  7. Android有用的代码片段
  8. kubernetes:解决无法dns解析的问题
  9. Excel怎么提取销售量最大的月份
  10. Anychart教程:如何创建数据集(上)