HBase - Hızlı Kılavuz

1970'den beri RDBMS, veri depolama ve bakımla ilgili sorunlar için bir çözümdür. Büyük verinin ortaya çıkmasından sonra, şirketler büyük veriyi işlemenin faydasını fark etti ve Hadoop gibi çözümleri tercih etmeye başladı.

Hadoop, büyük verileri depolamak için dağıtılmış dosya sistemi ve işlemek için MapReduce kullanır. Hadoop, rastgele, yarı ve hatta yapılandırılmamış gibi çeşitli biçimlerdeki büyük verilerin depolanması ve işlenmesinde üstündür.

Hadoop'un Sınırlamaları

Hadoop yalnızca toplu işlem gerçekleştirebilir ve verilere yalnızca sıralı bir şekilde erişilir. Bu, en basit işler için bile veri setinin tamamının araştırılması gerektiği anlamına gelir.

İşlendiğinde büyük bir veri kümesi, sıralı olarak da işlenmesi gereken başka bir büyük veri kümesiyle sonuçlanır. Bu noktada, tek bir zaman biriminde herhangi bir veri noktasına erişmek için yeni bir çözüme ihtiyaç vardır (rastgele erişim).

Hadoop Rasgele Erişim Veritabanları

HBase, Cassandra, couchDB, Dynamo ve MongoDB gibi uygulamalar, büyük miktarda veri depolayan ve verilere rastgele bir şekilde erişen veri tabanlarından bazılarıdır.

HBase nedir?

HBase, Hadoop dosya sisteminin üzerine inşa edilmiş, dağıtılmış bir sütun yönelimli veritabanıdır. Açık kaynaklı bir projedir ve yatay olarak ölçeklenebilir.

HBase, Google'ın büyük miktarda yapılandırılmış veriye hızlı rastgele erişim sağlamak için tasarlanmış büyük tablosuna benzer bir veri modelidir. Hadoop Dosya Sistemi (HDFS) tarafından sağlanan hata toleransından yararlanır.

Hadoop Dosya Sistemindeki verilere rastgele gerçek zamanlı okuma / yazma erişimi sağlayan Hadoop ekosisteminin bir parçasıdır.

Veriler HDFS'de doğrudan veya HBase aracılığıyla saklanabilir. Veri tüketicisi HBase kullanarak HDFS'deki verileri rastgele okur / bunlara erişir. HBase, Hadoop Dosya Sisteminin üzerine oturur ve okuma ve yazma erişimi sağlar.

HBase ve HDFS

HDFS HBase
HDFS, büyük dosyaları depolamak için uygun dağıtılmış bir dosya sistemidir. HBase, HDFS'nin üzerine kurulmuş bir veritabanıdır.
HDFS hızlı bireysel kayıt aramalarını desteklemez. HBase, daha büyük tablolar için hızlı arama sağlar.
Yüksek gecikmeli toplu işlem sağlar; toplu işleme kavramı yok. Milyarlarca kayıttan tek satırlara düşük gecikmeli erişim sağlar (Rastgele erişim).
Verilere yalnızca sıralı erişim sağlar. HBase dahili olarak Hash tablolarını kullanır ve rastgele erişim sağlar ve verileri daha hızlı aramalar için dizine alınmış HDFS dosyalarında depolar.

HBase'de Depolama Mekanizması

HBase bir column-oriented databaseve içindeki tablolar satırlara göre sıralanır. Tablo şeması, yalnızca anahtar değer çiftleri olan sütun ailelerini tanımlar. Bir tablonun birden çok sütun ailesi vardır ve her sütun ailesinin herhangi bir sayıda sütunu olabilir. Sonraki sütun değerleri diskte bitişik olarak depolanır. Tablonun her hücre değerinin bir zaman damgası vardır. Kısacası, bir HBase'de:

  • Tablo, satırların bir koleksiyonudur.
  • Satır, sütun ailelerinin bir koleksiyonudur.
  • Sütun ailesi bir sütun koleksiyonudur.
  • Sütun, anahtar değer çiftlerinden oluşan bir koleksiyondur.

Aşağıda HBase'deki örnek bir tablo şeması verilmiştir.

Rowid Sütun Ailesi Sütun Ailesi Sütun Ailesi Sütun Ailesi
col1 col2 col3 col1 col2 col3 col1 col2 col3 col1 col2 col3
1
2
3

Sütun Odaklı ve Satır Odaklı

Sütun odaklı veritabanları, veri tablolarını veri satırları yerine veri sütunlarının bölümleri olarak depolayanlardır. Kısaca, sütun aileleri olacak.

Satır Odaklı Veritabanı Sütun Odaklı Veritabanı
Online İşlem Süreci (OLTP) için uygundur. Çevrimiçi Analitik İşleme (OLAP) için uygundur.
Bu tür veritabanları, az sayıda satır ve sütun için tasarlanmıştır. Sütun odaklı veritabanları büyük tablolar için tasarlanmıştır.

Aşağıdaki görüntü, sütun odaklı bir veritabanındaki sütun ailelerini gösterir:

HBase ve RDBMS

HBase RDBMS
HBase şemasızdır, sabit sütun şeması konseptine sahip değildir; yalnızca sütun ailelerini tanımlar. Bir RDBMS, tabloların tüm yapısını açıklayan şeması tarafından yönetilir.
Geniş masalar için yapılmıştır. HBase, yatay olarak ölçeklenebilir. İnce ve küçük masalar için yapılmıştır. Ölçeklemesi zor.
HBase'de işlem yok. RDBMS işlemseldir.
Normalleştirilmiş verilere sahip. Veriler normalleştirilmiş olacaktır.
Yarı yapılandırılmış ve yapılandırılmış veriler için iyidir. Yapılandırılmış veriler için iyidir.

HBase'nin Özellikleri

  • HBase doğrusal olarak ölçeklenebilir.
  • Otomatik arıza desteğine sahiptir.
  • Tutarlı okuma ve yazma sağlar.
  • Hem kaynak hem de hedef olarak Hadoop ile entegre olur.
  • İstemci için kolay java API'sine sahiptir.
  • Kümeler arasında veri replikasyonu sağlar.

HBase Nerede Kullanılır

  • Apache HBase, Büyük Verilere rastgele, gerçek zamanlı okuma / yazma erişimine sahip olmak için kullanılır.

  • Emtia donanım kümelerinin üstünde çok büyük tablolar barındırır.

  • Apache HBase, Google'ın Bigtable'ına göre modellenmiş ilişkisel olmayan bir veritabanıdır. Bigtable, Google Dosya Sisteminde çalışır, aynı şekilde Apache HBase, Hadoop ve HDFS üzerinde çalışır.

HBase Uygulamaları

  • Ağır uygulamalar yazmaya ihtiyaç duyulduğunda kullanılır.
  • HBase, mevcut verilere hızlı rastgele erişim sağlamamız gerektiğinde kullanılır.
  • Facebook, Twitter, Yahoo ve Adobe gibi şirketler dahili olarak HBase kullanır.

HBase Geçmişi

Yıl Etkinlik
Kasım 2006 Google makaleyi BigTable'da yayınladı.
Şubat 2007 İlk HBase prototipi bir Hadoop katkısı olarak oluşturuldu.
Ekim 2007 Hadoop 0.15.0 ile birlikte ilk kullanılabilir HBase piyasaya sürüldü.
Ocak 2008 HBase, Hadoop'un alt projesi oldu.
Ekim 2008 HBase 0.18.1 yayınlandı.
Ocak 2009 HBase 0.19.0 yayınlandı.
Eylül 2009 HBase 0.20.0 yayınlandı.
Mayıs 2010 HBase, Apache'nin üst düzey projesi oldu.

HBase'de tablolar bölgelere ayrılır ve bölge sunucuları tarafından sunulur. Bölgeler dikey olarak sütun ailelerine göre "Mağazalar" a bölünmüştür. Mağazalar HDFS'de dosya olarak kaydedilir. Aşağıda HBase'nin mimarisi gösterilmektedir.

Note: 'Mağaza' terimi, bölgeler için depolama yapısını açıklamak için kullanılır.

HBase'in üç ana bileşeni vardır: istemci kitaplığı, ana sunucu ve bölge sunucuları. Bölge sunucuları ihtiyaca göre eklenebilir veya çıkarılabilir.

MasterServer

Ana sunucu -

  • Bölgeleri bölge sunucularına atar ve bu görev için Apache ZooKeeper'ın yardımını alır.

  • Bölge sunucularında bölgelerin yük dengelemesini yönetir. Meşgul sunucuları kaldırır ve bölgeleri daha az meşgul olan sunuculara kaydırır.

  • Yük dengeleme konusunda görüşerek kümenin durumunu korur.

  • Şema değişikliklerinden ve tabloların ve sütun ailelerinin oluşturulması gibi diğer meta veri işlemlerinden sorumludur.

Bölgeler

Bölgeler, bölge sunucularına bölünmüş ve yayılmış tablolardan başka bir şey değildir.

Bölge sunucusu

Bölge sunucularının şu bölgeleri vardır -

  • Müşteri ile iletişim kurun ve verilerle ilgili işlemleri yönetin.
  • Altındaki tüm bölgeler için okuma ve yazma isteklerini işleyin.
  • Bölge boyutu eşiklerini takip ederek bölgenin büyüklüğüne karar verin.

Bölge sunucusuna daha derinlemesine baktığımızda, aşağıda gösterildiği gibi bölgeleri ve mağazaları içerir:

Depo, bellek deposu ve HFiles içerir. Memstore tıpkı bir önbellek gibidir. HBase'e girilen her şey başlangıçta burada saklanır. Daha sonra veriler aktarılır ve Hfiles'e bloklar halinde kaydedilir ve memstore temizlenir.

Hayvan bakıcısı

  • Zookeeper, yapılandırma bilgilerini koruma, adlandırma, dağıtılmış senkronizasyon sağlama vb. Hizmetler sağlayan açık kaynaklı bir projedir.

  • Zookeeper, farklı bölge sunucularını temsil eden geçici düğümlere sahiptir. Ana sunucular, mevcut sunucuları keşfetmek için bu düğümleri kullanır.

  • Kullanılabilirliğe ek olarak, düğümler ayrıca sunucu hatalarını veya ağ bölümlerini izlemek için kullanılır.

  • İstemciler bölge sunucuları ile zookeeper aracılığıyla iletişim kurar.

  • Sözde ve bağımsız modlarda, HBase kendisi hayvanat bahçesi görevlisi ile ilgilenecektir.

Bu bölüm HBase'in nasıl kurulduğunu ve başlangıçta nasıl yapılandırıldığını açıklar. HBase ile devam etmek için Java ve Hadoop gereklidir, bu nedenle java ve Hadoop'u sisteminize indirip yüklemeniz gerekir.

Kurulum Öncesi Kurulum

Hadoop'u Linux ortamına kurmadan önce, Linux'u kullanarak ssh(Güvenli Kabuk). Linux ortamını kurmak için aşağıda verilen adımları izleyin.

Bir Kullanıcı Oluşturma

Her şeyden önce, Hadoop dosya sistemini Unix dosya sisteminden izole etmek için Hadoop için ayrı bir kullanıcı oluşturmanız önerilir. Bir kullanıcı oluşturmak için aşağıda verilen adımları izleyin.

  • "Su" komutunu kullanarak kökü açın.
  • "Useradd username" komutunu kullanarak kök hesaptan bir kullanıcı oluşturun.
  • Artık "su username" komutunu kullanarak mevcut bir kullanıcı hesabını açabilirsiniz.

Linux terminalini açın ve bir kullanıcı oluşturmak için aşağıdaki komutları yazın.

$ su
password:
# useradd hadoop
# passwd hadoop
New passwd:
Retype new passwd

SSH Kurulumu ve Anahtar Oluşturma

SSH kurulumu, küme üzerinde başlatma, durdurma ve dağıtılmış arka plan programı kabuğu işlemleri gibi farklı işlemler gerçekleştirmek için gereklidir. Farklı Hadoop kullanıcılarının kimliğini doğrulamak için, bir Hadoop kullanıcısı için genel / özel anahtar çifti sağlanması ve bunu farklı kullanıcılarla paylaşması gerekir.

Aşağıdaki komutlar, SSH kullanarak bir anahtar-değer çifti oluşturmak için kullanılır. İd_rsa.pub genel anahtarlarını yetkili_keys'e kopyalayın ve sırasıyla yetkili_keys dosyasına sahip, okuma ve yazma izinlerini verin.

$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 0600 ~/.ssh/authorized_keys

Ssh'yi doğrulayın

ssh localhost

Java yükleme

Java, Hadoop ve HBase için temel ön koşuldur. Öncelikle sisteminizde java varlığını “java-sürümü” kullanarak doğrulamalısınız. Java sürüm komutunun sözdizimi aşağıda verilmiştir.

$ java -version

Her şey yolunda giderse, size aşağıdaki çıktıyı verecektir.

java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b13)
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)

Sisteminizde java kurulu değilse, java yüklemek için aşağıda verilen adımları izleyin.

Aşama 1

Aşağıdaki Oracle Java bağlantısını ziyaret ederek java'yı (JDK <en son sürüm> - X64.tar.gz) indirin .

Sonra jdk-7u71-linux-x64.tar.gz sisteminize indirilecektir.

Adım 2

Genellikle indirilen java dosyasını İndirilenler klasöründe bulacaksınız. Doğrulayın vejdk-7u71-linux-x64.gz aşağıdaki komutları kullanarak dosya.

$ cd Downloads/
$ ls jdk-7u71-linux-x64.gz $ tar zxf jdk-7u71-linux-x64.gz
$ ls
jdk1.7.0_71 jdk-7u71-linux-x64.gz

Aşama 3

Java'yı tüm kullanıcıların kullanımına açmak için, onu "/ usr / local /" konumuna taşımalısınız. Kökü açın ve aşağıdaki komutları yazın.

$ su
password:
# mv jdk1.7.0_71 /usr/local/
# exit

4. adım

Kurulum için PATH ve JAVA_HOME değişkenler, aşağıdaki komutları ekleyin ~/.bashrc dosya.

export JAVA_HOME=/usr/local/jdk1.7.0_71
export PATH= $PATH:$JAVA_HOME/bin

Şimdi tüm değişiklikleri mevcut çalışan sisteme uygulayın.

$ source ~/.bashrc

Adım 5

Java alternatiflerini yapılandırmak için aşağıdaki komutları kullanın:

# alternatives --install /usr/bin/java java usr/local/java/bin/java 2

# alternatives --install /usr/bin/javac javac usr/local/java/bin/javac 2

# alternatives --install /usr/bin/jar jar usr/local/java/bin/jar 2


# alternatives --set java usr/local/java/bin/java

# alternatives --set javac usr/local/java/bin/javac

# alternatives --set jar usr/local/java/bin/jar

Şimdi doğrulayın java -version terminalden komut yukarıda açıklandığı gibi.

Hadoop'u indirme

Java'yı kurduktan sonra Hadoop'u kurmanız gerekir. Öncelikle, aşağıda gösterildiği gibi “Hadoop sürümü” komutunu kullanarak Hadoop'un varlığını doğrulayın.

hadoop version

Her şey yolunda giderse, size aşağıdaki çıktıyı verecektir.

Hadoop 2.6.0
Compiled by jenkins on 2014-11-13T21:10Z
Compiled with protoc 2.5.0
From source with checksum 18e43357c8f927c0695f1e9522859d6a
This command was run using
/home/hadoop/hadoop/share/hadoop/common/hadoop-common-2.6.0.jar

Sisteminiz Hadoop'u bulamıyorsa, sisteminize Hadoop'u indirin. Bunu yapmak için aşağıda verilen komutları izleyin.

Aşağıdaki komutları kullanarak Apache Software Foundation'dan hadoop-2.6.0'ı indirin ve çıkarın .

$ su
password:
# cd /usr/local
# wget http://mirrors.advancedhosters.com/apache/hadoop/common/hadoop-
2.6.0/hadoop-2.6.0-src.tar.gz
# tar xzf hadoop-2.6.0-src.tar.gz
# mv hadoop-2.6.0/* hadoop/
# exit

Hadoop'u Yükleme

Hadoop'u gerekli modlardan herhangi birinde yükleyin. Burada, sözde dağıtılmış kipte HBase işlevlerini gösteriyoruz, bu nedenle Hadoop'u sözde dağıtılmış kipte kuruyoruz.

Kurulum için aşağıdaki adımlar kullanılır Hadoop 2.4.1.

Adım 1 - Hadoop'u Kurma

Aşağıdaki komutları ekleyerek Hadoop ortam değişkenlerini ayarlayabilirsiniz. ~/.bashrc dosya.

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_INSTALL=$HADOOP_HOME

Şimdi tüm değişiklikleri mevcut çalışan sisteme uygulayın.

$ source ~/.bashrc

Adım 2 - Hadoop Yapılandırması

Tüm Hadoop yapılandırma dosyalarını “$ HADOOP_HOME / etc / hadoop” konumunda bulabilirsiniz. Hadoop altyapınıza göre bu yapılandırma dosyalarında değişiklikler yapmanız gerekir.

$ cd $HADOOP_HOME/etc/hadoop

Java'da Hadoop programları geliştirmek için, java ortam değişkenini sıfırlamanız gerekir. hadoop-env.sh değiştirerek dosya JAVA_HOME java'nın sisteminizdeki konumu ile değer.

export JAVA_HOME=/usr/local/jdk1.7.0_71

Hadoop'u yapılandırmak için aşağıdaki dosyaları düzenlemeniz gerekecektir.

core-site.xml

core-site.xml dosyası, Hadoop örneği için kullanılan bağlantı noktası numarası, dosya sistemi için ayrılan bellek, verileri depolamak için bellek sınırı ve Okuma / Yazma arabelleklerinin boyutu gibi bilgileri içerir.

Core-site.xml dosyasını açın ve aşağıdaki özellikleri <configuration> ve </configuration> etiketleri arasına ekleyin.

<configuration>
   <property>
      <name>fs.default.name</name>
      <value>hdfs://localhost:9000</value>
   </property>
</configuration>

hdfs-site.xml

hdfs-site.xml dosyası, Hadoop altyapısını depolamak istediğiniz yerel dosya sistemlerinizin çoğaltma verilerinin değeri, ad kodu yolu ve veri düğümü yolu gibi bilgileri içerir.

Aşağıdaki verileri varsayalım.

dfs.replication (data replication value) = 1
(In the below given path /hadoop/ is the user name.
hadoopinfra/hdfs/namenode is the directory created by hdfs file system.)

namenode path = //home/hadoop/hadoopinfra/hdfs/namenode
(hadoopinfra/hdfs/datanode is the directory created by hdfs file system.)

datanode path = //home/hadoop/hadoopinfra/hdfs/datanode

Bu dosyayı açın ve <configuration>, </configuration> etiketleri arasına aşağıdaki özellikleri ekleyin.

<configuration>
   <property>
      <name>dfs.replication</name >
      <value>1</value>
   </property>
	
   <property>
      <name>dfs.name.dir</name>
      <value>file:///home/hadoop/hadoopinfra/hdfs/namenode</value>
   </property>
	
   <property>
      <name>dfs.data.dir</name>
      <value>file:///home/hadoop/hadoopinfra/hdfs/datanode</value>
   </property>
</configuration>

Note: Yukarıdaki dosyada tüm özellik değerleri kullanıcı tanımlıdır ve Hadoop altyapınıza göre değişiklik yapabilirsiniz.

yarn-site.xml

Bu dosya, ipliği Hadoop'ta yapılandırmak için kullanılır. İplik site.xml dosyasını açın ve aşağıdaki özelliği <configuration $ gt ;, </ configuration $ gt; Bu dosyadaki etiketler.

<configuration>
   <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
   </property>
</configuration>

mapred-site.xml

Bu dosya hangi MapReduce çerçevesini kullandığımızı belirtmek için kullanılır. Varsayılan olarak, Hadoop bir iplik-site.xml şablonu içerir. Öncelikle dosyanın kopyalanması gerekir.mapred-site.xml.template -e mapred-site.xml aşağıdaki komutu kullanarak dosya.

$ cp mapred-site.xml.template mapred-site.xml

Açık mapred-site.xml dosyasını açın ve <configuration> ve </configuration> etiketleri arasına aşağıdaki özellikleri ekleyin.

<configuration>
   <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
   </property>
</configuration>

Hadoop Kurulumunu Doğrulama

Aşağıdaki adımlar Hadoop kurulumunu doğrulamak için kullanılır.

Adım 1 - Ad Düğümü Kurulumu

“Hdfs namenode -format” komutunu kullanarak ad kodunu aşağıdaki gibi ayarlayın.

$ cd ~ $ hdfs namenode -format

Beklenen sonuç aşağıdaki gibidir.

10/24/14 21:30:55 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = localhost/192.168.1.11
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 2.4.1
...
...
10/24/14 21:30:56 INFO common.Storage: Storage directory
/home/hadoop/hadoopinfra/hdfs/namenode has been successfully formatted.
10/24/14 21:30:56 INFO namenode.NNStorageRetentionManager: Going to
retain 1 images with txid >= 0
10/24/14 21:30:56 INFO util.ExitUtil: Exiting with status 0
10/24/14 21:30:56 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at localhost/192.168.1.11
************************************************************/

Adım 2 - Hadoop dfs'yi doğrulama

Aşağıdaki komut dfs'yi başlatmak için kullanılır. Bu komutun yürütülmesi Hadoop dosya sisteminizi başlatacaktır.

$ start-dfs.sh

Beklenen çıktı aşağıdaki gibidir.

10/24/14 21:37:56
Starting namenodes on [localhost]
localhost: starting namenode, logging to /home/hadoop/hadoop-
2.4.1/logs/hadoop-hadoop-namenode-localhost.out
localhost: starting datanode, logging to /home/hadoop/hadoop-
2.4.1/logs/hadoop-hadoop-datanode-localhost.out
Starting secondary namenodes [0.0.0.0]

Adım 3 - İplik Komut Dosyasını Doğrulama

İplik betiğini başlatmak için aşağıdaki komut kullanılır. Bu komutun yürütülmesi iplik daemonlarınızı başlatacaktır.

$ start-yarn.sh

Beklenen çıktı aşağıdaki gibidir.

starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop-
2.4.1/logs/yarn-hadoop-resourcemanager-localhost.out
localhost: starting nodemanager, logging to /home/hadoop/hadoop-
2.4.1/logs/yarn-hadoop-nodemanager-localhost.out

Adım 4 - Tarayıcıda Hadoop'a Erişim

Hadoop'a erişmek için varsayılan bağlantı noktası numarası 50070'tir. Tarayıcınızda Hadoop hizmetlerini almak için aşağıdaki url'yi kullanın.

http://localhost:50070

Adım 5 - Tüm Küme Uygulamalarını Doğrulayın

Kümenin tüm uygulamalarına erişmek için varsayılan bağlantı noktası numarası 8088'dir. Bu hizmeti ziyaret etmek için aşağıdaki url'yi kullanın.

http://localhost:8088/

HBase kurulumu

HBase'i üç moddan herhangi birinde kurabiliriz: Bağımsız mod, Sözde Dağıtılmış mod ve Tam Dağıtılmış mod.

HBase'i Bağımsız Modda Kurmak

HBase formunun en son kararlı sürümünü indirin http://www.interior-dsgn.com/apache/hbase/stable/"wget" komutunu kullanarak ve onu tar "zxvf" komutunu kullanarak çıkarın. Aşağıdaki komuta bakın.

$cd usr/local/ $wget http://www.interior-dsgn.com/apache/hbase/stable/hbase-0.98.8-
hadoop2-bin.tar.gz
$tar -zxvf hbase-0.98.8-hadoop2-bin.tar.gz

Süper kullanıcı moduna geçin ve HBase klasörünü aşağıda gösterildiği gibi / usr / local dizinine taşıyın.

$su
$password: enter your password here
mv hbase-0.99.1/* Hbase/

HBase'i Bağımsız Modda Yapılandırma

HBase ile devam etmeden önce, aşağıdaki dosyaları düzenlemeniz ve HBase'i yapılandırmanız gerekir.

hbase-env.sh

Java Ana Sayfasını HBase için ayarlayın ve açın hbase-env.shconf klasöründen dosya. JAVA_HOME ortam değişkenini düzenleyin ve mevcut JAVA_HOME değişkeninizin mevcut yolunu aşağıda gösterildiği gibi değiştirin.

cd /usr/local/Hbase/conf
gedit hbase-env.sh

Bu HBase'nin env.sh dosyasını açacaktır. Şimdi mevcut olanı değiştirinJAVA_HOME aşağıda gösterildiği gibi mevcut değerinizle değer.

export JAVA_HOME=/usr/lib/jvm/java-1.7.0

hbase-site.xml

Bu, HBase'nin ana yapılandırma dosyasıdır. Veri dizinini / usr / local / HBase içindeki HBase ana klasörünü açarak uygun bir konuma ayarlayın. Conf klasörünün içinde birkaç dosya bulacaksınız,hbase-site.xml dosya aşağıda gösterildiği gibi.

#cd /usr/local/HBase/
#cd conf
# gedit hbase-site.xml

İçinde hbase-site.xmldosyasında <configuration> ve </configuration> etiketlerini bulacaksınız. Bunların içinde, aşağıda gösterildiği gibi, özellik anahtarı altındaki HBase dizinini “hbase.rootdir” adıyla ayarlayın.

<configuration>
   //Here you have to set the path where you want HBase to store its files.
   <property>
      <name>hbase.rootdir</name>
      <value>file:/home/hadoop/HBase/HFiles</value>
   </property>
	
   //Here you have to set the path where you want HBase to store its built in zookeeper  files.
   <property>
      <name>hbase.zookeeper.property.dataDir</name>
      <value>/home/hadoop/zookeeper</value>
   </property>
</configuration>

Bununla HBase kurulum ve konfigürasyon bölümü başarıyla tamamlanmıştır. HBase'i kullanarak başlatabilirizstart-hbase.shHBase'in bin klasöründe sağlanan komut dosyası. Bunun için, HBase Home Folder'ı açın ve aşağıda gösterildiği gibi HBase başlangıç ​​komut dosyasını çalıştırın.

$cd /usr/local/HBase/bin
$./start-hbase.sh

Her şey yolunda giderse, HBase başlatma betiğini çalıştırmaya çalıştığınızda, size HBase'nin başladığını belirten bir mesaj gönderir.

starting master, logging to /usr/local/HBase/bin/../logs/hbase-tpmaster-localhost.localdomain.out

HBase'i Sözde Dağıtılmış Modda Yükleme

Şimdi HBase'in sözde dağıtılmış kipte nasıl kurulduğunu kontrol edelim.

HBase'i Yapılandırma

HBase ile devam etmeden önce, yerel sisteminizde veya uzaktaki bir sistemde Hadoop ve HDFS'yi yapılandırın ve çalıştıklarından emin olun. Çalışıyorsa HBase'i durdurun.

hbase-site.xml

Aşağıdaki özellikleri eklemek için hbase-site.xml dosyasını düzenleyin.

<property>
   <name>hbase.cluster.distributed</name>
   <value>true</value>
</property>

HBase'nin hangi modda çalıştırılması gerektiğini belirtecektir. Yerel dosya sistemindeki aynı dosyada, hdfs: //// URI sözdizimini kullanarak HDFS örnek adresiniz olan hbase.rootdir'i değiştirin. HDFS'yi localhost üzerinde 8030 numaralı bağlantı noktasında çalıştırıyoruz.

<property>
   <name>hbase.rootdir</name>
   <value>hdfs://localhost:8030/hbase</value>
</property>

HBase başlatılıyor

Yapılandırma bittikten sonra, HBase ana klasörüne gidin ve aşağıdaki komutu kullanarak HBase'i başlatın.

$cd /usr/local/HBase
$bin/start-hbase.sh

Note: HBase'i başlatmadan önce, Hadoop'un çalıştığından emin olun.

HDFS'de HBase Dizininin Kontrol Edilmesi

HBase, dizinini HDFS'de oluşturur. Oluşturulan dizini görmek için Hadoop bölmesine gidin ve aşağıdaki komutu yazın.

$ ./bin/hadoop fs -ls /hbase

Her şey yolunda giderse, size aşağıdaki çıktıyı verecektir.

Found 7 items
drwxr-xr-x - hbase users 0 2014-06-25 18:58 /hbase/.tmp
drwxr-xr-x - hbase users 0 2014-06-25 21:49 /hbase/WALs
drwxr-xr-x - hbase users 0 2014-06-25 18:48 /hbase/corrupt
drwxr-xr-x - hbase users 0 2014-06-25 18:58 /hbase/data
-rw-r--r-- 3 hbase users 42 2014-06-25 18:41 /hbase/hbase.id
-rw-r--r-- 3 hbase users 7 2014-06-25 18:41 /hbase/hbase.version
drwxr-xr-x - hbase users 0 2014-06-25 21:49 /hbase/oldWALs

Master'ı Başlatma ve Durdurma

“Local-master-backup.sh” dosyasını kullanarak en fazla 10 sunucu başlatabilirsiniz. HBase, master'ın ana klasörünü açın ve başlatmak için aşağıdaki komutu yürütün.

$ ./bin/local-master-backup.sh 2 4

Bir yedekleme yöneticisini öldürmek için, işlem kimliğine ihtiyacınız vardır ve bu kimlik, adında bir dosyada saklanır “/tmp/hbase-USER-X-master.pid.” yedek yöneticiyi aşağıdaki komutu kullanarak öldürebilirsiniz.

$ cat /tmp/hbase-user-1-master.pid |xargs kill -9

Bölge Sunucularını Başlatma ve Durdurma

Aşağıdaki komutu kullanarak tek bir sistemden birden çok bölge sunucusu çalıştırabilirsiniz.

$ .bin/local-regionservers.sh start 2 3

Bir bölge sunucusunu durdurmak için aşağıdaki komutu kullanın.

$ .bin/local-regionservers.sh stop 3

 

HBaseShell'i Başlatma

HBase'i başarıyla kurduktan sonra, HBase Shell'i başlatabilirsiniz. Aşağıda, HBase kabuğunu başlatmak için izlenecek adımların sırası verilmiştir. Terminali açın ve süper kullanıcı olarak oturum açın.

Hadoop Dosya Sistemini Başlatın

Hadoop home sbin klasörüne göz atın ve aşağıda gösterildiği gibi Hadoop dosya sistemini başlatın.

$cd $HADOOP_HOME/sbin
$start-all.sh

HBase'i başlat

HBase kök dizin kutusu klasörüne göz atın ve HBase'i başlatın.

$cd /usr/local/HBase
$./bin/start-hbase.sh

HBase Master Sunucusunu Başlat

Bu aynı dizin olacak. Aşağıda gösterildiği gibi başlatın.

$./bin/local-master-backup.sh start 2 (number signifies specific
server.)

Bölge Başlat

Bölge sunucusunu aşağıda gösterildiği gibi başlatın.

$./bin/./local-regionservers.sh start 3

HBase Shell'i başlatın

Aşağıdaki komutu kullanarak HBase kabuğunu başlatabilirsiniz.

$cd bin
$./hbase shell

Bu size aşağıda gösterildiği gibi HBase Shell Prompt verecektir.

2014-12-09 14:24:27,526 INFO [main] Configuration.deprecation:
hadoop.native.lib is deprecated. Instead, use io.native.lib.available
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.98.8-hadoop2, r6cfc8d064754251365e070a10a82eb169956d5fe, Fri
Nov 14 18:26:29 PST 2014

hbase(main):001:0>

HBase Web Arayüzü

HBase'in web arayüzüne erişmek için, tarayıcıya aşağıdaki url'yi yazın.

http://localhost:60010

Bu arabirim, şu anda çalışan Bölge sunucularınızı, yedek yöneticilerinizi ve HBase tablolarınızı listeler.

HBase Bölge sunucuları ve Backup Masters

HBase Tabloları

Java Ortamını Ayarlama

Java kitaplıklarını kullanarak da HBase ile iletişim kurabiliriz, ancak HBase'e Java API kullanarak erişmeden önce bu kitaplıklar için sınıf yolu ayarlamanız gerekir.

Sınıf Yolunu Ayarlama

Programlamaya geçmeden önce, sınıf yolunu HBase kitaplıklarına ayarlayın. .bashrcdosya. Açık.bashrc aşağıda gösterildiği gibi herhangi bir editörde.

$ gedit ~/.bashrc

HBase kitaplıkları için sınıf yolunu (HBase'deki lib klasörü) aşağıda gösterildiği gibi ayarlayın.

export CLASSPATH = $CLASSPATH://home/hadoop/hbase/lib/*

Bu, HBase'e java API kullanarak erişirken "sınıf bulunamadı" istisnasını önlemek içindir.

Bu bölüm, HBase ile birlikte gelen HBase etkileşimli kabuğunun nasıl başlatılacağını açıklar.

HBase Kabuğu

HBase, HBase ile iletişim kurabileceğiniz bir kabuk içerir. HBase, verilerini depolamak için Hadoop Dosya Sistemini kullanır. Bir ana sunucuya ve bölge sunucularına sahip olacaktır. Veri depolama bölgeler (tablolar) şeklinde olacaktır. Bu bölgeler bölünecek ve bölge sunucularında saklanacaktır.

Ana sunucu bu bölge sunucularını yönetir ve tüm bu görevler HDFS üzerinde gerçekleşir. Aşağıda HBase Shell tarafından desteklenen komutlardan bazıları verilmiştir.

Genel Komutlar

  • status - HBase'in durumunu, örneğin sunucu sayısını sağlar.

  • version - Kullanılan HBase sürümünü sağlar.

  • table_help - Tablo referans komutları için yardım sağlar.

  • whoami - Kullanıcı hakkında bilgi sağlar.

Veri Tanımlama Dili

HBase'deki tablolarda işleyen komutlardır.

  • create - Bir tablo oluşturur.

  • list - HBase'deki tüm tabloları listeler.

  • disable - Bir tabloyu devre dışı bırakır.

  • is_disabled - Bir tablonun devre dışı bırakılıp bırakılmadığını doğrular.

  • enable - Bir tabloyu etkinleştirir.

  • is_enabled - Bir tablonun etkin olup olmadığını doğrular.

  • describe - Bir tablonun açıklamasını sağlar.

  • alter - Masayı değiştirir.

  • exists - Bir tablonun var olup olmadığını doğrular.

  • drop - HBase'den bir masa düşürür.

  • drop_all - Komutta verilen 'regex' ile eşleşen tabloları düşürür.

  • Java Admin API- Yukarıdaki tüm komutlardan önce Java, programlama yoluyla DDL işlevlerine ulaşmak için bir Yönetici API'si sağlar. Altındaorg.apache.hadoop.hbase.client paket, HBaseAdmin ve HTableDescriptor, bu pakette DDL işlevselliği sağlayan iki önemli sınıftır.

Veri işleme dili

  • put - Belirli bir tablodaki belirli bir satırdaki belirli bir sütuna bir hücre değeri koyar.

  • get - Satır veya hücrenin içeriğini getirir.

  • delete - Tablodaki bir hücre değerini siler.

  • deleteall - Belirli bir satırdaki tüm hücreleri siler.

  • scan - Tablo verilerini tarar ve döndürür.

  • count - Bir tablodaki satır sayısını sayar ve döndürür.

  • truncate - Belirli bir tabloyu devre dışı bırakır, bırakır ve yeniden oluşturur.

  • Java client API - Yukarıdaki tüm komutlardan önce, Java, DML işlevlerine ulaşmak için bir istemci API'si sağlar, CRUD Org.apache.hadoop.hbase.client paketi altında programlama yoluyla (Güncelleme Silme Alma) işlemleri ve daha fazlası. HTable Put ve Get bu paketteki önemli sınıflardır.

HBase Shell'i Başlatma

HBase kabuğuna erişmek için HBase ana klasörüne gitmeniz gerekir.

cd /usr/localhost/
cd Hbase

HBase etkileşimli kabuğunu kullanarak başlatabilirsiniz. “hbase shell” komutu aşağıda gösterildiği gibi.

./bin/hbase shell

HBase'i sisteminize başarıyla kurduysanız, aşağıda gösterildiği gibi size HBase kabuk istemini verir.

HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.94.23, rf42302b28aceaab773b15f234aa8718fff7eea3c, Wed Aug 27
00:54:09 UTC 2014

hbase(main):001:0>

Etkileşimli kabuk komutundan herhangi bir anda çıkmak için exit yazın veya <ctrl + c> tuşlarını kullanın. Devam etmeden önce merminin çalışıp çalışmadığını kontrol edin. Kullanlist bu amaç için komut. ListHBase'deki tüm tabloların listesini almak için kullanılan bir komuttur. Her şeyden önce, aşağıda gösterildiği gibi bu komutu kullanarak sisteminizde HBase kurulumunu ve yapılandırmasını doğrulayın.

hbase(main):001:0> list

Bu komutu yazdığınızda size aşağıdaki çıktıyı verir.

hbase(main):001:0> list
TABLE

HBase'deki genel komutlar status, version, table_help ve whoami'dir. Bu bölüm bu komutları açıklamaktadır.

statü

Bu komut, sistem üzerinde çalışan sunucuların detaylarını içeren sistemin durumunu döndürür. Sözdizimi aşağıdaki gibidir:

hbase(main):009:0> status

Bu komutu yürütürseniz, aşağıdaki çıktıyı döndürür.

hbase(main):009:0> status
3 servers, 0 dead, 1.3333 average load

versiyon

Bu komut, sisteminizde kullanılan HBase sürümünü döndürür. Sözdizimi aşağıdaki gibidir:

hbase(main):010:0> version

Bu komutu yürütürseniz, aşağıdaki çıktıyı döndürür.

hbase(main):009:0> version
0.98.8-hadoop2, r6cfc8d064754251365e070a10a82eb169956d5fe, Fri Nov 14
18:26:29 PST 2014

table_help

Bu komut, tablo referanslı komutların ne ve nasıl kullanılacağı konusunda size yol gösterir. Aşağıda, bu komutu kullanmak için sözdizimi verilmiştir.

hbase(main):02:0> table_help

Bu komutu kullandığınızda, tabloyla ilgili komutlar için yardım konularını gösterir. Aşağıda verilen bu komutun kısmi çıktısıdır.

hbase(main):002:0> table_help
Help for table-reference commands.
You can either create a table via 'create' and then manipulate the table
via commands like 'put', 'get', etc.
See the standard help information for how to use each of these commands.
However, as of 0.96, you can also get a reference to a table, on which
you can invoke commands.
For instance, you can get create a table and keep around a reference to
it via:
 hbase> t = create 't', 'cf'…...

ben kimim

Bu komut HBase'nin kullanıcı ayrıntılarını döndürür. Bu komutu yürütürseniz, aşağıda gösterildiği gibi mevcut HBase kullanıcısını döndürür.

hbase(main):008:0> whoami
hadoop (auth:SIMPLE)
groups: hadoop

HBase java ile yazılmıştır, bu nedenle HBase ile iletişim kurmak için java API sağlar. Java API, HBase ile iletişim kurmanın en hızlı yoludur. Aşağıda, tabloları yönetmek için kullanılan görevleri kapsayan başvurulan java Admin API verilmiştir.

Sınıf HBaseAdmin

HBaseAdminYönetici'yi temsil eden bir sınıftır. Bu sınıf,org.apache.hadoop.hbase.clientpaketi. Bu sınıfı kullanarak bir yöneticinin görevlerini yerine getirebilirsiniz. Yönetici örneğini kullanarakConnection.getAdmin() yöntem.

Yöntemler ve Açıklama

S.No. Yöntemler ve Açıklama
1

void createTable(HTableDescriptor desc)

Yeni bir tablo oluşturur.

2

void createTable(HTableDescriptor desc, byte[][] splitKeys)

Belirtilen bölme tuşlarıyla tanımlanan ilk boş bölge kümesiyle yeni bir tablo oluşturur.

3

void deleteColumn(byte[] tableName, String columnName)

Tablodan bir sütunu siler.

4

void deleteColumn(String tableName, String columnName)

Tablodan bir sütun silin.

5

void deleteTable(String tableName)

Bir tabloyu siler.

Sınıf Tanımlayıcı

Bu sınıf, HBase tablosu hakkında aşağıdaki gibi ayrıntıları içerir:

  • tüm sütun ailelerinin tanımlayıcıları,
  • tablo bir katalog tablosu ise,
  • tablo salt okunursa,
  • mem mağazasının maksimum boyutu,
  • bölge bölünmesi olduğunda,
  • onunla ilişkili ortak işlemciler vb.

İnşaatçılar

S.No. Oluşturucu ve özet
1

HTableDescriptor(TableName name)

Bir TableName nesnesini belirten bir tablo tanımlayıcısı oluşturur.

Yöntemler ve Açıklama

S.No. Yöntemler ve Açıklama
1

HTableDescriptor addFamily(HColumnDescriptor family)

Verilen tanımlayıcıya bir sütun ailesi ekler

HBase Shell kullanarak Tablo Oluşturma

Kullanarak bir tablo oluşturabilirsiniz. createkomutu, burada tablo adını ve Sütun Ailesi adını belirtmelisiniz. syntax HBase kabuğunda bir tablo oluşturmak için aşağıda gösterilmiştir.

create ‘<table name>’,’<column family>’

Misal

Aşağıda, emp adlı bir tablonun örnek bir şeması verilmiştir. İki sütun ailesi vardır: "kişisel veriler" ve "profesyonel veriler".

Satır anahtarı kişisel veri profesyonel veriler

Bu tabloyu aşağıda gösterildiği gibi HBase kabuğunda oluşturabilirsiniz.

hbase(main):002:0> create 'emp', 'personal data', 'professional data'

Ve size aşağıdaki çıktıyı verecektir.

0 row(s) in 1.1300 seconds
=> Hbase::Table - emp

Doğrulama

Tablonun oluşturulup oluşturulmadığını doğrulayabilirsiniz. listkomutu aşağıda gösterildiği gibi. Burada oluşturulan emp tablosunu gözlemleyebilirsiniz.

hbase(main):002:0> list
TABLE 
emp
2 row(s) in 0.0340 seconds

Java API Kullanarak Tablo Oluşturma

HBase'de bir tablo oluşturabilirsiniz. createTable() yöntemi HBaseAdminsınıf. Bu sınıf,org.apache.hadoop.hbase.clientpaketi. Aşağıda, java API kullanarak HBase'de bir tablo oluşturma adımları verilmiştir.

Adım 1: HBaseAdmin'i örnekleyin

Bu sınıf, parametre olarak Configuration nesnesini gerektirir, bu nedenle başlangıçta Configuration sınıfını başlatır ve bu örneği HBaseAdmin'e iletir.

Configuration conf = HBaseConfiguration.create();
HBaseAdmin admin = new HBaseAdmin(conf);

Adım 2: TableDescriptor Oluşturun

HTableDescriptor ait bir sınıftır org.apache.hadoop.hbasesınıf. Bu sınıf, tablo adları ve sütun aileleri içeren bir kap gibidir.

//creating table descriptor
HTableDescriptor table = new HTableDescriptor(toBytes("Table name"));

//creating column family descriptor
HColumnDescriptor family = new HColumnDescriptor(toBytes("column family"));

//adding coloumn family to HTable
table.addFamily(family);

3. Adım: Yönetici aracılığıyla yürütün

Kullanmak createTable() yöntemi HBaseAdmin sınıf, oluşturulan tabloyu Yönetici modunda çalıştırabilirsiniz.

admin.createTable(table);

Aşağıda, yönetici aracılığıyla bir tablo oluşturmak için eksiksiz bir program verilmiştir.

import java.io.IOException;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.TableName;

import org.apache.hadoop.conf.Configuration;

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
      HTableDescriptor(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);
      System.out.println(" Table created ");
   }
}

Yukarıdaki programı aşağıda gösterildiği gibi derleyin ve çalıştırın.

$javac CreateTable.java
$java CreateTable

Aşağıdakiler çıktı olmalıdır:

Table created

HBase Shell kullanarak Tablo Listeleme

list, HBase'deki tüm tabloları listelemek için kullanılan komuttur. List komutunun sözdizimi aşağıda verilmiştir.

hbase(main):001:0 > list

Bu komutu yazıp HBase isteminde çalıştırdığınızda, aşağıda gösterildiği gibi HBase'deki tüm tabloların listesini gösterecektir.

hbase(main):001:0> list
TABLE
emp

Burada emp adlı bir tablo gözlemleyebilirsiniz.

Java API Kullanan Liste Tabloları

Java API kullanarak HBase'den tabloların listesini almak için aşağıda verilen adımları izleyin.

Aşama 1

Adlı bir yöntemin var listTables() sınıfta HBaseAdminHBase'deki tüm tabloların listesini almak için. Bu yöntem bir dizi döndürürHTableDescriptor nesneler.

//creating a configuration object
Configuration conf = HBaseConfiguration.create();

//Creating HBaseAdmin object
HBaseAdmin admin = new HBaseAdmin(conf);

//Getting all the list of tables using HBaseAdmin object
HTableDescriptor[] tableDescriptor = admin.listTables();

Adım 2

Uzunluğunu alabilirsiniz HTableDescriptor[] uzunluk değişkenini kullanan dizi HTableDescriptorsınıf. Kullanarak bu nesneden tabloların adını alıngetNameAsString()yöntem. Bunları kullanarak 'for' döngüsünü çalıştırın ve HBase'deki tabloların listesini alın.

Java API kullanarak HBase'deki tüm tabloları listeleyen program aşağıda verilmiştir.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class ListTables {

   public static void main(String args[])throws MasterNotRunningException, IOException{

      // Instantiating a configuration class
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HBaseAdmin class
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Getting all the list of tables using HBaseAdmin object
      HTableDescriptor[] tableDescriptor = admin.listTables();

      // printing all the table names.
      for (int i=0; i<tableDescriptor.length;i++ ){
         System.out.println(tableDescriptor[i].getNameAsString());
      }
   
   }
}

Yukarıdaki programı aşağıda gösterildiği gibi derleyin ve çalıştırın.

$javac ListTables.java
$java ListTables

Aşağıdakiler çıktı olmalıdır:

User
emp

HBase Shell kullanarak Tabloyu Devre Dışı Bırakma

Bir tabloyu silmek veya ayarlarını değiştirmek için, önce devre dışı bırak komutunu kullanarak tabloyu devre dışı bırakmanız gerekir. Etkinleştirme komutunu kullanarak yeniden etkinleştirebilirsiniz.

Aşağıda, bir tabloyu devre dışı bırakmak için kullanılan sözdizimi verilmiştir:

disable ‘emp’

Misal

Aşağıda bir tablonun nasıl devre dışı bırakılacağını gösteren bir örnek verilmiştir.

hbase(main):025:0> disable 'emp'
0 row(s) in 1.2760 seconds

Doğrulama

Tabloyu devre dışı bıraktıktan sonra, varlığını hala hissedebilirsiniz. list ve existskomutlar. Tarayamazsınız. Size aşağıdaki hatayı verecektir.

hbase(main):028:0> scan 'emp'
ROW         COLUMN + CELL
ERROR: emp is disabled.

is_disabled

Bu komut, bir tablonun devre dışı bırakılıp bırakılmadığını bulmak için kullanılır. Sözdizimi aşağıdaki gibidir.

hbase> is_disabled 'table name'

Aşağıdaki örnek, emp adlı tablonun devre dışı bırakılıp bırakılmadığını doğrular. Devre dışı bırakılırsa, doğru, değilse, yanlış döndürür.

hbase(main):031:0> is_disabled 'emp'
true
0 row(s) in 0.0440 seconds

Tümünü devre dışı bırak

Bu komut, verilen regex ile eşleşen tüm tabloları devre dışı bırakmak için kullanılır. Sözdizimidisable_all komut aşağıda verilmiştir.

hbase> disable_all 'r.*'

HBase'de raja, rajani, rajendra, rajesh ve raju olmak üzere 5 tablo olduğunu varsayalım. Aşağıdaki kod, ile başlayan tüm tabloları devre dışı bırakacaktır.raj.

hbase(main):002:07> disable_all 'raj.*'
raja
rajani
rajendra
rajesh
raju
Disable the above 5 tables (y/n)?
y
5 tables successfully disabled

Java API Kullanarak Bir Tabloyu Devre Dışı Bırakın

Bir tablonun devre dışı bırakılıp bırakılmadığını doğrulamak için, isTableDisabled() yöntem kullanılır ve bir tabloyu devre dışı bırakmak için, disableTable()yöntem kullanılır. Bu yöntemler,HBaseAdminsınıf. Bir tabloyu devre dışı bırakmak için aşağıda verilen adımları izleyin.

Aşama 1

Örneklendirmek HBaseAdmin aşağıda gösterildiği gibi sınıf.

// Creating configuration object
Configuration conf = HBaseConfiguration.create();

// Creating HBaseAdmin object
HBaseAdmin admin = new HBaseAdmin(conf);

Adım 2

Kullanarak tablonun devre dışı bırakılıp bırakılmadığını doğrulayın isTableDisabled() yöntemi aşağıda gösterildiği gibi.

Boolean b = admin.isTableDisabled("emp");

Aşama 3

Tablo devre dışı bırakılmamışsa, aşağıda gösterildiği gibi devre dışı bırakın.

if(!b){
   admin.disableTable("emp");
   System.out.println("Table disabled");
}

Aşağıda, tablonun devre dışı bırakılıp bırakılmadığını doğrulamak için eksiksiz bir program verilmiştir; değilse, nasıl devre dışı bırakılır.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class DisableTable{

   public static void main(String args[]) throws MasterNotRunningException, IOException{

      // Instantiating configuration class
      Configuration conf = HBaseConfiguration.create();
 
      // Instantiating HBaseAdmin class
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Verifying weather the table is disabled
      Boolean bool = admin.isTableDisabled("emp");
      System.out.println(bool);

      // Disabling the table using HBaseAdmin object
      if(!bool){
         admin.disableTable("emp");
         System.out.println("Table disabled");
      }
   }
}

Yukarıdaki programı aşağıda gösterildiği gibi derleyin ve çalıştırın.

$javac DisableTable.java
$java DsiableTable

Aşağıdakiler çıktı olmalıdır:

false
Table disabled

HBase Shell kullanarak bir Tabloyu Etkinleştirme

Bir tabloyu etkinleştirmek için sözdizimi:

enable ‘emp’

Misal

Aşağıda, bir tabloyu etkinleştirmek için bir örnek verilmiştir.

hbase(main):005:0> enable 'emp'
0 row(s) in 0.4580 seconds

Doğrulama

Tabloyu etkinleştirdikten sonra tarayın. Şemayı görebiliyorsanız, tablonuz başarıyla etkinleştirilmiştir.

hbase(main):006:0> scan 'emp'

   ROW                        COLUMN + CELL

1 column = personal data:city, timestamp = 1417516501, value = hyderabad

1 column = personal data:name, timestamp = 1417525058, value = ramu

1 column = professional data:designation, timestamp = 1417532601, value = manager

1 column = professional data:salary, timestamp = 1417524244109, value = 50000

2 column = personal data:city, timestamp = 1417524574905, value = chennai

2 column = personal data:name, timestamp = 1417524556125, value = ravi

2 column = professional data:designation, timestamp = 14175292204, value = sr:engg

2 column = professional data:salary, timestamp = 1417524604221, value = 30000 

3 column = personal data:city, timestamp = 1417524681780, value = delhi

3 column = personal data:name, timestamp = 1417524672067, value = rajesh

3 column = professional data:designation, timestamp = 14175246987, value = jr:engg

3 column = professional data:salary, timestamp = 1417524702514, value = 25000

3 row(s) in 0.0400 seconds

etkin

Bu komut, bir tablonun etkin olup olmadığını bulmak için kullanılır. Sözdizimi aşağıdaki gibidir:

hbase> is_enabled 'table name'

Aşağıdaki kod, tablonun adlandırılıp adlandırılmadığını doğrular empetkin. Etkinleştirilirse, doğru, değilse, yanlış döndürür.

hbase(main):031:0> is_enabled 'emp'
true
0 row(s) in 0.0440 seconds

Java API Kullanarak Bir Tabloyu Etkinleştirme

Bir tablonun etkinleştirilip etkinleştirilmediğini doğrulamak için, isTableEnabled()yöntem kullanılır; ve bir tabloyu etkinleştirmek içinenableTable()yöntem kullanılır. Bu yöntemler,HBaseAdminsınıf. Bir tabloyu etkinleştirmek için aşağıda verilen adımları izleyin.

Aşama 1

Örneklendirmek HBaseAdmin aşağıda gösterildiği gibi sınıf.

// Creating configuration object
Configuration conf = HBaseConfiguration.create();

// Creating HBaseAdmin object
HBaseAdmin admin = new HBaseAdmin(conf);

Adım 2

Tablonun etkinleştirilip etkinleştirilmediğini doğrulayın. isTableEnabled() yöntemi aşağıda gösterildiği gibi.

Boolean bool = admin.isTableEnabled("emp");

Aşama 3

Tablo devre dışı bırakılmamışsa, aşağıda gösterildiği gibi devre dışı bırakın.

if(!bool){
   admin.enableTable("emp");
   System.out.println("Table enabled");
}

Aşağıda, tablonun etkinleştirilip etkinleştirilmediğini ve değilse nasıl etkinleştirileceğini doğrulamak için eksiksiz bir program verilmiştir.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class EnableTable{

   public static void main(String args[]) throws MasterNotRunningException, IOException{

      // Instantiating configuration class
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HBaseAdmin class
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Verifying whether the table is disabled
      Boolean bool = admin.isTableEnabled("emp");
      System.out.println(bool);

      // Enabling the table using HBaseAdmin object
      if(!bool){
         admin.enableTable("emp");
         System.out.println("Table Enabled");
      }
   }
}

Yukarıdaki programı aşağıda gösterildiği gibi derleyin ve çalıştırın.

$javac EnableTable.java
$java EnableTable

Aşağıdakiler çıktı olmalıdır:

false
Table Enabled

tanımlamak

Bu komut tablonun açıklamasını döndürür. Sözdizimi aşağıdaki gibidir:

hbase> describe 'table name'

Aşağıda verilen tanımla komutunun çıktısı emp tablo.

hbase(main):006:0> describe 'emp'
   DESCRIPTION
      ENABLED
      
'emp', {NAME ⇒ 'READONLY', DATA_BLOCK_ENCODING ⇒ 'NONE', BLOOMFILTER
⇒ 'ROW', REPLICATION_SCOPE ⇒ '0', COMPRESSION ⇒ 'NONE', VERSIONS ⇒
'1', TTL true

⇒ 'FOREVER', MIN_VERSIONS ⇒ '0', KEEP_DELETED_CELLS ⇒ 'false',
BLOCKSIZE ⇒ '65536', IN_MEMORY ⇒ 'false', BLOCKCACHE ⇒ 'true'}, {NAME
⇒ 'personal

data', DATA_BLOCK_ENCODING ⇒ 'NONE', BLOOMFILTER ⇒ 'ROW',
REPLICATION_SCOPE ⇒ '0', VERSIONS ⇒ '5', COMPRESSION ⇒ 'NONE',
MIN_VERSIONS ⇒ '0', TTL

⇒ 'FOREVER', KEEP_DELETED_CELLS ⇒ 'false', BLOCKSIZE ⇒ '65536',
IN_MEMORY ⇒ 'false', BLOCKCACHE ⇒ 'true'}, {NAME ⇒ 'professional
data', DATA_BLO

CK_ENCODING ⇒ 'NONE', BLOOMFILTER ⇒ 'ROW', REPLICATION_SCOPE ⇒ '0',
VERSIONS ⇒ '1', COMPRESSION ⇒ 'NONE', MIN_VERSIONS ⇒ '0', TTL ⇒
'FOREVER', K

EEP_DELETED_CELLS ⇒ 'false', BLOCKSIZE ⇒ '65536', IN_MEMORY ⇒
'false', BLOCKCACHE ⇒ 'true'}, {NAME ⇒ 'table_att_unset',
DATA_BLOCK_ENCODING ⇒ 'NO 

NE', BLOOMFILTER ⇒ 'ROW', REPLICATION_SCOPE ⇒ '0', COMPRESSION ⇒
'NONE', VERSIONS ⇒ '1', TTL ⇒ 'FOREVER', MIN_VERSIONS ⇒ '0',
KEEP_DELETED_CELLS

⇒ 'false', BLOCKSIZE ⇒ '6

değiştirmek

Değiştir, mevcut bir tabloda değişiklik yapmak için kullanılan komuttur. Bu komutu kullanarak, bir sütun ailesinin maksimum hücre sayısını değiştirebilir, tablo kapsamı işleçlerini ayarlayabilir ve silebilir ve bir tablodan bir sütun ailesini silebilirsiniz.

Bir Sütun Ailesinin Maksimum Hücre Sayısını Değiştirme

Aşağıda, bir sütun ailesinin maksimum hücre sayısını değiştirmek için sözdizimi verilmiştir.

hbase> alter 't1', NAME ⇒ 'f1', VERSIONS ⇒ 5

Aşağıdaki örnekte, maksimum hücre sayısı 5 olarak ayarlanmıştır.

hbase(main):003:0> alter 'emp', NAME ⇒ 'personal data', VERSIONS ⇒ 5
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.3050 seconds

Tablo Kapsamı Operatörleri

Alter kullanarak, MAX_FILESIZE, READONLY, MEMSTORE_FLUSHSIZE, DEFERRED_LOG_FLUSH, vb. Gibi tablo kapsamı operatörlerini ayarlayabilir ve kaldırabilirsiniz.

Salt Okunur Ayarı

Aşağıda, bir tabloyu salt okunur hale getirmek için verilen sözdizimi verilmiştir.

hbase>alter 't1', READONLY(option)

Aşağıdaki örnekte, emp tablo salt okunur.

hbase(main):006:0> alter 'emp', READONLY
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.2140 seconds

Tablo Kapsam Operatörlerini Kaldırma

Tablo kapsam operatörlerini de kaldırabiliriz. Emp tablosundan 'MAX_FILESIZE' öğesini kaldırmak için sözdizimi aşağıda verilmiştir.

hbase> alter 't1', METHOD ⇒ 'table_att_unset', NAME ⇒ 'MAX_FILESIZE'

Bir Sütun Ailesini Silme

Alter kullanarak bir sütun ailesini de silebilirsiniz. Aşağıda, alter kullanarak bir sütun ailesini silmek için sözdizimi verilmiştir.

hbase> alter ‘ table name ’, ‘delete’ ⇒ ‘ column family ’

Aşağıda, 'emp' tablosundan bir sütun ailesini silmek için bir örnek verilmiştir.

HBase'de çalışan adında bir tablo olduğunu varsayalım. Aşağıdaki verileri içerir:

hbase(main):006:0> scan 'employee'

   ROW                   COLUMN+CELL

row1 column = personal:city, timestamp = 1418193767, value = hyderabad

row1 column = personal:name, timestamp = 1418193806767, value = raju

row1 column = professional:designation, timestamp = 1418193767, value = manager

row1 column = professional:salary, timestamp = 1418193806767, value = 50000

1 row(s) in 0.0160 seconds

Şimdi isimli sütun ailesini silelim professional alter komutunu kullanarak.

hbase(main):007:0> alter 'employee','delete'⇒'professional'
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.2380 seconds

Şimdi değişiklikten sonra tablodaki verileri doğrulayın. Sildik, artık 'profesyonel' sütun ailesinin artık olmadığını gözlemleyin.

hbase(main):003:0> scan 'employee'
   ROW             COLUMN + CELL
row1 column = personal:city, timestamp = 14181936767, value = hyderabad

row1 column = personal:name, timestamp = 1418193806767, value = raju

1 row(s) in 0.0830 seconds

Java API Kullanarak Sütun Ailesi Ekleme

Yöntemi kullanarak bir tabloya sütun ailesi ekleyebilirsiniz. addColumn() nın-nin HBAseAdminsınıf. Bir tabloya sütun ailesi eklemek için aşağıda verilen adımları izleyin.

Aşama 1

Örnekleyin HBaseAdmin sınıf.

// Instantiating configuration object
Configuration conf = HBaseConfiguration.create();

// Instantiating HBaseAdmin class
HBaseAdmin admin = new HBaseAdmin(conf);

Adım 2

addColumn() yöntem bir tablo adı ve bir nesne gerektirir HColumnDescriptorsınıf. Bu nedenle,HColumnDescriptorsınıf. YapıcısıHColumnDescriptorsırayla eklenecek bir sütun ailesi adı gerektirir. Burada mevcut "çalışan" tablosuna "contactDetails" adlı bir sütun ailesi ekliyoruz.

// Instantiating columnDescriptor object

HColumnDescriptor columnDescriptor = new
HColumnDescriptor("contactDetails");

Aşama 3

Kullanarak sütun ailesini ekleyin addColumnyöntem. Tablo adını veHColumnDescriptor Bu yöntemin parametreleri olarak sınıf nesnesi.

// Adding column family
admin.addColumn("employee", new HColumnDescriptor("columnDescriptor"));

Aşağıda, mevcut bir tabloya bir sütun ailesi eklemek için eksiksiz bir program verilmiştir.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class AddColoumn{

   public static void main(String args[]) throws MasterNotRunningException, IOException{

      // Instantiating configuration class.
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HBaseAdmin class.
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Instantiating columnDescriptor class
      HColumnDescriptor columnDescriptor = new HColumnDescriptor("contactDetails");
      
      // Adding column family
      admin.addColumn("employee", columnDescriptor);
      System.out.println("coloumn added");
   }
}

Yukarıdaki programı aşağıda gösterildiği gibi derleyin ve çalıştırın.

$javac AddColumn.java
$java AddColumn

Yukarıdaki derleme yalnızca sınıf yolunu " .bashrc”. Yapmadıysanız, .java dosyanızı derlemek için aşağıda verilen prosedürü izleyin.

//if "/home/home/hadoop/hbase " is your Hbase home folder then.

$javac -cp /home/hadoop/hbase/lib/*: Demo.java

Her şey yolunda giderse, aşağıdaki çıktıyı üretir:

column added

Java API Kullanarak Bir Sütun Ailesini Silme

Yöntemi kullanarak bir tablodan bir sütun ailesini silebilirsiniz. deleteColumn() nın-nin HBAseAdminsınıf. Bir tabloya sütun ailesi eklemek için aşağıda verilen adımları izleyin.

Aşama 1

Örnekleyin HBaseAdmin sınıf.

// Instantiating configuration object
Configuration conf = HBaseConfiguration.create();

// Instantiating HBaseAdmin class
HBaseAdmin admin = new HBaseAdmin(conf);

Adım 2

Kullanarak sütun ailesini ekleyin deleteColumn()yöntem. Tablo adını ve sütun ailesini parametre olarak bu yönteme iletin.

// Deleting column family
admin.deleteColumn("employee", "contactDetails");

Aşağıda, mevcut bir tablodan bir sütun ailesini silmek için eksiksiz bir program verilmiştir.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class DeleteColoumn{

   public static void main(String args[]) throws MasterNotRunningException, IOException{

      // Instantiating configuration class.
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HBaseAdmin class.
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Deleting a column family
      admin.deleteColumn("employee","contactDetails");
      System.out.println("coloumn deleted"); 
   }
}

Yukarıdaki programı aşağıda gösterildiği gibi derleyin ve çalıştırın.

$javac DeleteColumn.java $java DeleteColumn

Aşağıdakiler çıktı olmalıdır:

column deleted

HBase Shell kullanarak Tablonun Varlığı

Bir tablonun varlığını şunu kullanarak doğrulayabilirsiniz: existskomut. Aşağıdaki örnek, bu komutun nasıl kullanılacağını gösterir.

hbase(main):024:0> exists 'emp'
Table emp does exist

0 row(s) in 0.0750 seconds

==================================================================

hbase(main):015:0> exists 'student'
Table student does not exist

0 row(s) in 0.0480 seconds

Java API Kullanarak Tablonun Varlığını Doğrulama

HBase'de bir tablonun varlığını şunu kullanarak doğrulayabilirsiniz: tableExists() yöntemi HBaseAdmin sınıf. HBase'de bir tablonun varlığını doğrulamak için aşağıda verilen adımları izleyin.

Aşama 1

Instantiate the HBaseAdimn class

// Instantiating configuration object
Configuration conf = HBaseConfiguration.create();

// Instantiating HBaseAdmin class
HBaseAdmin admin = new HBaseAdmin(conf);

Adım 2

Tablonun varlığını doğrulayın. tableExists( ) yöntem.

Aşağıda, java API kullanarak HBase'de bir tablonun varlığını test etmek için java programı verilmiştir.

import java.io.IOException;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class TableExists{

   public static void main(String args[])throws IOException{

      // Instantiating configuration class
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HBaseAdmin class
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Verifying the existance of the table
      boolean bool = admin.tableExists("emp");
      System.out.println( bool);
   }
}

Yukarıdaki programı aşağıda gösterildiği gibi derleyin ve çalıştırın.

$javac TableExists.java $java TableExists

Aşağıdakiler çıktı olmalıdır:

true

HBase Shell kullanarak Tablo düşürme

Kullanmak dropkomutu, bir tabloyu silebilirsiniz. Bir masayı düşürmeden önce onu devre dışı bırakmalısınız.

hbase(main):018:0> disable 'emp'
0 row(s) in 1.4580 seconds

hbase(main):019:0> drop 'emp'
0 row(s) in 0.3060 seconds

Var komutunu kullanarak tablonun silinip silinmediğini doğrulayın.

hbase(main):020:07gt; exists 'emp'
Table emp does not exist
0 row(s) in 0.0730 seconds

drop_all

Bu komut, komutta verilen "regex" ile eşleşen tabloları kaldırmak için kullanılır. Sözdizimi aşağıdaki gibidir:

hbase> drop_all ‘t.*’

Note: Bir masayı düşürmeden önce onu devre dışı bırakmalısınız.

Misal

Raju, rajani, rajendra, rajesh ve raju adlı tablolar olduğunu varsayalım.

hbase(main):017:0> list
TABLE
raja
rajani
rajendra 
rajesh
raju
9 row(s) in 0.0270 seconds

Bütün bu tablolar harflerle başlıyor raj. Öncelikle, tüm bu tabloları kullanarak devre dışı bırakalım.disable_all komutu aşağıda gösterildiği gibi.

hbase(main):002:0> disable_all 'raj.*'
raja
rajani
rajendra
rajesh
raju
Disable the above 5 tables (y/n)?
y
5 tables successfully disabled

Artık hepsini silebilirsiniz. drop_all komut aşağıda verildiği gibi.

hbase(main):018:0> drop_all 'raj.*'
raja
rajani
rajendra
rajesh
raju
Drop the above 5 tables (y/n)?
y
5 tables successfully dropped

Java API Kullanarak Tablo Silme

Kullanarak bir tabloyu silebilirsiniz. deleteTable() yöntem HBaseAdminsınıf. Java API kullanarak bir tabloyu silmek için aşağıda verilen adımları izleyin.

Aşama 1

HBaseAdmin sınıfını örnekleyin.

// creating a configuration object
Configuration conf = HBaseConfiguration.create();

// Creating HBaseAdmin object
HBaseAdmin admin = new HBaseAdmin(conf);

Adım 2

Tabloyu kullanarak devre dışı bırakın disableTable() yöntemi HBaseAdmin sınıf.

admin.disableTable("emp1");

Aşama 3

Şimdi tabloyu kullanarak deleteTable() yöntemi HBaseAdmin sınıf.

admin.deleteTable("emp12");

Aşağıda HBase'de bir tabloyu silmek için eksiksiz bir java programı verilmiştir.

import java.io.IOException;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class DeleteTable {

   public static void main(String[] args) throws IOException {

      // Instantiating configuration class
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HBaseAdmin class
      HBaseAdmin admin = new HBaseAdmin(conf);

      // disabling table named emp
      admin.disableTable("emp12");

      // Deleting emp
      admin.deleteTable("emp12");
      System.out.println("Table deleted");
   }
}

Yukarıdaki programı aşağıda gösterildiği gibi derleyin ve çalıştırın.

$javac DeleteTable.java $java DeleteTable

Aşağıdakiler çıktı olmalıdır:

Table deleted

çıkış

Yazarak kabuktan çıkarsınız. exit komut.

hbase(main):021:0> exit

HBase'yi Durdurma

HBase'i durdurmak için HBase ana klasörüne gidin ve aşağıdaki komutu yazın.

./bin/stop-hbase.sh

Java API Kullanarak HBase'i Durdurma

HBase'i kullanarak kapatabilirsiniz. shutdown() yöntemi HBaseAdminsınıf. HBase'i kapatmak için aşağıdaki adımları izleyin:

Aşama 1

HbaseAdmin sınıfını somutlaştırın.

// Instantiating configuration object
Configuration conf = HBaseConfiguration.create();

// Instantiating HBaseAdmin object
HBaseAdmin admin = new HBaseAdmin(conf);

Adım 2

HBase'i kullanarak kapatın. shutdown() yöntemi HBaseAdmin sınıf.

admin.shutdown();

Aşağıda HBase'yi durdurma programı verilmiştir.

import java.io.IOException;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class ShutDownHbase{

   public static void main(String args[])throws IOException {

      // Instantiating configuration class
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HBaseAdmin class
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Shutting down HBase
      System.out.println("Shutting down hbase");
      admin.shutdown();
   }
}

Yukarıdaki programı aşağıda gösterildiği gibi derleyin ve çalıştırın.

$javac ShutDownHbase.java $java ShutDownHbase

Aşağıdakiler çıktı olmalıdır:

Shutting down hbase

Bu bölüm, HBase için java istemci API'sini açıklar. CRUDHBase tablolarında işlemler. HBase, Java ile yazılmıştır ve Java Native API'ye sahiptir. Bu nedenle, Veri İşleme Diline (DML) programlı erişim sağlar.

Sınıf HBase Yapılandırması

HBase yapılandırma dosyalarını bir Yapılandırmaya ekler. Bu sınıf,org.apache.hadoop.hbase paketi.

Yöntemler ve açıklama

S.No. Yöntemler ve Açıklama
1

static org.apache.hadoop.conf.Configuration create()

Bu yöntem, HBase kaynakları ile bir Yapılandırma oluşturur.

Sınıf HTable

HTable, bir HBase tablosunu temsil eden bir HBase dahili sınıfıdır. Tek bir HBase tablosu ile iletişim kurmak için kullanılan bir tablo uygulamasıdır. Bu sınıf,org.apache.hadoop.hbase.client sınıf.

İnşaatçılar

S.No. Oluşturucular ve Açıklama
1

HTable()

2

HTable(TableName tableName, ClusterConnection connection, ExecutorService pool)

Bu yapıcıyı kullanarak bir HBase tablosuna erişmek için bir nesne oluşturabilirsiniz.

Yöntemler ve açıklama

S.No. Yöntemler ve Açıklama
1

void close()

HTable'ın tüm kaynaklarını serbest bırakır.

2

void delete(Delete delete)

Belirtilen hücreleri / satırı siler.

3

boolean exists(Get get)

Bu yöntemi kullanarak, Get ile belirtildiği gibi tablodaki sütunların varlığını test edebilirsiniz.

4

Result get(Get get)

Belirli bir satırdan belirli hücreleri alır.

5

org.apache.hadoop.conf.Configuration getConfiguration()

Bu örnek tarafından kullanılan Configuration nesnesini döndürür.

6

TableName getName()

Bu tablonun tablo adı örneğini döndürür.

7

HTableDescriptor getTableDescriptor()

Bu tablo için tablo tanımlayıcısını döndürür.

8

byte[] getTableName()

Bu tablonun adını döndürür.

9

void put(Put put)

Bu yöntemi kullanarak tabloya veri ekleyebilirsiniz.

Sınıf Put

Bu sınıf, tek bir satır için Put işlemlerini gerçekleştirmek için kullanılır. Ait olduğuorg.apache.hadoop.hbase.client paketi.

İnşaatçılar

S.No. Oluşturucular ve Açıklama
1

Put(byte[] row)

Bu yapıcıyı kullanarak, belirtilen satır için bir Koyma işlemi oluşturabilirsiniz.

2

Put(byte[] rowArray, int rowOffset, int rowLength)

Bu kurucuyu kullanarak, yerel tutmak için iletilen satır anahtarının bir kopyasını oluşturabilirsiniz.

3

Put(byte[] rowArray, int rowOffset, int rowLength, long ts)

Bu kurucuyu kullanarak, yerel tutmak için iletilen satır anahtarının bir kopyasını oluşturabilirsiniz.

4

Put(byte[] row, long ts)

Bu kurucuyu kullanarak, belirli bir zaman damgasını kullanarak, belirtilen satır için bir Put işlemi oluşturabiliriz.

Yöntemler

S.No. Yöntemler ve Açıklama
1

Put add(byte[] family, byte[] qualifier, byte[] value)

Bu Put işlemine belirtilen sütunu ve değeri ekler.

2

Put add(byte[] family, byte[] qualifier, long ts, byte[] value)

Bu Put işlemine sürümü olarak belirtilen zaman damgasıyla belirtilen sütunu ve değeri ekler.

3

Put add(byte[] family, ByteBuffer qualifier, long ts, ByteBuffer value)

Bu Put işlemine sürümü olarak belirtilen zaman damgasıyla belirtilen sütunu ve değeri ekler.

4

Put add(byte[] family, ByteBuffer qualifier, long ts, ByteBuffer value)

Bu Put işlemine sürümü olarak belirtilen zaman damgasıyla belirtilen sütunu ve değeri ekler.

Ders Alma

Bu sınıf Get işlemlerini tek bir satırda gerçekleştirmek için kullanılır. Bu sınıf,org.apache.hadoop.hbase.client paketi.

İnşaatçı

S.No. Oluşturucu ve Açıklama
1

Get(byte[] row)

Bu yapıcıyı kullanarak, belirtilen satır için bir Alma işlemi oluşturabilirsiniz.

2 Get(Get get)

Yöntemler

S.No. Yöntemler ve Açıklama
1

Get addColumn(byte[] family, byte[] qualifier)

Sütunu, belirtilen niteleyiciye sahip belirli aileden alır.

2

Get addFamily(byte[] family)

Belirtilen aileden tüm sütunları alır.

Sınıf Silme

Bu sınıf, tek bir satırda Silme işlemlerini gerçekleştirmek için kullanılır. Tüm bir satırı silmek için, silinecek satırla birlikte bir Sil nesnesi oluşturun. Bu sınıf,org.apache.hadoop.hbase.client paketi.

İnşaatçı

S.No. Oluşturucu ve Açıklama
1

Delete(byte[] row)

Belirtilen satır için bir Silme işlemi oluşturur.

2

Delete(byte[] rowArray, int rowOffset, int rowLength)

Belirtilen satır ve zaman damgası için bir Silme işlemi oluşturur.

3

Delete(byte[] rowArray, int rowOffset, int rowLength, long ts)

Belirtilen satır ve zaman damgası için bir Silme işlemi oluşturur.

4

Delete(byte[] row, long timestamp)

Belirtilen satır ve zaman damgası için bir Silme işlemi oluşturur.

Yöntemler

S.No. Yöntemler ve Açıklama
1

Delete addColumn(byte[] family, byte[] qualifier)

Belirtilen sütunun en son sürümünü siler.

2

Delete addColumns(byte[] family, byte[] qualifier, long timestamp)

Belirtilen zaman damgasına eşit veya bundan küçük bir zaman damgasına sahip, belirtilen sütunun tüm sürümlerini siler.

3

Delete addFamily(byte[] family)

Belirtilen ailenin tüm sütunlarının tüm sürümlerini siler.

4

Delete addFamily(byte[] family, long timestamp)

Belirtilen zaman damgasına eşit veya bundan küçük bir zaman damgasına sahip, belirtilen ailenin tüm sütunlarını siler.

Sınıf Sonucu

Bu sınıf, Get veya Tarama sorgusunun tek satırlık sonucunu almak için kullanılır.

İnşaatçılar

S.No. İnşaatçılar
1

Result()

Bu yapıcıyı kullanarak, KeyValue yükü olmayan boş bir Sonuç oluşturabilirsiniz; ham Cells () 'i çağırırsanız null döndürür.

Yöntemler

S.No. Yöntemler ve Açıklama
1

byte[] getValue(byte[] family, byte[] qualifier)

Bu yöntem, belirtilen sütunun en son sürümünü almak için kullanılır.

2

byte[] getRow()

Bu yöntem, bu Sonucun oluşturulduğu satıra karşılık gelen satır anahtarını almak için kullanılır.

HBase Shell kullanarak Veri Ekleme

Bu bölüm, bir HBase tablosunda verilerin nasıl oluşturulacağını gösterir. Bir HBase tablosunda veri oluşturmak için aşağıdaki komutlar ve yöntemler kullanılır:

  • put komut

  • add() yöntemi Put sınıf ve

  • put() yöntemi HTable sınıf.

Örnek olarak, HBase'de aşağıdaki tabloyu oluşturacağız.

Kullanma putkomutu, bir tabloya satır ekleyebilirsiniz. Sözdizimi aşağıdaki gibidir:

put ’<table name>’,’row1’,’<colfamily:colname>’,’<value>’

İlk Satırı Eklemek

İlk satır değerlerini aşağıda gösterildiği gibi emp tablosuna ekleyelim.

hbase(main):005:0> put 'emp','1','personal data:name','raju'
0 row(s) in 0.6600 seconds
hbase(main):006:0> put 'emp','1','personal data:city','hyderabad'
0 row(s) in 0.0410 seconds
hbase(main):007:0> put 'emp','1','professional
data:designation','manager'
0 row(s) in 0.0240 seconds
hbase(main):007:0> put 'emp','1','professional data:salary','50000'
0 row(s) in 0.0240 seconds

Put komutunu kullanarak kalan satırları aynı şekilde ekleyin. Tüm tabloyu eklerseniz, aşağıdaki çıktıyı alırsınız.

hbase(main):022:0> scan 'emp'

   ROW                        COLUMN+CELL
1 column=personal data:city, timestamp=1417524216501, value=hyderabad

1 column=personal data:name, timestamp=1417524185058, value=ramu

1 column=professional data:designation, timestamp=1417524232601,

 value=manager
 
1 column=professional data:salary, timestamp=1417524244109, value=50000

2 column=personal data:city, timestamp=1417524574905, value=chennai

2 column=personal data:name, timestamp=1417524556125, value=ravi

2 column=professional data:designation, timestamp=1417524592204,

 value=sr:engg
 
2 column=professional data:salary, timestamp=1417524604221, value=30000

3 column=personal data:city, timestamp=1417524681780, value=delhi

3 column=personal data:name, timestamp=1417524672067, value=rajesh

3 column=professional data:designation, timestamp=1417524693187,

value=jr:engg
3 column=professional data:salary, timestamp=1417524702514,

value=25000

Java API Kullanarak Veri Ekleme

Kullanarak Hbase'e veri ekleyebilirsiniz. add() yöntemi Putsınıf. Kullanarak kaydedebilirsinizput() yöntemi HTablesınıf. Bu sınıflar,org.apache.hadoop.hbase.clientpaketi. Aşağıda, HBase Tablosunda veri oluşturma adımları verilmiştir.

Adım 1: Konfigürasyon Sınıfını Örnekler

Configurationsınıfı, HBase yapılandırma dosyalarını nesnesine ekler. Kullanarak bir yapılandırma nesnesi oluşturabilirsiniz.create() yöntemi HbaseConfiguration aşağıda gösterildiği gibi sınıf.

Configuration conf = HbaseConfiguration.create();

Adım 2: HTable Sınıfının Örneğini Oluşturun

Adlı bir sınıfınız var HTable, HBase'de Table uygulaması. Bu sınıf, tek bir HBase tablosu ile iletişim kurmak için kullanılır. Bu sınıfı başlatırken, konfigürasyon nesnesini ve tablo adını parametre olarak kabul eder. HTable sınıfını aşağıda gösterildiği gibi başlatabilirsiniz.

HTable hTable = new HTable(conf, tableName);

3. Adım: PutClass'ı somutlaştırın

HBase tablosuna veri eklemek için, add()yöntem ve varyantları kullanılır. Bu yöntem,Put, bu nedenle put sınıfını somutlaştırın. Bu sınıf, verileri içine eklemek istediğiniz satır adını dize biçiminde gerektirir. Sen somutlaştırabilirsinPut aşağıda gösterildiği gibi sınıf.

Put p = new Put(Bytes.toBytes("row1"));

Adım 4: Veri Ekle

add() yöntemi Putsınıf veri eklemek için kullanılır. Sırasıyla sütun ailesini, sütun niteleyicisini (sütun adı) ve eklenecek değeri temsil eden 3 baytlık diziler gerektirir. Aşağıda gösterildiği gibi add () yöntemini kullanarak HBase tablosuna veri ekleyin.

p.add(Bytes.toBytes("coloumn family "), Bytes.toBytes("column
name"),Bytes.toBytes("value"));

Adım 5: Verileri Tabloya Kaydedin

Gerekli satırları ekledikten sonra, put örneğini ekleyerek değişiklikleri kaydedin. put() HTable sınıfı yöntemi aşağıda gösterildiği gibi.

hTable.put(p);

6. Adım: HTable Örneğini Kapatın

HBase Tablosunda veri oluşturduktan sonra, HTable örnek kullanarak close() yöntemi aşağıda gösterildiği gibi.

hTable.close();

Aşağıda HBase Tablosunda veri oluşturmak için eksiksiz program verilmiştir.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;

public class InsertData{

   public static void main(String[] args) throws IOException {

      // Instantiating Configuration class
      Configuration config = HBaseConfiguration.create();

      // Instantiating HTable class
      HTable hTable = new HTable(config, "emp");

      // Instantiating Put class
      // accepts a row name.
      Put p = new Put(Bytes.toBytes("row1")); 

      // adding 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"),
      Bytes.toBytes("city"),Bytes.toBytes("hyderabad"));

      p.add(Bytes.toBytes("professional"),Bytes.toBytes("designation"),
      Bytes.toBytes("manager"));

      p.add(Bytes.toBytes("professional"),Bytes.toBytes("salary"),
      Bytes.toBytes("50000"));
      
      // Saving the put Instance to the HTable.
      hTable.put(p);
      System.out.println("data inserted");
      
      // closing HTable
      hTable.close();
   }
}

Yukarıdaki programı aşağıda gösterildiği gibi derleyin ve çalıştırın.

$javac InsertData.java $java InsertData

Aşağıdakiler çıktı olmalıdır:

data inserted

HBase Shell kullanarak Verileri Güncelleme

Mevcut bir hücre değerini güncelleyebilirsiniz. putkomut. Bunu yapmak için, aynı sözdizimini takip edin ve aşağıda gösterildiği gibi yeni değerinizi belirtin.

put ‘table name’,’row ’,'Column family:column name',’new value’

Yeni verilen değer, satırı güncelleyerek mevcut değerin yerini alır.

Misal

HBase'de adında bir tablo olduğunu varsayalım emp aşağıdaki verilerle.

hbase(main):003:0> scan 'emp'
 ROW              COLUMN + CELL
row1 column = personal:name, timestamp = 1418051555, value = raju
row1 column = personal:city, timestamp = 1418275907, value = Hyderabad
row1 column = professional:designation, timestamp = 14180555,value = manager
row1 column = professional:salary, timestamp = 1418035791555,value = 50000
1 row(s) in 0.0100 seconds

Aşağıdaki komut, Raju adlı çalışanın şehir değerini Delhi'ye güncelleyecektir.

hbase(main):002:0> put 'emp','row1','personal:city','Delhi'
0 row(s) in 0.0400 seconds

Güncellenen tablo, Raju şehrinin 'Delhi' olarak değiştirildiğini görebileceğiniz şekilde aşağıdaki gibi görünüyor.

hbase(main):003:0> scan 'emp'
  ROW          COLUMN + CELL
row1 column = personal:name, timestamp = 1418035791555, value = raju
row1 column = personal:city, timestamp = 1418274645907, value = Delhi
row1 column = professional:designation, timestamp = 141857555,value = manager
row1 column = professional:salary, timestamp = 1418039555, value = 50000
1 row(s) in 0.0100 seconds

Java API Kullanarak Verileri Güncelleme

Verileri belirli bir hücredeki verileri güncelleyebilirsiniz. put()yöntem. Bir tablonun mevcut bir hücre değerini güncellemek için aşağıda verilen adımları izleyin.

Adım 1: Konfigürasyon Sınıfının Örneğini Oluşturun

Configurationsınıfı, HBase yapılandırma dosyalarını nesnesine ekler. Kullanarak bir yapılandırma nesnesi oluşturabilirsiniz.create() yöntemi HbaseConfiguration aşağıda gösterildiği gibi sınıf.

Configuration conf = HbaseConfiguration.create();

Adım 2: HTable Sınıfının Örneğini Oluşturun

Adlı bir sınıfınız var HTable, HBase'de Table uygulaması. Bu sınıf, tek bir HBase tablosu ile iletişim kurmak için kullanılır. Bu sınıfın örneğini oluştururken, yapılandırma nesnesini ve tablo adını parametre olarak kabul eder. HTable sınıfını aşağıda gösterildiği gibi başlatabilirsiniz.

HTable hTable = new HTable(conf, tableName);

3. Adım: Put Sınıfını Örnekler

HBase Tablosuna veri eklemek için, add()yöntem ve varyantları kullanılır. Bu yöntem,Putbu nedenle somutlaştırın putsınıf. Bu sınıf, verileri içine eklemek istediğiniz satır adını dize biçiminde gerektirir. Sen somutlaştırabilirsinPut aşağıda gösterildiği gibi sınıf.

Put p = new Put(Bytes.toBytes("row1"));

4. Adım: Mevcut Bir Hücreyi Güncelleyin

add() yöntemi Putsınıf veri eklemek için kullanılır. Sırasıyla sütun ailesini, sütun niteleyicisini (sütun adı) ve eklenecek değeri temsil eden 3 baytlık diziler gerektirir. HBase tablosuna veri ekleyin.add() yöntemi aşağıda gösterildiği gibi.

p.add(Bytes.toBytes("coloumn family "), Bytes.toBytes("column
name"),Bytes.toBytes("value"));
p.add(Bytes.toBytes("personal"),
Bytes.toBytes("city"),Bytes.toBytes("Delih"));

Adım 5: Verileri Tabloya Kaydedin

Gerekli satırları ekledikten sonra, put örneğini ekleyerek değişiklikleri kaydedin. put() HTable sınıfının yöntemi aşağıda gösterildiği gibi.

hTable.put(p);

6. Adım: HTable Örneğini Kapatın

HBase Tablosunda veri oluşturduktan sonra, HTable close () yöntemini kullanarak aşağıda gösterildiği gibi örnek.

hTable.close();

Aşağıda, belirli bir tablodaki verileri güncellemek için eksiksiz bir program verilmiştir.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;

public class UpdateData{

   public static void main(String[] args) throws IOException {

      // Instantiating Configuration class
      Configuration config = HBaseConfiguration.create();

      // Instantiating HTable class
      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.
      hTable.put(p);
      System.out.println("data Updated");

      // closing HTable
      hTable.close();
   }
}

Yukarıdaki programı aşağıda gösterildiği gibi derleyin ve çalıştırın.

$javac UpdateData.java $java UpdateData

Aşağıdakiler çıktı olmalıdır:

data Updated

HBase Shell kullanarak Veri Okuma

get komut ve get() yöntemi HTablesınıfı, HBase'deki bir tablodan veri okumak için kullanılır. Kullanmagetkomutu, bir seferde tek bir veri satırı alabilirsiniz. Sözdizimi aşağıdaki gibidir:

get ’<table name>’,’row1’

Misal

Aşağıdaki örnek, get komutunun nasıl kullanılacağını gösterir. İlk satırını tarayalım.emp tablo.

hbase(main):012:0> get 'emp', '1'

   COLUMN                     CELL
   
personal : city timestamp = 1417521848375, value = hyderabad

personal : name timestamp = 1417521785385, value = ramu

professional: designation timestamp = 1417521885277, value = manager

professional: salary timestamp = 1417521903862, value = 50000

4 row(s) in 0.0270 seconds

Belirli Bir Sütunu Okumak

Aşağıda verilen sözdizimi, belirli bir sütunu kullanarak okumak için get yöntem.

hbase> get 'table name', ‘rowid’, {COLUMN ⇒ ‘column family:column name ’}

Misal

Aşağıda HBase tablosunda belirli bir sütunu okumak için örnek verilmiştir.

hbase(main):015:0> get 'emp', 'row1', {COLUMN ⇒ 'personal:name'}
  COLUMN                CELL  
personal:name timestamp = 1418035791555, value = raju
1 row(s) in 0.0080 seconds

Java API Kullanarak Veri Okuma

Bir HBase tablosundan veri okumak için, get()HTable sınıfının yöntemi. Bu yöntem,Getsınıf. HBase tablosundan veri almak için aşağıda verilen adımları izleyin.

Adım 1: Konfigürasyon Sınıfının Örneğini Oluşturun

Configurationsınıfı, HBase yapılandırma dosyalarını nesnesine ekler. Kullanarak bir yapılandırma nesnesi oluşturabilirsiniz.create() yöntemi HbaseConfiguration aşağıda gösterildiği gibi sınıf.

Configuration conf = HbaseConfiguration.create();

Adım 2: HTable Sınıfının Örneğini Oluşturun

Adlı bir sınıfınız var HTable, HBase'de Table uygulaması. Bu sınıf, tek bir HBase tablosu ile iletişim kurmak için kullanılır. Bu sınıfın örneğini oluştururken, yapılandırma nesnesini ve tablo adını parametre olarak kabul eder. HTable sınıfını aşağıda gösterildiği gibi başlatabilirsiniz.

HTable hTable = new HTable(conf, tableName);

3. Adım: Get Sınıfının örneğini oluşturun

HBase tablosundaki verileri, get() yöntemi HTablesınıf. Bu yöntem, belirli bir satırdan bir hücre çıkarır. GerektirirGetparametre olarak sınıf nesnesi. Aşağıda gösterildiği gibi oluşturun.

Get get = new Get(toBytes("row1"));

Adım 4: Verileri Okuyun

Verileri alırken, kimliğe göre tek bir satır alabilir veya bir dizi satır kimliğine göre bir dizi satır alabilir veya bir tablonun tamamını veya bir satır alt kümesini tarayabilirsiniz.

Add method varyantlarını kullanarak bir HBase tablo verisi alabilirsiniz. Get sınıf.

Belirli bir sütun ailesinden belirli bir sütun almak için aşağıdaki yöntemi kullanın.

get.addFamily(personal)

Belirli bir sütun ailesinden tüm sütunları almak için aşağıdaki yöntemi kullanın.

get.addColumn(personal, name)

Adım 5: Sonucu Alın

Geçerek sonucu alın Get get yönteminin sınıf örneği HTablesınıf. Bu yöntem,Resultistenen sonucu tutan sınıf nesnesi. Aşağıda verilen kullanımdırget() yöntem.

Result result = table.get(g);

Adım 6: Sonuç Örneğinden Değerleri Okuma

Result sınıf sağlar getValue()değerleri örneğinden okumak için yöntem. Değerleri aşağıdaki şekilde okumak için kullanın.Result örnek.

byte [] value = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("name"));
byte [] value1 = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("city"));

Aşağıda, HBase tablosundan değerleri okumak için eksiksiz bir program verilmiştir.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.util.Bytes;

public class RetriveData{

   public static void main(String[] args) throws IOException, Exception{
   
      // Instantiating Configuration class
      Configuration config = HBaseConfiguration.create();

      // Instantiating HTable class
      HTable table = 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"));

      // Printing the values
      String name = Bytes.toString(value);
      String city = Bytes.toString(value1);
      
      System.out.println("name: " + name + " city: " + city);
   }
}

Yukarıdaki programı aşağıda gösterildiği gibi derleyin ve çalıştırın.

$javac RetriveData.java $java RetriveData

Aşağıdakiler çıktı olmalıdır:

name: Raju city: Delhi

Tablodaki Belirli Bir Hücrenin Silinmesi

Kullanmak deletekomutu, bir tablodaki belirli bir hücreyi silebilirsiniz. Sözdizimidelete komut aşağıdaki gibidir:

delete ‘<table name>’, ‘<row>’, ‘<column name >’, ‘<time stamp>’

Misal

İşte belirli bir hücreyi silmek için bir örnek. Burada maaşı siliyoruz.

hbase(main):006:0> delete 'emp', '1', 'personal data:city',
1417521848375
0 row(s) in 0.0060 seconds

Bir Tablodaki Tüm Hücreleri Silme

"Hepsini sil" komutunu kullanarak bir satırdaki tüm hücreleri silebilirsiniz. Aşağıda, deleteall komutunun sözdizimi verilmiştir.

deleteall ‘<table name>’, ‘<row>’,

Misal

Emp tablosunun 1. satırındaki tüm hücreleri sildiğimiz "deleteall" komutuna bir örnek.

hbase(main):007:0> deleteall 'emp','1'
0 row(s) in 0.0240 seconds

Tabloyu kullanarak doğrulayın scankomut. Tabloyu sildikten sonra tablonun anlık görüntüsü aşağıda verilmiştir.

hbase(main):022:0> scan 'emp'

ROW                  COLUMN + CELL

2 column = personal data:city, timestamp = 1417524574905, value = chennai 

2 column = personal data:name, timestamp = 1417524556125, value = ravi

2 column = professional data:designation, timestamp = 1417524204, value = sr:engg

2 column = professional data:salary, timestamp = 1417524604221, value = 30000

3 column = personal data:city, timestamp = 1417524681780, value = delhi

3 column = personal data:name, timestamp = 1417524672067, value = rajesh
 
3 column = professional data:designation, timestamp = 1417523187, value = jr:engg

3 column = professional data:salary, timestamp = 1417524702514, value = 25000

Java API Kullanarak Verileri Silme

Bir HBase tablosundaki verileri şunu kullanarak silebilirsiniz: delete() yöntemi HTablesınıf. Bir tablodan veri silmek için aşağıda verilen adımları izleyin.

Adım 1: Konfigürasyon Sınıfının Örneğini Oluşturun

Configurationsınıfı, HBase yapılandırma dosyalarını nesnesine ekler. Kullanarak bir yapılandırma nesnesi oluşturabilirsiniz.create() yöntemi HbaseConfiguration aşağıda gösterildiği gibi sınıf.

Configuration conf = HbaseConfiguration.create();

Adım 2: HTable Sınıfının Örneğini Oluşturun

Adlı bir sınıfınız var HTable, HBase'de Table uygulaması. Bu sınıf, tek bir HBase tablosu ile iletişim kurmak için kullanılır. Bu sınıfın örneğini oluştururken, yapılandırma nesnesini ve tablo adını parametre olarak kabul eder. HTable sınıfını aşağıda gösterildiği gibi başlatabilirsiniz.

HTable hTable = new HTable(conf, tableName);

3. Adım: Silme Sınıfının Örneğini Oluşturun

Örnekleyin Deletesilinecek satırın satır kimliğini bayt dizisi biçiminde ileterek sınıfı. Ayrıca bu kurucuya zaman damgası ve Rowlock da geçirebilirsiniz.

Delete delete = new Delete(toBytes("row1"));

Adım 4: Silinecek Verileri Seçin

Verileri, uygulamanın silme yöntemlerini kullanarak silebilirsiniz. Deletesınıf. Bu sınıfın çeşitli silme yöntemleri vardır. Bu yöntemleri kullanarak silinecek sütunları veya sütun ailelerini seçin. Delete sınıfı yöntemlerinin kullanımını gösteren aşağıdaki örneklere bir göz atın.

delete.deleteColumn(Bytes.toBytes("personal"), Bytes.toBytes("name"));
delete.deleteFamily(Bytes.toBytes("professional"));

Adım 5: Verileri Silin

Geçerek seçilen verileri silin delete örnek delete() yöntemi HTable aşağıda gösterildiği gibi sınıf.

table.delete(delete);

Adım 6: HTableInstance'ı kapatın

Verileri sildikten sonra, HTable Örnek.

table.close();

Aşağıda HBase tablosundan verileri silmek için eksiksiz bir program verilmiştir.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.util.Bytes;

public class DeleteData {

   public static void main(String[] args) throws IOException {

      // Instantiating Configuration class
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HTable class
      HTable table = new HTable(conf, "employee");

      // 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();
      System.out.println("data deleted.....");
   }
}

Yukarıdaki programı aşağıda gösterildiği gibi derleyin ve çalıştırın.

$javac Deletedata.java $java DeleteData

Aşağıdakiler çıktı olmalıdır:

data deleted

HBase Shell kullanarak tarama

scankomutu, verileri HTable'da görüntülemek için kullanılır. Tarama komutunu kullanarak tablo verilerini alabilirsiniz. Sözdizimi aşağıdaki gibidir:

scan ‘<table name>’

Misal

Aşağıdaki örnek, tarama komutu kullanılarak bir tablodan verilerin nasıl okunacağını gösterir. Burada okuyoruzemp tablo.

hbase(main):010:0> scan 'emp'

ROW                           COLUMN + CELL

1 column = personal data:city, timestamp = 1417521848375, value = hyderabad
 
1 column = personal data:name, timestamp = 1417521785385, value = ramu

1 column = professional data:designation, timestamp = 1417585277,value = manager

1 column = professional data:salary, timestamp = 1417521903862, value = 50000

1 row(s) in 0.0370 seconds

Java API Kullanarak Tarama

Java API kullanarak tüm tablo verilerini taramak için eksiksiz program aşağıdaki gibidir.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.util.Bytes;

import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;


public class ScanTable{

   public static void main(String args[]) throws IOException{

      // Instantiating Configuration class
      Configuration config = HBaseConfiguration.create();

      // Instantiating HTable class
      HTable table = new HTable(config, "emp");

      // Instantiating the Scan class
      Scan scan = new Scan();

      // Scanning the required columns
      scan.addColumn(Bytes.toBytes("personal"), Bytes.toBytes("name"));
      scan.addColumn(Bytes.toBytes("personal"), Bytes.toBytes("city"));

      // Getting the scan result
      ResultScanner scanner = table.getScanner(scan);

      // Reading values from scan result
      for (Result result = scanner.next(); result != null; result = Scanner.next())

      System.out.println("Found row : " + result);
      //closing the scanner
      scanner.close();
   }
}

Yukarıdaki programı aşağıda gösterildiği gibi derleyin ve çalıştırın.

$javac ScanTable.java $java ScanTable

Aşağıdakiler çıktı olmalıdır:

Found row :
keyvalues={row1/personal:city/1418275612888/Put/vlen=5/mvcc=0,
row1/personal:name/1418035791555/Put/vlen=4/mvcc=0}

Miktar

Kullanarak bir tablonun satır sayısını sayabilirsiniz. countkomut. Sözdizimi aşağıdaki gibidir:

count ‘<table name>’

İlk satırı sildikten sonra emp tablo iki satıra sahip olacaktır. Aşağıda gösterildiği gibi doğrulayın.

hbase(main):023:0> count 'emp'
2 row(s) in 0.090 seconds
⇒ 2

kesmek

Bu komut düşürmeyi devre dışı bırakır ve bir tabloyu yeniden oluşturur. Sözdizimitruncate Şöyleki:

hbase> truncate 'table name'

Misal

Aşağıda, kesme komutu örneği verilmiştir. Burada kısalttıkemp tablo.

hbase(main):011:0> truncate 'emp'
Truncating 'one' table (it may take a while):
   - Disabling table...
   - Truncating table...
   0 row(s) in 1.5950 seconds

Tabloyu kestikten sonra, doğrulamak için tarama komutunu kullanın. Sıfır satırlı bir tablo alacaksınız.

hbase(main):017:0> scan ‘emp’
ROW                  COLUMN + CELL
0 row(s) in 0.3110 seconds

HBase'deki kullanıcılara izin verebilir ve iptal edebiliriz. Güvenlik amaçlı üç komut vardır: Grant, iptal ve user_permission.

hibe

grantkomutu, belirli bir kullanıcıya bir tabloda okuma, yazma, yürütme ve yönetici gibi belirli haklar verir. Grant komutunun sözdizimi aşağıdaki gibidir:

hbase> grant <user> <permissions> [<table> [<column family> [&ltcolumn; qualifier>]]

RWXCA setinden bir kullanıcıya sıfır veya daha fazla ayrıcalık verebiliriz.

  • R - okuma ayrıcalığını temsil eder.
  • W - yazma ayrıcalığını temsil eder.
  • X - yürütme yetkisini temsil eder.
  • C - ayrıcalık yaratmayı temsil eder.
  • A - yönetici ayrıcalığını temsil eder.

Aşağıda, 'Tutorialspoint' adlı bir kullanıcıya tüm ayrıcalıkları veren bir örnek verilmiştir.

hbase(main):018:0> grant 'Tutorialspoint', 'RWXCA'

iptal etmek

revokekomutu, bir kullanıcının bir tablonun erişim haklarını iptal etmek için kullanılır. Sözdizimi aşağıdaki gibidir:

hbase> revoke <user>

Aşağıdaki kod, 'Tutorialspoint' adlı kullanıcıdan tüm izinleri iptal eder.

hbase(main):006:0> revoke 'Tutorialspoint'

user_permission

Bu komut, belirli bir tablo için tüm izinleri listelemek için kullanılır. Sözdizimiuser_permission Şöyleki:

hbase>user_permission ‘tablename’

Aşağıdaki kod, 'emp' tablosunun tüm kullanıcı izinlerini listeler.

hbase(main):013:0> user_permission 'emp'