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> [<column; 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'