成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Hadoop 數據遷移用法詳解

大數據 Hadoop
需要將數據源集群的/etc/hosts中的hadoop節點拷貝到目標集群所有節點的/etc/hosts中,保證新集群所有節點可以ping同老集群所有節點;

[[404804]]

目錄

  • 一般用法
  • hive數據遷移
  • Export/Import方式
  • 同步元數據
  • 總結

數據遷移使用場景

  • 冷熱集群數據分類存儲,詳見上述描述.
  • 集群數據整體搬遷.當公司的業務迅速的發展,導致當前的服務器數量資源出現臨時緊張的時候,為了更高效的利用資源,會將原A機房數據整體遷移到B機房的,原因可能是B機房機器多,而且B機房本身開銷較A機房成本低些等.
  • 數據的準實時同步.數據的準實時同步與上一點的不同在于第二點可以一次性操作解決,而準實時同步需要定期同步,而且要做到周期內數據基本完全一致.數據準實時同步的目的在于數據的雙備份可用,比如某天A集群突然宣告不允許再使用了,此時可以將線上使用集群直接切向B的同步集群,因為B集群實時同步A集群數據,擁有完全一致的真實數據和元數據信息,所以對于業務方使用而言是不會受到任何影響的.

hadoop 集群間拷貝數據:

需要將數據源集群的/etc/hosts中的hadoop節點拷貝到目標集群所有節點的/etc/hosts中,保證新集群所有節點可以ping同老集群所有節點;

  1. hadoop distcp hdfs://qcloud-hadoop02:9000/hive/warehouse/hm2.db/helper/dt=2018-10-17 /data 

說明:我們這里是apache hadoop 到cdh數據遷移,這個命令仍然是可以用的。

一般用法

1、遷移之前需要把兩個集群的所有節點都互通/etc/hosts文件(重要,包括各個數據節點)

2、配置當前集群主節點到老集群各個節點的ssh免密登陸(可選)

3、由于老集群是HDP2.7.1,新集群是cdh5.8.5,版本不同,不能用hdfs協議直接拷貝,需要用http協議 即不能用:distcp hdfs://src:50070/foo /user而要用:distcp hftp://src:50070/foo /user最終的命令為:

  1. hadoop distcp hftp://192.168.57.73:50070/hive3/20171008 /hive3/ 

4、如果兩個集群的版本相同,則可以使用hdfs協議,命令如下:

  1. hadoop distcp hdfs://namenodeip:9000/foo hdfs://namenodeip:9000/foo 

5、由于遷移數據運行了mr任務,對集群資源有一定的消耗

DistCp優勢特性

1 帶寬限流

DistCp是支持帶寬限流的,使用者可以通過命令參數bandwidth來為程序進行限流,原理類似于HDFS中數據Balance程序的限流.

2 增量數據同步

對于增量數據同步的需求,在DistCp中也得到了很好的實現.通過update,append和diff2個參數能很好的解決.官方的參數使用說明:

  • Update: Update target, copying only missing files or directories
  • Append: Reuse existing data in target files and append new data to them if possible.
  • Diff: Use snapshot diff report to identify the difference between source and target.

第一個參數,解決了新增文件目錄的同步;第二參數,解決已存在文件的增量更新同步;第三個參數解決刪除或重命名文件的同步.

這里需要額外解釋一下diff的使用需要設置2個不同時間的snapshot進行對比,產生相應的DiffInfo.在獲取快照文件的變化時,只會選擇出DELETE和RENAME這2種類型的變化信息.

相同hadoop版本同步數據

  1. hadoop distcp -skipcrccheck -update -m 20 hdfs://dchadoop002.dx:8020/user/dc/warehouse/test /user/dc/warehouse/test 

不同hadoop版本同步數據

  1. hadoop distcp -skipcrccheck -update -m 20 hftp://ns1/user/test /user/dc/test 

參數:

  1. -m 表示并發數 
  2.  
  3. -skipcrccheck 跳過hdfs校驗 
  4.  
  5. -update 更新文件 

理源路徑的方式與默認值不同,有些細節需要注意。這里給出一些 -update和 -overwrite的例子。考慮從/source/first/ 和 /source/second/ 到 /target/的拷貝,源路徑包括:

  1. hdfs://nn1:8020/source/first/1 
  2. hdfs://nn1:8020/source/first/2 
  3. hdfs://nn1:8020/source/second/10 
  4. hdfs://nn1:8020/source/second/20 

當不使用-update或-overwrite選項時,DistCp默認會在/target下創建/first和/second目錄。因此將在/target之前先創建目錄。

從而:

  1. hadoop distcp hdfs://nn1:8020/source/first hdfs://nn1:8020/source/second hdfs://nn2:8020/target 

上述命令將在/target中生成以下內容:

  1. hdfs://nn2:8020/target/first/1 
  2. hdfs://nn2:8020/target/first/2 
  3. hdfs://nn2:8020/target/second/10 
  4. hdfs://nn2:8020/target/second/20 

當指定-update或-overwrite時,源目錄的內容將復制到目標,而不是源目錄本身。

從而:

  1. distcp -update hdfs://nn1:8020/source/first hdfs://nn1:8020/source/second hdfs://nn2:8020/target 

上述命令將在/ target中生成以下內容:

  1. hdfs://nn2:8020/target/1 
  2. hdfs://nn2:8020/target/2 
  3. hdfs://nn2:8020/target/10 
  4. hdfs://nn2:8020/target/20 

如果設置了這兩個選項,每個源目錄的內容都會和目標目錄的內容做比較。如果兩個源文件夾都包含一個具有相同名稱的文件(例如“0”),那么這兩個源文件將在目的地映射到同一個目錄:/target/0。DistCp碰到這類沖突的情況會終止操作并退出。現在,請考慮以下復制操作:

  1. distcp hdfs://nn1:8020/source/first hdfs://nn1:8020/source/second hdfs://nn2:8020/target 

其中源路徑/大小:

  1. hdfs://nn1:8020/source/first/1 32 
  2.  
  3. hdfs://nn1:8020/source/first/2 32 
  4.  
  5. hdfs://nn1:8020/source/second/10 64 
  6.  
  7. hdfs://nn1:8020/source/second/20 32 

和目的路徑/大小:

  1. hdfs://nn2:8020/target/1 32 
  2. hdfs://nn2:8020/target/10 32 
  3. hdfs://nn2:8020/target/20 64 

會產生:

  1. hdfs://nn2:8020/target/1 32 
  2. hdfs://nn2:8020/target/2 32 
  3. hdfs://nn2:8020/target/10 64 
  4. hdfs://nn2:8020/target/20 32 

文件“1”因為文件長度和內容匹配而被跳過。文件“2”被復制,因為它不存在/target中。因為目標文件內容與源文件內容不匹配,文件“10”和文件“20”被覆蓋。如果使用-update 選項,文件“1”也被覆蓋。

3 高效的性能

執行的分布式特性

高效的MR組件

hive數據遷移

1.hive數據export到hdfs

  1. export table hm2.helper to '/tmp/export/hm2/helper'

如下:

  1. hive> export table hm2.helper to '/tmp/export/hm2/helper'
  2. Copying data from file:/app/data/hive/tmp/scratchdir/ce4c15d9-6875-40ed-add4-deedd75a4a92/hive_2018-10-26_10-58-21_552_8465737459112285307-1/-local-10000/_metadata 
  3. Copying file: file:/app/data/hive/tmp/scratchdir/ce4c15d9-6875-40ed-add4-deedd75a4a92/hive_2018-10-26_10-58-21_552_8465737459112285307-1/-local-10000/_metadata 
  4. Copying data from hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-12/hour=13/msgtype=helper 
  5. Copying data from hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-12/hour=14/msgtype=helper 
  6. Copying file: hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00001 
  7. Copying file: hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00003 
  8. Copying file: hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00004 
  9. Copying file: hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00005 
  10. Copying file: hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00006 
  11. Copying file: hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00007 
  12. Copying file: hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00008 
  13. Copying file: hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00009 
  14. Copying file: hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00010 
  15. Copying file: hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00011 
  16. Copying file: hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00012 
  17. Copying file: hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00013 
  18. Copying file: hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00014 
  19. Copying file: hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00015 
  20. Copying data from hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-13/hour=13/msgtype=helper 
  21. Copying file: hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-13/hour=13/msgtype=helper/part-m-00002 
  22. Copying data from hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-13/hour=14/msgtype=helper 
  23. Copying file: hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-13/hour=14/msgtype=helper/part-m-00000 
  24. Copying file: hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-13/hour=14/msgtype=helper/part-m-00002 
  25. Copying file: hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-13/hour=14/msgtype=helper/part-m-00006 
  26. Copying file: hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-13/hour=14/msgtype=helper/part-m-00016 
  27. Copying data from hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-22/hour=08/msgtype=helper 
  28. Copying file: hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-22/hour=08/msgtype=helper/part-m-00006 
  29. Copying data from hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-22/hour=09/msgtype=helper 
  30. Copying file: hdfs://nameser/hive/warehouse/hm2.db/helper/dt=2018-06-22/hour=09/msgtype=helper/part-m-00000 
  31. OK 
  32. Time taken: 1.52 seconds 

2.集群間數據復制

需要保證原始集群目錄有讀權限,新的集群復制保存目錄有寫權限:

  1. 兩個集群都要賦權 
  2. hdfs dfs -chmod -R 777 /tmp/export/* 
  3. hdfs dfs -chmod -R 777 /tmp/export/* 

數據復制

  1. hadoop distcp hdfs://qcloud-test-hadoop01:9000/tmp/export/hm2 /tmp/export 

3.數據導入hive

在源hive show create table tbName顯示建表語句,用語句在目標hive建表,然后倒入數據:

  1. import table hm2.helper from '/tmp/export/hm2/helper'

成功:

  1. hive> import table hm2.helper from '/tmp/export/hm2/helper'
  2. Copying data from hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-12/hour=13/msgtype=helper 
  3. Copying data from hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-12/hour=14/msgtype=helper 
  4. Copying file: hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00001 
  5. Copying file: hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00003 
  6. Copying file: hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00004 
  7. Copying file: hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00005 
  8. Copying file: hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00006 
  9. Copying file: hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00007 
  10. Copying file: hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00008 
  11. Copying file: hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00009 
  12. Copying file: hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00010 
  13. Copying file: hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00011 
  14. Copying file: hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00012 
  15. Copying file: hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00013 
  16. Copying file: hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00014 
  17. Copying file: hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-12/hour=14/msgtype=helper/part-m-00015 
  18. Copying data from hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-13/hour=13/msgtype=helper 
  19. Copying file: hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-13/hour=13/msgtype=helper/part-m-00002 
  20. Copying data from hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-13/hour=14/msgtype=helper 
  21. Copying file: hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-13/hour=14/msgtype=helper/part-m-00000 
  22. Copying file: hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-13/hour=14/msgtype=helper/part-m-00002 
  23. Copying file: hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-13/hour=14/msgtype=helper/part-m-00006 
  24. Copying file: hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-13/hour=14/msgtype=helper/part-m-00016 
  25. Copying data from hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-22/hour=08/msgtype=helper 
  26. Copying file: hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-22/hour=08/msgtype=helper/part-m-00006 
  27. Copying data from hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-22/hour=09/msgtype=helper 
  28. Copying file: hdfs://qcloud-cdh01.2144.com:8020/tmp/export/hm2/helper/dt=2018-06-22/hour=09/msgtype=helper/part-m-00000 
  29. Loading data to table hm2.helper partition (dt=2018-06-12, hour=13, msgtype=helper) 
  30. Loading data to table hm2.helper partition (dt=2018-06-12, hour=14, msgtype=helper) 
  31. Loading data to table hm2.helper partition (dt=2018-06-13, hour=13, msgtype=helper) 
  32. Loading data to table hm2.helper partition (dt=2018-06-13, hour=14, msgtype=helper) 
  33. Loading data to table hm2.helper partition (dt=2018-06-22, hour=08, msgtype=helper) 
  34. Loading data to table hm2.helper partition (dt=2018-06-22, hour=09, msgtype=helper) 
  35. OK 
  36. Time taken: 4.966 seconds 

這樣就可以在新的hive中執行:

  1. select count(*) from hm2.helper; 

只導出某一個分區

  1. 導出數據 
  2. export table hm2.helper partition(dt='2017-12-16'to '/tmp/export/helper_2017-12-16' ; 
  3. 數據復制 
  4. hadoop distcp hdfs://dc1.xx.com:8020/tmp/export/ hdfs://dc2.xx.com:8020/tmp/export 
  5. 數據導入 
  6. import table hm2.helper partition(dt='2017-12-16'from '/tmp/export/helper_2017-12-16' 

與load data [local] inpath path path2 剪切數據不同,import命令其實是從目標/tmp/export/hm2/helper復制到/user/hive/warehouse/hm2.db/helper,這時候可以把/tmp/export/hm2/helper目錄刪掉了。

==可以使用hive export/import 進行hive數據的批量遷移,本實驗測試了text,orc,parquet,分區表,并測試了不同版本的導入導出。理論上hive導入導出的數據遷移不受版本,數據格式以及表的限制,可以得出結論可以適應hive export/import進行任何hive數據的遷移==

參考鏈接:https://blog.csdn.net/u9999/article/details/78830818

hbase數據遷移

HBase數據遷移是很常見的操作,目前業界主要的遷移方式主要分為以下幾類:

從上面圖中可看出,目前的方案主要有四類,Hadoop層有一類,HBase層有三類。實際中用了hbase層的Export / Import方法,這里介紹一下。

Export/Import方式

源(測試)集群每個節點可以識別目標集群每個節點

源集群hbase執行

  1. hbase org.apache.hadoop.hbase.mapreduce.Export 'hm2:test' hdfs://qcloud-hadoop02:9000/tmp/hbase_export/test 

注意:這里路徑需要帶hdfs://nameser/path ,否則就export 到本地了,下同。

目標集群hbase執行

  1. hbase org.apache.hadoop.hbase.mapreduce.Import 'hm2:test' hdfs://qcloud-hadoop02:9000/tmp/hbase_export/test 

或者

目標集群每個節點可以識別源(測試)集群每個節點

源集群hbase執行

  1. hbase org.apache.hadoop.hbase.mapreduce.Export 'hm2:test' hdfs://qcloud-test-hadoop01:9000/tmp/hbase_export/test 

目標集群hbase執行

  1. hbase org.apache.hadoop.hbase.mapreduce.Import 'hm2:test' hdfs://qcloud-test-hadoop01:9000/tmp/hbase_export/test 

同步元數據

因為分區信息發生了改變,元信息沒有同步。

數據導入到指定的文件夾之后,修復分區和表的元信息,(沒有使用rbuy的各種腳本,0.9之后就D了,)

  1. hbase hbck -fixTableOrphans 'hm2:test' 
  2. hbase hbck -fixMeta 'hm2:test' 
  3. hbase hbck -fixAssignments 'hm2:test' 
  4. hbase hbck -repair 'hm2:test' 

總結

上文把HBase數據遷移過程中常用的一些方法作了一個大概介紹,總結起來就四點:

  • DistCp: 文件層的數據同步,也是我們常用的
  • CopyTable: 這個涉及對原表數據Scan,然后直接Put到目標表,效率較低
  • Export/Import: 類似CopyTable, Scan出數據放到文件,再把文件傳輸到目標集群作Import
  • Snapshot: 比較常用 , 應用靈活,采用快照技術,效率比較高

具體應用時,要結合自身表的特性,考慮數據規模、數據讀寫方式、實時數據&離線數據等方面,再選擇使用哪種。

資料

 

https://www.cnblogs.com/felixzh/p/5920153.html http://hadoop.apache.org/docs/r1.0.4/cn/quickstart.html

 

責任編輯:武曉燕 來源: Java大數據與數據倉庫
相關推薦

2010-06-03 17:08:28

Hadoop Shel

2010-06-07 15:48:40

Hadoop0.20.

2018-02-02 16:15:02

Hadoop數據遷移集群

2016-11-14 10:23:08

Hadoop工具大數據數據倉庫

2010-03-09 09:49:01

Oracle跨平臺遷移

2023-08-07 14:28:42

技術遷移

2022-10-14 15:44:03

大數據Hadoop

2010-06-03 18:22:38

Hadoop

2010-08-13 14:58:01

FlexNumber數據類型

2012-11-22 14:38:44

Windows Azu

2010-06-02 13:24:02

SVN用法

2010-08-24 08:47:20

paddingCSS

2010-08-24 10:01:05

DIV

2024-08-27 08:00:00

2010-06-03 15:39:47

Hadoop配置

2014-08-06 09:57:15

hadoop ShelShell命令

2014-12-17 11:36:31

云遷移云服務公有云

2010-07-16 09:50:23

Perl控制結構

2010-08-23 15:33:47

CSSpadding

2010-08-23 08:45:08

CSSpadding內邊距
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人av片在线观看 | 在线观看国产www | 午夜视频大全 | 一起操网站 | 精品国产免费一区二区三区演员表 | 日韩欧美在线不卡 | 九九综合九九 | 日本一区二区不卡 | 色黄爽 | www.99热 | 九一在线观看 | 水蜜桃久久夜色精品一区 | 欧美精品一区二区三区蜜桃视频 | 精品国产乱码久久久 | 亚洲午夜av久久乱码 | 国产免费一区 | 91亚洲精选 | 中文字幕乱码一区二区三区 | 欧美精品中文字幕久久二区 | 日韩精品 电影一区 亚洲 | h视频在线免费 | 久久精品免费 | 国产精品欧美一区二区三区不卡 | a级在线免费观看 | 日韩手机视频 | 午夜影院普通用户体验区 | 一区二区三区在线 | 国产精品美女久久久久久久久久久 | 日韩成人在线播放 | 久久视频精品 | 欧美久久久久久久久中文字幕 | 色婷婷久久久久swag精品 | 一区在线播放 | 亚洲免费在线观看 | 国产aa | 91国产视频在线观看 | 亚洲一区二区三区四区在线观看 | av网站免费在线观看 | 自拍第1页 | 伊人影院在线观看 | 日本小电影网站 |