尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Linux学习20-hadoop大数据平台部署

Linux学习20-hadoop大数据平台部署 hadoop简介由 Apache 基金会开发和维护的一个开源分布式计算框架最初由 Doug Cutting 于 2006 年基于 Google 发表的三篇经典论文GFS、MapReduce、BigTable的思想实现它解决的核心问题是如何在廉价的普通服务器上存储和处理海量数据Hadoop 由以下四大核心模块组成HDFSHadoop Distributed File System分布式文件系统负责数据的存储将大文件切分成固定大小的数据块默认 128MB分散存储在多台机器上每个数据块默认保存 3 个副本保证高可靠性采用主从Master/Slave架构NameNode主节点管理文件系统的元数据目录结构、文件与数据块的映射关系等DataNode从节点实际存储数据块并定期向 NameNode 汇报状态MapReduce分布式计算框架负责数据的处理将计算任务拆分为两个阶段Map映射将输入数据拆分成键值对并行处理Reduce归约将 Map 的输出结果进行汇总聚合得出最终结果计算逻辑向数据靠拢数据本地化减少网络传输开销YARNYet Another Resource Negotiator集群资源管理和调度框架负责给各个应用分配 CPU、内存等资源核心组件ResourceManager全局资源管理器负责整个集群的资源分配NodeManager单节点资源管理器负责管理每台机器上的资源Hadoop Common公共基础库提供其他模块依赖的工具类、通用接口和启动脚本部署官网下载之后所有的操作应该是在新建用户中进行的再配置Java环境修改Java路径配置核心配置文件修改副本数本机做ssh免密如果要以root身份启动需要在hadoop-env.sh的末尾添加启动浏览器访问端口如果9000不正确那么就在9866到9870之间​创建 HDFS 用户目录创建 input 目录并上传配置文件运行自带的 WordCount/Grep 示例查看结果成功停止服务查看是否停止成功​分布式文件系统介绍HDFSHadoop Distributed File System分布式文件系统负责数据的存储将大文件切分成固定大小的数据块默认 128MB分散存储在多台机器上每个数据块默认保存 3 个副本保证高可靠性采用主从Master/Slave架构NameNode主节点管理文件系统的元数据目录结构、文件与数据块的映射关系等DataNode从节点实际存储数据块并定期向 NameNode 汇报状态HDFS 写数据流程1.client 向 NameNode 发送上传文件请求2.NameNode 检查权限和目录结构后返回一组 DataNode 列表dn1、dn2、dn33.client 将文件切分为多个 block默认 128MB以 packet 为单位发送第一个 block 到 dn14.三个 DataNode 之间形成流水线Pipeline复制dn1 → dn2 → dn3实现 3 副本存储5.所有副本写入完成后逐层向上确认最终报告给 NameNode6.NameNode 将元数据持久化存盘HDFS 机架感知Rack Awareness集群分为三个机架 r1、r2、r3当 client 本身就是 dn3位于 r1 机架时3 副本的放置策略为第 1 副本放在 client 所在节点 dn3本地写入减少网络传输第 2 副本放在不同机架 r2 的某个节点上跨机架容灾第 3 副本放在与第 2 副本相同机架 r2 的另一个节点上平衡带宽和可靠性HDFS 心跳机制与故障检测心跳HeartbeatDataNode 每隔 3 秒向 NameNode 发送一次心跳数据块报告Block ReportDataNode 定期向 NameNode 汇报自己存储了哪些数据块故障判定NameNode 10 分钟收不到某 DataNode 的心跳就判定该节点宕机数据校验Client 读取数据时DataNode 会发送校验和ChecksumClient 验证后返回确认码部署流程新建两台虚拟机node23做好基础配置设置共享目录三台node下载nfsnode1启动nfsnode23查看之后创建挂载点并挂载配置一下java的路径查看到版本号即为成功node之间做一下免密配置 Hadoop 的核心配置文件用来告知整个集群HDFS分布式文件系统的管理员NameNode的位置设置 HDFS 的数据备份副本数为2配置 Hadoop 集群的工作节点DataNode列表初始化格式化HDFS 的 NameNode 元数据目录选项选择Y启动整个 HDFS 分布式存储集群如果在node23找不到目录检查nfs服务是否正常23是否挂载启动成功查看node1上是namenode浏览器访问node1的9870端口查看进入datanode下看到node23创建用户上传.xml文件作为测试浏览器进入utils下的browse directory可以看到上传的文件Hadoop MapReduce介绍Hadoop 1.x 时代的旧架构MapReduce v1早期的单体架构核心组件只有两个JobTracker既是资源调度器又是作业控制器权力高度集中TaskTracker执行具体任务的工人定期向 JobTracker 发送心跳工作流程1.客户端运行 MapReduce 程序向 JobTracker 申请新的 Job ID2.客户端将作业资源jar、配置等拷贝到 HDFS3.客户端向 JobTracker 提交作业4.JobTracker 初始化作业读取 HDFS 上的输入分片input splits5.TaskTracker 通过心跳向 JobTracker 领取任务6.TaskTracker 启动子 JVM 进程运行 MapTask 或 ReduceTask核心问题 JobTracker 既是裁判又是运动员既要管资源调度又要管作业执行集群规模大了就成瓶颈且不支持其他计算框架如 Spark、Flink接入Hadoop 2.x 时代的新架构MapReduce v2/YARNYARN 框架ResourceManagerRM全局资源管理器只负责分配资源不管具体计算NodeManagerNM单节点资源管理器管理本机的 CPU、内存MRAppMaster每个作业专属的管家负责向 RM 申请资源、启动和监控任务工作流程1.客户端向 ResourceManager 申请新应用获取 Application ID2.客户端将作业资源拷贝到 HDFS3.客户端向 RM 提交应用4.RM 在某个 NodeManager 上启动容器运行 MRAppMaster5.MRAppMaster 初始化作业从 HDFS 读取输入分片6.MRAppMaster 向 RM 申请运行 Task 所需的资源7.RM 分配资源后MRAppMaster 通知对应节点的 NodeManager 启动容器8.NodeManager 启动子 JVM 运行 MapTask 或 ReduceTask之后会详细介绍yarnHadoop YARN介绍YARN 采用主从Master/Slave架构由三大核心组件组成ResourceManagerRM整个集群只有一个负责全局资源的统一管理和分配接收客户端提交的作业申请接收 NodeManager 的心跳汇报掌握集群资源状况不关心具体计算逻辑只管资源NodeManagerNM每个物理节点上运行一个负责管理本机资源CPU、内存接收 RM 的指令启动/停止容器Container定期向 RM 发送心跳汇报节点健康和资源使用情况ApplicationMasterAM每个作业独享一个随作业启动而创建作业结束而销毁负责向 RM 申请资源、与 NM 协作启动和监控任务理解具体计算框架的业务逻辑MapReduce 的 AM 和 Spark 的 AM 是不同的Container容器YARN 对资源的抽象封装包含内存 CPU 环境变量是资源的分配单位Task 运行在 Container 内部计算作业Application的完整工作流程1.提交数据client 把数据上传到 HDFS2.申请资源client 向 RM 申请运行 AppMasterRM 返回资源路径并分配容器3.运行任务AppMaster 从 HDFS 拷贝作业资源再向 RM 申请资源来启动各个 task 容器nm 节点发送心跳汇报进度4.清理释放所有 task 完成后AppMaster 向 RM 注销并释放容器资源
返回列表