
hadoop
文章平均质量分 56
星尘之子
心之所向,素履以往;生如逆旅,一苇以航
展开
-
yarn学习大纲
任务如何启动运行的, 这个是一个大的整体, 涉及RM、NM两大模块NM启动任务的时候 又分为 资源本地化、 任务进程启动、 日志聚合 三大流程(中间贯穿了 各种状态机)yarn的相关概念(application,attempt,container)application的完整流程(提交,创建,运行,结束)yarn中的事件分发与状态机框架RM中的application的状态机RM中的applicationAttempt的状态机RM中的container的状态机RM中的权限管理与k原创 2021-11-12 15:05:41 · 1054 阅读 · 0 评论 -
NN启动测试优化遇到的问题汇总3
2 应用启动优化代码后遇到的问题1.1 优化后的性能反而比优化前差问题场景:改造namenode启动时加载fsimage文件的逻辑,将串行加载改成了并行加载,并行加载启动了4个线程。但是最后测出来的结果却是优化前的耗时更短原因:当时排查了内存、cpu、io,都不是瓶颈,又深入代码层面,模拟由于并行增加的加锁逻辑的耗时,发现即使争用锁会有一点性能消耗,但是无论如何也抵消不了并行带来的性能提升。后来发现了问题所在,我在查看cpu使用率时是通过prometheus采集到的jmx指标,但是忽略了nameno原创 2021-04-30 17:55:28 · 235 阅读 · 1 评论 -
NN启动测试优化遇到的问题汇总2
1.3 文件写入速度明显下降问题场景:在写入5000w文件后,发现之后的写入速度很慢,之前每秒能写六七百个文件,现在每秒只能写几十个文件,甚至个位数的文件。排查CPU、网络和内存都不是瓶颈。原因:在排查datanode的io时,发现了一个奇怪的现象,读io很高(每秒数万个读请求),写io很低(每秒几十个写请求),集群明明一直在写文件,并没有读的操作,怎么会出现如此反常的现象?通过top查看cpu使用率高的几个进程,发现排在前两位的居然是两个du进程,第三位的才是datanode进程。通过查阅资料和阅读原创 2021-04-30 17:54:55 · 699 阅读 · 1 评论 -
NN启动测试优化遇到的问题汇总
hadoop-2.8.51 写文件时遇到的问题1.1 出现大量Under-Replicated Blocks问题场景:写入1000w 4kB大小的文件时,出现大量Under-Replicated的block(默认3副本,大量2副本)。经排查,网络、内存、io和cpu都不是瓶颈。原因:最后定位出和代码中判断DN是否负载过大的逻辑有关。配置项"dfs.namenode.replication.considerLoad"默认为true,代表需要考虑DN的负载情况。NN首先根据放置策略选择放置副本原创 2021-04-30 17:53:41 · 526 阅读 · 1 评论 -
Namenode启动流程优化跟踪
主:14617加载fsimage是单线程的过程分区中创建子分区,每个子分区一个线程测试:316M inodes 35G磁盘数据Threads 1 2 3 4 --------------------------------inodes 448 290 226 189 inode_dir 326 211 170 161 Total 927 651 535 488 (MD5 calculation ab原创 2021-03-21 22:37:20 · 145 阅读 · 0 评论 -
2021-03-11
2.5 watcher和callbackzk客户端和zk集群之间会用到watcher机制,watcher的作用是监控连接变化和节点变化,在这个系统中有两个地方会注册watchernew Zookeeper()构造zk客户端对象时注册的watcher:不是一次性的,只当连接状态变化时被触发zkclient.exists()方法中传入的watcher:这个方法在joinElection尝试创建锁节点或锁节点数据变化后会在monitorActiveStatus()方法中被调用,因为这个watcher是一次原创 2021-03-11 20:23:41 · 104 阅读 · 0 评论 -
2021-03-11
3 切换耗时研究这里的切换耗时指发生HA切换,hadoop不能正常提供服务的时间。3.1 kill ANN切换时间服务不可用起始时间(ANN被kill时):2021-03-09 15:47:18,732 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: RECEIVED SIGNAL 15: SIGTERM切换成功时间(SNN成功切换为ANN时):2021-03-09 15:47:29,661 INFO org.apache.hadoo原创 2021-03-11 20:22:48 · 226 阅读 · 0 评论 -
2021-03-11
2.2 线程模型由上图可以看出,整个系统中有3类线程:主线程:在启动所有服务后开始循环等待HealthMonitor线程:定期检查NN服务状态和健康状况,并在服务状态和健康状态发生变化时与ActiveStandbyElector交互完成HA过程zk客户端线程:监控zookeeper上结点的状态,发生变化时,回调ZKFailoverController的回调函数,通知ZKFailoverController,做出相应的变化2.3 RPC代理对象从上图可以看出,有3类RPC代理对象:pro原创 2021-03-11 20:21:37 · 396 阅读 · 0 评论 -
hadoop ha异常场景解释
正常启动流程:入口为DFSZKFailoverController的main()方法,总体流程在ZKFailoverController类的doRun()方法。在doRun()方法中定义了如下动作:initZK()解析zookeeper的相关配置,构造ActiveStandbyElector对象,在ActiveStandbyElector构造方法中创建了zookeeper集群的客户端对象,连接了zookeeper集群,在zookeeper客户端对象中关联了watch,作用是当连接发生变化或者zno原创 2021-03-07 23:45:00 · 1135 阅读 · 0 评论 -
hadoop2.8.5源码编译(亲测无坑)
1 前期准备1.1 所需软件hadoop-2.8.5-src.tar.gzjdk-8u144-linux-x64.tar.gzapache-maven-3.6.3-bin.tar.gzapache-ant-1.9.15-bin.tar.gzprotobuf-2.5.0.tar.gzopenssl-develncurses-develglibc-headers 和 g++make和cmake下载地址为:1.2 环境配置规划:在/opt下创建两个目录,分别为/opt/softwa原创 2020-11-25 22:58:21 · 382 阅读 · 0 评论 -
HDFS文件目录结构详解
Namenode中主要存储fsimage和editlog文件,Datanode中主要存储数据块blk文件。下面分别介绍Namenode和Datanode中的文件存储结构。文章目录1 Namenode1.1 文件所在位置1 Namenode1.1 文件所在位置文件所在位置由hdfs-site.xml中的配置项dfs.namenode.name.dir配置。这些文件都存于${dfs.namenode.name.dir}/current文件夹下,在dfs.namenode.name.dir配置项中可以配置原创 2020-11-22 09:11:03 · 6503 阅读 · 0 评论 -
yarn日志聚合配置项大全
(1)yarn.log-aggregation-enable:是否开启日志聚合。是否启用日志聚合。 日志聚合在应用程序完成后收集每个容器的日志,并将这些日志移动到文件系统中,例如 HDFS。 用户可以配置“yarn.nodemanager.remote-app-log-dir”和“ yarn.nodemanager.remote-app-log-dir-suffix”属性来确定将这些日志移至何处。 用户可以通过Application Timeline Server访问日志。<property>原创 2020-11-15 09:10:59 · 1691 阅读 · 0 评论 -
RPC服务端Server
源头:1 NameNode的initialize方法中会构造NameNodeRpcServer对象rpcServer,在NameNodeRpcServer构造方法中会构造Server对象。即第1步会调用Server的构造方法。2 NameNode的initialize方法中会调用startCommonService方法,该方法中会调用rpcServer.start(),rpcServer.start()方法又会调用第1步构造的Server对象的start方法。即第2步会调用Server的start方法。原创 2020-11-13 19:08:00 · 1410 阅读 · 0 评论 -
Hadoop RPC详解
文章目录1 定义RPC协议2 实现RPC协议2.1 真实现(服务端)2.2 假实现(客户端)3 client端获得代理对象3.1 NonHA proxy3.2 (todo)HA proxy4 server端启动监听5 总结5 总结 Hadoop中使用RPC的场景很多,比如client和Namenode之间,Namenode和Datanode之间,Namenode和Namenode之间等等。本文只讨论client和Namenode之间的RPC机制,把这一种搞懂了,其它几种也迎刃而解,因为都是同样的道理。H原创 2020-11-07 22:56:55 · 522 阅读 · 0 评论 -
editLog刷盘时机和日志重置
文章目录1 刷盘时机2 日志重置2.1 ANN端触发2.2 SNN端触发2.2.1 EditLogTailerThread线程的启动2.2.2 EditLogTailerThread线程run()方法2.2.2.1 编辑日志重置2.2.2.2 编辑日志追踪3 总结 用户对命名空间的修改(包括创建、删除、写入等)都会被记录到editlog文件中,但一开始是记录在缓冲区的,它是什么情况下从缓冲区刷到磁盘上是我们接下来要讨论的第一个问题,具体见刷盘时机一节。另外,即使我们对命名空间没做任何修改,ANN(Act原创 2020-11-01 15:39:29 · 902 阅读 · 0 评论 -
kerberos认证原理
前几天在给人解释Windows是如何通过Kerberos进行Authentication的时候,讲了半天也别把那位老兄讲明白,还差点把自己给绕进去。后来想想原因有以下两点:对于一个没有完全不了解Kerberos的人来说,Kerberos的整个Authentication过程确实不好理解——一会儿以这个Key进行加密、一会儿又要以另一个Key进行加密,确实很容易把人给弄晕;另一方面是我讲解方式有问题,一开始就从Ker...转载 2020-09-19 17:43:55 · 286 阅读 · 0 评论 -
HDFS租约机制
目录1 租约介绍... 11.1 LeaseManager 11.2 Lease. 21.3 Monitor 21.4 LeaseRenewer 21.5 时间参数... 22 租约恢复... 32.1 recoverLeaseInternal() 32.2 internalReleaseLease() 43 一个场景... 44 注意的点... 5原创 2020-09-05 17:39:02 · 817 阅读 · 0 评论