<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[王小禾]]></title><description><![CDATA[who can block you ?]]></description><link>https://blog.csdn.net/answer100answer</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; answer100answer]]></copyright><item><title><![CDATA[[DN优化] [锁优化][HDFS-15160] ReplicaMap, Disk Balancer and others use datanode readlock]]></title><link>https://blog.csdn.net/answer100answer/article/details/123719527</link><guid>https://blog.csdn.net/answer100answer/article/details/123719527</guid><author>answer100answer</author><pubDate>Thu, 24 Mar 2022 19:40:15 +0800</pubDate><description><![CDATA[背景
现在我们已经引入了HDFS-15150，我们可以开始改进一些DN操作来使用读锁而不是写入锁来提高并发。
第一步是对Replicamap进行更改

ReplicaMap：一些方法会调用replicmap .replicas()(例如getBlockReports, getFinalizedBlocks, deepCopyReplica)，并且只以只读方式使用，所以它们也可以切换到使用readLock。

接下来是目录扫描仪和磁盘均衡器，只需要读锁。

Disk Balancer, Directory S]]></description><category></category></item><item><title><![CDATA[[DN优化] [锁优化] [HDFS-15150] Introduce read write lock to Datanode]]></title><link>https://blog.csdn.net/answer100answer/article/details/123715058</link><guid>https://blog.csdn.net/answer100answer/article/details/123715058</guid><author>answer100answer</author><pubDate>Thu, 24 Mar 2022 16:41:36 +0800</pubDate><description><![CDATA[分析
背景：DN性能优化的一部分
目标：AutoCloseableLock 改为 ReadWriteLock
知识回顾：假设在程序中定义一个共享的数据结构，它大部分时间提供读服务，而写操作占有的时间很少，但是写操作完成之后的更新需要对后续的读服务可见。在没有写操作的时候，两个线程同时读一个资源没有任何问题，所以应该允许多个线程能在同时读取共享资源。但是如果有一个线程想去写这些共享资源，就不应该再有其它线程对该资源进行读或写（也就是说：读-读能共存，读-写不能共存，写-写不能共存）。这就需要一个读/写锁来解决]]></description><category></category></item><item><title><![CDATA[Lock基础]]></title><link>https://blog.csdn.net/answer100answer/article/details/123707344</link><guid>https://blog.csdn.net/answer100answer/article/details/123707344</guid><author>answer100answer</author><pubDate>Thu, 24 Mar 2022 14:51:18 +0800</pubDate><description><![CDATA[Lock基础|并发编程的艺术内容]]></description><category></category></item><item><title><![CDATA[[iceberg]3-spark调用iceberg入口分析]]></title><link>https://blog.csdn.net/answer100answer/article/details/120673644</link><guid>https://blog.csdn.net/answer100answer/article/details/120673644</guid><author>answer100answer</author><pubDate>Sat, 09 Oct 2021 16:21:53 +0800</pubDate><description><![CDATA[以sql调用来分析：


			[hadoop@10 ~]$ spark-sql --masterlocal\

			--conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \

			--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkSessionCatalog \

			--co..]]></description><category></category></item><item><title><![CDATA[[iceberg]2-hivecatalog]]></title><link>https://blog.csdn.net/answer100answer/article/details/120524906</link><guid>https://blog.csdn.net/answer100answer/article/details/120524906</guid><author>answer100answer</author><pubDate>Tue, 28 Sep 2021 11:07:02 +0800</pubDate><description><![CDATA[spark-sql --master local \
--driver-java-options "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5060" \
--conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \
--conf spark.sql.catalog.my_catalog=org.]]></description><category></category></item><item><title><![CDATA[[iceberg]1-环境]]></title><link>https://blog.csdn.net/answer100answer/article/details/120483782</link><guid>https://blog.csdn.net/answer100answer/article/details/120483782</guid><author>answer100answer</author><pubDate>Sun, 26 Sep 2021 10:43:26 +0800</pubDate><description><![CDATA[环境

hadoop客户端
spark包
hivemetastore（可选）

使用spark时的两点配置：

在$SPARK_HOME/conf/spark-env.sh中配置：

HADOOP_HOME=/home/ec2-user/hadoop-current
HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop/


如果使用metastore，需要在$SPARK_HOME/conf/hive-site.xml中配置metastore的地址。


...]]></description><category></category></item><item><title><![CDATA[HDFS副本和块状态]]></title><link>https://blog.csdn.net/answer100answer/article/details/116796099</link><guid>https://blog.csdn.net/answer100answer/article/details/116796099</guid><author>answer100answer</author><pubDate>Fri, 14 May 2021 16:49:07 +0800</pubDate><description><![CDATA[在NameNode看来，块(Block)主要有以下4种状态：
// HdfsServerConstants
  enum BlockUCState {
    COMPLETE,
    UNDER_CONSTRUCTION,
    UNDER_RECOVERY,
    COMMITTED
  }

在DataNode看来，块(Block)应该称为“副本 (Replica)”比较合适，在DataNode种，副本主要有以下5种状态：
  enum ReplicaState {
    /** Replic]]></description><category></category></item><item><title><![CDATA[HDFS中的优秀的设计模式]]></title><link>https://blog.csdn.net/answer100answer/article/details/113938974</link><guid>https://blog.csdn.net/answer100answer/article/details/113938974</guid><author>answer100answer</author><pubDate>Mon, 22 Feb 2021 14:57:57 +0800</pubDate><description><![CDATA[1.[HDFS-14854]的代码改造：从一个单工作类，改造成可备选的工作类的方式。

]]></description><category></category></item><item><title><![CDATA[java工程打包通用篇]]></title><link>https://blog.csdn.net/answer100answer/article/details/113740631</link><guid>https://blog.csdn.net/answer100answer/article/details/113740631</guid><author>answer100answer</author><pubDate>Sun, 07 Feb 2021 14:31:19 +0800</pubDate><description><![CDATA[说明
本文针对一般的java工程，包括tomcat、springboot、普通的java -jar启动的工程的打包方式说明。

]]></description><category></category></item><item><title><![CDATA[1. 编写YARN应用程序]]></title><link>https://blog.csdn.net/answer100answer/article/details/113729354</link><guid>https://blog.csdn.net/answer100answer/article/details/113729354</guid><author>answer100answer</author><pubDate>Sat, 06 Feb 2021 18:59:48 +0800</pubDate><description><![CDATA[参考：http://dongxicheng.org/mapreduce-nextgen/how-to-write-an-yarn-applicationmaster/

1. 概述
YARN是一个资源管理系统，负责集群资源的管理和分配。如果想要将一个新的应用程序运行在YARN之上，通常需要编写两个组件：

客户端
ApplicationMaster

由于这两个组件编写非常复杂，尤其ApplicationMaster，需要考虑RPC调用、任务容错等细节，所以，往往由专业的开发人员编写这两个组件，并提供给上.]]></description><category></category></item><item><title><![CDATA[ZKFC原理解析]]></title><link>https://blog.csdn.net/answer100answer/article/details/113590690</link><guid>https://blog.csdn.net/answer100answer/article/details/113590690</guid><author>answer100answer</author><pubDate>Wed, 03 Feb 2021 11:44:30 +0800</pubDate><description><![CDATA[本文参考自：HDFS高可用（HA）之ZKFC详解


Zookeeper 只需要用3台机器启动zookeeper集群即可。无特殊之处。见：zookeeper服务配置及启动 ，ZK本文不阐述。
ZKFC（ZKFailoverController）用于对NameNode状态进行控制 。


FC是要和NN一一对应的，两个NN就要部署两个FC。它负责监控NN的状态，并及时的把状态信息写入ZK。它通过一个独立线程周期性的调用NN上的一个特定接口来获取NN的健康状态。FC也有选择谁作为Active NN的权利，因为.]]></description><category></category></item><item><title><![CDATA[HDFS EC Reconstruction]]></title><link>https://blog.csdn.net/answer100answer/article/details/113138700</link><guid>https://blog.csdn.net/answer100answer/article/details/113138700</guid><author>answer100answer</author><pubDate>Mon, 25 Jan 2021 20:33:06 +0800</pubDate><description><![CDATA[hdfs ec重构块的代码设计巧妙，本文总结其设计思想。

]]></description><category></category></item><item><title><![CDATA[HDFS中的优秀的多线程设计]]></title><link>https://blog.csdn.net/answer100answer/article/details/113137711</link><guid>https://blog.csdn.net/answer100answer/article/details/113137711</guid><author>answer100answer</author><pubDate>Mon, 25 Jan 2021 20:22:08 +0800</pubDate><description><![CDATA[关于ThreadPoolExecutor、ExecutorCompletionService等多线程设计在HDFS中得到了淋漓尽致的应用。本文总结HDFS中的优秀的多线程的设计，学习其设计思想。
1.HDFS Hedged Read :两个线程多数据，谁先读到用谁的，其他线程取消。

...]]></description><category></category></item><item><title><![CDATA[ExecutorService与CompletionService(ExecutorCompletionService)使用与探究]]></title><link>https://blog.csdn.net/answer100answer/article/details/113119893</link><guid>https://blog.csdn.net/answer100answer/article/details/113119893</guid><author>answer100answer</author><pubDate>Mon, 25 Jan 2021 16:42:26 +0800</pubDate><description><![CDATA[好文链接

深度剖析好文：“既生 ExecutorService, 何生 CompletionService？”
ExecutorCompletionService的使用和实现

1.重大差异：

ExecutorService submit()的结果是Future， Future get() 方法的致命缺陷：如果 Future 结果没有完成，调用 get() 方法，程序会阻塞在那里，直至获取返回结果。
CompletionService 可以做到获取最先执行完的任务结果。

2.使用方式：

execut]]></description><category></category></item><item><title><![CDATA[一文总结线程池ThreadPoolExecutor]]></title><link>https://blog.csdn.net/answer100answer/article/details/113063114</link><guid>https://blog.csdn.net/answer100answer/article/details/113063114</guid><author>answer100answer</author><pubDate>Sat, 23 Jan 2021 23:37:15 +0800</pubDate><description><![CDATA[文章目录1. 概述2. 线程池核心设计与实现
参考文献：

Java线程池实现原理及其在美团业务中的实践
java并发编程的艺术

1. 概述
好处
使用线程池可以带来一系列好处：

降低资源消耗：通过池化技术重复利用已创建的线程，降低线程创建和销毁造成的损耗。
提高响应速度：任务到达时，无需等待线程创建即可立即执行。
提高线程的可管理性：线程是稀缺资源，如果无限制创建，不仅会消耗系统资源，还会因为线程的不合理分布导致资源调度失衡，降低系统的稳定性。使用线程池可以进行统一的分配、调优和监控。
提供更多更强大]]></description><category></category></item><item><title><![CDATA[zookeeper服务配置及启动]]></title><link>https://blog.csdn.net/answer100answer/article/details/109466591</link><guid>https://blog.csdn.net/answer100answer/article/details/109466591</guid><author>answer100answer</author><pubDate>Tue, 03 Nov 2020 11:51:05 +0800</pubDate><description><![CDATA[zookeeper-3.4.10进行配置，zookeeper安装启动]]></description><category></category></item><item><title><![CDATA[记一次HDFS死锁问题的排查]]></title><link>https://blog.csdn.net/answer100answer/article/details/109272900</link><guid>https://blog.csdn.net/answer100answer/article/details/109272900</guid><author>answer100answer</author><pubDate>Mon, 26 Oct 2020 16:28:01 +0800</pubDate><description><![CDATA[背景
离线HDFS集群在执行hdfs dfsadmin -refreshNamenodes hostname:50020向新的NameSpace注册的过程中，出现&gt;10个DataNode节点发生死锁的情况，发生概率约1‰。本文用于记录该问题的排除过程及解决办法。
基础回顾
java中，无论是使用synchronized关键字隐式地获取锁再释放锁，还是使用Lock接口（以及相关实现类）显示地调用lock()/unlock()方法，都能达到锁功能的目的。而死锁是两个甚至多个线程被永久阻塞时的一种运行局面，]]></description><category></category></item><item><title><![CDATA[关于线程池ConnectionPool的临时记录]]></title><link>https://blog.csdn.net/answer100answer/article/details/108054749</link><guid>https://blog.csdn.net/answer100answer/article/details/108054749</guid><author>answer100answer</author><pubDate>Mon, 17 Aug 2020 14:22:29 +0800</pubDate><description><![CDATA[hadoop中router就是自己实现线程池来维护响应线程，来响应请求的。
package org.apache.hadoop.hdfs.server.federation.router;
public class ConnectionPool {

  protected ConnectionContext getConnection() {

    this.lastActiveTime = Time.now();

    // Get a connection from the pool foll]]></description><category></category></item><item><title><![CDATA[HDFS Hedged Read]]></title><link>https://blog.csdn.net/answer100answer/article/details/107668089</link><guid>https://blog.csdn.net/answer100answer/article/details/107668089</guid><author>answer100answer</author><pubDate>Wed, 29 Jul 2020 16:14:45 +0800</pubDate><description><![CDATA[Hedged reads是HDFS的一个功能，在Hadoop 2.4.0之后引入。一般来说，每个读请求都会由生成的一个线程处理。在Hedged reads 启用后，客户端可以等待一个预配置的时间，如果read没有返回，则客户端会生成第二个读请求，访问同一份数据的另一个block replica之后，其中任意一个read 先返回的话，则另一个read请求则被丢弃。
Hedged reads使用的场景是：解决少概率的slow read（可能由瞬时错误导致，例如磁盘错误或是网络抖动等）。
客户端hedged读两个]]></description><category></category></item><item><title><![CDATA[节点间scp写数据慢与close_wait关系的排查]]></title><link>https://blog.csdn.net/answer100answer/article/details/107664439</link><guid>https://blog.csdn.net/answer100answer/article/details/107664439</guid><author>answer100answer</author><pubDate>Wed, 29 Jul 2020 14:53:42 +0800</pubDate><description><![CDATA[close_wait是关闭连接过程中的正常状态，但是正常情况下close_wait的状态很快就会转换所以很难被捕捉到。所以如果你能发现大批量的close_wait基本可以确定是出问题了]]></description><category></category></item></channel></rss>