問題タブ [hbase]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
replication - HBase ノードに障害が発生するとどうなりますか?
HBase は素晴らしいのですが...
ノードが (爆発/焼失/盗難/バラバラに引き裂かれた場合)、データはどうなりますか?
- データは失われていますか?
- クラスターは自動回復できますか?
- ダウンタイムなしで新しいノードを追加できますか?
みんなありがとう、マキシム。
nosql - 列指向DB(HBase、Cassandra)のシーケンシャル行ID?
HBaseで行IDを設計する際に、矛盾する2つのアドバイスを見てきました(具体的には、Cassandraにも当てはまると思います)。
- データの局所性を利用するために頻繁に集約するキーをグループ化します。(White、Hadoop:The Definitive Guideと私はHBaseサイトでそれを見たことを思い出しますが、見つけることができません...)
- キーを分散して、作業を複数のマシンに分散できるようにします(Twitter、Pig、およびHBase(Twitterスライド14))
どちらが最適かはユースケースによって異なると思いますが、どちらの戦略の経験もありますか?
java - Hbase の Java ORM
HBase の適切な Java ORM 実装は誰でも知っています。これはRubyにとって本当に素敵に見えます
http://www.stanford.edu/~sqs/rhino/doc/
しかし、Java用のものは見つかりませんでした。
ありがとう。
java - HBaseテーブルごとのレデューサー
基本的に、データを適切なレデューサーにルーティングする必要があります。各ReducerはTableReducerになります。
私は次のファイルを持っています
venodor1、user1、xxxx = n venodor1、user1、xxxx = n venodor2、user2、xxxx = n venodor2、user2、xxxx = n
次のhbaseテーブルに挿入する必要があります
テーブルvendor1:[user1] => {data:xxxx = n} [user2] => {data:xxxx = n}
テーブルvendor2:[user1] => {data:xxxx = n} [user2] => {data:xxxx = n}
形式は[ROW_ID]=>{[FAMILY]:[COLUMN]=[VALUE]}です。
- 各ベンダーには異なるhbaseテーブルがあります
- 行は、行の値に基づいて別のhbaseテーブルに移動する必要があります。
それを行う方法はありますか?カスケードで?これを回避する別の作業はありますか?
ありがとう、フェデリコ
java - send Hbase バッチ Puts 圧縮?
圧縮された hbase puts のバッチを送信する方法はありますか。
自動フラッシュを false に設定し、2MG の bufferSize を使用しています。1 つのバッチでより多くのプットを送信するために、プットを圧縮する方法はありますか。
感謝、
database - 集約されたウェブログ データから情報を取得する方法は?
集約されたログからデータを取得する方法を知りたいですか? これは私が持っているものです:
- HDFS にロードされる非圧縮ログ データは毎日約 30 GB (これはすぐに約 100 GB に増加します)
これは私の考えです:
- 毎晩、このデータは Pig で処理されます
- ログは読み取られ、分割され、カスタマイズされますUDF は次のようなデータを取得します: timestamp
, url
, user_id
(たとえば、必要なものはこれだけです)
- ログ エントリから、これを HBase にロードします (ログ データは無限に保存されます)。
次に、特定の時間範囲内に特定のページを見たユーザーを知りたい場合は、各クエリでログ データ全体をスキャンすることなく、HBase をすばやくクエリできます (迅速な回答が必要です。数分でもかまいません)。また、複数のクエリが同時に行われます。
このワークフローについてどう思いますか? この情報を HBase にロードすることに意味があると思いますか? 他のオプションとは何ですか? また、それらは私のソリューションとどのように比較されますか? すべてのコメント/質問と回答に感謝します。前もって感謝します。
parallel-processing - HBase はリージョンサーバー間でどのようにテーブルを分割しますか?
HBase がリージョンサーバー間でテーブルを分割する方法を教えてください。
たとえば、行キーが 0 ~ 10M の整数で、10 個のリージョン サーバーがあるとします。
これは、最初の regionserver が値 0 - 10M、2 番目の 1M - 2M、3 番目の 2M-3M 、... 10 番目の 9M - 10M のキーを持つすべての行を格納することを意味しますか?
行キーをタイムスタンプにしたいのですが、ほとんどのクエリが最新の日付に適用され、すべてのクエリが 1 つのリージョン サーバーによってのみ処理される場合、それは本当ですか?
それとも、このデータは別の方法で拡散されるのでしょうか?
または、リージョンサーバーよりも多くのリージョンを作成することもできます。そのため、(与えられた例によれば) サーバー 1 は 0 - 0,5M と 3M - 3,5M のキーを持ち、この方法で私のデータはより均等に分散されます。可能?
アップデート
オプション があることがわかりましたhbase.hregion.max.filesize
。これで問題が解決すると思いますか?
java - クラスパス内の外部 jar と HBase
ファイルで外部 jar を使用すると問題が発生します。私はいつも得る:
このファイルはクラスパス上にあり、jar の実行時にオプションを設定しています。
このコマンドを呼び出すと、このファイルは正常にコンパイルされます。
何をすべきか?
java - HBase Javaクライアントで複数または一括フェッチまたは取得しますか?
HBase Javaクライアントは、memcached multi-getのようなmulti-get(別名バルクフェッチ)をサポートしていますか?私は少なくとも1時間ドキュメントとインターネットを調べましたが、決定的なものは何も見つかりませんでした。HTable APIは、複数のDeleteと複数のPutを提供しますが、Getに対する明白な類似の呼び出しはありません。
明確にするために、私は一連のレコードではなく、異なるレコードを取得しようとしています。したがって、スキャンは私が直感的に使用するものではありません。
フィルタを使用したバッチランダムアクセスに同等の機能を提供するスキャンについて、スレッド(おそらくJIRA)で何かを読みました。誰かがこれがベストプラクティスであることを確認でき、使用する適切なタイプのフィルターを指定できる場合は、そのルートを使用します。
ありがとう!
java - 同じクラスターの HBase にテーブルのコピーを作成する方法は? または、作業状態での操作中に元の状態を使用してリクエストを処理する方法
同じクラスター内の HBase にテーブル構造とデータのコピーを作成する効率的な方法はありますか? 明らかに、宛先テーブルの名前は異なります。私がこれまでに見つけたもの:
異なるHBase クラスター間でデータをコピーするためのツールとして説明されている CopyTable ジョブ。クラスター内の操作をサポートすると思いますが、そのシナリオを効率的に処理するように設計されているかどうかはわかりません。
export+import ジョブを使用します。それはハックのように聞こえますが、私は HBase を初めて使用するので、それが本当の解決策になるのでしょうか?
なぜ私がこれをやろうとしているのかと尋ねる人もいるかもしれません。私のシナリオは、必要に応じて「スナップショット」状態で、アクセスする必要がある何百万ものオブジェクトがあるということです。これらのオブジェクトの多くを更新する、毎日実行されるバッチ プロセスがあります。そのバッチ プロセスのいずれかのステップが失敗した場合、元の状態に「ロールバック」できる必要があります。それだけでなく、バッチ処理中にリクエストを元の状態に戻す必要があります。
したがって、現在の流れは、元のテーブルを作業コピーに複製し、作業コピーを更新している間、元のテーブルを使用してリクエストを処理し続けることです。バッチ プロセスが正常に完了した場合は、すべてのサービスに新しいテーブルを使用するように通知します。それ以外の場合は、新しいテーブルを破棄します。
これは BDB を使用して正常に機能しましたが、現在、非常に大きなデータのまったく新しい世界にいるため、間違ったアプローチを取っている可能性があります。代わりに使用すべきパターンの提案があれば、大歓迎です。:-)