Seminário BigData – Agenda – O que é HBase?



Seminário BigData – Agenda – O que é HBase?

0 0


hbase

Trabalho sobre BigData - HBase. Curso Sistema de Informação PUCRS

On Github raphaelrodrigs / hbase

Seminário BigData

Criado por Rafael Dick , Raphael Rodrigues e Tialles Zerwes

Agenda

O que é o HBase? Quando usar HBase? Características Hadoop e HBase Modelo de Dados da Tabela Arquitetura HBase Scripts Case HBase Facebook

O que é HBase?

Banco de dados dístribuído orientado a colunas e open-source. Foi derivado do Google BigTable. É utilizado para prover acesso real ao Big Data para gravar ou consultar dados. Assim como Bigtable aproveita o armazenamento de dados distribuídos fornecido pelo Google File System, HBase fornece recursos Bigtable-como em cima de Hadoop e HDFS.

Quando usar HBase?

Use Apache HBase quando você precisa em tempo real acesso de leitura / gravação para Big Data. O objetivo dele é a hospedagem de tabelas muito grandes - bilhões de linhas de milhões de colunas - em cima de grupos de hardware commodity.

Características

Orientado a coluna; Flexível; Esparso; Google Big Table; Distribuído; Integra com o Hadoop; Escrito em Java.

Hadoop E HBase

HDFS - Hadoop Distributed File System

Modelo de Dados da Tabela

Linhas e colunas; Celulas da tabela são versionadas por um timestamp; Ordenadas pelo chave da linha; Acesso via Primary Key; Uma atualização em uma linha da tabela bloqueia toda a linha independente do número de colunas.

Exemplo de esquema de tabela no HBase

Arquitetura HBase

HBase escalonado de forma linear, exigindo todas as tabelas para ter uma chave primária. O espaço da chave está dividida em blocos sequenciais que então distribuídas para uma região. RegionServers possui uma ou mais regiões, de modo que a carga é espalhada uniformemente em todo o cluster. Se as chaves dentro de uma região são acessados ​​freqüentemente, HBase pode subdividir ainda mais a região, dividindo-o automaticamente, de modo que sharding manual de dados não é necessário. Servidores Zookeeper e HMaster tornar a informação sobre a topologia de cluster disponíveis para os clientes. Os clientes se conectam a esses e baixar uma lista de RegionServers, as regiões contidas dentro desses RegionServers e os intervalos de chaves hospedados pelas regiões. Os clientes sabem exatamente onde qualquer peça de dados está em HBase e pode contactar o RegionServer diretamente, sem qualquer necessidade de um coordenador central. RegionServers incluem um memstore para armazenar em cache linhas freqüentemente acessados ​​na memória. Opcionalmente, os usuários podem armazenar linhas off-heap, gigabytes de armazenamento em cache de dados, minimizando pausas para coleta de lixo.

Scripts

HBase - Java API

Criando uma tabela

                    
public class CreateTable {
   public static void main(String[] args) throws IOException {
      // Instantiating configuration class
      Configuration con = HBaseConfiguration.create();
      // Instantiating HbaseAdmin class
      HBaseAdmin admin = new HBaseAdmin(con);
      // Instantiating table descriptor class
      HTableDescriptor tableDescriptor = new
      TableDescriptor(TableName.valueOf("emp"));
      // Adding column families to table descriptor
      tableDescriptor.addFamily(new HColumnDescriptor("personal"));
      tableDescriptor.addFamily(new HColumnDescriptor("professional"));
      // Execute the table through admin
      admin.createTable(tableDescriptor);
   }
}
                    
                

Exemplo

Inserindo Dados

                    
public class InsertData{
   public static void main(String[] args) throws IOException {
      // Instantiating Configuration class and Instantiating HTable class
      Configuration config = HBaseConfiguration.create();
      HTable hTable = new HTable(config, "emp");
      // Instantiating Put class accepts a row name.
      Put p = new Put(Bytes.toBytes("row1")); 
      // add values using add() method
      // accepts column family name, qualifier/row name ,value
      p.add(Bytes.toBytes("personal"),Bytes.toBytes("name"),Bytes.toBytes("raju"));
      p.add(Bytes.toBytes("personal"),p.add(Bytes.toBytes("professional"),
      Bytes.toBytes("manager"));
      // Saving the put Instance to the HTable and closing HTable
      hTable.put(p);
      hTable.close();
   }
}
                    
                

Alterando Dados

                    
public class InsertData{
   public static void main(String[] args) throws IOException {
      // Instantiating Configuration class and Instantiating HTable class
      Configuration config = HBaseConfiguration.create();
      HTable hTable = new HTable(config, "emp");
      // Instantiating Put class accepts a row name.
      Put p = new Put(Bytes.toBytes("row1")); 
      // Updating a cell value
      p.add(Bytes.toBytes("personal"),
      Bytes.toBytes("city"),Bytes.toBytes("Delih"));
      // Saving the put Instance to the HTable and closing HTable
      hTable.put(p);
      hTable.close();
   }
}
                    
                

Lendo Dados

                    
public class InsertData{
   public static void main(String[] args) throws IOException {
      // Instantiating Configuration class and Instantiating HTable class
      Configuration config = HBaseConfiguration.create();
      HTable hTable = new HTable(config, "emp");
      // Instantiating Get class
      Get g = new Get(Bytes.toBytes("row1"));
      // Reading the data
      Result result = table.get(g);
      // Reading values from Result class object
      byte [] value = result.getValue(Bytes.toBytes("personal"),
      Bytes.toBytes("name"));
      byte [] value1 = result.getValue(Bytes.toBytes("personal"),
      Bytes.toBytes("city"));
   }
}
                    
                

Deletando Dados

                    
public class InsertData{
   public static void main(String[] args) throws IOException {
      // Instantiating Configuration class and Instantiating HTable class
      Configuration config = HBaseConfiguration.create();
      HTable hTable = new HTable(config, "emp");
      // Instantiating Delete class
      Delete delete = new Delete(Bytes.toBytes("row1"));
      delete.deleteColumn(Bytes.toBytes("personal"), Bytes.toBytes("name"));
      delete.deleteFamily(Bytes.toBytes("professional"));
      // deleting the data
      table.delete(delete);
      // closing the HTable object
      table.close();
   }
}
                    
                

Case com o Facebook

HBase at Facebook

Atualmente todo armazenamento de mensagens no Facebook é feito utilizando o HBase.

Resumo HBase

Orientação: Colunas;

Criação: O HBase foi criado no Powerset em 2007 e então doado para o Apache;

Linguagem de Implementação: Java;

Armazenamento: O HBase fornece capacidades parecidas com as do Bigtable no Hadoop File System;

Open source: Sim, licença Apache;

Uso de Produção: HBase tem sido usado na Adobe desde 2008. Também foi usado no Facebook, Twitter, , World Lingo e no Yahoo!;

Recursos Adicionais: Como o HBase é parte do projeto Hadoop, ele tem uma forte integração com o Hadoop. Existe um conjunto de classes de conveniência que permite que você execute facilmente trabalhos MapReduce.

Livros

Referências

Apache HBase Artigo imaster Hortonworks Tutorials Point Big Data Brazil
0