hadoop
1. 介绍
- 是开发和运行大规模数据的软件平台
- 模块
-
- HDFS:分布式存储框架,实现数据的海量储存
- YARN:统一的资源调度平台
- MAPREDUCE:实现分布式计算的框架
2. 特性
数据不容易丢失,有副本机制
3. 机构说明
a. 元数据
解释:描述数据的数据
b. Hadoop 2.X架构
- HDFS:分布式文件储存系统
-
- namenode:hdfs的主节点,可以有多个,但是最多只有两个
-
-
- 管理整个HDFS集群
- 对元数据进行管理操作
-
-
- datanode:HDFS的从节点,可以有多个
-
-
- 负责数据的最终储存
- 负责数据的读写操作
-
-
- secondarynamenode:辅助节点
-
-
- 辅助 namenode管理元数据
-
-
- 当对HDFS部署高可用的时候,此时已经没有 secondary name node,取而代之的是 journalnode
-
-
- 辅助管理 namenode的元数据
- 接受 active节点的namenode传递过来的元数据信息
- 让 standby状态的 namenode装变为从 journal node中拉取最新的元数据信息,确保两个 namenode的元数据信息一致
-
- YARN:分布式计算框架
-
- resource Manager:YARN平台的主节点,可以有多个
-
-
- 负责接受任务
- 负责为一个任务在nodeManager上启动一个application master
- 负责资源的分配
-
-
- application :只是一个进程,
-
-
- 对任务进行分配,并且想 resource Manager申请资源
-
-
- nodeManager:YARN的从节点
-
-
- 负责接受 application 分配过来的任务,最终执行这些任务
-
HDFS
HDFS基本概念
- HDFS就是 Hadoop的分布式文件储存系统,主要用来做海量数据的储存工作,并且为用户提供了一个统一的资源访问接口(等同于在访问一个文件系统)
- HDFS本质就是一个分布式文件储存系统,实现了将多个服务器的磁盘进行打通,构建一个更加强大的文件储存系统,最终都落在了各个服务器的本地磁盘上
为什么HDFS会以块的形式来储存数据
- 一个文件有可能会大于集群中任意一个磁盘,引入块机制,可以很好的解决这个问题
- 使用块作为储存的逻辑单位,来简化储存子系统
- 进行数据备份操作,来提高数据容错能力
- 数据存在副本
机架感知原理
- 第一个副本放在某一个机架上,第二个副本在同机架的另外一台服务器上,第三个副本在另外一台机架上
HDFS shell 命令
- ls命令:
-
- 格式: hdfs dfs -ls URI
- 操作案例: hdfs dfs -ls /
- mkdir命令:
-
- 格式: hdfs dfs-mkdir [-p] <paths>
- hdfs dfs -mkdir -p /aaa/bb/cc
- put命令: 用于上传文件操作 (将Linux内的文件上传到Hadoop上)
-
- 格式: hdfs dfs -put <localsrc > ... <dst>
- hdfs dfs -put aa.txt bb.txt cc.txt /aaa/bb/cc
- get命令: 用于下载数据 (将Hadoop上的内容下载到Linux内)
-
- 格式: hdfs dfs -get [-ignorecrc ] [-crc] <src> <localdst>
- hdfs dfs -get /file.tar.gz ./
- getmerge命令: 用于合并下载操作
-
- --次要 (次操作是将hadoop上的多个小文件下载到Linux本机中)
- 格式: hdfs dfs -getmerge < hdfs dir > < local file >
- mv命令: 从hdfs 某一个路径移动到hdfs的另一个路径下
-
- 格式: hdfs dfs -mv URI <dest>
- hdfs dfs -mv /aaa/bb/cc/aa.txt /
- rm命令:
-
- 格式: hdfs dfs -rm [-r] 【-skipTrash】 URI 【URI 。。。】
- hdfs dfs -rm -r /aaa
- cp命令:
-
- 格式: hdfs dfs -cp URI [URI ...] <dest>
- hdfs dfs -cp /aa.txt /aaa.sql /aaa
- cat命令:
-
- 格式: hdfs dfs -cat URI [uri ...]
- hdfs dfs -cat /aaa.sql
- du命令:
-
- hdfs dfs -du URI
- hdfs dfs -du /aaa
- hdfs dfs -du /aaa.sql
hdfs 基本原理
namenode
- namenode 保存所有的元数据信息,储存在内存中
- HDFS能够储存文件的数量受限于namenode的内存大小
- namenode保存元数据信息,会将元数据信息保存在磁盘上,然后内存中也保留一份
-
- fsimage&edit文件,用来保存元数据信息
- fsimage是name node的元数据镜像文件,保留了一份比较完整的元数据信息
- edits文件,是namenode运行过程中,新增的操作全部写入到 edits文件中
- edits在达到一定值后,会于 fsimage合并
- namenode 不负责数据的读写操作,但是要经过name的询问之后,才可以读取daraname的数据
datanode
- datanode以数据块(block)来存储文件
- datanode和namenode保持心跳的机制: 默认每隔3秒, 进行一次心跳, 如果10分钟内, 没有心跳, 认为, 宕机了
- datanode每隔6个小时, 会向namenode报告一次完整的块信息
- 在真实集群中, 宕掉某一台datanode, 并不会整个集群的可用性, 因为namenode会自动的容错, 在其他的节点