Hadoop
- 大数据技术生态体系
2.1 整体架构
涉及组件:
1)HDFS:NameNode、DataNode、Secondary NameNode
2)MapReduce:MapTask、ReduceTask
3)Yarn:ResourceManager、NodeManager、ApplicationMaster、Container
2.2 HDFS架构
Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。
组件:NameNode、DataNode、Secondary NameNode
1)NameNode(nn):存储文件元数据:文件名、目录结构、文件属性(生成时间、副本数量、文件权限)、每个文件的块列表和块所在的DataNode;
2)DataNode(dn):在本地文件系统存储文件块数据和块数据的校验和;
3)Secondary NameNode(2nn):每隔一段时间对NameNode的元数据进行备份。
2.3 MapReduce架构
Hadoop Map/Reduce是一个使用简易的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。
一个Map/Reduce 作业(job) 通常会把输入的数据集切分为若干独立的数据块,由 map任务(task)以完全并行的方式处理它们。框架会对map的输出先进行排序, 然后把结果输入给reduce任务。通常作业的输入和输出都会被存储在文件系统中。 整个框架负责任务的调度和监控,以及重新执行已经失败的任务。
通常,Map/Reduce框架和分布式文件系统是运行在一组相同的节点上的,也就是说,计算节点和存储节点通常在一起。这种配置允许框架在那些已经存好数据的节点上高效地调度任务,这可以使整个集群的网络带宽被非常高效地利用。
Map/Reduce框架由一个单独的master JobTracker 和每个集群节点一个slave TaskTracker共同组成。master负责调度构成一个作业的所有任务,这些任务分布在不同的slave上,master监控它们的执行,重新执行已经失败的任务。而slave仅负责执行由master指派的任务。
应用程序至少应该指明输入/输出的位置(路径),并通过实现合适的接口或抽象类提供map和reduce函数。再加上其他作业的参数,就构成了作业配置(job configuration)。然后,Hadoop的 job client提交作业(jar包/可执行程序等)和配置信息给JobTracker,后者负责分发这些软件和配置信息给slave、调度任务并监控它们的执行,同时提供状态和诊断信息给job-client。
2.4 Yarn架构
Apache Hadoop YARN 是开源 Hadoop 分布式处理框架中的资源管理和作业调度技术。作为 Apache Hadoop 的核心组件之一,YARN 负责将系统资源分配给在 Hadoop 集群中运行的各种应用程序,并调度要在不同集群节点上执行的任务。
YARN 的基本思想是将资源管理和作业调度/监视的功能分解为单独的 daemon(守护进程),其拥有一个全局ResourceManager(RM) 和每个应用程序的 ApplicationMaster(AM)。应用程序可以是单个作业,也可以是作业的 DAG。
组件:ResourceManager、NodeManager、ApplicationMaster、Container
1)ResourceManager:负责整个集群资源的管理(内存、CPU)
2)NodeManager:负责单个节点的资源管理
3)ApplicationMaster:负责单个任务的管理
4)Container:对计算机计算资源的抽象,其实就是节点上一组CPU和内存,所有应用都运行在Container
ResourceManager和 NodeManager构成了数据计算框架。 ResourceManager 是在系统中的所有应用程序之间仲裁资源的最终权限。NodeManager 是每台机器框架代理,负责 Containers,监视其资源使用情况(CPU,内存,磁盘,网络)并将其报告给 ResourceManager。
每个应用程序 ApplicationMaster 实际上是一个框架特定的库,其任务是协调来自 ResourceManager 的资源,并与 NodeManager 一起执行和监视任务。
- 环境搭建
3.1 基础环境
jdk
3.2 集群配置
Hadoop环境配置:hadoop-env.sh [配置java_home]
Hadoop公共配置:core-site.xml
HDFS副本数和数据目录配置:hdfs-site.xml
指定MapReduce程序在Yarn集群配置:mapred-site.xml
配置Yarn集群参数:yarn-site.xml
3.3 集群启动
HDFS服务启动:
hadoop namenode -format
hadoop-3.2.2/sbin/start-dfs.sh
YARN启动:hadoop-3.2.2/sbin/start-yarn.sh
日志服务jobhistoryserver:mapred --daemon start historyserver
3.4 启动web验证
DataNode:http://192.168.6.4:9864/datanode.html
Namenode/HDFS:http://192.168.6.4:9870/dfshealth.html#tab-overview
NodeManager:http://192.168.6.4:8042/node
job history:http://192.168.6.4:19888/jobhistory/app
3.5 进程校验
[hadoop@localhost ~]$ jps
2256 NameNode
2370 DataNode
4037 Jps
2934 NodeManager
2535 SecondaryNameNode
2809 ResourceManager
4015 JobHistoryServer