ftp提取檔案到hdfs

2021-08-15 18:38:58 字數 1854 閱讀 1927

實際場景中,我們經常需要通過ftp協議把不同資料來源的檔案統一匯入到hdfs資料中心,經過實踐,有以下的三種方法,分別列出其優缺點及適用場景。

hdfs上傳命名

hdfs

dfs –put

[local_path]

[hdfs_path]

優點:檔案在本地可以進行本地化的一系列操作後,再放回hdfs中

缺點:檔案傳輸經過兩層,並且從源伺服器到本地提取是單機序列,比較消耗時間。

適用於檔案放入hfds前需要預處理的情景,如:.zip壓縮檔案不被hadoop支援的,所以我們可以先在本地轉壓縮方式然後再放入hdfs中。

mget_ftp()

2)wget

mget_using_wget()

這種方法會在本地建立乙個和ftp伺服器相同的目錄結構

或者自定目錄

wget --ftp-user=$user --ftp-password=$password ftp://$host/$remote_dir/$file -o $local_dir/$file
wget的速度相對於lftp和ftp快很多。

3)lftp

需要安裝lftp

獲取遠端ftp上的列表

lftp -e

'ls;quit' sftp://$user:$password@$host/$remote_dir|sed '1,2d'|awk '' > $remote_list

lftp sftp://$user:$password@$host

-e"get $remote_dir/$file -o $local_dir; bye"

del_file_from_ftp

()mdel_ftp

()'`

do del_file_from_ftp $file

$remote_dir

done

}//設定ssh互信登入

mdel_ftp_using_ssh

()'`

do ssh -t $user@$ip

"rm $remote_dir/$file"

done

}

3.上傳到hdfs

upload_data_to_hdfs

()'`

doecho

"upload $file to $des_hdfs_dir"

$hdfs_exe dfs -put $upload_dir/$file

$des_hdfs_dir

done

}

hdfs dfs –cp [ftp://username:password@hostname/ftp_path] [hdfs:///hdfs_path]
優點:簡單,提取速度快

缺點:cli執行不會顯示進度

適用場景:適用於小檔案的ftp拷貝。

這種方法沒有實際使用過。

hadoop distcp [ftp://username:password@hostname/ftp_path] [hdfs:///hdfs_path]
優點:簡單,能顯示拷貝進度,並且是分布式提取的,資料比較快。

缺點: 如果拷貝的檔案是不斷有其他程式寫入,會報錯,因為該命令最後要對資料進行checksum導致兩邊不一致,當然,該命令是主要用於集群間拷貝的。

適用場景:大量檔案或大檔案的拷貝。

ftp提取檔案到hdfs

實際場景中,我們經常需要通過ftp協議把不同資料來源的檔案統一匯入到hdfs資料中心,經過實踐,有以下的三種方法,分別列出其優缺點及適用場景。1 先把檔案ftp到本地,然後用命令hdfsdfs put local path hdfs path 優點 檔案在本地可以進行本地化的一系列操作後,再放回hd...

上傳檔案到HDFS

hadoop計算需要在hdfs檔案系統上進行,檔案上傳到hdfs上通常有三種方法 a hadoop自帶的dfs服務,put b hadoop的api,writer物件可以實現這一功能 c 呼叫otl可執行程式,資料從資料庫直接進入hadoop hadoop計算需要在hdfs檔案系統上進行,因此每次計...

上傳檔案到HDFS方式

hadoop計算需要在hdfs檔案系統上進行,因此每次計算之前必須把需要用到的檔案 我們稱為原始檔案 都上傳到hdfs上。檔案上傳到hdfs上通常有三種方法 1 hadoop自帶的dfs服務,put 2 hadoop的api,writer物件可以實現這一功能 3 呼叫otl可執行程式,資料從資料庫直...