実験の目的
詳細情報のHBaseの操作
泊まったのjavaで行わIDEA
おなじみのJAVAAPIのHBaseの
原則
すでに学んだようでもハイブのHBaseで操作することができるだけでなく、実際に使用することがより困難HBaseのシェル操作HBaseの、今日はJAVAAPI操作のHBaseを通じて学びます。
1.接続を作成
、我々は以前の時間についてのHBaseを、クライアントオペレーティングHBaseのを言及し、そしてアドレスはアドレス飼育係の内部に格納されているため、マスターは本当にそれだけの飼育係のアドレスを知っている必要があり、対処する必要はありません。HBaseのAPIへの接続を作成します。
コンフィギュレーション設定= HBaseConfiguration.create();
//飼育係に接続します
config.set( "hbase.zookeeper.quorum"、 "飼育係服务器IP:2181");
//接続を作成します。
接続CONN = ConnectionFactory.createConnection(設定)。
テーブルを作成します。2.
//管理者を取得します
管理者管理者= conn.getAdmin();
/ *表、バイト配列に* /
パブリック静的最終のTableNameテーブル= TableName.valueOf( "試験" .getBytes())。
//クラスを記述したテーブルを作成します。
HTableDescriptor HT =新しいHTableDescriptor(表)。
//列ファミリの記述クラスを作成します。
HColumnDescriptor HD =新HColumnDescriptor( "CF1" .getBytes());
//設定列familyプロパティ
hd.setMaxVersions(5)。
hd.setBlockCacheEnabled(真の);
hd.setBlocksize(128000)。
//列ファミリを追加
ht.addFamily(HD)。
//作成があれば、それは例外がスローされます
admin.createTable(HT)。
3.データの挿入
//参照テーブルを取得します
テーブルTA = conn.getTable(TestHbase.table)。
一覧<入れ> LS =新しいArrayListを<>();
//新しい割り当てを入れて、パラメータがあるのrowKey
() "_ 123"(GetBytesメソッド()。)に置く=新しい入れを置きます。
put.addColumn( "CF1" .getBytes()、 "名前" .getBytes()、 "ZS" .getBytes());
put.addColumn( "CF1" .getBytes()、 "年齢" .getBytes()、String.valueOf(20).getBytes());
リストによる//一括インポート
ls.add(PUT)。
ta.put(LS)。
4.単一のクエリ
//参照テーブルを取得します
テーブルTA = conn.getTable(TestHbase.table)。
//新しい割り当てを取得し、パラメータがあるのrowKey
ゲットする=新しい取得( "123_996" .getBytes());
get.addColumn( "CF1" .getBytes()、 "年齢" .getBytes());
//結果を取得します
結果結果= ta.get(GET);
//のセルの結果を削除します
電池セル= result.getColumnLatestCell( "CF1" .getBytes()、 "年齢" .getBytes());
System.out.printf(新しいString(cell.getValueArray()、 "GBK"));
5.複数のクエリ
//接続取得
テーブルTA = conn.getTable(TestHbase.table)。
//新しいスキャンを作成し、スキャンの着信
スキャンスキャン=新しいスキャン( "123_990" .getBytes()、 "123_999" .getBytes());
scan.addColumn( "CF1" .getBytes()、 "年齢" .getBytes());
// GET ResultScanner、トラバース
ResultScannerスキャナ= ta.getScanner(スキャン)。
{(スキャナを次の結果)のために
電池セル= next.getColumnLatestCell( "CF1" .getBytes()、 "年齢" .getBytes());
System.out.println(新しいString(cell.getValueArray()、 "GBK"));
}
6. [削除]テーブル
// GET管理
管理者管理者= conn.getAdmin();
//必須禁止を削除する前に、そこに削除された場合
IF(admin.tableExists(表)){
admin.disableTable(表)。
admin.deleteTable(表)。
}
実験環境
1. OS
サーバー: Linux_Centosの
マニピュレータ: Windows_7
サーバーのデフォルトのユーザー名:ルート、パスワード:123456
マニピュレータデフォルトのユーザー名: Hongya、パスワード:123456
2.実験ツール1.Xshell
XshellはSSH1、SSH2、およびTELNETプロトコルのMicrosoft Windowsプラットフォームをサポートする強力な安全なターミナルエミュレーションソフトウェアです。リモートホストへのインターネットを介した接続を確保し、その革新的なデザインとヘルプユーザーへの機能は、複雑なネットワーク環境で自分の仕事を楽しんでXshell。リモート端末のよりよい制御を達成するために、Windowsのインターフェイスに異なるシステムの下で、リモート・サーバーにアクセスするために使用することxshell。我々はXShell5を使用した実験では、その新機能は次のとおりです
。1.情報セキュリティの効果的な保護; Xshellは、SSH1 / SSH2プロトコル、パスワード、およびユーザー認証方法DSAおよびRSA公開鍵、および暗号化などのセキュリティ機能の様々なサポートすべてのトラフィックのアルゴリズム様々な暗号化。Telnetやrloginなどの伝統的な接続プロトコルのように、それが簡単に盗むためにネットワークの知識を持っている人によるネットワークトラフィックのユーザーのためになる、ので、Xshellを組み込まれている機能は、セキュリティとユーザーデータのセキュリティを維持することが重要です。Xshellは、ユーザーがハッカーからデータを保護するのに役立ちます。
2.最高のエンドユーザー体験は、しばしば、所与の時間端末セッション複数の異なるホストの同一セットに異なるホストまたは比較送信コマンドを使用して出力端子に使用するエンドユーザを必要とします。Xshellは、これらの問題を解決することができます。そのような標識の環境、広く分割ウィンドウ、同期入力、およびセッション管理など、ユーザーフレンドリーな機能は、もありますが、ユーザーは他の仕事をする時間を節約することができます。
代わりに危険なTelnetクライアントの3; XshellはVT100、VT220、VT320、xtermに、サポートのLinux、Scoansi およびANSI端末エミュレーションと申し出ターミナルTelnetクライアントの伝統的な外観を置き換えるためのさまざまなオプションを。
4. Xshell単一画面多言語; Xshell UTF-8においては、同じソフトウェアにおける端末の最初の使用です。Xshellと、異なる言語でコード化された切り替えることなく、画面上に複数の言語で表示することができます。ますます多くの企業がデータベースやアプリケーションUTF-8形式を使用する必要があり、サポートUTF-8端末エミュレータが増加しているエンコーディングが求められています。Xshellは、ユーザーが多言語環境に対処することができます。すべてのX11やTCP / IPアプリケーションの安全な接続をサポートしています5、SSHトンネリングメカニズムでは、Xshellは、すべてのTCP / IPアプリケーションは、安全な接続を共有することができます任意のプログラムを変更せずに、ポートフォワーディング機能をサポートしています。
2.Hadoop
Hadoopの分散ファイルシステム(Hadoopの分散ファイルシステム)を実装し、HDFSに言及しました。HDFSフォールトトレラント特性は、低(低コスト)ハードウェア上に展開されるように設計され、それはハイスループット(高スループット)大規模なデータを有するもの(大きなデータセットに対して、アプリケーションデータにアクセスするために提供しますセット)アプリケーション。HDFSは、ストリームの形で要件POSIXを(リラックス)、およびデータにアクセスすることができます(アクセスをストリーミング)ファイルシステムを緩和しました。Hadoopのフレームワークのコア設計は、次のとおりです。HDFSとMapReduceの。HDFSは、膨大な量のデータのストレージを提供し、MapReduceのは、データの質量を計算するために設けられています。
3.Hbase
HBaseのは、分散型、列指向オープンソースのデータベースであり、技術はによって書かれたGoogleのフェイチャンの論文から来ている「のBigtable:構造化データを分散ストレージシステム」同じによって提供分散ファイルシステム、Googleのファイルシステム(ファイルシステム)のようなBigtableの利点は、HBaseのは、Hadoopの上にBigtableの同様の機能を提供します。HBaseのは、ApacheのHadoopプロジェクトのサブプロジェクトです。HBaseのは、リレーショナル・データベースとは異なり、それは、非構造化データストアのデータベースに適合されます。HBaseのではなく、列のラインに基づいて、異なるモデルです。
HBaseの-Hadoopのデータベース、技術を使用して、高信頼性、高性能、列指向、スケーラブルな分散ストレージシステムでは、安価なPCサーバー上でHBaseのマスストレージクラスタ構成を建て。
ステップ 1:クラスタを起動、サーバーへの接続
実験がインストールされ、疑似分散クラスタを提供し、彼らは問題が発生したときIDEAは追加の開発を提供し、飼育係、Hadoopの、HBaseのが、コードがあなたの参考のために、プロジェクトhellohadoop HBaseのモジュールに完了しました。
作業機に1.1、編集ローカルホストファイル(C:\ WINDOWS \ System32に\ drivers \ etcに)。
ステップ 2:スタート飼育係とサービスのHBase
2.1オープン飼育係。
CD /home/hadoop/tmp/soft/zookeeper-3.4.6/ //飼育係のディレクトリを入力します。
ビン/ zkServer.sh開始//オープンのZooKeeperサービス
ビン/ zkServer.shステータス//ビューのZooKeeperサービスのステータス
JPS //プロセスを表示
ステップ 3:テスト
本次实验我们将采用idea作为工具。代码已经完成,放在项目的hellohadoop的hbase模块中,因为我们主要是学习如何通过javaAPI操作hbase,所以实验中我们重点学习操作过程以及对结果的分析,对代码的分析我们就不多做介绍。
若同学想要自行输入代码进行实验的分析,可以复习之前学习创建项目和模块的内容:双击IDEA,打开后按照以前试验过的内容,按Ctrl+Alt+Shift+S进入project structure新建项目模块(你也可以新建项目,但是我们建议新建模块,这是企业的做法),然后新建一个名为hbase的library,引入上面的hbase的依赖jar包。建好项目后,创建包和类,进行代码编写。这里不做过多介绍。
3.1查看代码:如图新建了一个TestHbase的类,创建了三个类属性(表名可以自己随意取)。
结果有乱码,乱码是hbase很容易出现的情况,因为hbase存的数据都是字节,所以需要序列化和反序列化,这需要一开始就插入、删除都统一字符集,当然这也不能避免乱码的情况,有关怎么解决,我们后面再讨论。