摘要: Executors 还有个常用静态方法newCachedThreadPool(),来构造线程池 今天我们其源码实现,探一探究竟 SynchronousQueue 注意这个队列 SynchronousQueue,实际上它不是一个真正的队列,因为它不会为队列中元素维护存储空间。与其他队列不同的是,它维护 阅读全文
posted @ 2018-04-19 11:26 zhixingheyi2016 阅读(1599) 评论(0) 推荐(0)
摘要: Executors 有个常用静态方法newFixedThreadPool(int nThreads),来构造线程池 今天我们其源码实现,探一探究竟 点进去看其实现 corePoolSize、maximumPoolSize 两个值设置为一样,keepAliveTime为空闲线程存活时间,when th 阅读全文
posted @ 2018-04-19 11:26 zhixingheyi2016 阅读(1399) 评论(0) 推荐(0)
摘要: 在DFSClient 中 proxyInfo 用于和NameNode通信的对象 在HA模式下 首先创建 failoverProxyProvider createFailoverProxyProvider方法体如下, 从hadoop 配置文件中读出AbstractNNFailoverProxyProv 阅读全文
posted @ 2018-04-19 11:25 zhixingheyi2016 阅读(579) 评论(0) 推荐(0)
摘要: DFSClient 是应用程序访问hdfs的主要入口类 其方法调用最终通过RPC通信触发服务端响应请求。 以 rename方法为例,介绍整个流程 最终调用namenode 的方法 接下来 看下 namenode 是怎么构造出来的 先介绍两个协议 ClientProtocol协议 该协议定义了和名字节 阅读全文
posted @ 2018-04-19 11:25 zhixingheyi2016 阅读(1318) 评论(0) 推荐(0)
摘要: NameNodeRpcServer 启动监听 clientRpcServer 用于响应 hdfs 客户端的 RPC请求 serviceRpcServer 用于响应 DataNode RPC 请求 此外 NameNodeRpcServer 还实现各种协议接口 看下 clientRpcServer 构造 阅读全文
posted @ 2018-04-12 17:52 zhixingheyi2016 阅读(359) 评论(0) 推荐(0)
摘要: hadoop 2.6 采用 谷歌protocol buffer作为通信协议,但是protocol buffer 相对于Thrift ,需要自己实现一套底层通信框架。 hadoop Server类及其相关类,采用java NIO 及 多reactor 模式,外加多线程,实现了服务端高并发通信,构建了强 阅读全文
posted @ 2018-04-10 17:51 zhixingheyi2016 阅读(145) 评论(0) 推荐(0)
摘要: 先介绍java NIO 网络编程比较重要的四个类 ServerSocketChannel The ServerSocketChannel class has one purpose: to accept incoming connections. You cannot read from, writ 阅读全文
posted @ 2018-04-10 14:17 zhixingheyi2016 阅读(573) 评论(0) 推荐(0)
摘要: FD_ZERO(&set); /*将set的所有位置0,如set在内存中占8位则将set置为00000000*/FD_SET(0, &set); /* 将set的第0位置1,如set原来是00000000,则现在变为10000000,这样fd==1的文件描述字就被加进set中了 */FD_CLR(4 阅读全文
posted @ 2018-04-09 16:29 zhixingheyi2016 阅读(151) 评论(0) 推荐(0)