大資料基礎Hadoop 2.x入門
阿新 • • 發佈:2018-12-02
hadoop概述
- 儲存和分析網路資料
- 三大元件
- MapReduce
- 對海量資料的處理
- 思想:
- 分而治之
- 每個資料集進行邏輯業務處理map
- 合併統計資料結果reduce
- HDFS
- 儲存海量資料
- 分散式儲存
- 安全性高
- 副本資料
- YARN
- 分散式資源管理框架
- 管理整個叢集的資源(記憶體、CPU核數)
- 分配排程叢集資源
- 分散式資源管理框架
- Common
- 工具
- MapReduce
hadoop生態圈
- Hive(蜜蜂)通過使用sql語句來執行hadoop任務
- HBase 儲存結構化資料的分散式資料庫
- HBase放棄了事務特性,追求更高的擴充套件
- 和HDFS不同的,HBase提供資料的隨機讀寫和實時訪問,實現對錶資料的讀寫功能
- zookeeper 維護節點狀態
Hadoop安裝
- 使用docker安裝
docker run -i -t -p 50070:50070 -p 9000:9000 -p 8088:8088 -p 8040:8040 -p 8042:8042 -p 49707:49707 -p 50010:50010 -p 50075:50075 -p 50090:50090 sequenceiq/hadoop-docker:2.6.0 /etc/bootstrap.sh -bash
HDFS基本概念
- 塊 (Block)
- HDFS的檔案被分成塊進行儲存
- HDFS塊的預設大小64M
- 塊是檔案儲存處理的邏輯單元
- NameNode
- NameNode是管理節點,存放檔案元資料
- 檔案與資料塊的對映表
- 資料塊與資料節點的對映表
- DataNode
- 是HDFS的工作節點,存放資料塊
HDFS中資料管理與容錯
資料塊副本
心跳檢測
二級NameNode
HDFS中檔案讀寫的流程
HDFS寫入檔案的流程
HDFS的特點
- 資料冗餘,硬體容錯
- 流式的資料訪問
- 適合儲存大檔案
- 適合資料批量讀寫,吞吐量高
- 不適合互動式應用,低延遲很難滿足
- 適合一次寫入多次讀取,順序讀寫
- 不支援多使用者併發寫相同檔案
HDFS命令列操作
- hadoop fs -ls /
- hadoop namenode -format 格式化操作
- hadoop fs -ls /user
- hadoop fs -put hadoop-env.sh /user/root 把檔案放入hadoop
- hadoop fs -rm input
- hadoop fs -rm hadoop-env.sh
- hadoop fs -mkdir input
- hadoop fs -cat input/hadoop-env.sh
- hadoop fs -get input/hadoop-env.sh hadoop-env2.sh
- hadoop dfsadmin -report
MapReduce原理
- 分而治之,一個大人物分成多個小的子任務(map),並行執行後,合併結果(reduce)
- 比如:100GB的網站訪問日誌檔案,找出訪問次數最多的IP地址
- 根據日期切分,比如按周,每週一份進行統計
- 再合併到某幾個機器進行分析合併
MapReduce執行流程
- 基本概念
- Job & Task 一個job就例如上面的例子,task可以分為map task和reduce task
- JobTracker
- 作業排程
- 分配任務、監控任務執行進度
- 監控TaskTracker的狀態
- TaskTracker
- 執行任務
- 彙報任務狀態
- MapReduce作業執行過程
MapReduce的容錯機制
- 重複執行
- 重複4次仍舊失敗放棄
- 推測執行
- 假設有個TaskTracker執行特別慢,它會啟動另一個TaskTracker執行相同的任務,兩個誰先執行完,就放棄另一個
MapReduce應用
WordCount單詞計數
由於我是docker安裝,具體例子可以參考如下
docker安裝的容器裡,自帶了例子,位置是/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar