辰辰爸的博客

持续关注前沿大数据技术,立志做一个优秀的大数据架构师!

排序:
默认
按更新时间
按访问量

Java并发之ReentrantLock详解

一、入题        ReentrantLock是Java并发包中互斥锁,它有公平锁和非公平锁两种实现方式,以lock()为例,其使用方式为: ReentrantLock takeLock = new ReentrantLock(); // 获取锁 takeLock.lock()...

2016-08-08 21:03:58

阅读数:14965

评论数:6

MapReduce源码分析之LocatedFileStatusFetcher

LocatedFileStatusFetcher通过多线程的方式,实现了针对给定输入路径数组,使用配置的线程数目来获取数据块位置的核心功能。它通过google的可监听并发技术ListenableFuture、ListeningExecutorService,实现了两层级别的子任务的并发执行、结果监...

2016-04-20 14:05:10

阅读数:8532

评论数:0

HDFS源码分析之LightWeightGSet

LightWeightGSet是名字节点NameNode在内存中存储全部数据块信息的类BlocksMap需要的一个重要数据结构,它是一个占用较低内存的集合的实现,它使用一个数组存储元素,数组中存储的元素实际上是一个链表,这样,综合利用了数组、链表的优势,取长补短、相互促进。它利用long类型的bl...

2016-04-14 16:38:31

阅读数:6575

评论数:1

HDFS源码分析心跳汇报之BPServiceActor工作线程运行流程

在《HDFS源码分析心跳汇报之数据结构初始化》一文中,我们了解到HDFS心跳相关的BlockPoolManager、BPOfferService、BPServiceActor三者之间的关系,并且知道最终HDFS的心跳是通过BPServiceActor线程实现的。那么,这个BPServiceActo...

2016-03-19 17:22:01

阅读数:1460

评论数:0

HDFS源码分析心跳汇报之数据块增量汇报

数据块增量汇报是负责向NameNode发送心跳信息工作线程BPServiceActor中周期性的一个工作,它负责向NameNode及时汇报DataNode节点上数据块的变化情况,比如数据块正在接收、已接收或者已被删除。它的工作周期要小于正常的数据块汇报,目的就是为了能够让NameNode及时掌握D...

2016-03-19 11:36:48

阅读数:2016

评论数:0

HBase源码分析之MemStore的flush发起时机、判断条件等详情(二)

在《HBase源码分析之MemStore的flush发起时机、判断条件等详情》一文中,我们详细介绍了MemStore flush的发起时机、判断条件等详情,主要是两类操作,一是会引起MemStore数据大小变化的Put、Delete、Append、Increment等操作,二是会引起HRegion...

2016-03-07 17:04:46

阅读数:3501

评论数:0

HBase源码分析之HRegionServer上MemStore的flush处理流程(一)

在《HBase源码分析之HRegion上MemStore的flsuh流程(一)》、《HBase源码分析之HRegion上MemStore的flsuh流程(二)》等文中,我们介绍了HRegion上Memstore flush的主体流程和主要细节。但是,HRegion只是HBase表中按照行的方向对一...

2016-02-29 22:27:24

阅读数:2452

评论数:0

HBase源码分析之HRegion上MemStore的flsuh流程(二)

继上篇《HBase源码分析之HRegion上MemStore的flsuh流程(一)》之后,我们继续分析下HRegion上MemStore flush的核心方法internalFlushcache(),它的主要流程如图所示:         其中,internalFlushcache()方法的代码如...

2016-02-25 23:31:47

阅读数:3952

评论数:2

HBase源码分析之HRegion上MemStore的flsuh流程(一)

HRegion中,有两个关于关闭的状态标志位成员变量,分别定义如下: final AtomicBoolean closed = new AtomicBoolean(false); final AtomicBoolean closing = new AtomicBoolean(false); 为...

2016-02-25 21:21:36

阅读数:3878

评论数:0

HBase行锁原理及实现

请带着如下问题阅读本文。        1、什么是行锁?        2、HBase行锁的原理是什么?        3、HBase行锁是如何实现的?         三、HBase行锁的实现         HBase的行锁主要是通过HRegion的两个内部类实现的,其中一个是RowLoc...

2016-02-20 23:41:50

阅读数:5518

评论数:5

Hhadoop-2.7.0中HDFS写文件源码分析(二):客户端实现之DFSPacket

一、简介      HDFS在数据传输过程中,针对数据块Block,不是整个block进行传输的,而是将block切分成一个个的数据包进行传输。而DFSPacket就是HDFS数据传输过程中对数据包的抽象。二、实现      HDFS客户端在往DataNodes节点写数据时,会以数据包packet...

2016-12-20 17:18:52

阅读数:1433

评论数:0

Hhadoop-2.7.0中HDFS写文件源码分析(二):客户端实现(1)

一、综述      HDFS写文件是整个Hadoop中最为复杂的流程之一,它涉及到HDFS中NameNode、DataNode、DFSClient等众多角色的分工与合作。      首先上一段代码,客户端是如何写文件的:Configuration conf = new Configuration(...

2016-12-19 16:12:57

阅读数:2841

评论数:1

Hadoop-2.7.0中HDFS NameNode HA实现之DFSZKFailoverController、ZKFailoverController(一)

一、简介      DFSZKFailoverController是Hadoop-2.7.0中HDFS NameNode HA实现的中心组件,它负责整体的故障转移控制等。它是一个守护进程,通过main()方法启动,继承自ZKFailoverController。二、实现流程      1、启动  ...

2016-12-14 14:40:29

阅读数:5897

评论数:1

Hadoop-2.7.0中HDFS NameNode HA实现综述

一、原理      HDFS中NameNode等的HA是基于ZooKeeper实现的。它应用了ZooKeeper集群的如下功能或特性:      1、只要半数以上节点还存活,就继续能对外提供服务;      2、ZooKeeper通过Paxos算法提供了leader选举功能,其它follower ...

2016-12-14 14:39:58

阅读数:2036

评论数:0

Hadoop-2.7.0 HA实现细节分析之HealthMonitor

一、HealthMonitor是什么      HealthMonitor是一个周期性工作的后台线程,它在一个循环中周期性的同HA服务进行心跳,负责跟踪NameNode服务的健康状况,并在健康状况变化时调用failover控制器的回调方法。二、HealthMonitor是如何实现的      1、...

2016-12-11 11:54:26

阅读数:936

评论数:0

Java源码分析之CountDownLatch

一、CountDownLatch介绍       CountDownLatch是一种同步手段,允许一个或者更多的线程等待,直到在其他线程正在执行的一组操作完成。给定count数目后CountDownLatch被初始化。await()方法阻塞,直到由于调用countDown()方法,当前count值...

2016-12-10 12:26:49

阅读数:468

评论数:0

堆排序之Java实现

一、堆排序算法① 先将初始文件R[1..n]建成一个大根堆,此堆为初始的无序区② 再将关键字最大的记录R[1](即堆顶)和无序区的最后一个记录R[n]交换,由此得到新的无序区R[1..n-1]和有序区R[n],且满足R[1..n-1].keys≤R[n].key③由于交换后新的根R[1]可能违反堆...

2016-12-09 14:01:04

阅读数:394

评论数:0

Java设计模式之单例模式

一、懒汉模式package com.pengli.designmode.singleton; public class Singleton1 { // 私有静态变量 // 需要 用volatile修饰 private static volatile Singleton1 singleto...

2016-12-09 10:05:38

阅读数:362

评论数:0

冒泡排序之Java实现

一、冒泡排序算法      1、 比较相邻的元素。如果第一个比第二个大,就交换他们两个。      2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。      3、针对所有的元素重复以上的步骤,除了最后一个。      4、持续每次对越来越少的...

2016-12-09 09:40:27

阅读数:468

评论数:0

Hadoop-2.7.0 HDFS DataXceiverServer两个参数的疑问

1、TcpPeerServer的数据接收缓冲区大小        Hadoop-2.7.0的DataXceiverServer中,在DataNode中对其初始化时,会构造一个TcpPeerServer,并设置数据接收缓冲区大小如下:tcpPeerServer.setReceiveBufferSiz...

2016-12-07 18:46:21

阅读数:618

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭