- 浏览: 96745 次
- 性别:
- 来自: 北京
-
最新评论
-
leibnitz:
这么早就研究源码已经是难得了.你说的第二点能这样说吗:a.会依 ...
Hbase的Region Compact算法实现分析 -
uestzengting:
朝阳之辉 写道你的想法是保证rowkey唯一是吧,我的想法是r ...
HBase bulkload的一个bug定位 -
朝阳之辉:
你的想法是保证rowkey唯一是吧,我的想法是rowkey是可 ...
HBase bulkload的一个bug定位 -
uestzengting:
朝阳之辉 写道你的version是用的时间戳吧,在数据量非常大 ...
HBase bulkload的一个bug定位 -
朝阳之辉:
你的version是用的时间戳吧,在数据量非常大的情况下,怎样 ...
HBase bulkload的一个bug定位
文章列表
利用kill命令转后台执行
先用ps -a找到进程号,再用sudo kill -stop procNumber,将进程暂停。然后再用jobs查看一下要转到后台的进程,找到它的job号,最后用bg jobNumber将其转到后台。大概就像这样:
ps -a
PID TTY TIME CMD
6729 pts/0 00:00:00 mystar
sudo kill -stop 6729
jobs
[2]+ Stopped sudo mystar
bg 2
之后可以用
fg jobNumber把进程调到前台来。
java线程池
Java JDK1.5 线程池使用
一、简介
线程池类为 java.util.concurrent.ThreadPoolExecutor,常用构造方法为:
ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,
long keepAliveTime, TimeUnit unit,
BlockingQueue<Runnable> workQueue,
RejectedExecutionHandler han ...
在HBase bulkload过程中,如果rowkey和version都一致,无法取得最新导入的数据。
问题定位:
在HBase里,如果两个HFile中都有相同rowkey和version的数据,是靠HFile的fileinfo里的MAX_SEQ_ID_KEY来判断哪个文件是最新,MAX_SEQ_ID_KEY
越大的文件越新。
1.通过flush写的HFile文件有往fileinfo里面加MAX_SEQ_ID_KEY
public void appendMetadata(final long maxSequenceId, final boolean majorCompaction)
thro ...
1.查看hfile的内容
hbase org.apache.hadoop.hbase.io.hfile.HFile
usage: HFile [-a] [-f <arg>] [-k] [-m] [-p] [-r <arg>] [-v]
-a,--checkfamily Enable family check
-f,--file <arg> File to scan. Pass full-path; e.g.
hdfs://a:9000/hbase/.META./12/34
-k,--checkr ...
Hbase的Region Compact算法属于一种多路归并的外排算法。这种算法的特点是,待排序文件本身是有序的,同时打开这些文件,顺序遍历并对比它们的首条数据,最后合并输出为一个文件,多个文件遍历时的首条数据用内存堆进行内排。
Hbase在实现该算法的过程中重要的是下面这五个类。
1.org.apache.hadoop.hbase.regionserver.Store
2.org.apache.hadoop.hbase.regionserver.StoreScanner
3.org.apache.hadoop.hbase.regionserver.StoreFileScanner
4.org ...
客户端
1. HbaseAdmin.split(final byte [] tableNameOrRegionName,
final byte [] splitPoint)
这个方法首先判断参数是regionName还是tableName;如果是regionName则只分裂该region,如果是tableName则分裂该表下的所有region
if (isRegionName(tableNameOrRegionName)) {//如果是regionName
// Its a possible region name.
Pair<HRegion ...
1.LoadIncrementalHFiles.doBulkLoad(Path hfofDir, HTable table)
首先用discoverLoadQueue方法扫描出hfofDir下有哪些fhile文件,再循环调用tryLoad方法把每个文件load进去,这是一个串行的过程。
Deque<LoadQueueItem> queue = null;
queue = discoverLoadQueue(hfofDir);
while (!queue.isEmpty()) {
LoadQueueItem item = queu ...
hive文档
https://cwiki.apache.org/confluence/display/Hive/Home
开启本地模式
set hive.exec.mode.local.auto=true;
DDL Operations
创建表
hive> CREATE TABLE pokes (foo INT, bar STRING);
创建表并创建索引字段ds
hive> CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING);
显示所有表
hive> SHOW TABLES;
按正条件 ...
随着Hbase里删除的进行,有些Region的数据会越来越少,而HBase不会主动去回收这些Region,因此会造成Region越来越多。HBase里提供了一个工具类HMerge,直接拿过来用却并不能运行,按照自已对HBase的理解对HMerge稍做修改,使其可以运行。运行时不需要Disable表,但需要注意的是在运行时如果同时往该表里put数据,可能会有问题,改后的代码如下:
/**
* Copyright 2009 The Apache Software Foundation
*
* Licensed to the Apache Software Foundation (ASF) u ...
Hbase HLog源代码阅读笔记
- 博客分类:
- hbase
HLog
当客户端往RegionServer上提交了一个更新操作后,会调用HLog的append方法往WAL上写一个节点,入口方法就是append
1.append
public void append(HRegionInfo info, byte [] tableName, WALEdit edits,
final long now)
throws IOException {
if (edits.isEmpty()) return;
if (this.closed) {
throw new IOException("Cannot appen ...
1.概述
客户端往RegionServer端提交数据的时候,会写WAL日志,只有当WAL日志写成功以后,客户端才会被告诉提交数据成功,如果写WAL失败会告知客户端提交失败,换句话说这其实是一个数据落地的过程。在一个RegionServer上的所有的Region都共享一个HLog,一次数据的提交是先写WAL,再写memstore,示意图如下
2.HLog Class
WAL的实现类是HLog,当一个Region被初始化的时候,一个HLog的实例会作为构造函数的参数传进去。当Region在处理Put、Delete等更新操作时,可以直接使用该共享的HLog的append方法来落地数据。Put、Del ...
客户端
1.HTable.put
for (Put put : puts) {
validatePut(put);//验证Put有效,主要是判断kv的长度
writeBuffer.add(put);//写入缓存
currentWriteBufferSize += put.heapSize();//计算缓存容量
}
if (autoFlush || currentWriteBufferSize > writeBufferSize) {
flushCommits();//如果自动Flush或者缓存到达阀值,则执行flush ...
HBaseHadoopMapreduceXMLApache.bulk-load的作用是用mapreduce的方式将hdfs上的文件装载到hbase中,对于海量数据装载入hbase非常有用,参考http://hbase.apache.org/docs/r0.89.20100621/bulk-loads.html:
hbase提供了现成的程序将hdfs上的文件导入hbase,即bulk-load方式。它包括两个步骤(也可以一次完成):
1 将文件包装成hfile,hadoop jar /path/to/hbase.jar importtsv -Dimporttsv.columns=a,b,c ...
边缘代码略过,核心代码笔记
客户端
1.table_jsp._jspService(HttpServletRequest request, HttpServletResponse response)
调用客户端HBaseAdmin的compact方法来压缩region
//调用HBaseAdmin的功能来完成Region的压缩
HBaseAdmin hbadmin = new HBaseAdmin(conf);
hbadmin.co ...
<context-param>与<init-param>的区别与作用
<context-param>的作用:
web.xml的配置中<context-param>配置作用
1. 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: <listener></listener> 和 <context-param></context-param>2.紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文.3.容器将& ...