溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

hdfs數據和hive meta數據怎么遷移

發(fā)布時間:2021-12-04 15:33:29 來源:億速云 閱讀:252 作者:iii 欄目:大數據

本篇內容介紹了“hdfs數據和hive meta數據怎么遷移”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

前置

已按需求創(chuàng)建好EMR集群。

遷移hdfs數據

主要依靠distcp,核心是打通網絡,確定hdfs參數和要遷移內容,測速,遷移。

網絡

需要自建集群和EMR各個節(jié)點網絡互通。同為VPC網絡只需要同一個安全組,不同的安全組需要設置安全組互通。

如果自建集群是經典網絡,EMR集群是vpc,網絡訪問需要設置CLASSICLINK.參見文檔,詳情可以咨詢ECS客服。

設置后可以在新集群節(jié)點上ssh 老集群節(jié)點確定網絡連通情況,distcp操作如果有xx 節(jié)點無法連接xx節(jié)點的異常,說明沒有連通,需要繼續(xù)設置。

hdfs權限配置確認

hdfs有權限設置,確定老集群是否有acl規(guī)則,是否要同步,檢查dfs.permissions.enabled  和dfs.namenode.acls.enabled的配置新老集群是否一致,按照實際需要修改。

如果有acl規(guī)則要同步,distcp參數要加-p同步權限參數。如果distcp操作提示xx集群不支持acl,說明對應集群沒配置。新集群沒配置可以修改配置并重啟NM。舊集群不支持,說明舊集群根本就沒有acl方面的設置,也不需要同步。

同步參數

一般在新集群上運行同步,這樣同步的作業(yè)可以在新集群上運行,對老集群影響較小。

distcp參數細節(jié),一般命令格式如下:

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后加r如-prbugpcax。如果不同步權限和acl,-p后去掉p和a。

-m指定map數,和集群規(guī)模,數據量有關。比如集群有2000核cpu,就可以指定2000個map。  -bandwidth指定單個map的同步速度,是靠控制副本復制速度實現的,是大概值。

  1. 遷移整體速度受集群間帶寬,集群規(guī)模影響。同時文件越多,checksum需要的時間越長。如果遷移數據量大,可以先試著同步幾個目錄評估一下整體時間。如果只能在指定時間段內同步,可以將目錄切為幾個小目錄,依次同步。

  2. 如果遷移過程中老集群還有寫入,可以用-udpate再將變化同步過來。

  3. 一般完全同步,需要有個短暫的業(yè)務停寫,以啟用雙寫雙算或直接將業(yè)務切換到新集群上。

hive meta數據同步

hive meta數據同步,本質是hive meta db,一般是mysql  db的數據同步。和一般的mysql數據同步相比,要注意location改變,和hive版本對齊。

meta db設置

meta數據較多時,一般推薦用rds作為meta db。自建集群可能已有一個rds  db,由于location不同,一般需要新建一個數據庫。***實踐是跟EMR集群在一個可用區(qū),一個vpc 安全組下新建一個rds 數據庫。

登錄新集群master節(jié)點(如果是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的表,分區(qū)等信息是有l(wèi)ocation信息的,帶dfs  nameservices前綴,如hdfs://mycluster:8020/,而EMR集群的nameservices前綴是統(tǒng)一的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版本一般是當前社區(qū)***的穩(wěn)定版,自建集群hive版本可能會更老,所以導入的舊版本數據可能不能直接使用。需要執(zhí)行hive的升級腳本,地址。例如hive從1.2升級到2.3.0,需要依次執(zhí)行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,查詢庫和表,查詢數據,驗證正確性。

“hdfs數據和hive meta數據怎么遷移”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI