hadoop框架hdfs、mapreduce、yarn三大组件内容
Hadoop是什么?
1.hadoop是一个由Apache基金会所开发的分布式系统基础架构。
2.主要解决,海量数据的储存和海量数据的分析计算问题。
3.广义来说,hadoop通常是指一个更广泛的概念----Hadoop生态圈。
Hadoop三大发行版本
Hadoop三大发行版本:Apache、Cloudera、Hortonworks。
Apache版本最原始(最基础)的版本,对于入门学习最好。
Cloudera在大型互联网企业中用的较多。
Hortonworks文档较好。
Hadoop的优势(4高)
1.高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失。
2.高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。
3.高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。
4.高容错性:能够自动将失败的任务重新分配。
HDFS的局限
HDFS的上述种种特点非常适合于大数据量的批处理,但是对于一些特点问题不但没有优势,而且有一定的局限性,主要表现以下几个方面:
1、不适合低延迟数据访问
如果要处理一些用户要求时间比较短的低延迟应用请求(比如毫秒级、秒级的响应时间),则HDFS不适合。HDFS是为了处理大型数据集而设计的,主要是为了达到高的数据吞吐量而设计的,
延迟时间通常是在分钟乃至小时级别。
对于那些有低延迟要求的应用程序,HBase是一个更好的选择,尤其是对于海量数据集进行访问要求毫秒级响应的情况,单HBase的设计是对单行或少量数据集的访问,对HBase的访问必须提供主键或主键范围。
2、无法高效存储大量小文件
3、不支持多用户写入和随机文件修改
在HDFS的一个文件中只有一个写入者,而且写操作只能在文件末尾完成,即只能执行追加操作。
HDFS架构概述
1.NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生存时间,副本数,文件权限),以及每个文件的快列表和块所在的DataNode等。
2.DataNode(dn):在本地文件系统储存文件块数据,以及块数据的校检和。
3.Secondary NameNode(2nn):用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。
HDFS是分布式文件系统,有高容错性的特点,可以部署在价格低廉的服务器上,主要包含namenode和datanode。
Namenode是hdfs中文件目录和文件分配管理者,它保存着文件名和数据块的映射管理,数据块和datanode列表的映射关系。其中文件名和数据块的关系保存在磁盘上,但是namenode上不保存数据块和datanode列表的关系,该列表是通过datanode上报建立起来的。
Namenode上的有三种交互,1、client访问namenode获取的相关datanode的信息。2、datanode心跳汇报当前block的情况。3、secondarynamenode做checkpoint交互。
DataNode它负责实际的数据存储,并将数据息定期汇报给NameNode。DataNode以固定大小的block为基本单位组织文件内容,默认情况下block大小为128MB。当用户上传一个大的文件到HDFS上时,该文件会被切分成若干个block,分别存储到不同的DataNode;同时,为了保证数据可靠,会将同一个block以流水线方式写到若干个(默认是3,该参数可配置)不同的DataNode上。这种文件切割后存储的过程是对用户透明的。
SecondaryNameNode,用来辅助namenode进行元数据的合并,并且传回到namenode。
YARN架构概述
YARN主要包括几种角色
1.ResourceManager(RM):主要接收客户端任务请求,接收和监控NodeManager(NM)的资源情况汇报,负责资源的分配与调度,启动和监控ApplicationMaster(AM),一个集群只有一个。
2.NodeManager:主要是节点上的资源管理,启动Container运行task计算,上报资源、container情况给RM和任务处理情况给AM,整个集群有多个。
3.ApplicationMaster:主要是单个Application(Job)的task管理和调度,向RM进行资源的申请,向NM发出launch Container指令,接收NM的task处理状态信息。每个应用有一个。
4.Container:是YARN中资源的抽象,它封装了某个节点上一定量的资源(CPU和内存两类资源)。
Hadoop运行环境搭建
虚拟机环境准备
1. 克隆虚拟机
2. 修改克隆虚拟机的静态IP
3. 修改主机名
4. 关闭防火墙
5. 创建jinghang用户
6. 配置jinghang用户具有root权限(详见《大数据技术之Linux》)
7.在/opt目录下创建文件夹
(1)在/opt目录下创建module、software文件夹
[ opt]$ sudo mkdir module
[ opt]$ sudo mkdir software
(2)修改module、software文件夹的所有者cd
[ opt]$ sudo chown jinghang:jinghang module/ software/
[ opt]$ ll
总用量 8
drwxr-xr-x. 2 jinghang jinghang 4096 1月 17 14:37 module
drwxr-xr-x. 2 jinghang jinghang 4096 1月 17 14:38 software
Hadoop运行模式
Hadoop运行模式包括:本地模式、伪模式以及完全分布式模式。
编写集群分发脚本xsync
1. scp(secure copy)安全拷贝
(1)scp定义:
scp可以实现服务器与服务器之间的数据拷贝。(from server1 to server2)
(2)基本语法
scp -r $pdir/$fname $host:$pdir/$fname
命令 递归 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称
2. rsync 远程同步工具
rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。
(1)基本语法
rsync -av $pdir/$fname $host:$pdir/$fname
命令 选项参数 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称
选项参数说明
表2-2
选项 功能
-a 归档拷贝
-v 显示复制过程
3. xsync集群分发脚本
(1)需求:循环复制文件到所有节点的相同目录下
(2)需求分析:
(a)rsync命令原始拷贝:
rsync -av /opt/module :/opt/
(b)期望脚本:
xsync要同步的文件名称
(c)说明:在/home/jinghang/bin这个目录下存放的脚本,jinghang用户可以在系统任何地方直接执行。
(3)脚本实现
集群配置
集群部署规划
表2-3
hadoop102 hadoop103 hadoop104
HDFS NameNodeDataNode DataNode SecondaryNameNodeDataNode
YARN NodeManager ResourceManagerNodeManager NodeManager
2. 配置集群
(1)核心配置文件
配置core-site.xml
[ hadoop]$ vi core-site.xml
在该文件中编写如下配置
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
(2)HDFS配置文件
配置hadoop-env.sh
[ hadoop]$ vi hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
配置hdfs-site.xml
[ hadoop]$ vi hdfs-site.xml
在该文件中编写如下配置
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<