自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (1)
  • 收藏
  • 关注

原创 spark常用算子解析

主要梳理Spark core 中常用的算子

2021-01-16 21:03:21 557

原创 spark任务划分与执行

本文讨论Spark 在执行一个任务时是如何切分整个任务并执行的。

2021-01-16 21:01:09 140

原创 Spark On Yarn 源码分析

首先说明下AppMaster 与Driver 的区别,每个运行在yarn上的服务都需要有一个AppMaster,而Driver是一个Spark任务特有的,Driver 会负责创建SparkContext对象【内部维护了用于任务划分以及执行的DAGScheduler以及TaskScheduler】,DAGScheduler会将任务划分为job stage 然后交给TaskScheduler调度分配给Executor执行。【注:Driver 不仅仅可以用来创建SparkContext 还可以做一些其他的需求..

2021-01-13 17:27:01 1060

原创 hive查询meta信息方式

转载: https://blog.csdn.net/lz6363/article/details/89498340。

2023-10-10 17:53:20 130

原创 Spark运行在JDK 17上的参数配置

在将Spark应用程序迁移到JDK 17并进行集成时,需要进行一些额外的参数配置。另外,在集成时可能会遇到Hive外部元数据服务异常,具体问题可以查看链接。为了解决该问题,需要修改相关代码并重新打包。注意,在打包时要确保。其他参数直接复制即可。垃圾收集器的参数是可选的,这里配置了。中,并将这两个jar包一起添加到classpath中。用于指定执行器的Java安装目录。用于指定节点的Java安装目录,以使用ZGC垃圾收集器。

2023-08-14 09:23:19 758 2

原创 hadoop滚动重启脚本

再使用开源版本hadoop集群时,有配置参数修改时,需要人工修改并重启节点让配置生效,因此这里这里写了个脚本实现自动滚动重启。注意:不同版本的hadoop。

2023-05-25 14:55:21 280

原创 spark读取hive phoenix映射

spark读取hive Phoenix映射表

2023-03-01 14:43:01 204

原创 pyspark 集成指定python版本

pyspark 指定python版本

2022-12-22 19:30:20 1756

原创 hive中集成hadoop3MapreduceNativeTask功能

hive中集成hadoop3MapreduceNativeTask功能

2022-10-17 11:32:31 471

原创 关于Spark动态分区裁剪在3.3版本之前的BUG记录

关于spark 动态分区裁剪在3.3版本之前的bug

2022-09-27 16:59:24 383

原创 Hive动态分区问题记录

hive在动态分区在数据量很大目标分区比较多时

2022-09-26 11:11:32 925 1

原创 scala中迭代器

scala迭代器与其在spark 中的应用

2022-08-31 14:29:41 981

原创 Spark 自动转换BroadcastJoin代码分析

Spark 自动MapJoin 代码分析

2022-08-24 18:16:17 744

原创 spark3.3 windows 平台下源码编译

spark3.3 windows 下源码编译

2022-06-27 17:20:25 622

原创 Hive3.1.2 适配Ranger1.2.1

Hive3的权限接口新增了 getHivePolicyProvider 方法,因此需要在ranger1.2.1 RangerHiveAuthorizer 类中实现此方法,对比了最新版本的Ranger2.x有这个方法的实现但是涉及的代码很多因此这里又参考了hive 本身的一些权限实现发现并没有提供此方法的实现,因此这里也是直接提供了 空的实现。在RangerHiveAuthorizer 类中添加如下实现(这里需要注意需要单独下载ranger hive-agent 代码,将pom 中hive 依

2022-02-22 17:11:41 1027

原创 HiveUdf动态设置读取HDFS上的配置文件

hive udf 动态设置读取hdfs 上配置文件的路径。

2021-12-09 16:53:28 2101

原创 RangerAdminHA部署方案

**概叙**ranger最新版本2.0已经实现了基于客户端的HA方式,只需要在客户端配置多个URL即可,对于之前的版本如果是实现高可用可以采用Haproxy+KeepAlived的方式。

2021-08-31 17:15:02 1120 1

原创 关于Yarn Acl 的问题

最近在集成Ranger做权限控制,在Yarn集成Ranger时发现没有配置权限的用户也可以提交任务,感到比较迷惑,所以看了下Ranger这块的代码实现:如下代码,ranger这里其实分了两部分 首先校验raner中的权限策略 如果有则返回 true 可以提交任务,如果没权限则会继续进行acl的校验,在acl 校验时可以参考 isAllowedByYarnAcl 代码 这里循环了yarn 配置的所有队列 ,找到当前队列或者当前队列的父队列,只要有一个满足权限就会允许提交任务://权限检查 public

2021-08-27 11:00:07 472

原创 关于使用msck修复hive分区,以及在添加分区缓慢的问题

1)需要修复的分区数量很大的解决办法set hive.msck.repair.batch.size=1000;set hive.msck.path.validation=ignore;第一个参数是设置每次插入到metaStore 分区的批量大小,加入有10000个待修复的分区 那么这里就是10000/1000 共计十个批次,默认如果不设置此参数会把所有数据全部发送到metastore 中执行插入操作。第二个参数是忽略掉非标准分区表的,不会对这种分区做任何操作,如果需要加入的话 也是需要自己手动alt

2021-06-10 17:29:40 2783

原创 关于Hive重写LineageLogger获取血缘问题

Lineagelogger类是hive2.x加入的,但是我们如果自己改造的话需要注意如下问题:(如果将代码迁移到1.x应该直接可用 1.x代码中是直接做了add的操作,并没有做判断才进行加入)org.apache.hadoop.hive.ql.optimizer.Optimizer 类 第79行 这里由于只有如下几种类型才会加入 generator ,后续才能正常注入字段级血缘,所以如果这里没有改 直接配置了 hive.exec.post.hooks 类型的hook , 只能拿到基本的input 与

2021-06-03 19:55:26 1522 1

原创 spark运行时reduce端任务数

Tasks数决定因素在Spark 中 我们知道会将一个任务划分为多个stage ,划分stage的依据就是是否为宽依赖(存在shuffle),每个stage 的并行度取决于一个stage 最后一个算子,因为一个任务的调用是从最后一个算子向前执行的.所以一个任务的task 数主要看一个stage最后的一个rdd的分区数。这里主要用一个列子说明计算过程分区数是怎么确定的:rdd.map(…).reduceByKey(…).collect()根据上面这段逻辑可以知道 map 中主要返回的是一个mapPar

2021-02-23 15:09:32 1316

yarn 资源调度系统详解

大数据的理论和价值逐渐得到了社会各界的认可,各种各样的大数据应用系统应运而生,正在创造性地解决着不同使用场景下的问题。在大数据应用越来越多样化的同时,对提供支撑的基础技术平台提出了更高的要求。Hadoop是目前市场接受程度最高的大数据技术平台之一,在大量有代表性的Hadoop 1.x用户使用体验和反馈的基础上,广受关注的Hadoop 2.x版本在平台设计层面做出了重大改进,已于2013年10月正式发布。   YARN是Hadoop 2.x的核心部分。它作为新一代的资源管理系统,不仅支持MapReduce计算框架,还可以支持流式计算框架、图计算框架、内存迭代计算框架等,极大地扩展了Hadoop的使用场景,提高了Hadoop集群的利用效率。董西成先生理论功底深厚,实践经验丰富,本书可以帮助大家快速了解和学习YARN。   ——谢磊 北京小象科技有限公司执行董事/ChinaHadoop技术社区负责人 目录 前言 第一部分 准备篇 第1章 环境准备 1.1 准备学习环境 1.1.1 基础软件下载 1.1.2 如何准备Linux环境 1.2 获取Hadoop源代码 1.3 搭建Hadoop源代码阅读环境 1.3.1 创建Hadoop工程 1.3.2 Hadoop源代码阅读技巧 1.4 Hadoop源代码组织结构 1.5 Hadoop初体验 1.5.1 搭建Hadoop环境 1.5.2 Hadoop Shell介绍 1.6 编译及调试Hadoop源代码 1.6.1 编译Hadoop源代码 1.6.2 调试Hadoop源代码 1.7 小结 第2章 YARN设计理念与基本架构 2.1 YARN产生背景 2.1.1 MRv1的局限性 2.1.2 轻量级弹性计算平台 2.2 Hadoop基础知识 2.2.1 术语解释 2.2.2 Hadoop版本变迁 2.3 YARN基本设计思想 2.3.1 基本框架对比 2.3.2 编程模型对比 2.4 YARN 基本架构 2.4.1 YARN基本组成结构 2.4.2 YARN通信协议 2.5 YARN工作流程 2.6 多角度理解YARN 2.6.1 并行编程 2.6.2 资源管理系统 2.6.3 云计算 2.7 本书涉及内容 2.8 小结 第二部分 YARN核心设计篇 第3章 YARN基础库 3.1 概述 3.2  第三方开源库 3.2.1 Protocol Buffers 3.2.2 Apache Avro 3.3 底层通信库 3.3.1 RPC通信模型 3.3.2 Hadoop RPC的特点概述 3.3.3 RPC总体架构 3.3.4 Hadoop RPC使用方法 3.3.5 Hadoop RPC类详解 3.3.6 Hadoop RPC参数调优 3.3.7 YARN RPC实现 3.3.8 YARN RPC应用实例 3.4 服务库与事件库 3.4.1 服务库 3.4.2 事件库 3.4.3 YARN服务库和事件库的使用方法 3.4.4 事件驱动带来的变化 3.5 状态机库 3.5.1 YARN状态转换方式 3.5.2 状态机类 3.5.3 状态机的使用方法 3.5.4 状态机可视化 3.6 源代码阅读引导 3.7 小结 3.8 问题讨论 第4章 YARN应用程序设计方法 4.1 概述 4.2 客户端设计 4.2.1 客户端编写流程 4.2.2 客户端编程库 4.3 ApplicationMaster设计 4.3.1 ApplicationMaster编写流程 4.3.2 ApplicationMaster编程库 4.4 YARN 应用程序实例 4.4.1 DistributedShell 4.4.2 Unmanaged AM 4.5 源代码阅读引导 4.6 小结 4.7 问题讨论 第5章 ResourceManager剖析 5.1 概述 5.1.1 ResourceManager基本职能 5.1.2 ResourceManager内部架构 5.1.3 ResourceManager事件与事件处理器 5.2 用户交互模块 5.2.1 ClientRMService 5.2.2 AdminService 5.3 ApplicationMaster管理 5.4 NodeManager管理 5.5 Application管理 5.6 状态机管理 5.6.1 RMApp状态机 5.6.2 RMAppAttempt状态机 5.6.3 RMContainer状态机 5.6.4 RMNode状态机 5.7 几个常见行为分析 5.7.1 启动ApplicationMaster 5.7.2 申请与分配Container 5.7.3 杀死Application 5.7.4 Container超时 5.7.5 ApplicationMaster超时 5.7.6 NodeManager超时 5.8 安全管理 5.8.1 术语介绍 5.8.2 Hadoop认证机制 5.8.3 Hadoop授权机制 5.9 容错机制 5.9.1 Hadoop HA基本框架 5.9.2 YARN HA实现 5.10 源代码阅读引导 5.11 小结 5.12 问题讨论 第6章 资源调度器 6.1 资源调度器背景 6.2 HOD调度器 6.2.1 Torque资源管理器 6.2.2 HOD作业调度 6.3 YARN资源调度器的基本架构 6.3.1 基本架构 6.3.2 资源表示模型 6.3.3 资源调度模型 6.3.4 资源抢占模型 6.4 YARN层级队列管理机制 6.4.1 层级队列管理机制 6.4.2 队列命名规则 6.5 Capacity Scheduler 6.5.1 Capacity Scheduler的功能 6.5.2 Capacity Scheduler实现 6.6 Fair Scheduler 6.6.1 Fair Scheduler功能介绍 6.6.2 Fair Scheduler实现 6.6.3 Fair Scheduler与Capacity Scheduler对比 6.7 其他资源调度器介绍 6.8 源代码阅读引导 6.9 小结 6.10 问题讨论 第7章 NodeManager剖析 7.1 概述 7.1.1 NodeManager基本职能 7.1.2 NodeManager内部架构 7.1.3 NodeManager事件与事件处理器 7.2 节点健康状况检测 7.2.1 自定义Shell脚本 7.2.2 检测磁盘损坏数目 7.3 分布式缓存机制 7.3.1 资源可见性与分类 7.3.2 分布式缓存实现 7.4 目录结构管理 7.4.1 数据目录管理 7.4.2 日志目录管理 7.5 状态机管理 7.5.1 Application状态机 7.5.2 Container状态机 7.5.3 LocalizedResource状态机 7.6 Container生命周期剖析 7.6.1 Container资源本地化 7.6.2 Container运行 7.6.3 Container资源清理 7.7 资源隔离 7.7.1 Cgroups介绍 7.7.2 内存资源隔离 7.7.3 CPU资源隔离 7.8 源代码阅读引导 7.9 小结 7.10 问题讨论 第三部分 计算框架篇 第8章 离线计算框架MapReduce 8.1 概述 8.1.1 基本构成 8.1.2 事件与事件处理器 8.2 MapReduce客户端 8.2.1 ApplicationClientProtocol协议 8.2.2 MRClientProtocol协议 8.3 MRAppMaster工作流程 8.4 MR作业生命周期及相关状态机 8.4.1 MR作业生命周期 8.4.2 Job状态机 8.4.3 Task状态机 8.4.4 TaskAttempt状态机 8.5 资源申请与再分配 8.5.1 资源申请 8.5.2 资源再分配 8.6 Container启动与释放 8.7 推测执行机制 8.7.1 算法介绍 8.7.2 推测执行相关类 8.8 作业恢复 8.9 数据处理引擎 8.10 历史作业管理器 8.11 MRv1与MRv2对比 8.11.1 MRv1 On YARN 8.11.2 MRv1与MRv2架构比较 8.11.3 MRv1与MRv2编程接口兼容性 8.12 源代码阅读引导 8.13 小结 8.14 问题讨论 第9章 DAG计算框架Tez 9.1 背景 9.2 Tez数据处理引擎 9.2.1 Tez编程模型 9.2.2 Tez数据处理引擎 9.3 DAG Master实现 9.3.1 DAG编程模型 9.3.2 MR到DAG转换 9.3.3 DAGAppMaster 9.4 优化机制 9.4.1 当前YARN框架存在的问题 9.4.2 Tez引入的优化技术 9.5 Tez应用场景 9.6 与其他系统比较 9.7 小结 第10章 实时/内存计算框架Storm/Spark 10.1 Hadoop MapReduce的短板 10.2 实时计算框架Storm 10.2.1 Storm编程模型 10.2.2 Storm基本架构 10.2.3 Storm On YARN 10.3 内存计算框架Spark 10.3.1 Spark编程模型 10.3.2 Spark基本架构 10.3.3 Spark On YARN 10.3.4 Spark/Storm On YARN比较 10.4 小结 第四部分 高级篇 第11章 Facebook Corona剖析 11.1 概述 11.1.1 Corona的基本架构 11.1.2 Corona的RPC协议与序列化框架 11.2 Corona设计特点 11.2.1 推式网络通信模型 11.2.2 基于Hadoop 0.20版本 11.2.3 使用Thrift 11.2.4 深度集成Fair Scheduler 11.3 工作流程介绍 11.3.1 作业提交 11.3.2 资源申请与任务启动 11.4 主要模块介绍 11.4.1 ClusterManager 11.4.2 CoronaJobTracker 11.4.3 CoronaTaskTracker 11.5 小结 第12章 Apache Mesos剖析 12.1 概述 12.2 底层网络通信库 12.2.1 libprocess基本架构 12.2.2 一个简单示例 12.3 Mesos服务 12.3.1 SchedulerProcess 12.3.2 Mesos Master 12.3.3 Mesos Slave 12.3.4 ExecutorProcess 12.4 Mesos工作流程 12.4.1 框架注册过程 12.4.2 Framework Executor注册过程 12.4.3 资源分配到任务运行过程 12.4.4 任务启动过程 12.4.5 任务状态更新过程 12.5 Mesos资源分配策略 12.5.1 Mesos资源分配框架 12.5.2 Mesos资源分配算法 12.6 Mesos容错机制 12.6.1 Mesos Master容错 12.6.2 Mesos Slave容错 12.7 Mesos应用实例 12.7.1 Hadoop On Mesos 12.7.2 Storm On Mesos 12.8 Mesos与YARN对比 12.9 小结 第13章 YARN总结与发展趋势 13.1 资源管理系统设计动机 13.2 资源管理系统架构演化 13.2.1 集中式架构 13.2.2 双层调度架构 13.2.3 共享状态架构 13.3 YARN发展趋势 13.3.1 YARN自身的完善 13.3.2 以YARN为核心的生态系统 13.3.3 YARN周边工具的完善 13.4 小结 附录A YARN安装指南 附录B YARN配置参数介绍 附录C Hadoop Shell命令介绍 附录D 参考资料 收起全部↑ 精彩书摘   第1章 环境准备   一般而言,在深入研究一个系统的技术细节之前,先要进行一些基本的准备工作,比如准备源代码阅读环境,搭建运行环境并尝试使用该系统等。然而,对于Hadoop而言,由于它是一个分布式系统,由多种守护进程组成,具有一定的复杂性,如果想深入学习其设计原理,仅仅进行以上几项准备工作是不够的,还要学习一些调试工具的使用方法,以便对Hadoop源代码进行调试、跟踪,边用边学,这样才能事半功倍。   本章编写目的是帮助读者构建一个“高效”的Hadoop源代码学习环境,包括Hadoop源代码阅读环境、Hadoop使用环境和Hadoop源代码编译调试环境等,主要涉及如下内容:   在Linux环境下搭建Hadoop源代码阅读环境;   在Linux环境下搭建一个Hadoop集群(包括YARN和HDFS两个系统);   Hadoop的基本使用方法,主要涉及HadoopShell和Eclipse插件两种工具的使用;   Hadoop源代码编译和调试方法,其中调试方法包括使用Eclipse远程调试和打印调试日志两种。   考虑到大部分用户在单机上学习Hadoop源代码,所以本章内容均是基于单机环境的。本章大部分内容较为基础,已经掌握这部分内容的读者可以直接跳过本章。   1.1准备学习环境   对于大部分公司而言,实验和生产环境中的服务器集群部署的是Linux操作系统,考虑到Linux在服务器市场中具有统治地位,Hadoop从一开始便是基于Linux操作系统开发的,因而对Linux有非常完美的支持。尽管Hadoop采用了具有跨平台特性的Java作为主要编程语言,但由于它的一些功能实现用到了Linux操作系统相关的技术,因而对其他平台支持不够友好,且没有进行过严格测试。换句话说,其他操作系统(如Windows)仅可作为开发环境,不可作为生产环境。对于学习源代码而言,操作系统的选择显得不是非常重要,读者可根据个人爱好自行决定。本节以64bitLinux为例,介绍如何在单机上准备Hadoop源代码学习环境。   …… 收起全部↑ 前言/序言   为什么要写这本书   在互联网巨头的带动下,开源软件Hadoop的应用变得越来越广泛,目前互联网、金融、银行、零售等行业均在使用或者尝试使用Hadoop。IDC对未来几年中国的预测中就专门提到了大数据,其认为未来几年,会有越来越多的企业级用户试水大数据平台和应用,而这之中,Hadoop将成为最耀眼的“明星”。   尽管Hadoop整个生态系统是开源的,但由于它包含的软件种类过多,且版本升级过快,大部分公司,尤其是一些中小型公司,难以在有限的时间内快速掌握Hadoop蕴含的价值。此外,Hadoop自身版本的多样化也给很多研发人员带来了很大的学习负担,尽管当前市面上已有很多参考书籍,但遗憾的是,能够深入剖析Hadoop内部实现细节的书籍少之又少,而本书则尝试弥补这一缺憾。本书是笔者继《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》之后的又一本剖析Hadoop内幕的书籍。   本书介绍的YARN(Yet Another Resource Negotiator)系统是Hadoop 2.0新增加的一个子项目(与Common、MapReduce和HDFS三个分支并列),它的引入使得分布式计算系统进入平台化时代,即各种计算框架可以运行在一个集群中,由资源管理系统进行统一管理和调度,它们共享整个集群中的资源进而提高资源利用率。   本书以Hadoop 2.0为基础,从基本概念、程序设计和内部实现等方面深入剖析了Hadoop YARN。本书重点分析了

2017-08-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除