當前位置:首頁 » 文件管理 » hadoopftp

hadoopftp

發布時間: 2025-02-12 15:22:23

㈠ 如何使用ftp用curl命令上傳文件

使用ftp用curl命令上傳文件方法:
第一種:

server端有現成的ftpserver:

上傳的option是 -T
比如我們向ftp傳一個文件: curl -T localfile -u name:passwd ftp://upload_site:port/path/
curl -T hadoop_oom.log -u user:1234567 ftp://1.1.1.1/

第二種:
nginx上傳: (需要加上--with-http_dav_mole模塊 )
./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_mole --with-http_ssl_mole --with-http_dav_mole
make && make install

要創建上傳的臨時目錄
mkdir -p /dev/shm/client_body_temp
nginx http段加入:
client_body_temp_path /dev/shm/client_body_temp 1 2;
client_max_body_size 1024m; #這個根據實際的情況,如有大文件upload需要加大,不然nginx拋413 error

然後:
server
{
listen 80;
server_name 1.1.1.1;
index index.html index.htm index.php;
root html;
autoindex on;
dav_methods PUT; #這個是重點默認不允許PUT

測試:
curl -T hadoop_oom.log http://1.1.1.1/

安全注意事項:
一般需要單獨location一個目錄單獨做upload用。或者這個nginx只做upload上傳單一用途。
然後就是nginx allow了,一般機房都是內網打通的,只允許idc內網才能PUT。不然就能任意PUT到你的upload機器了。

㈡ 如何hadoop distcp ftp目錄中部分文件

hadoop中有一個叫做distcp(分布式復制)的有用程序,能從hadoop的文件系統並行復制大量數據。

distcp一般用於在兩個HDFS集群中傳輸數據。如果集群在hadoop的同一版本上運行,就適合使用hdfs方案:

% hadoop distcp hdfs://namenode1/foo hdfs://namenode2/bar
這將從第一個集群中復制/foo目錄(和它的內容)到第二個集群中的/bar目錄下,所以第二個集群會有/bar/foo目錄結構。如果/bar不存在,則會新建一個。可以指定多個源路徑,並且所有的都會被復制到目標路徑。源路徑必須是絕對路徑。

默認情況下,distcp會跳過目標路徑已經有的文件,但可以通過提供的-overwrite選項進行覆蓋,也可以用-update選項來選擇只更新那些修改過的文件。第一個集群的子樹/foo下的一個文件與第二個集群的改變進行同步。

% hadoop distcp -update hdfs://namenode1/foo hdfs://namenode2/bar/foo
distcp是作為一個MapRece作業執行的,復制工作由集群中並行運行的map來完成。這里沒有recer。每個文件都由一個單一的map進行復制,並且distcp通過將文件分成大致相等的文件來為每個map數量大致相同的數據。

map的數量確定:

通過讓每一個map復制數量合理的數據以最小化任務建立所涉及的開銷,是一個很好的想法,所以每個map的副本至少為256MB。例如,1GB的文件被分成4個map任務。如果數據很大,為限制帶寬和集群的使用而限制映射的數據就變得很有必要。map默認的最大數量是每個集群節點(tasktracker)有20個。例如,復制1000GB的文件到一個100個節點的集群,會分配2000個map(每個節點20個map),所以平均每個會復制512MB。通過對distcp指定-m參數,會減少映射的分配數量。例如,-m 1000會分配1000個map,平均每個復制1GB。

如果想在兩個運行著不同版本HDFS的集群上利用distcp,使用hdfs協議是會失敗的,因為RPC系統是不兼容的。想要彌補這種情況,可以使用基於HTTP的HFTP文件系統從源中進行讀取。這個作業必須運行在目標集群上,使得HDFS RPC版本是兼容的。使用HFTP重復前面的例子:% hadoop distcp hftp://namenode1:50070/foo hdfs://namenode2/bar

注意,需要在URI源中指定名稱節點的Web埠。這是由dfs.http.address的屬性決定的,默認值為50070。

保持HDFS集群的平衡

向HDFS復制數據時,考慮集群的平衡相當重要。文件塊在集群中均勻地分布時,HDFS能達到最佳工作狀態。回顧前面1000 GB數據的例子,通過指定-m選項為1,即由一個單一的map執行復制工作,它的意思是,不考慮速度變慢和未充分利用集群資源,每個塊的第一個副本會存儲在運行map的節點上(直到磁碟被填滿)。第二和第三個副本分散在集群中,但這一個節點並不會平衡。通過讓map的數量多於集群中節點的數量,我們便可避免這個問題。鑒於此,最好首先就用默認的每個節點20個map這個默認設置來運行distcp。

然而,這也並不總能阻止一個集群變得不平衡。也許想限制map的數量以便一些節點可以被其他作業使用。若是這樣,可以使用balancer工具繼續改善集群中塊的分布。

熱點內容
ftp匿名帳號 發布:2025-02-12 18:04:32 瀏覽:763
銳志哪個配置性價比最高 發布:2025-02-12 17:38:43 瀏覽:918
智能推送演算法 發布:2025-02-12 17:38:41 瀏覽:835
拍照上傳器 發布:2025-02-12 17:34:29 瀏覽:652
androidweb框架 發布:2025-02-12 17:32:45 瀏覽:76
安卓編程賀卡 發布:2025-02-12 17:32:44 瀏覽:838
php獲取資料庫的欄位 發布:2025-02-12 17:29:02 瀏覽:766
伺服器地址消失 發布:2025-02-12 17:23:36 瀏覽:951
後台執行php腳本 發布:2025-02-12 17:21:45 瀏覽:471
spring編程式事務 發布:2025-02-12 17:16:55 瀏覽:398