一.hadoop概述
1.1hadoop优势
1)高可靠性:Hadoop底层维护多个数据副本,即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失。
2)高扩展性:在集群间分配任务数据,可方便扩展数以千计的节点
3)高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度
4)高容错性:能够自动将失败的任务重新分配
1.2Hadoop的组成
1.3.HDFS
定义:一个文件系统,用于存储文件,通过目录来定位我呢见;分布式,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
使用场景:适合一次写入,多次读出的场景,一个文件经过创建、写入和关闭之后就不需要改变。
优点:
1)高容错性
数据自动保存多个副本,通过增加副本的形式,提高容错率。
一个副本丢失后,可以自动恢复
2)适合处理大数据
能够处理数据规模达到GB、TB、甚至PB级别的数据(数据规模方面)
能够处理百万规模以上的文件数量(文件规模方面)
3)科构建在廉价机器上,通过多副本机制,提高可靠性
缺点
1)不适合低延时数据访问
2)无法高效地对大量小文件进行存储
存储大量小文件的话,会占用NameNode大量地内存来存储文件目录和块信息。
小文件存储地寻址时间会超过读取时间,它违反了HDFS的设计目标。
3)不支持并发写入、文件随机修改
框架概述
1)NameNode(nn):存储文件的元数据,例如文件名,文件目录结构,文件属性,以及每个文件的块列表和块所在的DataNode等。
a)管理HDFS的名称空间
b)配置副本策略
c)管理数据块映射信息
d)处理客户端读写要求
2)DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。
a)存储实际的数据块
b)执行数据块的读/写操作
DateNode和NameNode的联系:NameNode下达命令,DataNode执行实际的操作
3)Secondary NameNode(2nn):每隔一段时间对NameNode元数据备份。
HDFS文件块大小
HDFS中的文件在物理上是分块储存,块的大小可以通过配置参数来规定
注:1)寻址时间为传输时间的1%时,为最佳状态
2)1秒能传输多少内容取决于磁盘的传输速率(目前磁盘的传输速率普遍为100MB/s)
3)块的大小不能设置太小(会增加寻址时间),也不能设置太大(从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间).。
Xshell命令:
上传命令
1)-moveFromLocal:从本地剪切粘贴到HDFS
[atguigu@hadoop01 hadoop]$ hadoop fs -mkdir /apt
[atguigu@hadoop01 hadoop]$ vim shuguo.txt
[atguigu@hadoop01 hadoop]$ hadoop fs -moveFromLocal ./shuguo.txt /apt
2)-copyFromLocal:从本地文件系统中拷贝文件到HDFS路径
[atguigu@hadoop01 hadoop]$ vim weiguo.txt
[atguigu@hadoop01 hadoop]$ hadoop fs -copyFromLocal weiguo.txt /apt
3)-put:等同于copyFromLocal,生产环境更习惯用put
[atguigu@hadoop01 hadoop]$ vim wuguo.txt
[atguigu@hadoop01 hadoop]$ hadoop fs -put ./wuguo.txt /apt
4)-appendToFile:追加一个文件到已经存在的文件末尾
[atguigu@hadoop01 hadoop]$ vim liubei.txt
[atguigu@hadoop01 hadoop]$ hadoop fs -appendToFile liubei.txt /apt/shuguo.txt
追加liubei文件的内容到shuguo内容的结尾
下载命令
1)-copyToLocal:从HDFS拷贝到本地
[atguigu@hadoop01 hadoop]$ hadoop fs -copyToLocal /apt/shuguo.txt ./
拷贝后本地存在shuguo文件
2)-get:等同于copyToLocal,生产环境更习惯用get
该指令同时将shuguo改名为shuguo2
[atguigu@hadoop01 hadoop]$ hadoop fs -get /apt/shuguo.txt ./shuguo2.txt
HDFS直接操作
1)-ls: 显示目录信息
[atguigu@hadoop01 hadoop]$ hadoop fs -ls /apt
2)-cat:显示文件内容
[atguigu@hadoop01 hadoop]$ hadoop fs -cat /apt/weiguo.txt
3)-chgrp、-chmod、-chown:Linux文件系统中的用法一样,修改文件所属权限
4)-mkdir:创建路径
[atguigu@hadoop01 hadoop]$ hadoop fs -mkdir /c
5)-cp:从HDFS的一个路径拷贝到HDFS的另一个路径
[atguigu@hadoop01 hadoop]$ hadoop fs -cp /apt/weiguo.txt /c
6)-mv:在HDFS目录中移动文件
[atguigu@hadoop01 hadoop]$ hadoop fs -mv /apt/wuguo.txt /c
7)-tail:显示一个文件的末尾1kb的数据
[atguigu@hadoop01 hadoop]$ hadoop fs -tail /c/wuguo.txt
显示出c中wuguo文件末尾1kb的数据
8)-rm:删除文件或文件夹
[atguigu@hadoop01 hadoop]$ hadoop fs -rm /apt/shuguo.txt
Deleted /apt/shuguo.txt
9)-rm -r:递归删除目录及目录里面内容
10)-du统计文件夹的大小信息
[atguigu@hadoop01 hadoop]$ hadoop fs -du -h /c
11)-setrep:设置HDFS中文件的副本数量
[atguigu@hadoop01 hadoop]$ hadoop fs -setrep 7 /c/weiguo.txt
1.4.YARN架构概述
YARN:另一种资源协调者,是Hadoop的资源管理器
1)ResourceManager(RM):管理整个集群资源(内存、CPU等);
2)NodeManager(NM):管理单个节点服务器资源
3)ApplicationMaster(AM):管理单个任务的运行
4)Container:容器,相当于一台独立的服务器,里面封装了任务运行所需要的资源,如内存、CPU、磁盘、网络等.(一个Container容器默认内存是1-8G)
特殊说明
1)可以有多个客服端
2)集群上可以运行多个ApplicationMaster
3)每个NodeManager上可以有多个Container
1.5.MapReduce架构概述
MapReduce将计算过程分为两个阶段:Map和Reduce
1)Map阶段并行处理输入数据
2)Reduce阶段对Map结果进行汇总
二.大数据技术生态体系
三.推荐系统框架图
四.Hadoop运行模式
1)本地模式:单机运行,只是用来演示官方案例(生产环境不用,偶尔用于测试)
2)伪分布式模式:单机运行,具备Hadoop集群的所有功能,一台服务器模拟一个分布式的环境(生产环境不用)
3)完全分布式模式:多台服务器组成分布式环境(生产环境使用)
四、HDFS写数据流程
(1)客户端通过DistributedFileSystem向NameNode请求下载文件,NameNode通过查询元数据,找到文件块所在的DataNode地址。
(2)挑选一台DataNode(就近原则,然后随机)服务器,请求读取数据。
(3)DataNode开始传输数据给客户端(从磁盘里面读取数据输入流,以Packet为单位来做校验)。
(4)客户端以Packet为单位接收,先在本地缓存,然后写入目标文件。
五.NameNode工作机制
1)NameNode启动
2)Secondary NameNode工作