導航:首頁 > 編程語言 > hadooppython開發

hadooppython開發

發布時間:2022-08-19 04:05:21

㈠ 畢業做了1年python,想轉行去做Hadoop大數據開發,聽說八斗學院的課程可以,有人知道嗎

八斗學院的課程挺好的,課上講的知識都是工作中常用的,提供的練習項目也是66的,給了百萬級別的數據用於練習,這一點自學是學不到的。面試的時候問的問題基本能答上來,已經工作2個月了,現在比公司里幹了一年的技術也不差

㈡ 如何使用Python為Hadoop編寫一個簡單的MapRece程序

在這個實例中,我將會向大家介紹如何使用Python 為 Hadoop編寫一個簡單的MapRece
程序。
盡管Hadoop 框架是使用java編寫的但是我們仍然需要使用像C++、Python等語言來實現Hadoop程序。盡管Hadoop官方網站給的示常式序是使用Jython編寫並打包成Jar文件,這樣顯然造成了不便,其實,不一定非要這樣來實現,我們可以使用Python與Hadoop 關聯進行編程,看看位於/src/examples/python/WordCount.py 的例子,你將了解到我在說什麼。

我們想要做什麼?

我們將編寫一個簡單的 MapRece 程序,使用的是C-Python,而不是Jython編寫後打包成jar包的程序。
我們的這個例子將模仿 WordCount 並使用Python來實現,例子通過讀取文本文件來統計出單詞的出現次數。結果也以文本形式輸出,每一行包含一個單詞和單詞出現的次數,兩者中間使用製表符來想間隔。

先決條件

編寫這個程序之前,你學要架設好Hadoop 集群,這樣才能不會在後期工作抓瞎。如果你沒有架設好,那麼在後面有個簡明教程來教你在Ubuntu linux 上搭建(同樣適用於其他發行版linux、unix)

如何使用Hadoop Distributed File System (HDFS)在Ubuntu Linux 建立單節點的 Hadoop 集群

如何使用Hadoop Distributed File System (HDFS)在Ubuntu Linux 建立多節點的 Hadoop 集群

Python的MapRece代碼

使用Python編寫MapRece代碼的技巧就在於我們使用了 HadoopStreaming 來幫助我們在Map 和 Rece間傳遞數據通過STDIN (標准輸入)和STDOUT (標准輸出).我們僅僅使用Python的sys.stdin來輸入數據,使用sys.stdout輸出數據,這樣做是因為HadoopStreaming會幫我們辦好其他事。這是真的,別不相信!

Map: mapper.py

將下列的代碼保存在/home/hadoop/mapper.py中,他將從STDIN讀取數據並將單詞成行分隔開,生成一個列表映射單詞與發生次數的關系:
注意:要確保這個腳本有足夠許可權(chmod +x /home/hadoop/mapper.py)。

#!/usr/bin/env python

import sys

# input comes from STDIN (standard input)
for line in sys.stdin:
# remove leading and trailing whitespace
line = line.strip()
# split the line into words
words = line.split()
# increase counters
for word in words:
# write the results to STDOUT (standard output);
# what we output here will be the input for the
# Rece step, i.e. the input for recer.py
#
# tab-delimited; the trivial word count is 1
print '%s\\t%s' % (word, 1)在這個腳本中,並不計算出單詞出現的總數,它將輸出 "<word> 1" 迅速地,盡管<word>可能會在輸入中出現多次,計算是留給後來的Rece步驟(或叫做程序)來實現。當然你可以改變下編碼風格,完全尊重你的習慣。

Rece: recer.py

將代碼存儲在/home/hadoop/recer.py 中,這個腳本的作用是從mapper.py 的STDIN中讀取結果,然後計算每個單詞出現次數的總和,並輸出結果到STDOUT。
同樣,要注意腳本許可權:chmod +x /home/hadoop/recer.py

#!/usr/bin/env python

from operator import itemgetter
import sys

# maps words to their counts
word2count = {}

# input comes from STDIN
for line in sys.stdin:
# remove leading and trailing whitespace
line = line.strip()

# parse the input we got from mapper.py
word, count = line.split('\\t', 1)
# convert count (currently a string) to int
try:
count = int(count)
word2count[word] = word2count.get(word, 0) + count
except ValueError:
# count was not a number, so silently
# ignore/discard this line
pass

# sort the words lexigraphically;
#
# this step is NOT required, we just do it so that our
# final output will look more like the official Hadoop
# word count examples
sorted_word2count = sorted(word2count.items(), key=itemgetter(0))

# write the results to STDOUT (standard output)
for word, count in sorted_word2count:
print '%s\\t%s'% (word, count)
測試你的代碼(cat data | map | sort | rece)

我建議你在運行MapRece job測試前嘗試手工測試你的mapper.py 和 recer.py腳本,以免得不到任何返回結果
這里有一些建議,關於如何測試你的Map和Rece的功能:
——————————————————————————————————————————————
\r\n
# very basic test
hadoop@ubuntu:~$ echo "foo foo quux labs foo bar quux" | /home/hadoop/mapper.py
foo 1
foo 1
quux 1
labs 1
foo 1
bar 1
——————————————————————————————————————————————
hadoop@ubuntu:~$ echo "foo foo quux labs foo bar quux" | /home/hadoop/mapper.py | sort | /home/hadoop/recer.py
bar 1
foo 3
labs 1
——————————————————————————————————————————————

# using one of the ebooks as example input
# (see below on where to get the ebooks)
hadoop@ubuntu:~$ cat /tmp/gutenberg/20417-8.txt | /home/hadoop/mapper.py
The 1
Project 1
Gutenberg 1
EBook 1
of 1
[...]
(you get the idea)

quux 2

quux 1

——————————————————————————————————————————————

在Hadoop平台上運行Python腳本

為了這個例子,我們將需要三種電子書:

The Outline of Science, Vol. 1 (of 4) by J. Arthur Thomson\r\n
The Notebooks of Leonardo Da Vinci\r\n
Ulysses by James Joyce
下載他們,並使用us-ascii編碼存儲 解壓後的文件,保存在臨時目錄,比如/tmp/gutenberg.

hadoop@ubuntu:~$ ls -l /tmp/gutenberg/
total 3592
-rw-r--r-- 1 hadoop hadoop 674425 2007-01-22 12:56 20417-8.txt
-rw-r--r-- 1 hadoop hadoop 1423808 2006-08-03 16:36 7ldvc10.txt
-rw-r--r-- 1 hadoop hadoop 1561677 2004-11-26 09:48 ulyss12.txt
hadoop@ubuntu:~$

復制本地數據到HDFS

在我們運行MapRece job 前,我們需要將本地的文件復制到HDFS中:

hadoop@ubuntu:/usr/local/hadoop$ bin/hadoop dfs -FromLocal /tmp/gutenberg gutenberg
hadoop@ubuntu:/usr/local/hadoop$ bin/hadoop dfs -ls
Found 1 items
/user/hadoop/gutenberg <dir>
hadoop@ubuntu:/usr/local/hadoop$ bin/hadoop dfs -ls gutenberg
Found 3 items
/user/hadoop/gutenberg/20417-8.txt <r 1> 674425
/user/hadoop/gutenberg/7ldvc10.txt <r 1> 1423808
/user/hadoop/gutenberg/ulyss12.txt <r 1> 1561677

執行 MapRece job

現在,一切准備就緒,我們將在運行Python MapRece job 在Hadoop集群上。像我上面所說的,我們使用的是
HadoopStreaming 幫助我們傳遞數據在Map和Rece間並通過STDIN和STDOUT,進行標准化輸入輸出。

hadoop@ubuntu:/usr/local/hadoop$ bin/hadoop jar contrib/streaming/hadoop-0.19.1-streaming.jar
-mapper /home/hadoop/mapper.py -recer /home/hadoop/recer.py -input gutenberg/*
-output gutenberg-output
在運行中,如果你想更改Hadoop的一些設置,如增加Rece任務的數量,你可以使用「-jobconf」選項:

hadoop@ubuntu:/usr/local/hadoop$ bin/hadoop jar contrib/streaming/hadoop-0.19.1-streaming.jar
-jobconf mapred.rece.tasks=16 -mapper ...

一個重要的備忘是關於Hadoop does not honor mapred.map.tasks
這個任務將會讀取HDFS目錄下的gutenberg並處理他們,將結果存儲在獨立的結果文件中,並存儲在HDFS目錄下的
gutenberg-output目錄。
之前執行的結果如下:

hadoop@ubuntu:/usr/local/hadoop$ bin/hadoop jar contrib/streaming/hadoop-0.19.1-streaming.jar
-mapper /home/hadoop/mapper.py -recer /home/hadoop/recer.py -input gutenberg/*
-output gutenberg-output

additionalConfSpec_:null
null=@@@userJobConfProps_.get(stream.shipped.hadoopstreaming
packageJobJar: [/usr/local/hadoop-datastore/hadoop-hadoop/hadoop-unjar54543/]
[] /tmp/streamjob54544.jar tmpDir=null
[...] INFO mapred.FileInputFormat: Total input paths to process : 7
[...] INFO streaming.StreamJob: getLocalDirs(): [/usr/local/hadoop-datastore/hadoop-hadoop/mapred/local]
[...] INFO streaming.StreamJob: Running job: job_200803031615_0021
[...]
[...] INFO streaming.StreamJob: map 0% rece 0%
[...] INFO streaming.StreamJob: map 43% rece 0%
[...] INFO streaming.StreamJob: map 86% rece 0%
[...] INFO streaming.StreamJob: map 100% rece 0%
[...] INFO streaming.StreamJob: map 100% rece 33%
[...] INFO streaming.StreamJob: map 100% rece 70%
[...] INFO streaming.StreamJob: map 100% rece 77%
[...] INFO streaming.StreamJob: map 100% rece 100%
[...] INFO streaming.StreamJob: Job complete: job_200803031615_0021

[...] INFO streaming.StreamJob: Output: gutenberg-output hadoop@ubuntu:/usr/local/hadoop$

正如你所見到的上面的輸出結果,Hadoop 同時還提供了一個基本的WEB介面顯示統計結果和信息。
當Hadoop集群在執行時,你可以使用瀏覽器訪問 http://localhost:50030/ ,如圖:

檢查結果是否輸出並存儲在HDFS目錄下的gutenberg-output中:

hadoop@ubuntu:/usr/local/hadoop$ bin/hadoop dfs -ls gutenberg-output
Found 1 items
/user/hadoop/gutenberg-output/part-00000 <r 1> 903193 2007-09-21 13:00
hadoop@ubuntu:/usr/local/hadoop$

可以使用dfs -cat 命令檢查文件目錄

hadoop@ubuntu:/usr/local/hadoop$ bin/hadoop dfs -cat gutenberg-output/part-00000
"(Lo)cra" 1
"1490 1
"1498," 1
"35" 1
"40," 1
"A 2
"AS-IS". 2
"A_ 1
"Absoluti 1
[...]
hadoop@ubuntu:/usr/local/hadoop$

注意比輸出,上面結果的(")符號不是Hadoop插入的。

轉載僅供參考,版權屬於原作者。祝你愉快,滿意請採納哦

㈢ 用python 寫hadoop 需要怎麼配置環境

不用專門配置python,CHD里已經有了,可以輸入python來試一試。

可以直接調用.py文件來實現MapRece功能。

㈣ 為什麼有的hadoop課程會講授python

沒說到點上,python各種好處,但為啥和hadoop有關。
hadoop,都喜歡扯大數據,總不能光hdfs存儲。最重要是datamining。
如果你查看數據挖掘相關庫,還是python居多。基本上主流數據挖掘語言還是python。
這也是hadoop為什麼提供python使用介面。
spark也是,支持語言是scala,java,python。
為了讓那些懂機器學習、數據挖掘的人,來玩hadoop、spark,大數據嘛。
大數據大數據,不光是數據儲存、數據統計,最重要是數據挖掘。

㈤ python和hadoop有什麼聯系

沒聯系
python 是一門動態語言,
hadoop是一個分布式計算的框架, 是用java寫的.
他們是兩個層次的東西.
如果說非要有聯系, 就是python可以應用hadoop框架, 做分布式計算的開發.
但是語言和框架, 是可以自己拼裝的. java也可以使用hadoop開發分布式計算,
python也可以用spark開發分布式計算, 他們是松耦合的, 可以自己根據需求搭配

㈥ hadoop用python寫的Map部分哪裡有問題啊

這個item.txt和'user_profile.txt'是什麼文件?

如果是數據文件那應該放到HDFS上,或者自己實現inputformat來提供訪問方式。程序中從標准輸入獲取數據。
如果是運行中的一些參數信息,那應該使用-files選項讓Hadoop框架幫你把文件發送到目標機器上,和maprece的jar包放到相同的臨時目錄下,你才能找到。-files要加在前面,例如:
hadoop jar \$HADOOP_HOME/contrib/streaming/hadoop-0.20.2-streaming.jar -files item.txt -mapper ./python/map.py -recer ./python/rece.py -input /home/hadoop/hello -output /home/hadoop/outpath
如果保證每台主機的相同路徑下都存在這個文件,也可以使用絕對路徑。

命令寫的也有問題,沒有指定輸入輸出目錄。
hadoop jar \$HADOOP_HOME/contrib/streaming/hadoop-0.20.2-streaming.jar -mapper ./python/map.py -recer ./python/rece.py -input /home/hadoop/hello -output /home/hadoop/outpath
其中輸出路徑/home/hadoop/outpath需要是一個之前不存在的路徑,執行maprece的時候會校驗並創建。

㈦ 推薦一本關於hadoop方面的書籍,最好是適合基礎學習者,我是做python開發

親,可以看下「大講台」(網路搜索即可)

㈧ hadoop 機器學習 python什麼關系

機器學習是一系列演算法。這些演算法通常需要大數據,大量的計算 。

hadoop是一種使用多台伺服器穩定的進行大規模數據批量處理的軟體框架。 其核心是hdfs和map rece。

python是一個通用語言,支持廣泛,上手容易。當然大數據中的機器學習演算法也是很早就可以用pyhon來編寫。

python編寫的機器學習演算法,可以自己用gearman或者是自己建立的分布式計算 系統完成多台PC伺服器共同計算 。 當然也可以通過hadoop的stream介面,將python程序運行在hadoop的框架里。

這也是一種成功 的商業模式。

㈨ hadoop自動化部署 shell還是python比較好

性能方面:很明顯地,Python的執行效率要高於shell,有一個很充分的理由就是shell本身的各種進程間IPC通信要造成相當大的開銷。而Python底層是用C實現的,其性能可以接近於C,但具體相同功能的Python代碼量卻要比C短上很多倍!因此,按照性能排序:C > Python > shell,按照開發效率排序:shell > Python > C。

㈩ python後端開發需要學什麼

第一階段:Python語言基礎


主要學習Python最基礎知識,如Python3、數據類型、字元串、函數、類、文件操作等。階段課程結束後,學員需要完成Pygame實戰飛機大戰、2048等項目。


第二階段:Python語言高級


主要學習Python庫、正則表達式、進程線程、爬蟲、遍歷以及MySQL資料庫。


第三階段:Pythonweb開發


主要學習HTML、CSS、JavaScript、jQuery等前端知識,掌握python三大後端框架(Django、 Flask以及Tornado)。需要完成網頁界面設計實戰;能獨立開發網站。


第四階段:Linux基礎


主要學習Linux相關的各種命令,如文件處理命令、壓縮解壓命令、許可權管理以及Linux Shell開發等。


第五階段:Linux運維自動化開發


主要學習Python開發Linux運維、Linux運維報警工具開發、Linux運維報警安全審計開發、Linux業務質量報表工具開發、Kali安全檢測工具檢測以及Kali 密碼破解實戰。


第六階段:Python爬蟲


主要學習python爬蟲技術,掌握多線程爬蟲技術,分布式爬蟲技術。


第七階段:Python數據分析和大數據


主要學習numpy數據處理、pandas數據分析、matplotlib數據可視化、scipy數據統計分析以及python 金融數據分析;Hadoop HDFS、python Hadoop MapRece、python Spark core、python Spark SQL以及python Spark MLlib。


第八階段:Python機器學習


主要學習KNN演算法、線性回歸、邏輯斯蒂回歸演算法、決策樹演算法、樸素貝葉斯演算法、支持向量機以及聚類k-means演算法。


關於python後端開發需要學什麼的內容,青藤小編就和您分享到這里了。如果您對python編程有濃厚的興趣,希望這篇文章可以為您提供幫助。如果您還想了解更多關於python編程的技巧及素材等內容,可以點擊本站的其他文章進行學習。

閱讀全文

與hadooppython開發相關的資料

熱點內容
隨車拍app綁定什麼設備 瀏覽:893
方維團購系統源碼 瀏覽:988
linux反彈shell 瀏覽:152
列印機介面加密狗還能用嗎 瀏覽:299
二板股票源碼 瀏覽:446
度人經pdf 瀏覽:902
怎麼配置android遠程伺服器地址 瀏覽:960
java程序員看哪些書 瀏覽:943
什麼app可以免費和外國人聊天 瀏覽:796
pdf手寫筆 瀏覽:182
別永遠傷在童年pdf 瀏覽:990
愛上北斗星男友在哪個app上看 瀏覽:421
主力散戶派發源碼 瀏覽:671
linux如何修復伺服器時間 瀏覽:61
榮縣優途網約車app叫什麼 瀏覽:479
百姓網app截圖是什麼意思 瀏覽:229
php如何嵌入html 瀏覽:817
解壓專家怎麼傳輸 瀏覽:745
如何共享伺服器的網路連接 瀏覽:136
程序員簡易表白代碼 瀏覽:170