最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

大數(shù)據(jù)學(xué)習(xí)門檻降到了地平線

2020-12-31 14:55 作者:編程大戰(zhàn)  | 我要投稿

Hadoop介紹

Hadoop-大數(shù)據(jù)開源世界的亞當(dāng)夏娃。
核心是HDFS數(shù)據(jù)存儲系統(tǒng),和MapReduce分布式計算框架。

HDFS

原理是把大塊數(shù)據(jù)切碎,

每個碎塊復(fù)制三份,分開放在三個廉價機上,一直保持有三塊可用的數(shù)據(jù)互為備份。使用的時候只從其中一個備份讀出來,這個碎塊數(shù)據(jù)就有了。

存數(shù)據(jù)的叫datenode(格子間),管理datenode的叫namenode(執(zhí)傘人)。

MapReduce

原理是大任務(wù)先分堆處理-Map,再匯總處理結(jié)果-Reduce。分和匯是多臺服務(wù)器并行進(jìn)行,才能體現(xiàn)集群的威力。難度在于如何把任務(wù)拆解成符合MapReduce模型的分和匯,以及中間過程的輸入輸出<k,v> 都是什么。

單機版Hadoop介紹

對于學(xué)習(xí)hadoop原理和hadoop開發(fā)的人來說,搭建一套hadoop系統(tǒng)是必須的。但

  • 配置該系統(tǒng)是非常頭疼的,很多人配置過程就放棄了。

  • 沒有服務(wù)器供你使用

這里介紹一種免配置的單機版hadoop安裝使用方法,可以簡單快速的跑一跑hadoop例子輔助學(xué)習(xí)、開發(fā)和測試。
要求筆記本上裝了Linux虛擬機,虛擬機上裝了docker。

安裝

使用docker下載sequenceiq/hadoop-docker:2.7.0鏡像并運行。

[root@bogon ~]# docker pull sequenceiq/hadoop-docker:2.7.0 ?

2.7.0: Pulling?from?sequenceiq/hadoop-docker860d0823bcab: Pulling fs layer e592c61b2522: Pulling fs layer

下載成功輸出

Digest: sha256:a40761746eca036fee6aafdf9fdbd6878ac3dd9a7cd83c0f3f5d8a0e6350c76a Status: Downloaded newer image?for?sequenceiq/hadoop-docker:2.7.0

啟動

[root@bogon ~]# docker run -it?sequenceiq/hadoop-docker:2.7.0 /etc/bootstrap.sh -bash?--privileged=true

Starting sshd: ? ? ?[ ?OK ?]?

Starting namenodes?on?[b7a42f79339c]?

b7a42f79339c: starting namenode, logging to /usr/local/hadoop/logs/hadoop-root-namenode-b7a42f79339c.out

localhost: starting datanode, logging to?/usr/local/hadoop/logs/hadoop-root-datanode-b7a42f79339c.out

Starting secondary namenodes [0.0.0.0]

0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop/logs/hadoop-root-secondarynamenode-b7a42f79339c.out

starting yarn daemons?

starting resourcemanager, logging to /usr/local/hadoop/logs/yarn--resourcemanager-b7a42f79339c.out

localhost: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-root-nodemanager-b7a42f79339c.out

啟動成功后命令行shell會自動進(jìn)入Hadoop的容器環(huán)境,不需要執(zhí)行docker exec。在容器環(huán)境進(jìn)入/usr/local/hadoop/sbin,執(zhí)行./start-all.sh和./mr-jobhistory-daemon.sh start historyserver,如下

bash-4.1#?cd /usr/local/hadoop/sbin

bash-4.1# ./start-all.sh

This script?is?Deprecated. Instead use start-dfs.sh?and?start-yarn.sh?

Starting namenodes?on?[b7a42f79339c]?

b7a42f79339c: namenode running?as?process?128.?Stop it first.?

localhost: datanode running?as?process?219.?Stop it first.?

Starting secondary namenodes [0.0.0.0]

0.0.0.0: secondarynamenode running?as?process?402.?Stop it first.?

starting yarn daemons?

resourcemanager running?as?process?547.?Stop it first.?

localhost: nodemanager running?as?process?641.?Stop it first. ??

bash-4.1# ./mr-jobhistory-daemon.sh start historyserver

chown: missing operand after `/usr/local/hadoop/logs'?

Try?`chown --help' for more information.?

starting historyserver, logging to /usr/local/hadoop/logs/mapred--historyserver-b7a42f79339c.out

Hadoop啟動完成,如此簡單。

要問分布式部署有多麻煩,數(shù)數(shù)光配置文件就有多少個吧!我親眼見過一個hadoop老鳥,因為新?lián)Q的服務(wù)器hostname主機名帶橫線“-”,配了一上午,環(huán)境硬是沒起來。

運行自帶的例子

回到Hadoop主目錄,運行示例程序

bash-4.1#?cd /usr/local/hadoop

bash-4.1# bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.0.jar grep input output 'dfs[a-z.]+'?

20/07/05?22:34:41?INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032

20/07/05?22:34:43?INFO input.FileInputFormat: Total input paths to process :?31

20/07/05?22:34:43?INFO mapreduce.JobSubmitter: number?of?splits:31

20/07/05?22:34:44?INFO mapreduce.JobSubmitter: Submitting tokens?for?job: job_1594002714328_0001

20/07/05?22:34:44?INFO impl.YarnClientImpl: Submitted application application_1594002714328_0001

20/07/05?22:34:45?INFO mapreduce.Job: The url to track the job: http://b7a42f79339c:8088/proxy/application_1594002714328_0001/

20/07/05?22:34:45?INFO mapreduce.Job: Running job: job_1594002714328_0001

20/07/05?22:35:04?INFO mapreduce.Job: Job job_1594002714328_0001 running?in?uber mode :?false

20/07/05?22:35:04?INFO mapreduce.Job: ?map?0% reduce?0%

20/07/05?22:37:59?INFO mapreduce.Job: ?map?11% reduce?0%

20/07/05?22:38:05?INFO mapreduce.Job: ?map?12% reduce?0%

mapreduce計算完成,有如下輸出

hdfs命令查看輸出結(jié)果

例子講解

grep是一個在輸入中計算正則表達(dá)式匹配的mapreduce程序,篩選出符合正則的字符串以及出現(xiàn)次數(shù)。

shell的grep結(jié)果會顯示完整的一行,這個命令只顯示行中匹配的那個字符串

正則表達(dá)式dfs[a-z.]+,表示字符串要以dfs開頭,后面是小寫字母或者換行符\n之外的任意單個字符都可以,數(shù)量一個或者多個。?

輸入是input里的所有文件,


結(jié)果輸出到output。

計算流程如下

稍有不同的是這里有兩次reduce,第二次reduce就是把結(jié)果按照出現(xiàn)次數(shù)排個序。map和reduce流程開發(fā)者自己隨意組合,只要各流程的輸入輸出能銜接上就行。

管理系統(tǒng)介紹

Hadoop提供了web界面的管理系統(tǒng),

加命令參數(shù)

docker run命令要加入?yún)?shù),才能訪問UI管理頁面

docker?run -it -p?50070:50070?-p?8088:8088?-p?50075:50075??sequenceiq/hadoop-docker:2.7.0?/etc/bootstrap.sh -bash --privileged=true

執(zhí)行這條命令后在宿主機瀏覽器就可以查看系統(tǒng)了,當(dāng)然如果Linux有瀏覽器也可以查看。我的Linux沒有圖形界面,所以在宿主機查看。

8088 Yarn任務(wù)監(jiān)控端口

已完成和正在運行的mapreduce任務(wù)都可以在8088里查看,上圖有g(shù)erp和wordcount兩個任務(wù)。

一些問題

一、./sbin/mr-jobhistory-daemon.sh start historyserver必須執(zhí)行,否則運行任務(wù)過程中會報

20/06/29 21:18:49 INFO ipc.Client: Retrying connect to server: 0.0.0.0/0.0.0.0:10020. Already tried 9 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)?

java.io.IOException: java.net.ConnectException:?Call?From?87a4217b9f8a/172.17.0.1?to?0.0.0.0:10020?failed?on?connection?exception: java.net.ConnectException:?Connection?refused; For more details see: ?http://wiki.apache.org/hadoop/ConnectionRefused

二、./start-all.sh必須執(zhí)行否則報形如
Unknown Job job_1592960164748_0001錯誤

三、docker run命令后面必須加--privileged=true,否則運行任務(wù)過程中會報java.io.IOException: Job status not available

四、注意,Hadoop 默認(rèn)不會覆蓋結(jié)果文件,因此再次運行上面實例會提示出錯,需要先將 ./output 刪除?;蛘邠Q成output01試試?

總結(jié)

本文方法可以低成本的完成Hadoop的安裝配置,對于學(xué)習(xí)理解和開發(fā)測試都有幫助的。如果開發(fā)自己的Hadoop程序,需要將程序打jar包上傳到share/hadoop/mapreduce/目錄,執(zhí)行

來運行程序觀察效果。








大數(shù)據(jù)學(xué)習(xí)門檻降到了地平線的評論 (共 條)

分享到微博請遵守國家法律
永和县| 肥乡县| 延长县| 蒲城县| 韩城市| 汨罗市| 崇文区| 仙桃市| 舞钢市| 惠州市| 临猗县| 和顺县| 铜山县| 聂拉木县| 玉环县| 龙井市| 呼玛县| 平塘县| 桂平市| 屏东县| 右玉县| 翁源县| 万宁市| 洞口县| 古浪县| 宿松县| 温州市| 广元市| 泰顺县| 虞城县| 怀来县| 绵阳市| 海南省| 温州市| 英超| 茌平县| 科技| 泾阳县| 永德县| 全椒县| 镇宁|