sql >> データベース >  >> NoSQL >> HBase

ApacheHBaseポートの使用ガイド

    Apache HBase(バージョン0.90以降)を初めて使用する場合、システムで使用されるネットワークポートの構成は少々圧倒される可能性があります。

    このブログ投稿では、さまざまなHBaseプロセスで使用されるすべてのTCPポートと、それらが使用される方法と理由を(すべて1か所で)学習し、管理者がファイアウォール設定のトラブルシューティングとセットアップを行い、新しい開発者がデバッグする方法を支援します。

    一般的なHBaseクラスターには、1つのアクティブなマスター、1つまたは複数のバックアップマスター、およびリージョンサーバーのリストがあります。バックアップマスターは、次のアクティブマスターになるのを待っているスタンバイマスターです。アクティブになる前は、どのポートでもリッスンしません。 (HBaseのスケーラビリティーの仕組みについて詳しくは、こちらをご覧ください。)

    クラスタ内の各サーバーは、クライアントや他のHBaseサーバーからのリクエストをメインポートでリッスンします。各サーバーには、JettyWebUIサーバーも組み込まれています。

    次の図は、さまざまなコンポーネント間の通信を示しています。 (青色のコンポーネントはHBaseクラスターに属し、通常はファイアウォールの背後にあります。灰色のコンポーネントは外部クライアントであり、通常はHBaseクラスターのファイアウォールの外側にあります。緑色のコンポーネントはWebブラウザーであり、通常はファイアウォールの外側にあります。)

    1. クライアントアプリケーションはApacheZooKeeperと通信して、マスターとメタリージョンサーバーの場所を見つけます(ルートリージョンはHBaseバージョン0.96で削除されています)。
    2. クライアントアプリケーションはリージョンサーバーと通信して、テーブルの読み取り/書き込み/スキャンを行います。
    3. クライアントアプリケーションはマスターと通信して、既存のテーブルに関する情報を取得し、テーブルを動的に作成/削除し、列ファミリーを追加/削除します。
    4. マスターはリージョンサーバーと通信して、リージョンを開く/閉じる/移動/分割/フラッシュ/コンパクトにします。
    5. マスターはZooKeeperにデータを配置して、アクティブなマスターとメタリージョンサーバーの場所を保存し、ログ分割タスクを作成し、リージョンサーバーのステータスを追跡します。
    6. リージョンサーバーはZooKeeperでデータを読み取り、ログ分割を実行し、マスターの場所とクラスターのステータスを追跡します。
    7. リージョンサーバーはマスターと通信して、リージョンサーバーの起動と負荷を報告します。
    8. 場合によっては、リージョンサーバーがメタリージョンと通信してリージョンのステータスを確認し、リージョン分割で新しいドーターリージョンを作成します。
    9. RESTクライアントはRESTサーバーと通信してHBaseにアクセスします。
    10. Thriftクライアントは、HBaseにアクセスするためにThriftサーバーと通信します。
    11. ユーザーはブラウザからマスターウェブUIにアクセスします。
    12. ユーザーはブラウザからリージョンサーバーのウェブUIにアクセスします。
    13. ユーザーはブラウザからRESTサーバーのウェブUIにアクセスします。
    14. ユーザーはブラウザからThriftサーバーのウェブUIにアクセスします。

    一部のHBaseクラスターには、RESTサーバーまたはThriftサーバーのリストが含まれている場合があります。 RESTサーバーとThriftサーバーはどちらもオプションです。これらは、HBaseクラスターへのREST/Thriftアクセスを提供する場合にのみ必要です。 HBaseにとって、これらは単なる他のクライアントアプリケーションです。他のHBaseサーバーと同様に、クライアントリクエストのメインポートとWebUIポートもリッスンします。

    次の表は、クライアントアプリケーションがHBaseクラスターと通信するために使用するポート、ユーザーがクラスター情報を確認するために使用するポート、およびさまざまなHBaseコンポーネントが相互に通信するために使用するポートを示しています。

    コンポーネント

    構成パラメーター

    デフォルト値

    使用場所

    ZooKeeper

    hbase.zookeeper.property.clientPort

    2181

    1,5,6

    マスター

    hbase.master.port

    60000

    3,7

    マスター

    hbase.master.info.port

    60010

    11

    リージョンサーバー

    hbase.regionserver.port

    60020

    2,4,8

    リージョンサーバー

    hbase.regionserver.info.port

    60030

    12

    RESTサーバー

    hbase.rest.port **

    8080

    9

    RESTサーバー

    hbase.rest.info.port *

    8085

    13

    スリフトサーバー

    hbase.regionserver.thrift.port **

    9090

    10

    スリフトサーバー

    hbase.thrift.info.port *

    9095

    14

    *HBaseバージョン0.94.5で導入されました。これらは、コマンドラインオプション--infoportで指定することもできます。 対応するサーバーを起動するとき。
    **コマンドラインオプション-pで指定することもできます。 対応するサーバーを起動するとき。

    1つのポート(HDFSネームノードポート)は、テーブルにリストされていません。これは、このポートの個別のパラメーターではないためです。これは、「hbase.root」(たとえば、「hdfs://namenode.foobar.com:35802 / hbase」)の一部として構成され、HDFSNameNodeポートは35802に構成されています。 hbase.root」、デフォルトは8020です。

    メインポートに加えて、クラスター内の各サーバー(ZooKeeperを除く)もWebUIポートをリッスンします。 Web UIは、対応するサーバーに組み込まれたJettyサーバーです。 Web UIは、スレッドダンプやローカルログなど、対応するサーバーに関する人間が読める形式の情報を提供します。マスターWebUIには、すべてのリージョンサーバーWeb UIへのリンクがあり、HBaseクラスターの現在のステータスを確認するための完璧なエントリポイントになります。

    REST / Thriftサーバーは、HBaseのオプションのプロキシです。他のHBaseクライアントアプリケーションと同じようにHBaseと通信します。ただし、これらは通常、他のHBaseサーバーと一緒にHBaseクラスター内にデプロイされます。

    クライアントアプリケーションは通常、HBaseクラスターの外にデプロイされます。 REST/Thriftクライアントもクラスターの外部にデプロイされます。 HBaseクラスターがファイアウォールの背後にある場合、これらの対応するポートはデフォルトで開いている必要があります:

    クライアントアプリケーションへのアクセスを許可するには:

    • 2181(hbase.zookeeper.property.clientPort)
    • 60000(hbase.master.port)
    • 60020(hbase.regionserver.port)

    REST / Thriftクライアントアクセスを許可するには:

    • 8080(hbase.rest.port)
    • 9090(hbase.regionserver.thrift.port)

    ファイアウォールの外側からのWebUIアクセスが許可されている場合は、対応するWebUIポートも開いている必要があります。

    • 60010(hbase.master.info.port)
    • 60030(hbase.regionserver.info.port)
    • 8085(hbase.rest.info.port)
    • 9095(hbase.thrift.info.port)

    結論

    この投稿では、HBase内部コンポーネント、クライアントアプリケーション、およびユーザー/管理者が使用するポートの概要をユースケース別に整理しました。

    ただし、HBaseはHDFS上で実行されるため、HDFSポートを知ることも重要です。 HBaseでMapReduceを実行するには、MapReduceポートについても知っておく必要があります。これらのHadoop関連のポートについては、Hadoopデフォルトポートのクイックリファレンスを参照してください。 。

    Jimmy Xiangは、プラットフォームチームのソフトウェアエンジニアです。

    >質問がありますか?それらをHBaseのコミュニティフォーラムに投稿してください。


    1. .NETCoreは別のシングルトンサービスにシングルトンサービスを挿入します

    2. NodejsとD3をリアルタイムで使用して地図上に州の名前をプロットする

    3. MongoDB$pull配列2レベル

    4. 高可用性のためにMongoDB用のPerconaサーバーをデプロイする方法