2014-09-18 26 views
8

Dosya sistemim hdfs olan Hbase'de taranan veriyi nutch tarafından kaydedildi. Sonra Bundan sonrahbase verilerini hdfs (hadoop komutları) aracılığıyla alma/verme

hadoop fs -CopyToLocal /hbase/input ~/Documents/output 

komutla bazı yerel doğrudan dizine HDF'ler benim veri (Hbase biri tablo) kopyalanamaz, ben kopyaladığınız komutunu

hadoop fs -CopyFromLocal ~/Documents/input /hbase/mydata 
takip ederek geri başka Hbase (diğer sistem) veri

HDF'ye kaydedilir ve hbase kabuğunda list komutunu kullandığımda, başka bir tablo yani 'mydata' olarak gösterir, ancak scan komutunu çalıştırdığımda, 'mydata' adına sahip bir tablo olmadığını belirtir.

Yukarıdaki prosedürde sorun nedir? Basit bir deyişle : Ben Sonra Hadoop komutu

  • kullanarak benim yerel dosya sistemine Hbase tabloyu kopyalamak istediğiniz

    1. , ben Hadoop komutuyla başka bir sistemde HDF'ler doğrudan
    2. Nihayet kaydetmek istediğiniz Ben masa Hbase ortaya çıktı ve aşağıdaki yöntemin herhangi birini bir Hbase kümeden tabloyu vermek ve başka aktarın, kullanmak isterseniz orijinal tablonun
  • cevap

    20

    olarak verileri görüntülemek olmak istiyorum:

    Kopya hedef kümeye kaynağından HDF'ler çıktı dizini

  • İthalat

    : Hadoop

    • İhracat

      $ bin/hadoop jar <path/to/hbase-{version}.jar> export \ 
          <tablename> <outputdir> [<versions> [<starttime> [<endtime>]] 
      

      NOT kullanma 10

      $ bin/hadoop jar <path/to/hbase-{version}.jar> import <tablename> <inputdir> 

    Not: Hem outputdir ve inputdir HDF'ler içindedir.Hedef kümeye kaynağından HDF'ler içinde Hbase

    • İhracat

      $ bin/hbase org.apache.hadoop.hbase.mapreduce.Export \ 
          <tablename> <outputdir> [<versions> [<starttime> [<endtime>]]] 
      
    • Kopya çıkış dizini kullanarak

    • İthalat

      $ bin/hbase org.apache.hadoop.hbase.mapreduce.Import <tablename> <inputdir> 
      

      Referans: yedekleme Hbase tablolara yerine Hbase komutunu kullanabilirsiniz ise Hbase tool to export and import

  • +0

    . "Hbase tablosunu hadoop komutunu kullanarak yerel dosya sistemime kopyalamak istiyorum" dedim, bilgi verdin, – Shafiq

    +0

    Yerel dosya sistemine hbase tablosunu kopyalayarak ne demek istiyorsun? Bir masaya ilişkin hdfs içindeki dosyalarda her zaman hadoop'un copyToLocal komutunu kullanabilirsiniz, ancak bunu yaparken hiçbir faydası yoktur. Tabloyu başka bir kümeye kopyalamayı planlıyorsanız, yukarıda belirtilen yöntemlerden herhangi birini kullanmanız gerekir. Yukarıda belirtilen şekilde bile, dışa aktarılan dosyaları yerel dosya sistemine kopyalamanız ve başka bir kümeye kopyalamanız gerekir. – Nanda

    +0

    Taranan veriyi harici sürücüye (usb sabit disk) yedeklemek istiyorum, böylece makine arızası durumunda kümemi yeniden yapılandırabilirim. ya da gelecekte yeni sürüm og hadoop vb. varsa, o zaman ona ihtiyacım var – Shafiq

    4

    Eğer Hbase ExportSnapshot Aracını kullanabilirsiniz hangi kopyalar diğer dosya sistemine hfiles, günlükleri ve anlık meta (yerel/HDF'ler/s3) bir harita kullanarak işi azaltın. Yerel dosya sisteminden geri verebilirsiniz

    $ ./bin/hbase class org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot MySnapshot -copy-to fs://path_to_your_directory

    tablonun

    • alın anlık gerekli dosya sistemine

      $ ./bin/hbase shell hbase> snapshot 'myTable', 'myTableSnapshot-122112'

    • İhracat hdfs'ye: /// srv2: 8082/hbase ve tabloyu anlık görüntüden kurtarmak için geri yükleme komutunu hbase kabuğundan çalıştırın.

      $ ./bin/hbase shell 
      hbase> disable 'myTable' 
      hbase> restore_snapshot 'myTableSnapshot-122112' 
      

      Referans: Dikkatle benim sorunuz var ise okumaz düşünüyorum Hbase Snapshots