hadoop 平常使用記錄

1.Hadoop分佈式文件系統(HDFS)

  • HDFS基於GFS(Google File System),可以存儲海量的數據,而且使用分佈式網絡客戶端透明訪問。
  • HDFS中將文件拆分紅特定大小的塊結構(block-structured filesystem),一個文件的不一樣塊存儲在不一樣的節點中。
  • 爲了防止數據丟失,HDFS默認將一個塊重複保存3份。
  • HDFS的架構主要包括兩個部分:NameNode和DataNode。
  • NameNode保存整個文件系統的基礎信息,例如:文件名,文件權限,文件每一個塊的存儲位置等。爲了可以快速訪問獲取信息,NameNode將這些基礎信息保存在內存中。
  • DataNodes是那些保存塊(blocks)的機器,一般由大容量存儲空間的廉價機器充當。

hadoop中經常使用文件操做命令

  • hdfs dfs -ls / (列出HDFS根目錄的文件信息)
  • hdfs dfs -mkdir /user (在HDFS中建立目錄)
  • hdfs dfs -put INPUT_PATH OUTPUT_PATH
  • hdfs dfs -cat
  • hdfs dfs -getpython

  • hadoop fs,hadoop dfs和hdfs dfs命令的區別:fs既能操做本地文件又能操做分佈式文件系統,而dfs只能操做HDFS分佈式文件系統。hadoop dfs已經廢棄編程

2.MapReduce with Python

  • MapReduce是一種編程模型,用它來將大量的數據計算任務劃分紅並行的獨立的小任務。
  • MapReduce框架主要包括3個階段:map, shuffle and sort, and reduce(映射,混合和排序,規約)
  • Map階段:maper函數分別處理系列鍵值對,產生零個或多個新的鍵值對。

  • shuffle and sort:利用基於哈希的分割器給每肯定每一個鍵值對對於的reducer,而且進行排序。
  • Reduce階段:利用reduce函數,將多個map階段輸出的鍵值對按照鍵對值進行合併,而後輸出新的鍵值對。
  • Hadoop streaming:maper和reducer都是按照一行一行的順序從標準輸入(stdin)讀取數據,而後進行標準輸出,maper的輸出值爲多個鍵值對,每一個鍵值對用製表符(tab)分開。

3.Hadoop streaming

  • Hadoop Streaming工具的最大的好處是:可以讓任何語言編寫的map, reduce程序可以在hadoop集羣上運行;map/reduce程序只要遵循從標準輸入stdin讀,寫出到標準輸出stdout便可。
  • 另一個方便之處就是:須要編寫的map和reduce程序容易進行單機調試,經過管道先後相接的方式就能夠模擬streaming, 在本地完成map/reduce程序的調試。
  • 最後,streaming工具提供了豐富的參數來靈活控制做業的過程。網絡

  • map/reduce做業是由一些可執行文件或腳本文件充當mapper或者reducer。
    例如:
$HADOOP_HOME/bin/hadoop  jar $HADOOP_HOME/hadoop-streaming.jar \
    -input myInputDirs \
    -output myOutputDir \
    -mapper /bin/cat \
    -reducer /bin/wc

任何可執行文件均可以被指定爲mapper/reducer。這些可執行文件不須要事先存放在集羣上; 若是在集羣上尚未,則須要用-file選項讓framework把可執行文件做爲做業的一部分,一塊兒打包提交。
例如:架構

$HADOOP_HOME/bin/hadoop  jar $HADOOP_HOME/hadoop-streaming.jar \
    -input myInputDirs \
    -output myOutputDir \
    -mapper myPythonScript.py \
    -reducer /bin/wc \
    -file myPythonScript.py
相關文章
相關標籤/搜索