教程|要想Hadoop能夠運行Python程序,就要會MRJob


首先

要想Hadoop能夠很流暢的Python程序,學習mrjob可能是最直接、最簡單的方法了

你甚至都不要按安裝部署Hadoop集群。

mrjob擁有很多優秀的特性比如:

  • 支持多步驟的MapReduce任務工作流
  • 支持內嵌、本地、遠程亞馬遜以及Hadoop
  • 調試方便不需要任務環境支持

本教程通過 python 中 mrjob 模塊來調用 hadoop 處理數據。通過本次實驗,你可以初步入門mrjob,輕松編寫mr來使用hadoop。

主要知識點:

  • Python MRJob模塊的安裝
  • Hadoop——Python各模塊介紹
  • 使用MRJob實現文本統計
  • Python MRJob的運行方式
  • 重寫MRJob函數實現復雜數據處理

效果展示。該展示數據含義是通過mrjob將每個用戶(cuid)看過哪些電影(vid)進行統計並輸出。

教程|要想Hadoop能夠運行Python程序,就要會MRJob

 

mrjob支持python2和python3 。mrjob可以通過pip直接安裝,也可以通過下載源碼通過setup.py安裝,可參考mrjob安裝說明。 本實驗中,使用shiyanlou賬戶通過sudo權限進行安裝。pip安裝指令:

 

教程|要想Hadoop能夠運行Python程序,就要會MRJob

 

目前常見的Python框架有以下幾個,這里再簡單介紹一下各框架的大體特點,想了解更多可去博客查閱。

Hadoop Streaming。提供了使用其他可執行程序來作為Hadoop的mapper或者reduce的方式,必須使用規定的語義從標准輸入讀取數據,然后將結果輸出到標准輸出。直接使用Streaming 的一個缺點是當reduce的輸入是按key分組的時候,仍然是一行行迭代的,必須由用戶來辨識key與key之間的界限。

mrjob。開源的Python框架,封裝Hadoop的數據流,並積極開發Yelp的。由於Yelp的運作完全在亞馬遜網絡服務,mrjob的整合與EMR是令人難以置信的光滑和容易(使用 boto包)。

教程|要想Hadoop能夠運行Python程序,就要會MRJob

 

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多種運行方式等等的介紹。完整的教程已經配套的練習可以在實驗樓的主站去學習。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM