大数据
文章平均质量分 61
星尘之子
心之所向,素履以往;生如逆旅,一苇以航
展开
-
NN启动测试优化遇到的问题汇总3
2 应用启动优化代码后遇到的问题1.1 优化后的性能反而比优化前差问题场景:改造namenode启动时加载fsimage文件的逻辑,将串行加载改成了并行加载,并行加载启动了4个线程。但是最后测出来的结果却是优化前的耗时更短原因:当时排查了内存、cpu、io,都不是瓶颈,又深入代码层面,模拟由于并行增加的加锁逻辑的耗时,发现即使争用锁会有一点性能消耗,但是无论如何也抵消不了并行带来的性能提升。后来发现了问题所在,我在查看cpu使用率时是通过prometheus采集到的jmx指标,但是忽略了nameno原创 2021-04-30 17:55:28 · 170 阅读 · 1 评论 -
NN启动测试优化遇到的问题汇总2
1.3 文件写入速度明显下降问题场景:在写入5000w文件后,发现之后的写入速度很慢,之前每秒能写六七百个文件,现在每秒只能写几十个文件,甚至个位数的文件。排查CPU、网络和内存都不是瓶颈。原因:在排查datanode的io时,发现了一个奇怪的现象,读io很高(每秒数万个读请求),写io很低(每秒几十个写请求),集群明明一直在写文件,并没有读的操作,怎么会出现如此反常的现象?通过top查看cpu使用率高的几个进程,发现排在前两位的居然是两个du进程,第三位的才是datanode进程。通过查阅资料和阅读原创 2021-04-30 17:54:55 · 584 阅读 · 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 · 383 阅读 · 1 评论 -
2021-03-10
1.8 删除/hadoop-ha/hdfsHACluser节点及其子节点现象:两个Namenode都为Standby状态解释:两个Namenode被kill后,健康状态变为SERVICE_NOT_RESPONDING,运行quitElection方法,删除znode,销毁zookeeper客户端对象两个Namenode重新上线后,HealthMonitor检测到健康状态为HEALTHY,会调用joinElection方法,尝试创建/hadoop-ha/hdfsHACluster/ActiveSta原创 2021-03-10 20:33:05 · 85 阅读 · 0 评论 -
2021-03-10
zk客户端会产生两种类型的watchernew Zookeeper()构造zk客户端对象时注册的watcher:不是一次性的,只当连接状态变化时被触发zkclient.exists(),监控锁节点方法注册的watcher:一次性,当监控节点增(create)、删(delete)、改(set)时被触发3类线程主线程:在启动所有服务后开始循环等待HealthMonitor线程:定期检查NN服务状态和健康状况zk客户端线程:监控zookeeper上结点的状态,发生变化时,回调ZKFailover原创 2021-03-10 20:32:10 · 137 阅读 · 0 评论 -
hadoop ha异常场景解释
正常启动流程:入口为DFSZKFailoverController的main()方法,总体流程在ZKFailoverController类的doRun()方法。在doRun()方法中定义了如下动作:initZK()解析zookeeper的相关配置,构造ActiveStandbyElector对象,在ActiveStandbyElector构造方法中创建了zookeeper集群的客户端对象,连接了zookeeper集群,在zookeeper客户端对象中关联了watch,作用是当连接发生变化或者zno原创 2021-03-07 23:45:00 · 961 阅读 · 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 · 6005 阅读 · 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 · 1536 阅读 · 0 评论 -
HDFS RPC客户端处理流程详解
源头:在ProtobufRpcEngine.Invoker的invoke()方法中会调用client.call()方法。将RPC请求信息封装成一个Call对象创建Connection对象管理客户端和服务端的Socket连接Call对象会放入Connection.calls字段中Connection对象会放入Client.connections字段中以供复用。通过Connection.setupIOstreams()方法建立客户端与服务端的Socket的连接setup原创 2020-11-13 19:03:56 · 392 阅读 · 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 · 778 阅读 · 0 评论 -
kerberos认证原理
前几天在给人解释Windows是如何通过Kerberos进行Authentication的时候,讲了半天也别把那位老兄讲明白,还差点把自己给绕进去。后来想想原因有以下两点:对于一个没有完全不了解Kerberos的人来说,Kerberos的整个Authentication过程确实不好理解——一会儿以这个Key进行加密、一会儿又要以另一个Key进行加密,确实很容易把人给弄晕;另一方面是我讲解方式有问题,一开始就从Ker...转载 2020-09-19 17:43:55 · 208 阅读 · 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 · 747 阅读 · 0 评论