Hadoop的核心是HDFS和MapReduce。其中,HDFS是解决海量大数据文件存储的问题,是目前应用最广泛的分布式文件系统。
GFS(Google File System)->HDFS
HDFS 源于 Google 在2003年10月份发表的GFS(Google File System)论文,接下来,我们从传统的文件系统入手,开始学习分布式文件系统,以及分布式文件系统是如何演变而来?
所谓传统的文件系统指的单机的文件系统,底层不会横跨多台机器实现。比如windows上的文件系统、 Linux上的文件系统、 FTP文件系统等。
这些文件系统的共同特征包括:

缺点:
扩容有两种方式,一种是纵向扩容,增加磁盘容量和内存,另一种是横向扩容,增加服务器的数量,这种存储形式就是分布式存储的雏形。

解决上传和下载就是将一个大文件分成多个数据块,将数据库以并行的方式进行存储

大文件通过分块存储在服务器集群中,如何获取一个完整的文件呢?需要增加一台服务器,专门用来存储被分割后的数据块信息已经它的存储位置,这就是namenode,也就是HDFS的雏形

再添加备份机制,形成HDFS


主节点(集群老大)以元数据的形式进行管理和存储,用于维护文件系统名称并管理客户端对文件的访问,主节点一旦关闭整个集群就无法访问。
从节点,再namenode的管理下,存储访问数据
默认是128mb,且备份3份,每个数据块尽可能存储在不同的datanode中
用来存放集群服务器的机架,通过交换机进行通信,HDFS通过机架的感知策略,namenode能够确定每个datanode所在的机架id
有三种形式,一是维护HDFS的文件和目录的信息,如文件名、目录名、文件大小等,二是记录文件的内容,如数据分块情况,副本个数,每个副本所在的DataNode信息等,三是记录HDFS中所有DataNode的信息,用于DataNode的管理
主从式

Client(客户端)对HDFS中的数据进行读写操作
有两种形式:
hadoop fs
hdfs dfs

创建子目录
格式
hdfs dfs -mkdir [-p] 子目录名
选项:
-p:递归创建各级子目录

上传文件
格式:
hdfs dfs -put 源文件 目的文件

下载文件
统计目录下所有文件的大小

移动文件
复制文件
删除文件
查看文件内容
获取帮助
开发需要java环境,可以测试java是否已经安装,打开命令提示符

说明已经安装成功,如果没有出现上述界面,那么还需要安装java
可以直接在网上搜索下载

当然也可以去官网下载,需要注册且下载速度比较慢
官网:https://www.oracle.com/java/technologies/downloads/#java8
进入官网:

找到下载好的文件

点击下一步。

选择安装目录。


点击下一步


安装完成,点击关闭。

安装好环境,我们开始进行环境配置。
右击此电脑,点击属性。

点击高级系统设置。

点击环境变量。

点击新建系统变量。

变量名为 JAVA_CLASS,变量值为刚安装的jre的路径,点击确定。

然后再新建JAVA_HOME,变量值为刚安装的jdk的路径,点击确定。

然后我们找到Path变量。

添加变量,完成后一路确定。
%JAVA_CLASS%\bin
%JAVA_HOME%\bin










说明安装成功


下载后点击启动安装,完成安装
学生可以申请企业版免费使用,不过需要等7天时间


点击create按钮,开始构建项目,下载依赖包









注意:这里使用tab和Enter(回车)都可以实现自动填充。



默认仓库在国外的站点,下载比较慢,需要maven的仓库位国内的镜像,一个配置位阿里的仓库镜像





修改仓库为阿里云仓库服务的国内镜像

修改maven仓库的存放位置,默认在c盘,容易造成c盘空间满

修改为自定义文件夹

修改 maven 的配置文件










输入如下代码

提示代码有错误





再次运行,查看结果
出现错误,提示连接拒绝,这是因为没有启动hadoop集群


webui查看


webui查看执行结果

说明运行成功


准备好本地文件

添加上传代码

运行查看结果

webui查看

说明上传成功的
添加下载的代码

运行,出现错误提示

下载windoes下的hadoop包,3.0以上版本即可

解压


配置环境变量


配置好后,再次运行,查看结果
