namenode需要监听和收集各个datanode的信息,需要在某个端口监听,然后等待datanode发送一些消息过来,同时这个端口也负责收集那些注册到namenode来的datanode的信息(心跳信息中带有其他元数据信息,而不是简单的心跳而已)
由
dfs.namenode.handler.count
这个参数指定namenode机器上有多少个线程来处理datanode过来的请求,这里没有使用线程池技术,而是直接使用new Thread的方法,生成了count个线程。
在RPC监听主程序中使用Proactor网络模式,利用java nio增大并发处理量。
主程序中将接收到的请求构造为Call对象放入到BlockingQueue<Call>队列中,然后由之前生成的handle线程来取出并调用相应的处理类处理。
hadoop里针对网络处理使用的模式都很经典,故在此给出一些模式的参考:
Reactor http://en.wikipedia.org/wiki/Reactor_pattern
Proactor http://en.wikipedia.org/wiki/Proactor_pattern
本想贴几个图来说明这个模式的,发现只有图貌似大家不好理解,故找了几个网上比较好的文章给大家,让大家知道Proactor模式的含义:
http://www.javaworld.com.tw/jute/post/view?bid=44&id=17733&sty=1&tpg=8&age=0
http://cpp.ezbty.org//myfiles/boost/doc/html/boost_asio/overview/core/async.html
其实这个模式的定义以及起源都是源自一本书(POSA2)
Pattern Oriented Software Architecture,
Volume 2
分享到:
相关推荐
2. **jstack+脚本**:通过jstack工具获取NameNode进程中的线程快照,并结合脚本自动化分析这些快照,寻找可能的死锁或阻塞情况。 3. **利用x86 PMU的Profiling工具**:利用Oprofile或Intel Vtune等工具对NameNode...
此外,NameNode还运行着RPC服务器的相关线程,处理来自DataNode、JobTracker或其他客户端的远程调用。这些线程处理各种操作,如文件创建、删除、重命名以及数据块的报告等。 总的来说,这些线程协同工作,确保了...
Hadoop RPC广泛应用于Hadoop生态系统中的各种组件,如HDFS的NameNode与DataNode之间的通信、YARN的ResourceManager与NodeManager之间的交互,以及MapReduce作业的提交和执行等。 总结来说,Hadoop RPC是Hadoop...
在Hadoop中,RPC被用于NameNode和DataNode之间的通信,TaskTracker和JobTracker之间的通信,以及其他各种组件之间的交互。 1. **Java实现RPC**:Java中的RPC实现通常基于Socket编程,包括创建服务器端Socket监听...
RPC(RemoteProcedureCall)——远程过程调用,它是一种通过...具体步骤:处理Call调用负责处理Call队列中的每个调用请求,由Handler线程完成:交互过程如下图所示:图RPC交互过程图这里还需要提到的是,在namenode的高
- **说明**:该变量表示一个处理回收站任务的线程句柄。 - **作用**:定期清理文件系统的回收站目录,释放不再使用的文件或目录资源。 4. **`private int handlerCount = 2;`** - **说明**:定义了服务器请求...
直接通信是指Datanode初始化阶段,会创立Namenode的代理对象,通过RPC调用,将Datanode注册给Namenode,包括存储信息、主机地址、UUID、端口、版本等等。Namenode接收到Datanode信息后,会记录到自己的网络拓扑数据...
1. HealthMonitor 初始化完成之后会启动内部的线程来定时调用对应 NameNode 的 HAServiceProtocol RPC 接口的方法,对 NameNode 的健康状态进行检测。 2. HealthMonitor 如果检测到 NameNode 的健康状态发生变化,会...
meNode.rpc-address.ns1.nn1</name> <value>nn1.hadoop:8020</value> <description>nn1的RPC地址</description> </property> <property> <name>dfs.namenode.rpc-address.ns1.nn2</name> <value>nn2.hadoop:8020...
- **参数定义**: `dfs.namenode.handler.count` 用于设置HDFS NameNode处理来自客户端和DataNode的RPC调用时所使用的线程数。 - **作用**: 这些线程主要用于处理心跳和元数据操作等请求。 - **默认值**: 在Cloudera ...
1.1.1 **Namenode的RPC调用线程数**:Namenode是HDFS的元数据管理节点,负责处理客户端的文件系统操作请求。增加`dfs.namenode.handler.count`参数值可以提高其并发处理能力,但也要注意不要设置过大,以免过多占用...
4. **NameNode RPC 请求处理器线程数** (`dfs.namenode.handler.count`): - 描述:定义 NameNode 处理来自 DataNode 的 RPC 请求的线程数,默认为 10。 - 推荐设置:根据集群 DataNode 数量的 10% 来设置,通常...
- **Mapper任务执行过程**: - 输入文件分片。 - 读取数据。 - 执行自定义Map函数。 - 对键值对排序和分组。 - 输出键值对。 通过以上知识点的详细介绍,可以全面地了解大数据面试中涉及到的主要技术和概念,...
在大数据领域,Hadoop Distributed File System(HDFS)是核心组件之一,用于存储海量数据。本资料"2HDFS 调优篇.zip"聚焦于HDFS的性能优化,这是一项至关重要的任务,因为它直接影响到大数据处理的速度和效率。下面...
Web Service通过标准的XML格式进行通信,服务端通过WSDL(Web服务描述语言)定义接口,客户端使用SOAP(简单对象访问协议)消息与之交互。 **HDFS读取文件过程** 在Hadoop的HDFS中,读取文件首先由NameNode定位数据...
客户端调用这些接口时,实际上是通过IPC/RPC机制与NameNode交互,实现了远程过程调用的功能。 #### 六、总结 通过上述分析可以看出,Hadoop的IPC/RPC机制不仅高效地实现了分布式环境下的进程间通信,还提供了灵活...
- **多线程技术**:深入理解Java中的线程概念、线程生命周期以及线程间通信机制,学习Thread类和Runnable接口的使用方法。 - **Socket网络技术**:掌握基于Java的Socket编程技术,包括客户端和服务端的设计与实现。 ...
一个consumer group处理一个topic中的消息,为了高效的处理方式,一个consumer group中的consumer个数与topic中的partition数相等,保证每个consumer线程只处理一个partition。Kafka支持ACK值设置,用于保证数据的...
- **`dfs.namenode.avoid.read.stale.datanode--false`**:允许名称节点读取陈旧的数据节点,这可能会导致数据一致性问题。 - **`dfs.journalnode.rpc-address--0.0.0.0:8485`**:设置了日志节点RPC地址为任意IP...
- **多线程技术**:探讨Java中的线程生命周期、线程同步、线程池等高级特性。 - **Socket网络技术**:讲解如何利用Java进行网络编程,包括TCP/IP和UDP协议的使用。 - **RegularExpression**:介绍正则表达式的概念和...