大数据运维--大数据分布式集群
01.运维工程师都有哪些职位?
一图胜千言,针对运维工程师在公司都有哪些岗位,我们不妨看看下面这张图
2.大数据运维的工作职责
【职责1】规划部署
01 根据业务规划和未来业务演进评估集群 规模、存储规模、算力需求、技术选型等。
02 大数据生态组件高可用部署,安全合规保障。
03 开发人员使用集群方式规划、权限配置。
【职责2】故障排查
01 对产线环境产生的服务停止卡死、集群节点失败失联、主从切换、RPC性能问题进行排查并进行复盘。
02 对作业失败、作业卡死、数据误删除、数据丢失等问题进行排障并进行复盘。
【职责3】管理变更
01 根据监控的存储指标、资源指标、性能指标或业务调整进行集群的扩容上线、退役下线、数据均衡、数据清理。
02 根据需求变化进行权限修改、参数修改、集群访问方式修改。
03 变更方案编写、评审,变更流程梳理建设、变更记录留痕。
一、hadoop概念
Hadoop 是一个开源的分布式计算和存储框架,由 Apache 基金会开发和维护。
Hadoop 为庞大的计算机集群提供可靠的、可伸缩的应用层计算和存储支持,它允许使用简单的编程模型跨计算机群集分布式处理大型数据集,并且支持在单台计算机到几千台计算机之间进行扩展。
Hadoop 使用 Java 开发,所以可以在多种不同硬件平台的计算机上部署和使用。其核心部件包括分布式文件系统 (Hadoop DFS,HDFS) 和 MapReduce。
二、 Hadoop核心组件
- Hadoop HDFS(分布式文件存储系统):解决海量数据存储
- Hadoop YARN(集群资源管理和任务调度框架):解决资源任务调度
- Hadoop MapReduce(分布式计算框架):解决海量数据计算
了解分布式计算框架——MapReduce
(1) MapReduce简介
MapReduce是Hadoop的核心计算框架,是用于大规模数据集(大于1TB)并行运算的编程模型,主要包括Map(映射)和Reduce(规约)两个阶段。
MapReduce的核心思想是,当启动一个MapReduce任务时,Map端将会读取HDFS上的数据,将数据映射成所需要的键值对类型并传至Reduce端。Reduce端接收Map端键值对类型的中间数据,并根据不同键进行分组,对每一组键相同的数据进行处理,得到新的键值对并输出至HDFS。
(2) MapReduce工作原理
一个完整的MapReduce过程包含数据的输入与分片、Map阶段数据处理、Shuffle&Sort阶段数据整合、Reduce阶段数据处理、数据输出等阶段。
- 根据设置的分片大小划分文件,得到一到多个文件块,一个文件块对应一个Map
- 针对所有键相同的数据,对其值进行整合
- 整合后的数据传送到Reduce端处理
(3)了解HDFS
① 读取输入数据
从HDFS分布式文件系统中读取的,根据所设置的分片大小对文件重新分片(Split)。
② Map阶段
数据将以键值对的形式被读入,键的值一般为每行首字符与文件最初始位置的偏移量,即中间所隔字符个数,值为该行的数据记录。
根据具体的需求对键值对进行处理,映射成新的键值对,将新的键值对传输至Reduce端。
③ Shuffle&Sort阶段
将同一个Map中输出的键相同的数据先进行整合,减少传输的数据量,并且在整合后将数据按照键进行排序。
④ Reduce阶段
针对所有键相同的数据,对数据进行规约,形成新的键值对。
⑤ 输出阶段
将数据文件输出至HDFS,输出的文件个数和Reduce的个数一致,如果只有一个Reduce,那么输出的只有一个数据文件,默认命名为“part-r-00000”
4. 了解集群资源管理器——YARN
(1) YARN简介
① YARN是Hadoop的资源管理器,提交应用至YARN上执行可以提高资源在集群的利用率,加快执行速率。
② Hadoop YARN的目的是使得Hadoop数据处理能力超越MapReduce。
③ YARN的另一个目标就是拓展Hadoop,使得YARN不仅可以支持MapReduce计算,而且还可以很方便地管理如Hive、HBase、Pig、Spark/Shark等组件的应用程序。
① ResourceManager(简称RM):一个全局的资源管理器,负责整个系统的资源管理和分配,主要由两个组件构成,即调度器(Scheduler)和应用程序管理器(Applications Manager,ASM)。
调度器负责将系统中的资源分配给各个正在运行的应用程序,不从事任何与具体应用程序相关的工作,如监控或跟踪应用程序的执行状态等,也不负责重新启动因应用程序行失败或硬件故障而导致的失败任务。
应用程序管理器负责处理客户端提交的任务以及协商第一个Container(包装资源的对象)以供ApplicationMaster 运行,并且在Application Master失败时会将其重新启动。其中,Container 是YARN中的资源承载,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。当Application Master 向 ResourceManager 申请资源时,ResourceManager为ApplicationMaster 返回的资源就是使用Container 表示的。YARN会为每个任务分配一个Container,且该任务只能使用该Container 中描述的资源。
②NodeManager(简称NM):每个节点上的资源和任务管理器。一方面,它会定时地向ResourceManager 汇报本节点上的资源使用情况和各个Container的运行状态;另一方面,它将接收并处理来自 ApplicationMaster 的Container 启动或停止等各种请求。
③ ApplicationMaster(简称AM):在用户提交每个应用程序时,系统会生成一个ApplicationMaster 并将其添加到提交的应用程序里。ApplicationMaster 的主要功能如下。
- 与ResourceManager 调度器协商以获取资源(用Container 表示)。
- 将得到的任务进行进一步的分配。
- 与NodeManager 通信以启动或停止任务。
- 监控所有任务运行状态,在任务运行失败时重新为任务申请资源并重启任务。
④ Client Application:客户端应用程序。客户端将应用程序提交到ResourceManager时,首先将创建一个Application 上下文对象,再设置 ApplicationMaster 必需的资源请求信息,最后提交至ResourceManager。
(2)YARN的工作流程。
YARN从提交任务到完成任务的整个工作流程如下:
YARN的工作流程:
- 用户通过客户端提交一个应用程序到YARN中进行处理,其中包括 ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。
- ResourceManager 为该应用程序分配第一个Container,并与分配的Container 所在位置的NodeManager 通信,要求NodeManager 在这个Container 中启动应用程序的ApplicationMaster。该Container 用于启动 ApplicationMaster 和 ApplicationMaster后续的命令。
- ApplicationMaster 启动后先向 ResourceManager 注册,这样用户就可以直接通过ResourceManager 查看应用程序的运行状态,再为提交的应用程序所需要执行的各个任务申请资源,并监控任务的运行状态,直至运行结束,即重复步骤④~⑦。图1-7所示的示例应用程序需要执行两个Map任务和一个Reduce任务,因此需要轮番执行步骤④~⑦共3次,先执行Map任务,再执行Reduce任务。
- ApplicationMaster 采用轮询的方式通过远程进程调用(Remote Procedure Call,RPC)协议向ResourceManager 申请和领取资源。因此多个应用程序同时提交时,不一定是第一个应用程序先执行。
- 一旦 ApplicationMaster 申请到资源,便与资源对应的 NodeManager 通信,要求NodeManager 在分配的资源中启动任务。
- NodeManager 为任务设置好运行环境(包括环境变量、Jar包、二进制程序等)后,将任务启动命令写入一个脚本中,并通过运行该脚本启动任务。
- 被启动的任务开始执行,各个任务通过某个RPC 协议向 ApplicationMaster 汇报运行的状态和进度,以便让ApplicationMaster 随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。在应用程序运行过程中,用户可随时通过RPC协议向ApplicationMaster查询应用程序的当前运行状态。
- 应用程序运行完成后,ApplicationMaster 向ResourceManager进行注销,释放资源。
- 关闭客户端与 ApplicationMaster。
Hadoop生态
1. Hbase介绍
HBase是一个针对非结构化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库。
提供了对大规模数据的随机、实时读写访问。
保存的数据可以使用MapReduce进行处理。
将数据存储和并行计算很好地结合在一起。
应用场景:
大数据量(TB级数据)且有快速随机访问的需求,如淘宝交易记录等。
及时响应用户的需求。
业务场景简单,不需要关系型数据库中的很多特殊操作,如交叉查询、连接查询等
2. Hive介绍
Hive是建立在Hadoop上的数据仓库基础构架
提供了一系列的工具,可存储、查询和分析存储在Hadoop中的大规模数据
定义了一种类SQL语言为HQL(Hive Query Language),HQL语句在Hive的底层将被转换为复杂的MapReduce程序,运行在Hadoop大数据台上.
应用场景:大数据集的批处理作业,如网络日志分析
3. Pig介绍
Pig是一个基于Hadoop的大规模数据分析框架。
提供的类SQL语言为Pig Lalin。PigLatin语言的编译器会将类SQL的数据分析请求转换成一系列经过优化处理的MapReduce程序进行计算。
支持的数据格式非常灵活,可以自由转化,并且在运算过程中用关系进行存储,减少了文件的输出。
应用场景: 对数据存储的要求较低,适用于非结构化的数据集,支持复合数据类型,如Map、Tuple、Bag等。
支持常见的数据操作,如筛选、排序和连接。
适用于日志数据的处理。雅虎和推特均采用了Pig处理数据。
4. Sqoop介绍
Sqoop是一款开源的工具。
主要用于在Hadoop与关系型数据库(如MySQL、PoslgreSQL等)之间传输数据,可以将一个关系型数据库中的数据导人至Hadoop的HDFS中,也可以将HDFS的数据导出至关系型数据库中。
应用场景:对于结构化数据库,采用Sqoop进行数据传输是合适的,可以实现结构化数据库中的数据并行批量人库至HDFS进行存储。
5. Flume
介绍:
Flume是Cloudera提供的一个高可用的、高可靠的、分布式的海量日志采集、聚合和传输系统。
支持在日志系统中定制各类数据发送方,用于收集数据。
可以对数据进行简单处理,并传输至各种数据接收方。
应用场景:日志文件的采集。
6. Oizie
介绍:
Oozie是基于Hadoop的调度器,编写xml格式的文件制定调度流程,可以调度MapReduce、Pig、Hive、Shell等任务。
当一个工作任务中需要调用几个任务时,一个任务完成再启动另一个是比较麻烦的,在这种情况下即可使用Oozie将任务串联,通过Oozie调动整个任务进程。
7. ZooKeerer
介绍:
ZooKeeper可解决分布式环境下的数据管理问题,如统一命名、状态同步、集群管理、配同步等。
ZooKeeper的使用主要是为了保证集群各项功能正常进行,并在出现异常时能够及时通知处理,保持数据一致性,是对整个集群的监控。
8. Mahout
介绍:
Mahout的主要目标是创建一些可扩展的机器学习领城经典算法,旨在帮助开发人员更加方便快捷地创建智能应用程序。
现已包含了聚类、分类、推荐(协同过滤)和关联规则等广泛使用的机器学习算法。
除了算法外,Mahout还包含数据输人和输出的工具、与其他存储工具(如MySQL、MongoDB等)集成等支持架构。
应用场景:通过提供机器学习算法包使得用户在使用的过程中能够直接通过调用算法包缩短编程时间,同时也减少用户复杂的算法程序对资源的消耗。
Hadoop应用场景
02分布式大数据集群框架
规划的必要性
03 Windows环境下Linux仿真工具
