1. 程式人生 > >大資料基礎Hadoop 2.x入門

大資料基礎Hadoop 2.x入門

hadoop概述

  1. 儲存和分析網路資料
  2. 三大元件
    • MapReduce
      • 對海量資料的處理
      • 思想:
        • 分而治之
        • 每個資料集進行邏輯業務處理map
        • 合併統計資料結果reduce
    • HDFS
      • 儲存海量資料
      • 分散式儲存
      • 安全性高
        • 副本資料
    • YARN
      • 分散式資源管理框架
        • 管理整個叢集的資源(記憶體、CPU核數)
        • 分配排程叢集資源
    • Common
      • 工具

hadoop生態圈

  1. Hive(蜜蜂)通過使用sql語句來執行hadoop任務
  2. HBase 儲存結構化資料的分散式資料庫
    • HBase放棄了事務特性,追求更高的擴充套件
    • 和HDFS不同的,HBase提供資料的隨機讀寫和實時訪問,實現對錶資料的讀寫功能
  3. zookeeper 維護節點狀態

Hadoop安裝

  1. 使用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基本概念

  1. 塊 (Block)
    • HDFS的檔案被分成塊進行儲存
    • HDFS塊的預設大小64M
    • 塊是檔案儲存處理的邏輯單元
  2. NameNode
    • NameNode是管理節點,存放檔案元資料
    • 檔案與資料塊的對映表
    • 資料塊與資料節點的對映表
  3. DataNode
    • 是HDFS的工作節點,存放資料塊

HDFS中資料管理與容錯

  1. 資料塊副本

  2. 心跳檢測

  3. 二級NameNode

HDFS中檔案讀寫的流程

HDFS寫入檔案的流程

HDFS的特點

  1. 資料冗餘,硬體容錯
  2. 流式的資料訪問
  3. 適合儲存大檔案
  4. 適合資料批量讀寫,吞吐量高
  5. 不適合互動式應用,低延遲很難滿足
  6. 適合一次寫入多次讀取,順序讀寫
  7. 不支援多使用者併發寫相同檔案

HDFS命令列操作

  1. hadoop fs -ls /
  2. hadoop namenode -format 格式化操作
  3. hadoop fs -ls /user
  4. hadoop fs -put hadoop-env.sh /user/root 把檔案放入hadoop
  5. hadoop fs -rm input
  6. hadoop fs -rm hadoop-env.sh
  7. hadoop fs -mkdir input
  8. hadoop fs -cat input/hadoop-env.sh
  9. hadoop fs -get input/hadoop-env.sh hadoop-env2.sh
  10. hadoop dfsadmin -report

MapReduce原理

  1. 分而治之,一個大人物分成多個小的子任務(map),並行執行後,合併結果(reduce)
  2. 比如:100GB的網站訪問日誌檔案,找出訪問次數最多的IP地址
    • 根據日期切分,比如按周,每週一份進行統計
    • 再合併到某幾個機器進行分析合併

MapReduce執行流程

  1. 基本概念
    • Job & Task 一個job就例如上面的例子,task可以分為map task和reduce task
    • JobTracker
      • 作業排程
      • 分配任務、監控任務執行進度
      • 監控TaskTracker的狀態
    • TaskTracker
      • 執行任務
      • 彙報任務狀態
  2. MapReduce作業執行過程

MapReduce的容錯機制

  1. 重複執行
    • 重複4次仍舊失敗放棄
  2. 推測執行
    • 假設有個TaskTracker執行特別慢,它會啟動另一個TaskTracker執行相同的任務,兩個誰先執行完,就放棄另一個

MapReduce應用

WordCount單詞計數

  1. 由於我是docker安裝,具體例子可以參考如下

    https://blog.csdn.net/qq_16563637/article/details/81702633

  2. docker安裝的容器裡,自帶了例子,位置是/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar

參考 https://www.imooc.com/video/7777