1.用自己的話闡明Hadoop平台上HDFS和MapReduce的功能、工作原理和工作過程。
HDFS的功能:中繼資料、檢查點、DataNode功能
HDFS的工作原理:
資料存取 - HDFS架構:
Master / Slave(主從結構) - 節點可以了解為實體機器
- 主節點,隻有一個: Namenode
- 從節點,有很多個: Datanodes
1) 分布式檔案系統,它所管理的檔案是被切塊存儲在若幹台datanode伺服器上.;
2) hdfs提供了一個統一的目錄樹來定位hdfs中的檔案,用戶端通路檔案時隻要指定目錄樹的路徑即可,不用關心檔案的具體實體位置;
3) 每一個檔案的每一個切塊,在hdfs叢集中都可以儲存多個備份,在hdfs-site.xml中,dfs.replication的value的數量就是備份的數量;
4) hdfs中有一個關鍵程序服務程序:namenode,它維護了一個hdfs的目錄樹及hdfs目錄結構與檔案真實存儲位置的映射關系(中繼資料).而datanode服務程序專門負責接收和管理"檔案塊";
HDFS的工作過程:用戶端要向HDFS寫資料,首先要跟namenode通信以确認可以寫檔案并獲得接收檔案block的datanode,然後,用戶端按順序将檔案逐個block傳遞給相應datanode,并由接收到block的datanode負責向其他datanode複制block的副本。
(2)MapReduce的功能:Hbase和Hdfs之間資料互相轉換;排序;Top N;從hbase中讀取資料統計并在hdfs中降序輸出Top 3;去重(Distinct)、計數(Count)、最大值(Max)、求和(Sum)、平均值(Avg);(多個job串行處理計算平均值;分區(Partition);Pv、Uv;反向索引(Inverted Index);join;
MapReduce的工作原理:

MR程式設計模型原理:利用一個輸入的key-value對集合來産生一個輸出的key-value對集合。
MapReduce的工作過程:MR架構是由一個單獨運作在主節點上的JobTracker和運作在每個叢集從節點上的TaskTracker共同組成。主節點負責排程構成一個作業的所有任務,這些任務分布在不同的不同的從節點上。主節點監視它們的執行情況,并重新執行之前失敗的任務。從節點僅負責由主節點指派的任務。當一個Job被送出時,JobTracker接受到送出作業和配置資訊之後,就會将配置資訊等分發給從節點,同時排程任務并監控TaskTracker的執行。JobTracker可以運作于叢集中的任意一台計算機上。TaskTracker負責執行任務,它必須運作在DataNode上,DataNode既是資料存儲節點,也是計算節點。JobTracker将map任務和reduce任務分發給空閑的TaskTracker,這些任務并行運作,并監控任務運作的情況。如果JobTracker出了故障,JobTracker會把任務轉交給另一個空閑的TaskTracker重新運作。
2.HDFS上運作MapReduce
1)準備文本檔案,放在本地/home/hadoop/wc
2)編寫map函數和reduce函數,在本地運作測試通過
3)啟動Hadoop:HDFS, JobTracker, TaskTracker
4)把文本檔案上傳到hdfs檔案系統上 user/hadoop/input
5)streaming的jar檔案的路徑寫入環境變量,讓環境變量生效
6)建立一個shell腳本檔案:streaming接口運作的腳本,名稱為run.sh
7)source run.sh來執行mapreduce
8)檢視運作結果