Hadoop中NameNode、DataNode、SecondaryNameNode、JobTracker、TaskTracker介绍 问题导读: 1.job的本质是什么? 2.任务的本质是什么? 3.文件系统的Namespace由谁来管理,Namespace的作用是什么? 4.Namespace 镜像文件(Namespace image)和操作日志文件(edit log)文件的作用是什么? 5.Namenode记录着每个文件中各个块所在的数据节点的位置信息,但是他并不持久化存储这些信息,为什么? 6.客户端读写某个数据时,是否通过NameNode? 7.namenode,datanode,Namespace image,Edit log之间的关系是什么? 8.一旦某个task失败了,JobTracker如何处理? 9.JobClient JobClient在获取了JobTracker为Job分配的id之后,会在JobTracker的系统目录(HDFS)下为该Job创建一个单独的目录,目录的名字即是Job的id,该目录下 会包含文件job.xml、job.jar等文件,这两个文件的作用是什么? 10.JobTracker根据什么就能得到这个Job目录? 11.JobTracker提交作业之前,为什么要检查内存? 12....
HBase行锁原理及实现 请带着如下问题阅读本文。 1、什么是行锁? 2、HBase行锁的原理是什么? 3、HBase行锁是如何实现的? 4、HBase行锁是如何应用的? 一、什么是行锁? 我们知道,数据库中存在事务的概念。事务是作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全的不执行。而事务的四大特点即原子性、一致性、分离性和持久性。其中,原子性首当其冲,那么在HBase内部实现其原子性的重要保证是什么呢?答案就是行锁。 什么是行锁呢?顾名思义,它就是加在行上的一把锁。在它未释放该行前,最起码其他访问者是无法对该行做修改的,即要修改的话,必须得获得该行的锁才能拥有修改改行数据的权限,这就是行锁的含义。 二、HBase行锁实现原理 HBase行锁是利用Java并发包concurrent里的CountDownLatch(1)来实现的。它的主要思想就是在服务器端每个访问者单独一个数据处理线程,每个处理线程针对特定行数据修改时必须获得该行的行锁,而其他客户端线程想要修改数据的话,必须等待前面的线程释放锁后才被允许,这就利用了Java并发包中...