自己構築hadoopクラスタからEMRへのデータ移行編

3349 ワード

自己構築クラスタをEMRクラスタに移行するには、既存のデータを移行する必要がある場合が多い.本文は主にhdfsデータとhive metaデータの移行方法を紹介する.
前面
必要に応じてEMRクラスタを作成.
hdfsデータの移行
主にdistcpに依存し、コアはネットワークを貫通し、hdfsパラメータと移行する内容、速度測定、移行を決定する.
ネットワーク
自作クラスタとEMRの各ノードネットワークの相互接続が必要である.同じVPCネットワークでも同じセキュリティグループしか必要とせず、異なるセキュリティグループではセキュリティグループ相互接続を設定する必要があります.
自己構築クラスタがクラシックネットワークである場合、EMRクラスタがvpcである場合、ネットワークアクセスにはCLASSICLANKを設定する必要がある.詳細はECSカスタマーサービスにお問い合わせください.
設定後、新しいクラスタノード上でssh古いクラスタノードでネットワーク接続状況を決定することができ、distcp操作でxxノードがxxノードに接続できない異常があれば、接続がないことを示し、設定を継続する必要がある.
HDfs権限構成確認
HDfsは権限設定があり、古いクラスタにaclルールがあるかどうか、同期するかどうか、dfsをチェックする.permissions.enabledとdfs.namenode.acls.Enabledの構成が古いクラスタと一致しているかどうかは、実際の必要に応じて変更します.
同期するaclルールがある場合は、distcpパラメータに-p同期権限パラメータを追加します.distcp操作がxxクラスタがaclをサポートしていないことを示す場合は、対応するクラスタが構成されていないことを示します.新しいクラスタは構成を変更してNMを再起動するように構成されていません.古いクラスタはサポートされていません.古いクラスタにはaclの設定も同期も必要ありません.
同期パラメータ
一般に、同期は新しいクラスタで実行され、同期されたジョブは新しいクラスタで実行され、古いクラスタへの影響は小さい.
distcpパラメータの詳細、一般的なコマンドフォーマットは以下の通りです: hadoop distcp -Ddfs.replication=3 -pbugpcax -m 1000 -bandwidth 30 hdfs://oldclusterip:8020 /user/hive/warehouse /user/hive/ 注意事項:
  • hdfs://oldclusterip:8020古いクラスタnameode ipを書き、複数のnamenodeが現在のactiveを書きます.
  • は、コピー数3を指定し、既存のコピー数-pを保持したい場合は-prbugpcaxのようにrを加算する.権限とaclを同期しない場合は、-p後にpとaを削除します.
  • -mはmap数を指定し、クラスタ規模、データ量に関係します.たとえばクラスタに2000コアcpuがあれば,2000 mapを指定できる.bandwidthは、単一mapの同期速度を指定し、レプリカのコピー速度を制御することによって実現され、大まかな値です.4.移行全体の速度はクラスタ間帯域幅、クラスタ規模の影響を受ける.同時にファイルが多ければ多いほどchecksumにかかる時間が長くなります.移行データ量が大きい場合は、まずいくつかのディレクトリを同期して全体の時間を評価してみましょう.指定した期間内にしか同期できない場合は、ディレクトリをいくつかの小さなディレクトリにカットして、順番に同期できます.

  • 5.移行中に古いクラスタに書き込みがある場合は、-udpateで変更を同期できます.6.一般的に完全に同期するには、デュアルライトデュアルコンピューティングを有効にするか、新しいクラスタに直接トラフィックを切り替えるために、短いトラフィック停止が必要です.
    hive metaデータ同期
    hive metaデータ同期は、本質的にhive meta dbであり、一般的にmysql dbのデータ同期である.一般的なmysqlデータ同期と比較して、locationの変更、hiveバージョンの整列に注意してください.
    meta db設定
    metaデータが多い場合は、meta dbとしてrdsを推奨します.自己構築クラスタにはrds dbがある場合があります.locationが異なるため、一般的にデータベースを新規作成する必要があります.ベストプラクティスは、EMRクラスタと使用可能な領域、vpcセキュリティグループの下にrdsデータベースを新規作成することです.
    新しいクラスタmasterノードにログインし(haクラスタの両方のmasterが必要な場合)、/usr/local/emr/emr-agent/run/meta_を変更します.db_info.json、中のuse_をlocal_meta_dbはfalseに設定され、metaデータベース情報のリンクアドレス、ユーザー名、パスワードが新しいrdsの情報に変わります.次にhiveコンポーネントのmetaserverを再起動します.
    metaを初期化するテーブル情報:・・cd/usr/lib/hive-current/bin./schematool - initSchema -dbType mysql···
    location
    hiveのテーブル、パーティションなどの情報はlocation情報があり、dfs nameservices接頭辞、例えばhdfs://mycluster:8020/,一方,EMRクラスタのnameservices接頭辞は統一されたemr−clusterであるため,訂正が必要である.訂正の最良の方法は、データmysqldump --databases hivemeta --single-transaction -u root –p > hive_databases.sqlを先にエクスポートし、sedで置き換えることである.hdfs://oldcluster:8020/を選択します.hdfs://emr-cluster/を選択し、新しいdbにインポートします.mysql hivemeta -p < hive_databases.sql
    バージョンの配置
    EMRのhiveバージョンは一般的に現在のコミュニティの最新の安定版であり、自己構築クラスタhiveバージョンはより古い可能性があるため、インポートされた古いバージョンのデータは直接使用できない可能性があります.hiveのアップグレードスクリプト、アドレスを実行する必要があります.例えばhiveを1.2から2.3.0にアップグレードするには、upgrade-1.2.0-to-2.0.0を順次実行する必要がある.mysql.sql,upgrade-2.0.0-to-2.1.0.mysql.sql,upgrade-2.1.0-to-2.2.0.mysql.sql,upgrade-2.2.0-to-2.3.0.mysql.sql.スクリプトは主にテーブルを構築し、フィールドを追加し、内容を変更します.テーブルがすでに存在する場合、フィールドに存在する異常は無視できます.
    検証#ケンショウ#
    metaデータをすべて訂正すると、metaserverを再起動できます.コマンドラインhive、ライブラリとテーブルをクエリーし、データをクエリーし、正確性を検証します.