-
代碼其實(shí)在hadoop的安裝目錄下有example,一般的目錄是/hadoop/src/examples//org/apache/hadoop/examples/WordCount.jar 源代碼 ?http://hadoop.apache.org/docs/r1.0.4/cn/mapred_tutorial.html
查看全部 -
Rdeuce過(guò)程
拿到Map的結(jié)果,進(jìn)行合并
合并得到一個(gè)最終的結(jié)果
查看全部 -
map過(guò)程
查看全部 -
文件進(jìn)行切分 再將文件切成單詞
map的過(guò)程就是把文件切分的過(guò)程
查看全部 -
MapReduce的容錯(cuò)機(jī)制
重復(fù)執(zhí)行 執(zhí)行錯(cuò)誤4次后,還是失敗 就放棄執(zhí)行
推測(cè)執(zhí)行
查看全部 -
MapReduce作業(yè)執(zhí)行過(guò)程
輸入數(shù)據(jù)進(jìn)行分片
按照一定規(guī)則分到TaskTracker,產(chǎn)生中間結(jié)果(key-value對(duì))
key-value進(jìn)行一些規(guī)則進(jìn)入到Reduce端,Reduce端里面也是有TaskTracker
最后寫(xiě)入HDFS
查看全部 -
1. 原理:
分而治之 的思想,一個(gè)大任務(wù)分成多個(gè)小任務(wù)(map),并行執(zhí)行后,合并結(jié)果(reduce)
2. 運(yùn)行流程:
1)基本概念:
--Job & Task:
一個(gè) Job(任務(wù)、作業(yè)) 被切分為多個(gè) Task,Task 又分為 MapTask 和 ReduceTask
--JobTracker
作業(yè)調(diào)度
分配任務(wù)、監(jiān)控任務(wù)
監(jiān)控 TaskTracker 的狀態(tài)
--TaskTracker
執(zhí)行任務(wù)
向 JobTracker 匯報(bào)任務(wù)狀態(tài)
3. 容錯(cuò)機(jī)制:2種
1)重復(fù)執(zhí)行:
默認(rèn)重復(fù)執(zhí)行 4 次,若還是失敗,則放棄執(zhí)行
2)推測(cè)執(zhí)行:
可以保證任務(wù)不會(huì)因?yàn)槟?-2個(gè)機(jī)器錯(cuò)誤或故障而導(dǎo)致整體效率下降
查看全部 -
MapReduce處理數(shù)據(jù)過(guò)程主要分成2個(gè)階段:Map階段和Reduce階段。首先執(zhí)行Map階段,再執(zhí)行Reduce階段。Map和Reduce的處理邏輯由用戶(hù)自定義實(shí)現(xiàn),但要符合MapReduce框架的約定。 在正式執(zhí)行Map前,需要將輸入數(shù)據(jù)進(jìn)行”分片”。所謂分片,就是將輸入數(shù)據(jù)切分為大小相等的數(shù)據(jù)塊,每一塊作為單個(gè)Map Worker的輸入被處理,以便于多個(gè)Map Worker同時(shí)工作。 分片完畢后,多個(gè)Map Worker就可以同時(shí)工作了。每個(gè)Map Worker在讀入各自的數(shù)據(jù)后,進(jìn)行計(jì)算處理,最終輸出給Reduce。Map Worker在輸出數(shù)據(jù)時(shí),需要為每一條輸出數(shù)據(jù)指定一個(gè)Key。這個(gè)Key值決定了這條數(shù)據(jù)將會(huì)被發(fā)送給哪一個(gè)Reduce Worker。Key值和Reduce Worker是多對(duì)一的關(guān)系,具有相同Key的數(shù)據(jù)會(huì)被發(fā)送給同一個(gè)Reduce Worker,單個(gè)Reduce Worker有可能會(huì)接收到多個(gè)Key值的數(shù)據(jù)。 在進(jìn)入Reduce階段之前,MapReduce框架會(huì)對(duì)數(shù)據(jù)按照Key值排序,使得具有相同Key的數(shù)據(jù)彼此相鄰。如果用戶(hù)指定了”合并操作”(Combiner),框架會(huì)調(diào)用Combiner,將具有相同Key的數(shù)據(jù)進(jìn)行聚合。Combiner的邏輯可以由用戶(hù)自定義實(shí)現(xiàn)。這部分的處理通常也叫做”洗牌”(Shuffle)。 接下來(lái)進(jìn)入Reduce階段。相同的Key的數(shù)據(jù)會(huì)到達(dá)同一個(gè)Reduce Worker。同一個(gè)Reduce Worker會(huì)接收來(lái)自多個(gè)Map Worker的數(shù)據(jù)。每個(gè)Reduce Worker會(huì)對(duì)Key相同的多個(gè)數(shù)據(jù)進(jìn)行Reduce操作。最后,一個(gè)Key的多條數(shù)據(jù)經(jīng)過(guò)Reduce的作用后,將變成了一個(gè)值。
查看全部 -
hadoop存放文件命令 ?hadoop fs -put hadoop-env.sh /input?
hadoop獲取文件命令 ?hadoop fs -get?
hadoop刪除文件命令 ?hadoop fs -rm?
hadoop創(chuàng)建目錄命令 ?hadoop fs -mkdir?
hadoop查看存儲(chǔ)信息 ?hadoop dfsadmin -report
查看全部 -
適合一次寫(xiě)入多次讀取,順序讀寫(xiě)
不支持多用戶(hù)并發(fā)寫(xiě)相同文件
查看全部 -
適用性和局限性
查看全部 -
大量的冗余 用三個(gè)備份來(lái)實(shí)現(xiàn)硬件容錯(cuò) 一次寫(xiě)入多次讀取
一但寫(xiě)入就不會(huì)被修改
存儲(chǔ)大文件
如果是大量小文件 NameNode壓力會(huì)比較大 小文件也需要元數(shù)據(jù)
查看全部 -
HDFS讀取文件的流程:
(1)客戶(hù)端向namenode發(fā)起獨(dú)立請(qǐng)求,把文件名,路徑告訴namenode;
(2)namenode查詢(xún)?cè)獢?shù)據(jù),并把數(shù)據(jù)庫(kù)返回客戶(hù)端;
(3)此時(shí)客戶(hù)端就明白文件包含哪些塊,這些塊在哪些datanode中可以找到;?
===========================================
HDFS寫(xiě)文件流程:
(1)客戶(hù)端把文件拆分成固定大小64M的塊,并通知namenode;(2)namenode找到可用的datanode返回給客戶(hù)端;
(3)客戶(hù)端根據(jù)返回的datanode,對(duì)塊進(jìn)行寫(xiě)入
(4)通過(guò)流水線管道流水線復(fù)制
(5)更新元數(shù)據(jù)。告訴namenode已經(jīng)完成了創(chuàng)建心的數(shù)據(jù)塊。保證了namenode中的元數(shù)據(jù)都是最新的狀態(tài)。
查看全部 -
二級(jí)NameNode定期同步元數(shù)據(jù)映像文件和修改日志
NameNode發(fā)生故障時(shí),Secondary NameNode會(huì)切換到主的NameNode,備胎轉(zhuǎn)正
查看全部 -
每個(gè)數(shù)據(jù)塊3個(gè)副本,分布在兩個(gè)機(jī)架內(nèi)的三個(gè)節(jié)點(diǎn),
2個(gè)在同一個(gè)機(jī)架上,另外一個(gè)在另外的機(jī)架上。
心跳檢測(cè),datanode定期向namenode發(fā)送心跳消息。
secondary namenode;定期同步元數(shù)據(jù)映像文件和修改日志,namenode發(fā)生故障,secondaryname備份上位
查看全部
舉報(bào)