百度雲平臺使用說明

weixin_34197488發表於2016-03-14

當我們登陸之後,百度提供了在server上面的工作資料夾,而且是以/user/username方式命名,其username就是我們註冊的使用者名稱,在百度網盤能夠與HDFS分散式檔案系統互動,相同在WEBserver上也能夠與HDFS分散式系統互動,其方法是:在web shell 介面輸入upload能夠將使用者檔案上傳到WEBserver上面使用者相應的工作資料夾以下,然後我們能夠使用hadoop fs -put test ./ 將WEBserver上的檔案上傳到HDFS分散式系統上,在WEBserver上面能夠使用ls直接檢視當前資料夾以下檔案,能夠使用hadoop fs -ls ./檢視HDFS分散式系統上資料夾以下的檔案。

主辦方提供三種資料:
1.關鍵詞資料集(檔案為:hdfs://share/data/compad/keyword_class.txt)
2.關鍵詞輔助資訊資料集(檔案為:hdfs://share/data/compad/keyword_titles.txt)
3.關鍵詞與廣告主關聯關係資料集(檔案為:hdfs://share/data/compad/keyword_users.txt)

使用例如以下命令將hdfs分散式系統上的檔案下載到WEBserver:
hadoop fs -get /share/data/compad/keyword_class.txt ./keyword_class.txt
hadoop fs -get /share/data/compad/keyword_titles.txt ./keyword_titles.txt
hadoop fs -get /share/data/compad/keyword_users.txt ./keyword_users.txt
下載之後其存放路徑是:
這裡寫圖片描寫敘述
當我想使用download命令將檔案下載到本地時候。會提示檔案超過大小,百度提供的檔案大小許可權是10M。超過10M檔案無法下載。

相同我們還能夠使用
hadoop fs -cp /share/data/compad/keyword_users.txt ./keyword_users.txt
將檔案複製到HDFS分散式系統上面我們自己的使用者資料夾下
如:我拷貝過之後,使用命令檢視, hadoop fs -ls ./其所在路徑是:
這裡寫圖片描寫敘述

注意:兩種方式拷貝的檔案的目的路徑是不同的。

Hadoop 執行jar檔案命令:hadoop jar xxx.jar mainclass args

hadoop jar ./My.jar
My.jar 應該存在你的JobClient的個人資料夾下(/home/shijiebei2009/My.jar),
而不是你的hdfs個人資料夾下。


假設我執行位於HDFS分散式系統上的jar檔案,那麼會出現permission denied錯誤提示。

我們能夠實現百度網盤與HDFS分散式檔案系統進行互動。


從百度網盤到HDFS的檔案傳輸
pan –put ./tupian.png ./test/tupian.png

從HDFS到百度網盤的檔案傳輸
pan –get ./test/tupian.png./test/tupian.png

在使用者的server上工作資料夾下存在一個檔案index.html,使用者輸入hadoop fs –put index.html ./001,則會拷貝使用者server上工作資料夾下的index.html。儲存在使用者在HDFS的工作資料夾下的001子資料夾中。

Question:
在從HDFS上向網盤轉移檔案時候,使用例如以下命令
pan -get /share/data/compad/keyword_class.txt ./keyword_class.txt
會出現
hdfs file not exist!
使用命令:
pan -get /share/data/compad/keyword_titles.txt ./keyword_titles.txt
會出現:
com.baidu.pcs.exception.PcsHttpException: org.apache.http.HttpException: IOException java.net.SocketException: Connection reset

當我在使用命令從網盤向HDFS上載檔案時候,提示上載成功
這裡寫圖片描寫敘述
可是在資料夾以下並不能找到我上載的檔案

pan -get /user/shijiebei2009/keyword_class.txt ./keyword_class.txt
pan -get /user/shijiebei2009/keyword_users.txt ./keyword_users.txt
這兩條命令均能夠成功將檔案下載到百度網盤,可是例如以下命令下載還有一個檔案時候
這裡寫圖片描寫敘述
會提示檔案過大,不能下載。

在使用例如以下程式訪問keyword_titles.txt時候,出現的錯誤提示

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;


public class hi {
       public static void main(String[] args) {
              ArrayList<String> keywordclass=new ArrayList<String>();
              ArrayList<String> keywordtitles=new ArrayList<String>();
              ArrayList<String> keywordusers=new ArrayList<String>();
              keywordtitles = GetData("keyword_titles.txt");
//            keywordclass = GetData("keyword_class.txt");
//            keywordusers = GetData("keyword_users.txt");

//            System.out.println(keywordclass.size()+"   "+keywordtitles.size()+"  "+keywordusers.size());
//                   System.out.println(keywordclass.size());
              System.out.println(keywordtitles.size());
       }
       public static ArrayList<String> GetData(String filename) {
              String dir=System.getProperty("user.dir")+"/"+filename;
              ArrayList<String> datalist=new ArrayList<String>();
              File file=new File(dir);
              String line;
              try {
                     BufferedReader reader=new BufferedReader( new FileReader(file));
                     while((line=reader.readLine())!=null)
                            datalist.add(line);
              } catch (Exception e) {
                     // TODO Auto-generated catch block
                     e.printStackTrace();
              }
              System.out.println(dir);
              return datalist;
       }
}

這裡寫圖片描寫敘述
當我想知道keyword_class.txt檔案的大小的時候。程式結果例如以下:
這裡寫圖片描寫敘述
程式輸出的資料是行數

當我想知道keyword_users.txt檔案的大小的時候,程式結果例如以下:
這裡寫圖片描寫敘述

經過試驗,假設我將程式中的dir改成例如以下形式
dir = “hdfs://share/data/compad/keyword_class.txt”;
即我要訪問HDFS分散式系統上的檔案是訪問不了的,程式給出提演示樣例如以下:

這裡寫圖片描寫敘述

相關文章