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以上版本即可
解压
配置环境变量
配置好后,再次运行,查看结果