Hadoop学习

Hadoop是什么?
Hadoop是分布式系统基础架构
主要解决海量数据的存储与计算
单纯来讲Hadoop没多大作用,一般指的都是Hadoop生态圈

Hadoop组成
hdfs 存储
mapreduce 计算
yarn 资源调度
common 公共模块

hdfs架构概述
1)NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表和块所在的DataNode等
2)DataNode(dn):在本地文件系统存储块数据
3)SecondaryNameNode(2nn):用来监控Hdfs状态的辅助后台程序,每隔一段时间获取hdfs元数据的快照

yarn架构概述
1)ResourceManager(rm):处理客户端请求,启动/监控ApplicationMaster、监控NodeManager、资源分配与调度;
2)NodeManager(nm):单个节点上的资源管理、处理来自ResourceManager的命令、处理来自ApplicationMaster的命令;
3)ApplicationMaster:数据切分、为应用程序申请资源,并分配给内部任务、任务监控与容错;
4)Container:对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息。

MapReduce架构概述
MapReduce将计算过程分为两个阶段:Map和Reduce
1)Map阶段并行处理输入数据
2)Reduce阶段对Map结果进行汇总

大数据生态体系
1)Sqoop:是Hadoop与mysql之间传送数据的工具。也就是可以将mysql中的数据导入到hdfs中,也可以将hdfs中的数据导入到mysql中。
2)Flume:
3)Kafka:
4)Storm:
5)Spark:
6)Oozie:
7)Hbase:
8)Hive:
9)R语言:
10)Mahout:
11)Zookeeper:

Hadoop运行模式
本地模式(默认模式):不需要启用单独进程、直接可以运行,测试和开发时使用。
伪分布式模式:等同于完全分布式,只有一个节点。
完全分布式模式:多个节点一起运行。

熟悉四大配置文件:
core
hdfs
map
yarn

ssh无密码登录
ssh 另一台电脑的ip地址
不需要输入密码

集群时间同步
找一台机器,作为时间服务器,其他机器定时和时间服务器同步

配置集群常见错误
1)防火墙没关
2)主机名称配置错误
3)ip地址配置错误
4)ssh没配置好
5)root用户和atguigu用户启动集群不统一
6)配置文件修改不细心
7)没有编译源码
8)jps没生效
9)datanode连接不上namenode

HDFS架构
HDFS的架构图
架构主要由四部分组成、分别为HDFS Client、NameNode、DataNode和SecondaryNameNode。
1)Client:客户端
(1)文件切分:文件上传hdfs的时候,Client将文件切分成一个一个的Block,然后进行存储。
(2)与NameNode交互,获取文件的位置信息
(3)与DataNode交互,读取或写入数据
(4)Client提供一些命令来管理HDFS,比如启动或者关闭HDFS
(5)Client可以通过一些命令来访问HDFS

2)NameNode:就是一个Master,它是一个主管、管理者
(1)管理hdfs的名称空间
(2)管理数据块的映射信息
(3)配置副本策略
(4)处理客户端读写请求
3)DataNode:就是Slave。NameNode下达命令,DataNode执行实际的操作。
(1)存储实际的数据块
(2)执行数据块的读/写操作
4)SecondaryNameNode:并非NameNode的热备。当NameNode挂掉的时候,它并不能马上替换掉NameNode并提供服务。
(1)辅助NameNode,分担其工作量。
(2)定期合并fsimage和edits,并推送给NameNode。
(3)在紧急情况下,可辅助恢复NameNode

hdfs文件块大小
hdfs中文件在物理上是分块存储(block),块的大小可以通过配置参数(dfs.blocksize)来规定,默认大小在hadoop2.x版本中是128M,老版本是64M

hdfs基本命令行操作
查看某一路径下的所有文件:hdfs dfs -ls [filePath]
上传文件:hdfs dfs -put [local filePath] [hdfs filePath]
下载文件:hdfs dfs -get [hdfs filePath] [local filePath]
删除文件:hdfs dfs -rm -r [hdfs filePath]
查看某一文件内容:hdfs dfs -cat [filePath]

hdfs命令行操作
hdfs客户端操作
通过api操作hdfs
通过io流操作hdfs

hdfs的数据流
hdfs写数据流程
在这里插入图片描述
1)客户端通过Distributed FileSystem模块向namenode请求上传文件,namenode检查目标文件是否已存在,父目录是否存在
2)namenode返回是否可以上传
3)客户端请求第一个block上传到哪几个datanode服务器上
4)namenode返回3个datanode节点,分别为dn1,dn2,dn3
5)客户端通过FSDataOutputStream模块请求dn1上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3,将这个通信管道建立完成。
6)dn1,dn2,dn3逐级应答客户端
7)客户端开始往dn1上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位,dn1收到一个packet就会传给dn2,dn2传给dn3,dn1每传一个packet会放一个应答队列等待应答
8)当一个block传输完成之后,客户端在此请求namenode上传第二个block服务器(重复执行3—7步)
网络拓扑概念
两个节点在一个本地网络中被称为“彼此近邻”是什么意思?海量数据处理时,主要限制速度是节点之间的数据的传输速度—也就是说带宽。也就是说将两个节点间的带宽作为距离的衡量标准。
节点距离:两个节点到达最近的共同祖先的距离总和。
例如:假设有数据中心的d1 机架r1 中的节点n1.该节点可以表示为 /d1/r1/n1。利用这个标记,这里给出四种距离描述。
distance(/d1/r1/n1, /d1/r1/n1) = 0(同一节点上的进程)
distance(/d1/r1/n1, /d1/r1/n2) = 2(同一机架上的不同节点)
distance(/d1/r1/n1, /d1/r2/n3) = 4(同一数据中心中不同机架上节点)
distance(/d1/r1/n1, /d2/r3/n4) = 6 (不同数据中心中的节点)
可以参考下网络拓扑与Hadoop
机架感知(副本节点选择)
hdfs如何控制客户端读取哪个副本节点数据?
客户端离哪个副本数据最近,hdfs就让哪个节点把数据给客户端。

hdfs读数据流程
在这里插入图片描述
1)客户端通过Distributed FileSystem向namenode请求下载文件,namenode通过查询元数据,找到文件块所在的datanode地址。
2)挑选一台datanode(就近原则,然后随机)服务器,请求读取数据
3)datanode开始传输数据给客户端(从磁盘里面读取数据输入流,以packet为单位来做校验)
4)客户端以packet为单位接收,先在本地缓存,然后写入目标文件

NameNode工作机制
在这里插入图片描述
1、NameNode&SecondaryNameNode工作机制
1)第一阶段:namenode启动
(1)第一次启动namenode格式化后,创建fsimage和edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存
(2)客户端对元数据进行增删改的请求
(3)namenode记录操作日志,更新滚动日志
(4)namenode在内存中对数据进行增删改查
2)第二阶段:SecondaryNameNode工作
(1)SecondaryNameNode询问namenode是否需要checkpoint。直接带回namenode是否检查结果
(2)SecondaryNameNode请求执行checkpoint
(3)namenode滚动正在写的edits日志
(4)将滚动前的编辑日志和镜像文件拷贝到SecondaryNameNode
(5)SecondaryNameNode加载编辑日志和镜像文件到内存,并合并
(6)生成新的镜像文件fsimage.chkpoint
(7)拷贝fsimage.chkpoint到namenode
(8)namenode将fsimage.chkpoint,重新命名成fsimage
2、镜像文件和编辑日志文件
1)namenode被格式化后,将在/opt/module/hadoop/data/tmp/dfs/name/current目录中产生如下文件

edits_0000000000000014232-0000000000000014233
fsimage_0000000000000014233.md5
seen_txid
VERSION

(1)fsimage文件:hdfs文件系统元数据的一个永久性的检查点,其中包含hdfs文件系统的所有目录和文件idno

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值