HDFS
NameNode
- 负责客户端请求的相应
- 负责维护元数据 文件的名称、副本数、Block存放的DataNode,接受DN的心跳包
- 一个典型的架构是一个NN加上n个DN。当然一个机器上可以运行多个DN,但生产环境上不建议这样使用
-NN决定副本的复制
DataDode
- 存储用户的文件的数据块 Block
- 定期向NameNode发送心跳信息,汇报本身及其所有的Block信息、健康状况
- 不支持并发写
HDFS副本机制
- NN维护一个文件系统的命名空间,做了任何修改都会被记录下来(比如改名字)
- 可以指定文件的副本数量,创建的时候可以指定,后期也可以修改,这些信息都被存放在NN上
- 每个block都是以多副本的方式存储
- 一个文件里的所有Block除了最后一个,其他的大小都是一样的
- HDFS里面的文件只能写一次(write once)
SecondNameNode -
了解,在2.x中不是必须的
HDFS核心配置文件
- hadoop-env.sh
- core-site.xml
- hdfs-site.xml
HDFS启动与停止
- 目录结构,bin文件夹下是客户端相关的脚本,sbin文件夹下是服务端的相关脚本
- 官网
HDFS Shell 常用命令
HDFS 优缺点
- 优点:高容错、批处理(吞吐量高)、适合大数据处理 、可以部署在廉价的机器上
- 缺点:低延迟数据访问、不适合小文件存储(可以借助Hbase)
MapReduce
- 目前应用场景特别少,被spark代替
- 不擅长DAG作业(逻辑先后关系)、实时计算、流式计算
YARN
- 产生背景,在MapReduce1.X中Jobtrack负责资源管理和任务的调度,TaskTrack和JobTrack通过心跳通信,Jobtrack负责的事情特别多而且单点,所以Jobtrack存在单点故障,
- 资源利用率和运维成本,统一资源管理,yarn上可以管理storm,spark,Habase等等
YARN的架构
Resource Manager 和 Node Manager ,一个RM(active)加上n个NM
Resource Manager 负责整个集群的资源调度,接受客户端请求
一个任务对应用一个Application Master ,如果AM挂了,会自动在其他节点重启,由RM启动、杀死、监控。
NM会定期向RM发送心跳并告诉RM资源使用情况
NM负责自己节点的资源管理以及task运行情况,并向RM汇报,NM会接受RM的调度,启动、停止
一个Application Master 可能又多个Container运行,他负责应用程序的管理,为应用程序向RM申请资源,并分配内部任务,与NM通信启停task,task是运行在Container中的,同样负责task的监控和容错
Container 是对任务的描述 :cpu、memory、环境变量
工作流程
1,用户向YARN提交作业
2,RM为作业分配一个container(AM)
3,RM会与对应的NM通讯,要求NM在container上启动应用程序的AM
4,AM首先向RM注册,然后AM将为各个任务申请资源,并监控运行情况
5,AM会采用轮训的方式通过RPC协议向RM申请和领取资源
6,AM申请到资源后,便和NM通讯,要求NM启动任务
7, NM启动作业的task
Hive
- Hive是由Facebook开源的,构建在Hadoop之上,Hive定义了一种类SQL -> HQL。
- 通常用于离线批处理,早起底层用MapReduce进行计算,现在支持多种计算引擎(Spark)
- Hive支持多种不同的压缩格式以及自定义函数
- Hive的元数据可以存放在Mysql中的(表名,分隔符)
产生背景
- MapReduce编程的不便性
- HDFS上文件缺少Schema
优点
- 简单、容易上手
- 为超大数据集的计算、存储扩展能力
- 统一的元数据管理、可以共享数据(SparkSQL)
- 可以提交到Yarn上