集群包括
- HDFS集群
- YARN集群
(逻辑上分离,物理上在一起)
HDFS存储数据
- NameNode
- DataNode
- SecondaryNameNode
YARN 数据运算的时候调度
- ResorceManager
- NodeManager
mapreduce,分布式运算编程框架。编程滚翻进行程序开发,后运行于HDFS集群上
部署方式
- 独立模式 standalone(单机模式,一个机器运行一个java进程,用于调试
- 伪分布模式 pseudo-distrubuted
- 一个机器上运行HDFS的NameNode和DataNode,YARN的ResourceManager和NodeManager(一个机器多个进程
- 群集模式 cluster
- 多个主机组成hadoop群
- HA mode
- 为单点故障部署备份角色,形成主备架构,实现容错
应用场景
存储非常大的文件:这里非常大指的是几百M、G、或者TB级别,需要高吞吐量,对延时没有要求
基于流的数据访问方式: 即一次写入、多次读取,数据集经常从数据源生成或者拷贝一次,然后在其上做很多分析工作 ,且不支持文件的随机修改。
正因为如此,HDFS适合用来做大数据分析的底层存储服务,并不适合用来做网盘等应用,因为,修改不方便,延迟大,网络开销大,成本太高。
运行于商业硬件上: Hadoop不需要特别贵的机器,可运行于普通廉价机器,可以处节约成本
需要高容错性
为数据存储提供所需的扩展能力
不适用?
- 低延时数据访问
- 大量小文件,元文件站150字节
- 多方读写(append-only写入数据,不合适用于网盘
特性
主从架构,NameNode主节点,DataNode从节点。
文件在物理上:分块存储。通过参数规定,参数位于hdfs-dafault.xml,为dfs.blocksize == 128M, dfs.replication默认为3
Namespace:
支持传统层次型文件组织结构:user创建目录后将数据存在目录中。层次结构类似现有文件系统
NameNode负责维护文件系统的namespace空间。 对File system的attribute或名称空间修改都会记录于NameNode
HDFS提供抽象目录树
元数据管理
元数据类型
- 文件自身属性信息
文件名称、权限,修改时间,文件大小,复制因子,数据块大小。 - 文件块位置映射信息
记录文件和DataNode之间的映射信息,即哪个块位于哪个节点上
数据块存储
block管理由DataNode承担,一个block可在多个DN上存储
实操
目录 | 说明 |
---|---|
/source | 存储原始数据 |
/common | 公共数据集(IP,省份 |
/workspace | 工作空间,存储团队计算的数据 |
/tem | 临时数据,定时清理 |
、warehouse | 存储hive数据仓库的数据 |
shell
hadoop的shell操作
hdfs [SHELL_OPTIONS] COMMAND [GENERIC_OPTIONS] [COMMAND_OPTIONS]
# 查看HDFS中/parent/child目录下的文件或者文件夹
hdfs dfs -ls /parent/child
可以通过bin/hdfs
执行
hadoop可以执行文件系统操作
hadoop dfs / hdfs dfs / hadoop fs 三者的区别
- hadoop dfs 只能操作HDFS 文件系统(包括与Local FS间的操作),已经 Deprecated
- HDFS dfs 只能操作HDFS 文件系统相关,常用
- hadoop fs 可操作任意文件系统,不仅仅是HDFS文件系统,使用范围更广
创建命令
hdfs dfs [-p] -mkdir <paths>
<paths> Uniform Resource Locator作为参数,创建目录,使用-p递归创建目录
查看目录
hadoop fs -ls URL
加入 -R 参数表示递归展示目录内容
一般文件夹命名方式方式
/source/{产品线}/{业务线}/{日志名称}/{日期}_{上报日志的机器}。
配合文件上传 put使用
···
hdfs dfs -mkdir -p /source/weibo/star/comment_log/20190810_node1.uuicon.cn/
···
hdfs dfs -put <localsrc > ... <dst>
hadoop fs -put <file> /source/weibo/star/comment_log/20190810_node1.itcast.cn/
删除使用rm -f <file>
若需要定时删除
moveFromLocal
hadoop fs -moveFromLocal <localsrc > ... <dst>
查看HDFS内容 —— 文件下载到Linux后使用less/cat命令查看
get
下载,指定 -igonorecrc可以拷贝CRC失效文件,-crc表示获取文件和CRC校验文件
hdfs dfs -get [-ignorecrc ] [-crc] <src> <localdst>
直接查看
cat
hadoop fs -cat /source/weibo/star/comment_log/20190810_node1.itcast.cn/caixukun.csv
使用head和tail查看文件开头/结尾1kb的数据
-f参数表示数据只要有变化也会输出到控制台
拷贝
cp
hdfs dfs -cp URI [URI ...] <dest>
-f,覆盖目标
-p 保存文件属性
追加数据
appenToFile
hdfs dfs -appendToFile <localsrc> ... <dst>
查看当前HDFS磁盘空间
df命令(查看空闲空间
hds dfs -df [-h] URI
查看使用情况
hadoop fs -df -h /
查看某个数据占用多少
du,显示目录所有文件大小或单个文件大小
hdfs dfs -du [-s] [-h] [-v] [-x] URI [URI ...]
命令 | 内容 |
---|---|
-s | 文件长度汇总摘要 |
-h | 人类可读方式 |
-v | 列名作为标题行 |
-x | 去除快照 |