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