ビッグデータアプリケーションのHBaseのためのWindowsプラットフォームのビルドにEclipse環境のクライアントバージョン-Java

ビッグデータのシナリオは、利点のNoSQLデータベースは自明であるが、実践的なマルチプラットフォームのLinuxの開発のNoSQLデータベースに関わる何かがWindowsプラットフォームでもあまり紹介すべきこととして、主に曖昧であり、ほとんどが実行できません。本論文では、Eclipse環境に基づいて、Windowsプラットフォームでは、プレゼンテーションを行うためのHBaseクライアントの開発環境を構築します。また、HBaseの要求に応じてメッセージを残すことができる必要があり、Windowsのクライアントライブラリスリフト実装のバージョンは、パッケージを作ったベース。

まず、開発環境

オペレーティングシステム:Windows XP SP3

開発ツール:Eclipse3.6

仮想マシン:VMware社

サーバー環境:hadoop1.1.0 + Hbase0.94

注:これは特に、Linuxのポリシーは、Windows環境下でのCygwinを必要としない設定されています。

第二に、環境設定

2.1システム設定

  変更WindowsホストホストファイルC:\ WINDOWS \ SYSTEM32 \ drivers \ etcに\ホスト、増加サーバの設定

127.0.0.1 localhostを
127.0.0.1 microsof-c2f4ea
192.168.230.133 hadoop1

2.2 Eclipseの設定

  ファイル名を指定して実行Eclipseは、「プロパティ」を選択し、新しいJavaプロジェクト「HBaseClient」、右プロジェクトのルートディレクトリを作成 - >「Javaのビルド・パス」 - >「ライブラリ」 - >「外部JARの追加」、HBaseのは、ルートディレクトリを抽出した後HBaseの-0.94.0.jar、HBaseの-0.94.0-tests.jarとクラスパスに追加したプロジェクトの下にあるすべてのjarパッケージの下のlibサブディレクトリ。HBaseのコピーサーバプロファイルのHBase-site.xmlのプロジェクトのクラスパスに追加しました。設定ファイルは次のよう:

<設定>
    <プロパティ>
    <名前> hbase.rootdir </名前>
    <値> HDFS://192.168.230.133:9000 / HBaseの</ value>の
    <説明>地域のサーバで共有ディレクトリ</説明>。
    </プロパティ>
    <プロパティ>
     <名前> hbase.cluster.distributed </名前>
     <値>真</ value>の
     <説明>モードは、クラスタがになります可能な値は。
              偽:管理飼育係でスタンドアロンと疑似分散セットアップ
              真:管理対象外の飼育係クォーラム(hbase-env.sh参照)で完全分散
     </記述>
  </ property>の    
    <プロパティ>  
    <名前> hbase.master </名前>  
    <値> HDFS://192.168.230.133:60000 </値>  
    </ property>の   
    <プロパティ>
    <名前> hbase.zookeeper.quorum </名前>
    <値> 192.168.230.133 </ value>の
    <説明>カンマ区切りZooKeeperのクォーラム内のサーバーのリスト。例えば、 "host1.mydomain.com、host2.mydomain.com、host3.mydomain.com"。デフォルトでは、操作のローカル疑似分散モードのlocalhostに設定されています。完全分散セットアップの場合、これはZooKeeperの定足数サーバーの完全なリストに設定する必要があります。HBASE_MANAGES_ZKがhbase-env.shに設定されている場合、これは我々が上のZooKeeperを停止/起動しますサーバのリストがあります。

    </ property>の
    <プロパティ>
    <名前> hbase.zookeeper.property.dataDir </名前>
    <値> /ホーム/ Hadoopの/ログ/飼育係</ value>の
    <説明>プロパティのZooKeeperからのconfig zoo.cfg。
        スナップショットが保存されているディレクトリ。
    </記述>
    </ property>の
</構成>

第三に、プログラムのソースコード

インポートにjava.io.IOException;
輸入はjava.util.ArrayList;
輸入はjava.util.List;
 
輸入org.apache.hadoop.conf.Configuration。
輸入org.apache.hadoop.hbase.HBaseConfiguration。
輸入org.apache.hadoop.hbase.HColumnDescriptor;
輸入org.apache.hadoop.hbase.HTableDescriptor;
輸入org.apache.hadoop.hbase.KeyValue;
輸入org.apache.hadoop.hbase.MasterNotRunningException。
輸入org.apache.hadoop.hbase.ZooKeeperConnectionException。
輸入org.apache.hadoop.hbase.client.Delete;
輸入org.apache.hadoop.hbase.client.Get;
輸入org.apache.hadoop.hbase.client.HBaseAdmin。
輸入org.apache.hadoop.hbase.client.HTable;
輸入org.apache.hadoop.hbase.client.Result;
org.apache.hadoop.hbase.client.ResultScannerインポート、
インポートorg.apache.hadoop.hbase.client.Scan;
インポートorg.apache.hadoop.hbase.client.Put;
インポートorg.apache.hadoop.hbase.util。バイト;
 
publicクラスHBaseTest {
    
    プライベート静的confの設定= NULL;
     
    / **
     *初期設定
     * /
    静的{
        設定HBASE_CONFIG設定新しい新=();
        // hbase.zookeeper.quorum設定HBaseの/ confに/ HBaseの-site.xml内同じ値 
        HBASE_CONFIG.set( "hbase.master"、 "192.168.230.133:60000");
        HBASE_CONFIG.set( "hbase.zookeeper.quorum"、 "192.168.230.133");
        //とのHBase / CONF / hbase- site.xmlの値hbase.zookeeper.property.clientPortと同じ構成
        HBASE_CONFIG.set( "hbase.zookeeper.property.clientPort"、 "2181");
        CONF = HBaseConfiguration.create(HBASE_CONFIG)。
    }
    
    / **
     *创建一张表
     * /
    パブリック静的ボイドcreatTable(文字列tableNameの文字列[]のfamilys)は例外{スロー
        HBaseAdmin管理=新しいHBaseAdmin(CONF)を、
        (admin.tableExists(tableNameの)){場合
            のSystem.out.println( "!テーブルが既に存在します");
        }他{
            HTableDescriptor tableDesc =新しいHTableDescriptor(tableNameの)。
            以下のために(INT iが= 0; I <familys.length; I ++){
                tableDesc.addFamily(新しいHColumnDescriptor(familysの[I]))。
            }
            admin.createTable(tableDesc)。
            System.out.println( "テーブルを作成する" + tableNameの+ "OK。");
        } 
    }
    
    / **
     *删除表
     * /
    パブリック静的な無効deleteTable(文字列tableNameのは)例外{スロー
       試し{
           HBaseAdmin管理者=新しいHBaseAdmin(CONF)を、
           admin.disableTable(tableNameの)。
           admin.deleteTable(tableNameの)。
           System.out.println( "削除表" + tableNameの+ "OK。");
       }キャッチ(MasterNotRunningException電子){
           e.printStackTrace();
       }キャッチ(ZooKeeperConnectionException電子){
           e.printStackTrace();

    }
     
    / **
     *插入一行记录
     * /
    パブリック静的な無効addRecordは(文字列tableNameのは、文字列のrowKeyは、文字列の家族は、文字列の修飾子は、文字列値)が
            スロー例外{
        試み{
            HTableテーブル=新しいHTable(confに、tableNameの);
            置く=新しいのPutを入れて(Bytes.toBytes(のrowKey));
            put.add(Bytes.toBytes(家族)、Bytes.toBytes(修飾子)、Bytes.toBytes(値));
            table.put(PUT)。
            System.out.println( "テーブルに" +のrowKey + "の挿入がrecored" + tableNameの+ "OK。");
        }キャッチ(IOExceptionを電子){
            e.printStackTrace();
        }
    }
 
    / **
     *删除一行记录
     * /
    パブリック静的ボイドdelRecord(文字列tableNameの文字列のrowKey)は、IOExceptionがスロー{
        HTableテーブル=新しいHTable(CONF、tableNameの)。
        リスト一覧=新しいArrayListを();
        削除デル=新しい削除(rowKey.getBytes());
        list.add(デル)。
        table.delete(リスト);
        System.out.println( "OK。" +のrowKey + "をデルがrecored");
    }
     
    / **
     *查找一行记录
     * /
    パブリック静的ボイドgetOneRecord(文字列tableNameの文字列のrowKey)にIOException {スロー
        HTableテーブル=新しいHTable(CONF、tableNameのを)。
        ゲットする=新しい取得(rowKey.getBytes());
        RS = table.get(GET)結果。
        用(です。KeyValue KV:rs.raw()){
            System.out.print(新しい文字列(kv.getRow())+ "")。
            System.out.print(新しいString(kv.getFamily())+ ":");
            System.out.print(新しいString(kv.getQualifier())+ "");
            System.out.print(kv.getTimestamp()+ "");
            System.out.println(新しいString(kv.getValue()));
        }
    }
     
    / **
     *显示所有数据
     * /
    パブリック静的ボイドgetAllRecord(文字列tableNameの){
        試み{
             HTableテーブル=新しいHTable(CONF、tableNameの)。
             スキャンS =新しいスキャン();
             ResultScannerのSS = table.getScanner(S)。

                 用(です。KeyValue KV:r.raw()){
                    System.out.print(新しい文字列(kv.getRow())+ "「)。
                    System.out.print(新しいString(kv.getFamily())+ ":");
                    System.out.print(新しいString(kv.getQualifier())+ "「);
                    System.out.print(kv.getTimestamp()+ "「);
                    System.out.println(新しいString(kv.getValue()));
                 }
             }
        }キャッチ(IOExceptionを電子){
            e.printStackTrace();
        }
    }
    
    公共の静的な無効メイン(文字列[] agrs){
        試み{
            文字列テーブル名=「スコア」。
            文字列[]のfamilys = { "グレード"、 "コース"}。
            HBaseTest.creatTable(テーブル名、のfamilys)。
             
            //記録ZKB追加
            HBaseTest.addRecord(テーブル名、 "ZKB"、 "グレード"、 ""、 "5");
            HBaseTest.addRecord(テーブル名、 "ZKB"、 "コース"、 ""、 "90")。
            HBaseTest.addRecord(テーブル名、 "ZKB"、 "もちろん"、 "数学"、 "97");
            HBaseTest.addRecord(テーブル名、 "ZKB"、 "コース"、 "技術"、 "87")。
            //記録baoniu追加
            HBaseTest.addRecord(テーブル名、 "baoniu"、 "グレード"、 ""、 "4");
            HBaseTest。addRecord(テーブル名、 "baoniu"、 "もちろん"、 "数学"、 "89");
             
            System.out.println( "===========得る一つのレコード========");
            HBaseTest.getOneRecord(テーブル名、 "ZKB");
             
            System.out.println( "=========== ========すべてのレコードを表示します");
            HBaseTest.getAllRecord(テーブル名)。
             
            System.out.println( "===========デル一つのレコード========");
            HBaseTest.delRecord(テーブル名、 "baoniu");
            HBaseTest.getAllRecord(テーブル名)。
             
            System.out.println( "=========== ========すべてのレコードを表示します");
            HBaseTest.getAllRecord(テーブル名)。
        }キャッチ(例外e){
            e.printStackTrace();
        }
    }
}

第四に、実行ショット

  ウェブUIをHBaseのは、私たちは以下のように私たちは、テーブルスコア、列の家族構成を作成したことがわかります。

第五に、結果

  Eclipseで直接実行し、結果を以下に示すスクリーンショット:

第六に、PUTに

  以上示例虽然实现了操作,但是针对就插入性能方面却是没有优化,后续的文章将会介绍影响PUT操作的性能和PUT的集中方法,作为Hbase性能调优的专题。

发布了138 篇原创文章 · 获赞 0 · 访问量 7733

おすすめ

転載: blog.csdn.net/mnbvxiaoxin/article/details/104287110