HBaseCon 2012 | Learning HBase Internals - Lars Hofhansl, Salesforce

Cloudera, Inc.
Cloudera, Inc.Cloudera, Inc.
HBase Internals
       Lars Hofhansl
Architect @ Salesforce.com
     HBase Committer
HBase Internals
  A.K.A. Get ready to:
Agenda
•   Overview
•   Scanning
•   Atomicity/MVCC
•   Updates
– Put/Delete
• Code!
A sparse, consistent,
distributed, multi-dimensional,
    persistent, sorted map.
HBaseCon 2012 | Learning HBase Internals - Lars Hofhansl, Salesforce
In the end it comes down to a
sorting problem.
How do you sort 1PB with 16GB
of memory?

         756329184


       756   329   184


       567   239   148

 123456789
Overview
• All changes collected/sorted in memory
• Periodically flushed to HDFS
  – Writes to disk are batched
• HFiles periodically compacted into larger files
• Scanning/Compacting: Merge Sort
HBaseCon 2012 | Learning HBase Internals - Lars Hofhansl, Salesforce
HDFS Directory Hierarchy
/hbase
  /-ROOT-
  /.META.
  /.logs
  /<table1>
    /<region>
      [/.recovered_logs]
      /<column family>
        /<HFile>           Storage is per CF
        /...
        /... 
      /<column family>
        /...
  /<table2>
     ... 
 
Scanning

• "Log Structured Mergetrees"
• Multiway mergesort
• Efficient scanning/seeking

/Region
 |
 |
 +--/CF
  |
  |
  +--/HFile
KeyValueHeap
• Maintains PriorityQueue of “lower” Scanners
• TopScanner in the Queue has the next KV
Scanning

• "Log Structured Mergetrees"
• Multiway mergesort
• Efficient scanning/seeking

/Region
 |
 |
 +--/CF
  |
  |
  +--/HFile
Updates

• All changes are written to the WAL first
• All changes are written to memory (the "MemStore")
• MemStores are flushed to disk (creating a new HFile)
• HFiles are periodically and asynchronously compacted into
  fewer files.
• HFiles are immutable
ROW Atomicity

• Snapshot isolation and locking (per row)
   o Row is locked while memory is changed
   o Each row-update "creates" a new snapshot
   o Each row-read sees exactly one snapshot
• Done with MultiVersionConcurrencyControl (MVCC)
Locking
• All KVs for a “row” are co-located in a region
• Locks are per row
• Stored in-memory at region server
MultiVersionConcurrencyControl


Wikipedia: "implement updates not by deleting an old piece of data
 and overwriting it with a new one, but instead by marking the old
 data as obsolete and adding the newer version"


                   Note that HBase calls it
               MultiVersionConsistencyControl
MVCC writing
• Each write gets a monotonically increasing
  "writenumber“
• Each KV written is tagged with this writenumber
  (called memstoreTS in HBase)
• "Committing" a writenumber:
   – wait for all prior writes to finish
   – set the current readpoint to the writenumber
MVCC reading
• Each read reads as of a "readpoint“
  – Filters KVs with a newer memstoreTS
• This is per regionserver (cheap in memory data
  structures)
   – if regionserver dies, current read is lost anyway
• but... "writenumbers" are persisted to disk
   – for scanners that outlive a Memstore flush
HBaseCon 2012 | Learning HBase Internals - Lars Hofhansl, Salesforce
MVCC
• Reader do not lock
• Transaction are committed strictly serially
• HBase has no client demarcated transactions
  – A transaction does not outlive an RPC
Anatomy of an "update"

–   Acquire a MVCC "writenumber"
–   Lock the "row" (the row-key)
–   Tag all KVs with the writenumber
–   Write change to the WAL and sync to file system
–   Apply update in memory ("Memstore")
–   Unlock "row"
–   Roll MVCC forward -> now change is visible
–   If Memstore reaches configurable size, take a snapshot, flush it
    to disk (asynchronously)
Anatomy of an "update"
                      Puts are optimized

– Acquire a MVCC "writenumber"
– Lock the "row" (the row-key)
– Tag all KVs with the writenumber
– Write change to the WAL and sync to file system
– Apply update in memory ("Memstore")
– Unlock "row"
   o 5.5 sync WAL to HDFS without the row lock held
       If that fails undo changes in Memstore
       that works because changes are not visible, yet
– Roll MVCC forward -> now change is visible
– If Memstore reaches configurable size, take a snapshot, flush it
  to disk (asynchronously)
Anatomy of an "update"
               Puts are optimized, and batched

– Acquire a MVCC "writenumber"
– lock as many "rows" as possible
– Tag all KVs with the writenumber
– write all changes to the WAL and sync to file system
– apply all updates in memory ("Memstore")
– unlock all "rows"
   o 5.5 sync WAL to HDFS without the row locks held
        If that fails undo changes in Memstore
        that works because changes are not visible, yet
– roll MVCC forward -> now changes are visible
– if Memstore reaches configurable size, take a snapshot, flush it
  to disk (asynchronously)
Undo
•   In-memory only
•   Changes are not visible until MVCC is rolled
•   Changes are tagged with the writenumber
•   Undo removes KVs tagged with the writenumber
Deletes

•   Nothing is deleted in place.
•   a Delete sets a "tombstone marker" with a timestamp
•   upon compaction deleted KeyValues are removed
•   upon major compactions the tombstones are removed
•   Three different tombstone marker scopes (all within a row)
     o version - mark a specific version of a column as deleted
     o column - mark all versions of a column as deleted
     o column family - mark all versions of all columns of a column
       family as deleted
Deletes, cont
• Delete markers always sort before KVs
• A scanner remembers markers it encounters
• Each KV is checked against remembered
  markers
• Only one-pass is required for scanning
• Deletes are just KVs stored in HFiles
Let’s look at some code!
MVCC
MultiVersionConsistencyControl.java

  public WriteEntry beginMemstoreInsert() {
    synchronized (writeQueue) {
      long nextWriteNumber = ++memstoreWrite;
      WriteEntry e = new WriteEntry(nextWriteNumber);
      writeQueue.add(e);
      return e;
    }                              Acquire a new Writenumber
  }
 
 public void completeMemstoreInsert(WriteEntry e) {
    advanceMemstore(e);
    waitForRead(e);           Roll forward the readpoint
  }  

                    Wait for prior transactions to finish
MultiVersionConsistencyControl.java
  boolean advanceMemstore(WriteEntry e) {
    synchronized (writeQueue) {
      e.markCompleted();

      long nextReadValue = -1;
      while (!writeQueue.isEmpty()) {
        WriteEntry queueFirst = writeQueue.getFirst();
        ...
        if (queueFirst.isCompleted()) {
          nextReadValue = queueFirst.getWriteNumber();
          writeQueue.removeFirst();
        } else {                      Roll forward completed
          break;                      transactions. Ordering is
        }                             preserved.
      }
      ...
MultiVersionConsistencyControl.java
        ...
      if (nextReadValue > 0) {
        synchronized (readWaiters) {
          memstoreRead = nextReadValue;
          readWaiters.notifyAll();
        }                               Notify later transactions
      }
      if (memstoreRead >= e.getWriteNumber()) {
        return true;
      }
      return false;
    }
  }
MultiVersionConsistencyControl.java

  public void waitForRead(WriteEntry e) {
    boolean interrupted = false;
    synchronized (readWaiters) {
      while (memstoreRead < e.getWriteNumber()) {
        try {
          readWaiters.wait(0);
        } catch (InterruptedException ie) {
          interrupted = true;
        }                         Wait until write entry was
      }                           applied.
    }
    if (interrupted) Thread.currentThread().interrupt();
  }
Scanning
RegionScanner, creation

   
   RegionScannerImpl(Scan scan,
      List<KeyValueScanner> additionalScanners) {
      ...
      IsolationLevel isolationLevel = scan.getIsolationLevel();
      synchronized(scannerReadPoints) {
        if (isolationLevel == IsolationLevel.READ_UNCOMMITTED) {
          // This scan can read even uncommitted transactions
          this.readPt = Long.MAX_VALUE;
          MVCC.setThreadReadPoint(this.readPt);
        } else {
          this.readPt = MVCC.resetThreadReadPoint(mvcc);
        }
        scannerReadPoints.put(this, this.readPt);
      }                                             MVCC protocol
      ...
RegionScanner
                Get all StoreScanners
      ...
      for (Map.Entry<byte[], NavigableSet<byte[]>> entry :
          scan.getFamilyMap().entrySet()) {
        Store store = stores.get(entry.getKey());
        StoreScanner scanner = store.getScanner(...);
        scanners.add(scanner);
      }
      this.storeHeap = new KeyValueHeap(scanners, comparator);
    }


                                   Heap of StoreScanners
RegionScanner, cont.

    public synchronized boolean next(
        List<KeyValue> outResults, int limit) {
        ...                                          MVCC
        MVCC.setThreadReadPoint(this.readPt);
        boolean returnResult = nextInternal(limit);
        ... 
    }
    private boolean nextInternal(int limit) throws IOException {
        if (isStopRow(currentRow)) {
          ...
          return false;
        } else {                Get next KV from StoreScanners
          byte [] nextRow;
          do {
            this.storeHeap.next(results, limit - results.size())
          } while (Bytes.equals(currentRow, nextRow =peekRow()));

          final boolean stopRow = isStopRow(nextRow);
      }
      ...
    }
StoreScanner
  public synchronized boolean next(…) {
    ...
    LOOP: while((kv = this.heap.peek()) != null) {
      ScanQueryMatcher.MatchCode qcode = matcher.match(kv);
      switch(qcode) {
        case INCLUDE:
          results.add(kv);         Heap of Memstore/StoreFile scanners
          this.heap.next();
          ...                                         What to do with the   KV:
          continue;
        case DONE_SCAN: ...
                                                      •Versions
        case SEEK_NEXT_ROW:                           •TTL
          reseek(matcher.getKeyForNextRow(kv));
          break;                                      •Deletes
        case SEEK_NEXT_COL: ...
        case SKIP:
          this.heap.next();
          break;
        case SEEK_NEXT_USING_HINT:
          KeyValue nextKV = matcher.getNextKeyHint(kv);
          ...
          reseek(nextKV);
          break;
        ...
      }
    }
  }
Seek Hints
• Allow skipping many KVs without “touching”
• Seek-to(KV) instead of skip, skip, skip, …
• Used internally (for deletes, skipping older
  versions, TTL)
• Used by filters
Memstore Scanner

    public synchronized KeyValue next() {
      if (theNext == null) {
          return null;
      }
                                      KeyValueSkipListSet.iterator()
      final KeyValue ret = theNext;

      // Advance one of the iterators                Snapshot during
      if (theNext == kvsetNextRow) {                 flushes
        kvsetNextRow = getNext(kvsetIt);
      } else {
        snapshotNextRow = getNext(snapshotIt);
      }

      // Calculate the next value
      theNext = getLowest(kvsetNextRow, snapshotNextRow);

      return ret;
    }
Memstore Scanner

 

  protected KeyValue getNext(Iterator<KeyValue> it) {
      long readPoint = MVCC.getThreadReadPoint();

      while (it.hasNext()) {
        KeyValue v = it.next();
                                                    MVCC
        if (v.getMemstoreTS() <= readPoint) {
          return v;
        }
      }

      return null;
    }
Memstore Scanner

    @Override
    public synchronized boolean seek(KeyValue key) {
      ...
      // kvset and snapshot will never be null.
      // if tailSet can't find anything, SortedSet is empty (not 
null).
      kvTail = kvsetAtCreation.tailSet(key);
      snapshotTail = snapshotAtCreation.tailSet(key);

      return seekInSubLists(key);
    }
                                              For seek find the right tailSet
seekInSubLists() almost identical to next()
StoreFileScanner

  private final HFileScanner hfs;
  private KeyValue cur = null;
  ... 
  public KeyValue next() throws IOException {
    KeyValue retKey = cur;

    try {
      // only seek if we aren't at the end.
      // cur == null implies 'end'.
      if (cur != null) {
        hfs.next();
        cur = hfs.getKeyValue();
        skipKVsNewerThanReadpoint();
      }
    } catch(IOException e) {
      throw new IOException("Could not iterate " + this, e);
    }
    return retKey;
  }
HFileScanner/Reader

    @Override
    public boolean next() throws IOException {
      ...
      blockBuffer.position(...);
      ...
      if (blockBuffer.remaining() <= 0) {
        long lastDataBlockOffset =               Still on current block?
reader.getTrailer().getLastDataBlockOffset();

        // read the next block
        HFileBlock nextBlock = readNextDataBlock();
        if (nextBlock == null) {
          return false;
        }

        updateCurrBlock(nextBlock);               If not, read the next block
        return true;
      }

      // We are still in the same block.
      readKeyValueLen();
      return true;              Mark the   next KV in the buffer
    }
Puts
Batch Put
•   private long doMiniBatchPut(BatchOperationInProgress<…> batchOp){
       WALEdit walEdit = new WALEdit();
       ...
       MultiVersionConsistencyControl.WriteEntry w = null;
       ...
       try {
         // STEP 1. Try to acquire as many locks as we can
        // STEP 2. Update any LATEST_TIMESTAMP timestamps
                                             Begin transaction
        // Acquire the latest mvcc number
         w = mvcc.beginMemstoreInsert();

         // STEP 3. Write back to memstore
         for (int i = firstIndex; i < lastIndexExclusive; i++) {
        addedSize += applyFamilyMapToMemstore(familyMaps[i], w);
         }
      // STEP 4. Build WAL edit
         for (int i = firstIndex; i < lastIndexExclusive; i++) {
           addFamilyMapToWALEdit(familyMaps[i], walEdit);
         }
     
Batch Put, cont.
      // STEP 5. Append the edit to WAL. Do not sync wal.
      txid = this.log.appendNoSync(regionInfo, …, walEdit, …);

      // STEP 6. Release row locks, etc.
      this.updatesLock.readLock().unlock();       Write WAL record
      for (Integer toRelease : acquiredLocks) {   but don’t sync!
         releaseRowLock(toRelease);
      }                                Guard against concurrent flushes
      // STEP 7. Sync wal.
      this.log.sync(txid);

      walSyncSuccessful = true; Sync after locks are released
      // STEP 8. Advance mvcc.
      // This will make this put visible to scanners and getters.
      if (w != null) {
        mvcc.completeMemstoreInsert(w);
        w = null;
      }
                                              Commit
      ...
      return addedSize;
    }
Batch Put, something went wrong
    } finally {
         if (!walSyncSuccessful) {
           rollbackMemstore(batchOp, familyMaps,
                            firstIndex, lastIndexExclusive);
         }
         if (w != null) mvcc.completeMemstoreInsert(w);

        if (locked) {
          this.updatesLock.readLock().unlock();Always complete
        }                                      the transaction!
        for (Integer toRelease : acquiredLocks) {
          releaseRowLock(toRelease);
        }
       ...
      }
Memstore changes

  private long applyFamilyMapToMemstore(
    Map<byte[], List<KeyValue>> familyMap,
    WriteEntry localizedWriteEntry) {
    long size = 0;
    boolean freemvcc = false;           Can  pass a write entry
                                        that spans mutliple calls
    try {
      if (localizedWriteEntry == null) {
        localizedWriteEntry = mvcc.beginMemstoreInsert();
        freemvcc = true;
      }
      for (Map.Entry<…> e : familyMap.entrySet()) { This begins     the
        byte[] family = e.getKey();                  transaction
        List<KeyValue> edits = e.getValue();         (MVCC)
        ...
Memstore changes

                     Tag KV with write number (MVCC)
        ...
        Store store = getStore(family);
        for (KeyValue kv: edits) {
          kv.setMemstoreTS(localizedWriteEntry.getWriteNumber());
          size += store.add(kv);
        }
      }
    } finally {
      if (freemvcc) {
        mvcc.completeMemstoreInsert(localizedWriteEntry);
      }
    }
     return size;
   }                             This makes the changes visible
Deletes
ScanDeleteTracker (checking markers)
  public void add(buffer, qualifierOffset, qualifierLength, ts, type) {
    if (!hasFamilyStamp || ts > familyStamp) {
      if (type == KeyValue.Type.DeleteFamily.getCode()) {
        hasFamilyStamp = true;
        familyStamp = ts;               Only remember TS for family deletes
        return;
      }

      if (deleteBuffer != null && type < deleteType) {
        // same column, so ignore less specific delete
        if (Bytes.equals(deleteBuffer, deleteOffset, deleteLength,
            buffer, qualifierOffset, qualifierLength)){
          return;
        }                                                A version delete
      }                                                  marker can be
      // new column, or more general delete type
      deleteBuffer = buffer;                             ignored if there is   a
      deleteOffset = qualifierOffset;                    column marker
      deleteLength = qualifierLength;
      deleteType = type;                                 already.
      deleteTimestamp = ts;
    }
                                            Remember the KV
    
  }
ScanDeleteTracker (checking markers)
  public DeleteResult isDeleted(buffer, qualifierOffset,qualifierLength, 
timestamp) {
    if (hasFamilyStamp && timestamp <= familyStamp) {
      return DeleteResult.FAMILY_DELETED;                  Family marker case
    }
    if (deleteBuffer != null) {
      int ret = Bytes.compareTo(deleteBuffer, deleteOffset, deleteLength,
          buffer, qualifierOffset, qualifierLength);
      if (ret == 0) {
        if (deleteType == KeyValue.Type.DeleteColumn.getCode()) {
          return DeleteResult.COLUMN_DELETED;
        }
                                                       Column marker case
        // If the timestamp is the same, keep this one
        if (timestamp == deleteTimestamp) {
          return DeleteResult.VERSION_DELETED;
        }                                              Version marker case
        // different timestamp, let's clear the buffer.
        deleteBuffer = null;
      } else if(ret < 0){                        HFiles scanned newest
        // Next column case.                     TS first
        deleteBuffer = null;
      } else {
        throw new IllegalStateException(...);
      }
    }
    return DeleteResult.NOT_DELETED;
  }
Questions?
                 Comments?




More details on http://hadoop-hbase.blogspot.com
1 of 53

Recommended

HBaseCon 2015: HBase Performance Tuning @ Salesforce by
HBaseCon 2015: HBase Performance Tuning @ SalesforceHBaseCon 2015: HBase Performance Tuning @ Salesforce
HBaseCon 2015: HBase Performance Tuning @ SalesforceHBaseCon
6.1K views54 slides
HBase Low Latency by
HBase Low LatencyHBase Low Latency
HBase Low LatencyDataWorks Summit
5.1K views38 slides
Meet hbase 2.0 by
Meet hbase 2.0Meet hbase 2.0
Meet hbase 2.0enissoz
5.3K views43 slides
HBaseCon 2012 | HBase Coprocessors – Deploy Shared Functionality Directly on ... by
HBaseCon 2012 | HBase Coprocessors – Deploy Shared Functionality Directly on ...HBaseCon 2012 | HBase Coprocessors – Deploy Shared Functionality Directly on ...
HBaseCon 2012 | HBase Coprocessors – Deploy Shared Functionality Directly on ...Cloudera, Inc.
7.3K views50 slides
Apache HBase Performance Tuning by
Apache HBase Performance TuningApache HBase Performance Tuning
Apache HBase Performance TuningLars Hofhansl
39.6K views54 slides
HBase 0.20.0 Performance Evaluation by
HBase 0.20.0 Performance EvaluationHBase 0.20.0 Performance Evaluation
HBase 0.20.0 Performance EvaluationSchubert Zhang
3.8K views7 slides

More Related Content

What's hot

HBaseCon 2015: HBase Operations at Xiaomi by
HBaseCon 2015: HBase Operations at XiaomiHBaseCon 2015: HBase Operations at Xiaomi
HBaseCon 2015: HBase Operations at XiaomiHBaseCon
4.5K views35 slides
Apache HBase Low Latency by
Apache HBase Low LatencyApache HBase Low Latency
Apache HBase Low LatencyNick Dimiduk
12K views38 slides
Rigorous and Multi-tenant HBase Performance by
Rigorous and Multi-tenant HBase PerformanceRigorous and Multi-tenant HBase Performance
Rigorous and Multi-tenant HBase PerformanceCloudera, Inc.
2.8K views40 slides
HBase: Where Online Meets Low Latency by
HBase: Where Online Meets Low LatencyHBase: Where Online Meets Low Latency
HBase: Where Online Meets Low LatencyHBaseCon
4.7K views42 slides
HBaseCon 2015: Multitenancy in HBase by
HBaseCon 2015: Multitenancy in HBaseHBaseCon 2015: Multitenancy in HBase
HBaseCon 2015: Multitenancy in HBaseHBaseCon
4.2K views29 slides
HBase Storage Internals by
HBase Storage InternalsHBase Storage Internals
HBase Storage InternalsDataWorks Summit
23.8K views27 slides

What's hot(19)

HBaseCon 2015: HBase Operations at Xiaomi by HBaseCon
HBaseCon 2015: HBase Operations at XiaomiHBaseCon 2015: HBase Operations at Xiaomi
HBaseCon 2015: HBase Operations at Xiaomi
HBaseCon4.5K views
Apache HBase Low Latency by Nick Dimiduk
Apache HBase Low LatencyApache HBase Low Latency
Apache HBase Low Latency
Nick Dimiduk12K views
Rigorous and Multi-tenant HBase Performance by Cloudera, Inc.
Rigorous and Multi-tenant HBase PerformanceRigorous and Multi-tenant HBase Performance
Rigorous and Multi-tenant HBase Performance
Cloudera, Inc.2.8K views
HBase: Where Online Meets Low Latency by HBaseCon
HBase: Where Online Meets Low LatencyHBase: Where Online Meets Low Latency
HBase: Where Online Meets Low Latency
HBaseCon4.7K views
HBaseCon 2015: Multitenancy in HBase by HBaseCon
HBaseCon 2015: Multitenancy in HBaseHBaseCon 2015: Multitenancy in HBase
HBaseCon 2015: Multitenancy in HBase
HBaseCon4.2K views
HBase Blockcache 101 by Nick Dimiduk
HBase Blockcache 101HBase Blockcache 101
HBase Blockcache 101
Nick Dimiduk5.7K views
HBase at Xiaomi by HBaseCon
HBase at XiaomiHBase at Xiaomi
HBase at Xiaomi
HBaseCon6K views
HBaseCon 2013: How to Get the MTTR Below 1 Minute and More by Cloudera, Inc.
HBaseCon 2013: How to Get the MTTR Below 1 Minute and MoreHBaseCon 2013: How to Get the MTTR Below 1 Minute and More
HBaseCon 2013: How to Get the MTTR Below 1 Minute and More
Cloudera, Inc.5K views
HBase: Extreme Makeover by HBaseCon
HBase: Extreme MakeoverHBase: Extreme Makeover
HBase: Extreme Makeover
HBaseCon3.3K views
HBase Low Latency, StrataNYC 2014 by Nick Dimiduk
HBase Low Latency, StrataNYC 2014HBase Low Latency, StrataNYC 2014
HBase Low Latency, StrataNYC 2014
Nick Dimiduk1.8K views
Meet HBase 1.0 by enissoz
Meet HBase 1.0Meet HBase 1.0
Meet HBase 1.0
enissoz8.2K views
HBase Sizing Guide by larsgeorge
HBase Sizing GuideHBase Sizing Guide
HBase Sizing Guide
larsgeorge7.3K views
Apache HBase, Accelerated: In-Memory Flush and Compaction by HBaseCon
Apache HBase, Accelerated: In-Memory Flush and Compaction Apache HBase, Accelerated: In-Memory Flush and Compaction
Apache HBase, Accelerated: In-Memory Flush and Compaction
HBaseCon2.5K views
HBaseCon 2015: Taming GC Pauses for Large Java Heap in HBase by HBaseCon
HBaseCon 2015: Taming GC Pauses for Large Java Heap in HBaseHBaseCon 2015: Taming GC Pauses for Large Java Heap in HBase
HBaseCon 2015: Taming GC Pauses for Large Java Heap in HBase
HBaseCon14.6K views
HBase Application Performance Improvement by Biju Nair
HBase Application Performance ImprovementHBase Application Performance Improvement
HBase Application Performance Improvement
Biju Nair23.5K views
HBase and HDFS: Understanding FileSystem Usage in HBase by enissoz
HBase and HDFS: Understanding FileSystem Usage in HBaseHBase and HDFS: Understanding FileSystem Usage in HBase
HBase and HDFS: Understanding FileSystem Usage in HBase
enissoz74K views
Hug Hbase Presentation. by Jack Levin
Hug Hbase Presentation.Hug Hbase Presentation.
Hug Hbase Presentation.
Jack Levin9.5K views

Viewers also liked

HBaseCon 2013: Deal Personalization Engine with HBase @ Groupon by
HBaseCon 2013: Deal Personalization Engine with HBase @ GrouponHBaseCon 2013: Deal Personalization Engine with HBase @ Groupon
HBaseCon 2013: Deal Personalization Engine with HBase @ GrouponCloudera, Inc.
6K views17 slides
HBaseCon 2013: Evolving a First-Generation Apache HBase Deployment to Second... by
HBaseCon 2013:  Evolving a First-Generation Apache HBase Deployment to Second...HBaseCon 2013:  Evolving a First-Generation Apache HBase Deployment to Second...
HBaseCon 2013: Evolving a First-Generation Apache HBase Deployment to Second...Cloudera, Inc.
4.2K views25 slides
Hadoop Summit 2012 | HBase Consistency and Performance Improvements by
Hadoop Summit 2012 | HBase Consistency and Performance ImprovementsHadoop Summit 2012 | HBase Consistency and Performance Improvements
Hadoop Summit 2012 | HBase Consistency and Performance ImprovementsCloudera, Inc.
4.8K views66 slides
HBaseCon 2012 | Real-time Analytics with HBase - Sematext by
HBaseCon 2012 | Real-time Analytics with HBase - SematextHBaseCon 2012 | Real-time Analytics with HBase - Sematext
HBaseCon 2012 | Real-time Analytics with HBase - SematextCloudera, Inc.
8K views40 slides
Realtime Analytics with Hadoop and HBase by
Realtime Analytics with Hadoop and HBaseRealtime Analytics with Hadoop and HBase
Realtime Analytics with Hadoop and HBaselarsgeorge
20.3K views36 slides
Exploring BigData with Google BigQuery by
Exploring BigData with Google BigQueryExploring BigData with Google BigQuery
Exploring BigData with Google BigQueryDharmesh Vaya
12.4K views28 slides

Viewers also liked(6)

HBaseCon 2013: Deal Personalization Engine with HBase @ Groupon by Cloudera, Inc.
HBaseCon 2013: Deal Personalization Engine with HBase @ GrouponHBaseCon 2013: Deal Personalization Engine with HBase @ Groupon
HBaseCon 2013: Deal Personalization Engine with HBase @ Groupon
Cloudera, Inc.6K views
HBaseCon 2013: Evolving a First-Generation Apache HBase Deployment to Second... by Cloudera, Inc.
HBaseCon 2013:  Evolving a First-Generation Apache HBase Deployment to Second...HBaseCon 2013:  Evolving a First-Generation Apache HBase Deployment to Second...
HBaseCon 2013: Evolving a First-Generation Apache HBase Deployment to Second...
Cloudera, Inc.4.2K views
Hadoop Summit 2012 | HBase Consistency and Performance Improvements by Cloudera, Inc.
Hadoop Summit 2012 | HBase Consistency and Performance ImprovementsHadoop Summit 2012 | HBase Consistency and Performance Improvements
Hadoop Summit 2012 | HBase Consistency and Performance Improvements
Cloudera, Inc.4.8K views
HBaseCon 2012 | Real-time Analytics with HBase - Sematext by Cloudera, Inc.
HBaseCon 2012 | Real-time Analytics with HBase - SematextHBaseCon 2012 | Real-time Analytics with HBase - Sematext
HBaseCon 2012 | Real-time Analytics with HBase - Sematext
Cloudera, Inc.8K views
Realtime Analytics with Hadoop and HBase by larsgeorge
Realtime Analytics with Hadoop and HBaseRealtime Analytics with Hadoop and HBase
Realtime Analytics with Hadoop and HBase
larsgeorge20.3K views
Exploring BigData with Google BigQuery by Dharmesh Vaya
Exploring BigData with Google BigQueryExploring BigData with Google BigQuery
Exploring BigData with Google BigQuery
Dharmesh Vaya12.4K views

Similar to HBaseCon 2012 | Learning HBase Internals - Lars Hofhansl, Salesforce

SQL Server 2014 In-Memory OLTP by
SQL Server 2014 In-Memory OLTPSQL Server 2014 In-Memory OLTP
SQL Server 2014 In-Memory OLTPTony Rogerson
482 views41 slides
Concurrency at the Database Layer by
Concurrency at the Database Layer Concurrency at the Database Layer
Concurrency at the Database Layer mcwilson1
701 views29 slides
Cassandra and drivers by
Cassandra and driversCassandra and drivers
Cassandra and driversBen Bromhead
446 views56 slides
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK) by
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)Jean-François Gagné
1.2K views55 slides
Chicago Kafka Meetup by
Chicago Kafka MeetupChicago Kafka Meetup
Chicago Kafka MeetupCliff Gilmore
771 views30 slides
Kafka Streams: the easiest way to start with stream processing by
Kafka Streams: the easiest way to start with stream processingKafka Streams: the easiest way to start with stream processing
Kafka Streams: the easiest way to start with stream processingYaroslav Tkachenko
6.6K views40 slides

Similar to HBaseCon 2012 | Learning HBase Internals - Lars Hofhansl, Salesforce(20)

SQL Server 2014 In-Memory OLTP by Tony Rogerson
SQL Server 2014 In-Memory OLTPSQL Server 2014 In-Memory OLTP
SQL Server 2014 In-Memory OLTP
Tony Rogerson482 views
Concurrency at the Database Layer by mcwilson1
Concurrency at the Database Layer Concurrency at the Database Layer
Concurrency at the Database Layer
mcwilson1701 views
Cassandra and drivers by Ben Bromhead
Cassandra and driversCassandra and drivers
Cassandra and drivers
Ben Bromhead446 views
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK) by Jean-François Gagné
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
Kafka Streams: the easiest way to start with stream processing by Yaroslav Tkachenko
Kafka Streams: the easiest way to start with stream processingKafka Streams: the easiest way to start with stream processing
Kafka Streams: the easiest way to start with stream processing
Yaroslav Tkachenko6.6K views
Distribute key value_store by drewz lin
Distribute key value_storeDistribute key value_store
Distribute key value_store
drewz lin431 views
Distribute Key Value Store by Santal Li
Distribute Key Value StoreDistribute Key Value Store
Distribute Key Value Store
Santal Li2.2K views
Scylla Summit 2018: Introducing ValuStor, A Memcached Alternative Made to Run... by ScyllaDB
Scylla Summit 2018: Introducing ValuStor, A Memcached Alternative Made to Run...Scylla Summit 2018: Introducing ValuStor, A Memcached Alternative Made to Run...
Scylla Summit 2018: Introducing ValuStor, A Memcached Alternative Made to Run...
ScyllaDB1.3K views
Revisiting CephFS MDS and mClock QoS Scheduler by Yongseok Oh
Revisiting CephFS MDS and mClock QoS SchedulerRevisiting CephFS MDS and mClock QoS Scheduler
Revisiting CephFS MDS and mClock QoS Scheduler
Yongseok Oh403 views
MemSQL 201: Advanced Tips and Tricks Webcast by SingleStore
MemSQL 201: Advanced Tips and Tricks WebcastMemSQL 201: Advanced Tips and Tricks Webcast
MemSQL 201: Advanced Tips and Tricks Webcast
SingleStore2.1K views
Supercharging Content Delivery with Varnish by Samantha Quiñones
Supercharging Content Delivery with VarnishSupercharging Content Delivery with Varnish
Supercharging Content Delivery with Varnish
Samantha Quiñones6.3K views
Recipes for Running Spark Streaming Applications in Production-(Tathagata Das... by Spark Summit
Recipes for Running Spark Streaming Applications in Production-(Tathagata Das...Recipes for Running Spark Streaming Applications in Production-(Tathagata Das...
Recipes for Running Spark Streaming Applications in Production-(Tathagata Das...
Spark Summit13.9K views
Kafka Summit SF 2017 - Kafka Stream Processing for Everyone with KSQL by confluent
Kafka Summit SF 2017 - Kafka Stream Processing for Everyone with KSQLKafka Summit SF 2017 - Kafka Stream Processing for Everyone with KSQL
Kafka Summit SF 2017 - Kafka Stream Processing for Everyone with KSQL
confluent1.1K views
BlueHat v18 || Straight outta v mware - modern exploitation of the svga devic... by BlueHat Security Conference
BlueHat v18 || Straight outta v mware - modern exploitation of the svga devic...BlueHat v18 || Straight outta v mware - modern exploitation of the svga devic...
BlueHat v18 || Straight outta v mware - modern exploitation of the svga devic...
Managing Open vSwitch Across a Large Heterogenous Fleet by andyhky
Managing Open vSwitch Across a Large Heterogenous FleetManaging Open vSwitch Across a Large Heterogenous Fleet
Managing Open vSwitch Across a Large Heterogenous Fleet
andyhky3.6K views
Event Streaming Architectures with Confluent and ScyllaDB by ScyllaDB
Event Streaming Architectures with Confluent and ScyllaDBEvent Streaming Architectures with Confluent and ScyllaDB
Event Streaming Architectures with Confluent and ScyllaDB
ScyllaDB989 views
VMworld 2013: Successfully Virtualize Microsoft Exchange Server by VMworld
VMworld 2013: Successfully Virtualize Microsoft Exchange Server VMworld 2013: Successfully Virtualize Microsoft Exchange Server
VMworld 2013: Successfully Virtualize Microsoft Exchange Server
VMworld5.5K views
HBase Advanced - Lars George by JAX London
HBase Advanced - Lars GeorgeHBase Advanced - Lars George
HBase Advanced - Lars George
JAX London9.9K views

More from Cloudera, Inc.

Partner Briefing_January 25 (FINAL).pptx by
Partner Briefing_January 25 (FINAL).pptxPartner Briefing_January 25 (FINAL).pptx
Partner Briefing_January 25 (FINAL).pptxCloudera, Inc.
109 views55 slides
Cloudera Data Impact Awards 2021 - Finalists by
Cloudera Data Impact Awards 2021 - Finalists Cloudera Data Impact Awards 2021 - Finalists
Cloudera Data Impact Awards 2021 - Finalists Cloudera, Inc.
6.5K views34 slides
2020 Cloudera Data Impact Awards Finalists by
2020 Cloudera Data Impact Awards Finalists2020 Cloudera Data Impact Awards Finalists
2020 Cloudera Data Impact Awards FinalistsCloudera, Inc.
6.3K views43 slides
Edc event vienna presentation 1 oct 2019 by
Edc event vienna presentation 1 oct 2019Edc event vienna presentation 1 oct 2019
Edc event vienna presentation 1 oct 2019Cloudera, Inc.
4.5K views67 slides
Machine Learning with Limited Labeled Data 4/3/19 by
Machine Learning with Limited Labeled Data 4/3/19Machine Learning with Limited Labeled Data 4/3/19
Machine Learning with Limited Labeled Data 4/3/19Cloudera, Inc.
3.6K views36 slides
Data Driven With the Cloudera Modern Data Warehouse 3.19.19 by
Data Driven With the Cloudera Modern Data Warehouse 3.19.19Data Driven With the Cloudera Modern Data Warehouse 3.19.19
Data Driven With the Cloudera Modern Data Warehouse 3.19.19Cloudera, Inc.
2.5K views21 slides

More from Cloudera, Inc.(20)

Partner Briefing_January 25 (FINAL).pptx by Cloudera, Inc.
Partner Briefing_January 25 (FINAL).pptxPartner Briefing_January 25 (FINAL).pptx
Partner Briefing_January 25 (FINAL).pptx
Cloudera, Inc.109 views
Cloudera Data Impact Awards 2021 - Finalists by Cloudera, Inc.
Cloudera Data Impact Awards 2021 - Finalists Cloudera Data Impact Awards 2021 - Finalists
Cloudera Data Impact Awards 2021 - Finalists
Cloudera, Inc.6.5K views
2020 Cloudera Data Impact Awards Finalists by Cloudera, Inc.
2020 Cloudera Data Impact Awards Finalists2020 Cloudera Data Impact Awards Finalists
2020 Cloudera Data Impact Awards Finalists
Cloudera, Inc.6.3K views
Edc event vienna presentation 1 oct 2019 by Cloudera, Inc.
Edc event vienna presentation 1 oct 2019Edc event vienna presentation 1 oct 2019
Edc event vienna presentation 1 oct 2019
Cloudera, Inc.4.5K views
Machine Learning with Limited Labeled Data 4/3/19 by Cloudera, Inc.
Machine Learning with Limited Labeled Data 4/3/19Machine Learning with Limited Labeled Data 4/3/19
Machine Learning with Limited Labeled Data 4/3/19
Cloudera, Inc.3.6K views
Data Driven With the Cloudera Modern Data Warehouse 3.19.19 by Cloudera, Inc.
Data Driven With the Cloudera Modern Data Warehouse 3.19.19Data Driven With the Cloudera Modern Data Warehouse 3.19.19
Data Driven With the Cloudera Modern Data Warehouse 3.19.19
Cloudera, Inc.2.5K views
Introducing Cloudera DataFlow (CDF) 2.13.19 by Cloudera, Inc.
Introducing Cloudera DataFlow (CDF) 2.13.19Introducing Cloudera DataFlow (CDF) 2.13.19
Introducing Cloudera DataFlow (CDF) 2.13.19
Cloudera, Inc.4.9K views
Introducing Cloudera Data Science Workbench for HDP 2.12.19 by Cloudera, Inc.
Introducing Cloudera Data Science Workbench for HDP 2.12.19Introducing Cloudera Data Science Workbench for HDP 2.12.19
Introducing Cloudera Data Science Workbench for HDP 2.12.19
Cloudera, Inc.2.7K views
Shortening the Sales Cycle with a Modern Data Warehouse 1.30.19 by Cloudera, Inc.
Shortening the Sales Cycle with a Modern Data Warehouse 1.30.19Shortening the Sales Cycle with a Modern Data Warehouse 1.30.19
Shortening the Sales Cycle with a Modern Data Warehouse 1.30.19
Cloudera, Inc.1.6K views
Leveraging the cloud for analytics and machine learning 1.29.19 by Cloudera, Inc.
Leveraging the cloud for analytics and machine learning 1.29.19Leveraging the cloud for analytics and machine learning 1.29.19
Leveraging the cloud for analytics and machine learning 1.29.19
Cloudera, Inc.1.6K views
Modernizing the Legacy Data Warehouse – What, Why, and How 1.23.19 by Cloudera, Inc.
Modernizing the Legacy Data Warehouse – What, Why, and How 1.23.19Modernizing the Legacy Data Warehouse – What, Why, and How 1.23.19
Modernizing the Legacy Data Warehouse – What, Why, and How 1.23.19
Cloudera, Inc.2.5K views
Leveraging the Cloud for Big Data Analytics 12.11.18 by Cloudera, Inc.
Leveraging the Cloud for Big Data Analytics 12.11.18Leveraging the Cloud for Big Data Analytics 12.11.18
Leveraging the Cloud for Big Data Analytics 12.11.18
Cloudera, Inc.1.7K views
Modern Data Warehouse Fundamentals Part 3 by Cloudera, Inc.
Modern Data Warehouse Fundamentals Part 3Modern Data Warehouse Fundamentals Part 3
Modern Data Warehouse Fundamentals Part 3
Cloudera, Inc.1.3K views
Modern Data Warehouse Fundamentals Part 2 by Cloudera, Inc.
Modern Data Warehouse Fundamentals Part 2Modern Data Warehouse Fundamentals Part 2
Modern Data Warehouse Fundamentals Part 2
Cloudera, Inc.2.3K views
Modern Data Warehouse Fundamentals Part 1 by Cloudera, Inc.
Modern Data Warehouse Fundamentals Part 1Modern Data Warehouse Fundamentals Part 1
Modern Data Warehouse Fundamentals Part 1
Cloudera, Inc.1.5K views
Extending Cloudera SDX beyond the Platform by Cloudera, Inc.
Extending Cloudera SDX beyond the PlatformExtending Cloudera SDX beyond the Platform
Extending Cloudera SDX beyond the Platform
Cloudera, Inc.966 views
Federated Learning: ML with Privacy on the Edge 11.15.18 by Cloudera, Inc.
Federated Learning: ML with Privacy on the Edge 11.15.18Federated Learning: ML with Privacy on the Edge 11.15.18
Federated Learning: ML with Privacy on the Edge 11.15.18
Cloudera, Inc.2.2K views
Analyst Webinar: Doing a 180 on Customer 360 by Cloudera, Inc.
Analyst Webinar: Doing a 180 on Customer 360Analyst Webinar: Doing a 180 on Customer 360
Analyst Webinar: Doing a 180 on Customer 360
Cloudera, Inc.1.4K views
Build a modern platform for anti-money laundering 9.19.18 by Cloudera, Inc.
Build a modern platform for anti-money laundering 9.19.18Build a modern platform for anti-money laundering 9.19.18
Build a modern platform for anti-money laundering 9.19.18
Cloudera, Inc.1K views
Introducing the data science sandbox as a service 8.30.18 by Cloudera, Inc.
Introducing the data science sandbox as a service 8.30.18Introducing the data science sandbox as a service 8.30.18
Introducing the data science sandbox as a service 8.30.18
Cloudera, Inc.1.2K views

Recently uploaded

Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ... by
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...ShapeBlue
144 views12 slides
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha... by
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...ShapeBlue
138 views18 slides
Initiating and Advancing Your Strategic GIS Governance Strategy by
Initiating and Advancing Your Strategic GIS Governance StrategyInitiating and Advancing Your Strategic GIS Governance Strategy
Initiating and Advancing Your Strategic GIS Governance StrategySafe Software
140 views68 slides
KVM Security Groups Under the Hood - Wido den Hollander - Your.Online by
KVM Security Groups Under the Hood - Wido den Hollander - Your.OnlineKVM Security Groups Under the Hood - Wido den Hollander - Your.Online
KVM Security Groups Under the Hood - Wido den Hollander - Your.OnlineShapeBlue
181 views19 slides
Extending KVM Host HA for Non-NFS Storage - Alex Ivanov - StorPool by
Extending KVM Host HA for Non-NFS Storage -  Alex Ivanov - StorPoolExtending KVM Host HA for Non-NFS Storage -  Alex Ivanov - StorPool
Extending KVM Host HA for Non-NFS Storage - Alex Ivanov - StorPoolShapeBlue
84 views10 slides
Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And... by
Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And...Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And...
Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And...ShapeBlue
63 views12 slides

Recently uploaded(20)

Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ... by ShapeBlue
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...
ShapeBlue144 views
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha... by ShapeBlue
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...
ShapeBlue138 views
Initiating and Advancing Your Strategic GIS Governance Strategy by Safe Software
Initiating and Advancing Your Strategic GIS Governance StrategyInitiating and Advancing Your Strategic GIS Governance Strategy
Initiating and Advancing Your Strategic GIS Governance Strategy
Safe Software140 views
KVM Security Groups Under the Hood - Wido den Hollander - Your.Online by ShapeBlue
KVM Security Groups Under the Hood - Wido den Hollander - Your.OnlineKVM Security Groups Under the Hood - Wido den Hollander - Your.Online
KVM Security Groups Under the Hood - Wido den Hollander - Your.Online
ShapeBlue181 views
Extending KVM Host HA for Non-NFS Storage - Alex Ivanov - StorPool by ShapeBlue
Extending KVM Host HA for Non-NFS Storage -  Alex Ivanov - StorPoolExtending KVM Host HA for Non-NFS Storage -  Alex Ivanov - StorPool
Extending KVM Host HA for Non-NFS Storage - Alex Ivanov - StorPool
ShapeBlue84 views
Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And... by ShapeBlue
Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And...Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And...
Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And...
ShapeBlue63 views
Business Analyst Series 2023 - Week 4 Session 7 by DianaGray10
Business Analyst Series 2023 -  Week 4 Session 7Business Analyst Series 2023 -  Week 4 Session 7
Business Analyst Series 2023 - Week 4 Session 7
DianaGray10126 views
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue by ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlueCloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
ShapeBlue94 views
Import Export Virtual Machine for KVM Hypervisor - Ayush Pandey - University ... by ShapeBlue
Import Export Virtual Machine for KVM Hypervisor - Ayush Pandey - University ...Import Export Virtual Machine for KVM Hypervisor - Ayush Pandey - University ...
Import Export Virtual Machine for KVM Hypervisor - Ayush Pandey - University ...
ShapeBlue79 views
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R... by ShapeBlue
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...
ShapeBlue132 views
Why and How CloudStack at weSystems - Stephan Bienek - weSystems by ShapeBlue
Why and How CloudStack at weSystems - Stephan Bienek - weSystemsWhy and How CloudStack at weSystems - Stephan Bienek - weSystems
Why and How CloudStack at weSystems - Stephan Bienek - weSystems
ShapeBlue197 views
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ... by ShapeBlue
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...
ShapeBlue123 views
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas... by Bernd Ruecker
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
Bernd Ruecker50 views
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue by ShapeBlue
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlueMigrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue
ShapeBlue176 views
Digital Personal Data Protection (DPDP) Practical Approach For CISOs by Priyanka Aash
Digital Personal Data Protection (DPDP) Practical Approach For CISOsDigital Personal Data Protection (DPDP) Practical Approach For CISOs
Digital Personal Data Protection (DPDP) Practical Approach For CISOs
Priyanka Aash153 views
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading... by The Digital Insurer
Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading...
The Power of Heat Decarbonisation Plans in the Built Environment by IES VE
The Power of Heat Decarbonisation Plans in the Built EnvironmentThe Power of Heat Decarbonisation Plans in the Built Environment
The Power of Heat Decarbonisation Plans in the Built Environment
IES VE69 views
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlue by ShapeBlue
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlueVNF Integration and Support in CloudStack - Wei Zhou - ShapeBlue
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlue
ShapeBlue163 views

HBaseCon 2012 | Learning HBase Internals - Lars Hofhansl, Salesforce