首先 要想Hadoop能夠很流暢的Python程式,學習mrjob可能是最直接、最簡單的方法了 你甚至都不要按安裝部署Hadoop集群。 mrjob擁有很多優秀的特性比如: 支持多步驟的MapReduce任務工作流 支持內嵌、本地、遠程亞馬遜以及Hadoop 調試方便不需要任務環境支持 本教程通過 ...
首先
要想Hadoop能夠很流暢的Python程式,學習mrjob可能是最直接、最簡單的方法了
你甚至都不要按安裝部署Hadoop集群。
mrjob擁有很多優秀的特性比如:
- 支持多步驟的MapReduce任務工作流
- 支持內嵌、本地、遠程亞馬遜以及Hadoop
- 調試方便不需要任務環境支持
本教程通過 python 中 mrjob 模塊來調用 hadoop 處理數據。通過本次實驗,你可以初步入門mrjob,輕鬆編寫mr來使用hadoop。
主要知識點:
- Python MRJob模塊的安裝
- Hadoop——Python各模塊介紹
- 使用MRJob實現文本統計
- Python MRJob的運行方式
- 重寫MRJob函數實現複雜數據處理
效果展示。該展示數據含義是通過mrjob將每個用戶(cuid)看過哪些電影(vid)進行統計並輸出。
mrjob支持python2和python3 。mrjob可以通過pip直接安裝,也可以通過下載源碼通過setup.py安裝,可參考mrjob安裝說明。 本實驗中,使用shiyanlou賬戶通過sudo許可權進行安裝。pip安裝指令:
目前常見的Python框架有以下幾個,這裡再簡單介紹一下各框架的大體特點,想瞭解更多可去博客查閱。
Hadoop Streaming。提供了使用其他可執行程式來作為Hadoop的mapper或者reduce的方式,必須使用規定的語義從標準輸入讀取數據,然後將結果輸出到標準輸出。直接使用Streaming 的一個缺點是當reduce的輸入是按key分組的時候,仍然是一行行迭代的,必須由用戶來辨識key與key之間的界限。
mrjob。開源的Python框架,封裝Hadoop的數據流,並積極開發Yelp的。由於Yelp的運作完全在亞馬遜網路服務,mrjob的整合與EMR是令人難以置信的光滑和容易(使用 boto包)。
dumbo。同樣使用Hadoop流包裝的框架。dumbo出現的較早,但由於缺少文檔,造成開發困難。這也是不如mrjob的一點。dumbo通過typedbytes執行序列化,能允許更簡潔的數據傳輸,也可以更自然的通過指定JavaInputFormat讀取SequenceFiles或者其他格式的文件
hadoopy。是一個相容dumbo的Streaming封裝,也使用typedbytes序列化數據,並直接把 typedbytes 數據寫到HDFS。它有一個很棒的調試機制, 在這種機制下它可以直接把消息寫到標準輸出而不會幹擾Streaming過程。它和dumbo很相似,但文檔要好得多。
pydoop。與其他框架相比,pydoop 封裝了Hadoop的管道(Pipes),這是Hadoop的C++ API。 正因為此,該項目聲稱他們能夠提供更加豐富的Hadoop和HDFS介面,以及一樣好的性能。需要註意de所有的輸入輸出都必須是字元串。
其他 -happy、Disco、octopy、Mortar、Luigi 等。
後面便是使用mrjob實現片語統計以及mrjob多種運行方式等等的介紹。完整的教程已經配套的練習可以在實驗樓的主站去學習。