ビッグデータクラスタの移行レコード

実行ログのスクリプトと記事で使用するスクリプトは、テキストの最後に附属書に見つけることができるはずです。

nohupをSH /tmp/discp/distcp.sh

nohupをSH /tmp/distcp/distcp.sh&> / tmpに/ distcp / distcp.log&

Hadoopのdistcp -update -log HDFS:// MASTER1:8020 / discpLogsのHDFS:// slave11:8020 / CDN HDFS:// MASTER1:8020 / CDN

#!/ binに/ bashのは
Hadoopのdistcp -update -log HDFS:// MASTER1:8020 / discpLogs / HDFS HA:// slave11:8020 / haのHDFS:// MASTER1:8020 /ヘクタール

#迁移のHBase

のHadoop HDFS distcp -log:// MASTER1:8020 / discpLogs / HBaseのwebhdfs:// slave11:50070 / HBaseの/データ/既定のHDFS:// MASTER1:50070 / HBaseの/データ/


#snapsot方式:
HBaseのシェル

スナップショット'mytableは'、 'myTableSnapshot-122112'

HDFS DFS -du -h / HBaseの/データ/

#列出所有的HBaseの表:
ます。#!/ bin / sh


TMP_FILE = tmp_hbase_tables
TABLES_FILE = hbase_tables.txt
 
「リスト」エコー| HBaseのシェル> tmp_hbase_tablesは
2寝る
$ TMP_FILE 'を1,6d'のsed | TAC | sedの'1,2d' | TAC> $ TABLES_FILE
のsed -i '$ D' $のTABLES_FILEの
睡眠2



#创建HBaseの表快照
数'mytableは'、 'myTableSnapshot-122112'

VimのcreateSnapshot.shの


#!/ binに/ SH

TABLES_FILE = hbase_tables.txt
スナップショット= _snapshot_20190625

#echo 「リスト」| HBaseのシェル> tmp_hbase_tables
 
$内のテーブルのための(猫$ TABLES_FILE)。DO
        snapshotTable = $テーブル$スナップショット
        snapshotTable = $ {snapshotTable#*:}
        エコー"スナップショット'$表'、 '$ snapshotTable'" | HBaseのシェル
        睡眠5
完了

#后台执行
SH /tmp/distcp/hbase/createSnapshot.sh&nohupを> // DistCpのTMP /呼び出しがある/ HBaseの/ createSnapshot.log&

ビューのスナップショット
のHBaseシェルlist_snapshotsの
vimのlistSnapshots.sh


#!/ binに/ SH


TMP_FILE = tmp_hbase_snapshots
TABLES_FILE = hbase_snapshots.txt
 
"list_snapshots"エコー| HBaseのシェル> tmp_hbase_snapshots
SLEEP 2は、
TAC | | sedの'1、2D' | TAC> $ TABLES_FILE $ TMP_FILE '1,6d' sedの
SED -i '$ D' $ TABLES_FILE
SLEEP 2

#をしてから、スクリプトを実行し、輸出HBaseのスナップショットである
(<スペースが最初の列書き込みファイルを書き込まない>このステップは、変更シェルを保存することができる)、次にバックのLinuxへ戻る、ウィンドウの最初の行にファイルスペースを削除

禁止(#はHBaseの設定を増加しました自動majorcompaction):
  <プロパティ>
    <名前> hbase.hregion.majorcompaction </名前>
      <値> 0 </ value>の
  </プロパティ>

#テーブルを移行します:
-copy-からHDFS番号:// SRC-HBaseのルート・ディレクトリ/ HBaseの\の

#テーブル:CDN:4.1160秒でAddDomainUseCDNDetail 33154行(S)
#2移行スナップショットを実行するために、クラスタ内
のHBase org.apache.hadoop.hbase.snapshotを.ExportSnapshot \
 -snapshot AddDomainUseCDNDetail_snapshot_20190625 \
 -copy-からHDFS:// slave11:8020 / HBaseの\
 HDFS -copy-へ://マスタ1:8020 / HBaseの\は
 -mappers 20 \
 -bandwidth 500

ハッピーキャンプ2014年1」#echoセット'| -dカット' '-f1

#書き込みスナップショットバッチ移行スクリプト
のvimのsendSnapshots.shの


#!/ binに/ bashの
snapshotListFile = hbase_snapshots.txt
ライン$中のため(CAT $ snapshotListFile | awkの' {$ 1}印刷「)を
行います
    ライン-copy org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot $ HBaseの-からHDFS:// slave11:8020 / HBaseの-copy-にHDFS://マスタ1:8020 / HBaseの-mappers 20 -bandwidth 500
DONE

#背景クラスタ内の1
nohupをSH /tmp/distcp/hbase/sendSnapshots.sh&> // tmpに/ DistCpの呼び出しで/ HBaseの/ sendSnapshots.log&



は1つのクラスタ内で実行する
HBaseのシェル
#は、名前空間の作成
'CDN' create_namespaceを
#テーブルを再作成します
'CDNを:AddDomainUseCDNDetail'を作成、{NAME => 'D'}
禁止テーブル
無効'CDN:AddDomainUseCDNDetail'
変更ファイル許可
HDFS 777 -R&LT -chmod DFS / HBaseの/アーカイブ/データ/ CDN
HDFS 777 DFS -R&LT -chmod /hbase/.hbase-snapshot
#スナップショットの復元
restore_snapshot「AddDomainUseCDNDetail_snapshot_20190625」
#再対応表を
: 'AddDomainUseCDNDetail CDN'有効
回復が成功したかどうかを確認するために#テーブルを
:COUNT 'AddDomainUseCDNDetail CDN'
表示
5.3510秒に33154行(S)

のHBase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles \
 -Dhbase.mapreduce.bulkload.max。 1024 = hfiles.perRegion.perFamily \
 HDFS://マスタ1:8020 / HBaseの/アーカイブ/データ/ CDN / AddDomainUseCDNDetail

 
#復元CNZZスナップショット  
#は、名前空間の作成
'CNZZ' create_namespace
#ターンは(HDFSのユーザーが実行するために)HBaseのシェルで実行しましたテキスト、次のすべてのステートメント
cnzz_tables_create.txt
disable_cnzz_tables.txt
alter_cnzz_table_TTL.txt

#ハイブの移行
を実行するために、クラスタ内の#2を
のHadoop FSの-mkdirを/ tmp / DZの

中で名前ノード/秒名前ノードに#を:
SU HDFSの
〜/ .hiverc VI
CNZZを使用します。
#輸出スクリプトを生成
ハイブ-e "ショーテーブル" | awkの '{printfの"エクスポートテーブル%sの|を/ tmp / DZ /%sの|; \ n"は、$ 1、$ 1}' | sedの"S / | /「/ G">〜 /export.hql
#内側と外側のテーブルを区別する
内部テーブルhive_native_tables.txt
生成#エクスポートスクリプト(Linux環境下でのn改行\を交換する注意)
CAT hive_native_tables.txt | awkのテーブルS%まで{printfの「輸出|を/ tmp / DZ /%S |; \ N- ",. 1 $、$ 1} '| sedの" S / | /' / G ">〜/ export_native_tables.hql
#ハイブのエクスポートデータHDFS(フルスケールの動作に実際に経験したときに、外部テーブルが停止され、内部テーブルを区別するためのステップは、このステップではありません)
nohupを偽ハイブへ--hivevar hive.security.authorization.enabled = -f〜/ export.hql>〜/ export.logと2>&1&
ハイブ内部テーブルは、導出
ハイブ--hivevarがhive.security.authorization.enabled = falseを-f〜nohupを / export_native_tables.hql>〜/ export_native_tables..log 2>&1&
クラスタハイブのエクスポートファイルは、クラスタ1にコピーされるの#2
クラスタ(クラスタ1つの実行)の作成#1上のディレクトリ
-mkdirを/ tmp / DZのHadoop FSを

#は、スクリプトを作成しますdistcpHiveExportFiles.sh
#!/ binに/バッシュ
DistCpのHadoopの-updateの呼び出しは、-log HDFSです://マスタ1:8020 / discpLogs / hiveExport_distCPFiles HDFS:// slave11:8020を/ tmp / DZ HDFS://マスタ1:8020を/ tmp / DZの

#は、背景データで実行されているコピースクリプト
はnohup SH distcpHiveExportFiles.sh> /tmp/export_hive/hiveExport_distCPFiles_nohup.log 2>&1&
ログ監視するために、バックグラウンドで実行されている
/tmp/export_hive/hiveExport_distCPFiles_nohup.logの-100f尾を
コピーが完了した後#、輸入ハイブ文の構造

のcp export_native_tables.hqlのimport_native_tables。 HQL
セッド-i「S /表のエクスポート/インポート表/ G」import_native_tables.hql
セッド-i「S /へ/ G /から」import_native_tables.hql

デフォルトのライブラリに新しい変更に#設定
#クラスタ1名前ノード/二名前ノード:
SU HDFS
VI〜は/ .hiverc
CNZZを使用します。

#インポートデータ
。ハイブは=〜/ import_native_tables.hql>〜/ import_native_tables.log 2>&1&-f nohupを--hivevar falseにhive.security.authorization.enabled

#ビューログ
import_native_tables.logテール-100F
; ONユーザデータベースHDFSへのすべてのデフォルトを付与します

#同じサービスのハイブクラスタとクラスタ1ハイブ2以来。だから、ハイブクラスター1(直接操作インタフェース管理)リロード
CNZZクラスタテーブルを作成するハイブ#1を
作成し、データベースCNZZ;
ライブラリCNZZ(スレーブ1は、ハイブを実行)外部表を作成し
、SUのHDFS
ます。mkdir / tmpに/ hiveImportの
CDを/ tmp / hiveImport /
#スレーブ1は、デフォルトのデータベース設定
のvi〜/ .hiverc
CNZZを使用する;

#hive_external_table_DDL.txtは、/ tmpに/ hiveImportにアップロードされ
、外部テーブルにHQL作成する#背景
nohupをハイブ--hivevar hive.security.authorization.enabled =偽-fを/tmp/hiveImport/hive_external_table_DDL.txt> hive_external_table_DDL.log 2>&1&
は、観測ログ出力が作成されていることを確認します
-100F hive_external_table_DDL.logテール

#は、外部表が正常に作成されていることを確認し、正常に作成されたデータショー
hive_to_ha_source_dis_day`リミット1 `からSELECT *を;
SELECT * from` ha_visit_page_day`リミット1;


のimport_native_tables.hqlがにアップロードされるの/ tmp / hiveImportの
#の背景ハイブは、内部テーブルに導入
偽ハイブにnohupをし--hivevar hive.security.authorization.enabled = -f /tmp/hiveImport/import_native_tables.hql> import_native_tables.log 2>&1&
観測がログ出力が作成された確認
テール-100F import_native_tables.log

#テーブルには、インポートが成功したかどうかを確認して
実行#hiveシェル
ss_session_search_temp` `DESC;
SELECT * from` ss_session_search_temp`リミット1;












次はテストです、行わない
最初の名前空間の作成#を
create_namespace「をCNZZ」
#は、テーブルを作成する
作成「CNZZ:HA_EXIT_COLUMN_DAY」、 NAME = {> 'D'}
禁止テーブル
無効'CNZZ:HA_EXIT_COLUMN_DAY'

変更ファイルのアクセス権
DFSをHDFS -chmod -R 777 / HBaseの/アーカイブ/データ/ CNZZ
HDFSは、DFSは、-R 777 -chmod /hbase/.hbase-snapshot
#は、スナップショットを復元する
'HA_EXIT_COLUMN_DAY_snapshot_20190625' restore_snapshot
#の再有効化テーブルは
イネーブル'CNZZ:HA_EXIT_COLUMN_DAY'
確認テーブルが正常に復元される
:COUNT 'HA_EXIT_COLUMN_DAY CNZZ'
表示
275.0210秒5661445行(S)を

作成'HA_EXIT_COLUMN_HOUR CNZZ':{NAME => 'D'}


添付リスト:

他のスクリプトと結果.7z

スクリプトの実行と結果.7z



 

おすすめ

転載: www.cnblogs.com/sixiweb/p/11344125.html
おすすめ