1. 程式人生 > >Hadoop知識點總結!!!

Hadoop知識點總結!!!

沒什麼好解釋的,純粹的乾貨分享。。。

Hadoop:
    1.Hadoop的四大模組:
        1.common:基礎模組,用於支撐其他模組
        2.mapruedce:分散式計算框架
        3.YARN:分散式資源排程框架
        4.HDFS:分散式檔案系統
        
    2.埠:

        1.HDFS:8082 webUI埠:8088
        2.YARN:8032 webUI埠:50070
        3.zookeeper:2181
        4.JobHistoryServer:19888
        
    3.Hadoop2.x分散式搭建的詳細過程:

        一:linux相關:
            1.ip,閘道器,DNS
            2.hostname,本地域名解析對映(hosts)
            3.關閉防火牆,selinux
            4.ssh免金鑰登陸
            5.ntp時間同步
            6.jdk配置
        二:Hadoop相關:
            1.上傳,解壓
            2.修改配置
                -》修改-evn.sh
                    hadoop、yarn、mapred
                -》core-site.xml
                    hdfs入口,臨時檔案目錄
                -》hdfs-site.xml
                    副本數、訪問許可權、secondary節點
                -》mapred-site.xml
                    執行的框架、JobHistoryServer節點
                -》yarn-site.xml
                    resourceManager的地址、mapreduce執行方式、日誌聚集
                -》slaves
                    所有從節點地址
        三:分發檔案
        四:格式化檔案系統
        五:啟動:
                先啟動hdfs後啟動yarn
                
    4.Hadoop2.x中HDFS與YARN的四個程序的功能及啟動方式

        4個程序的功能:
            NameNode的功能:
                -》處理客戶端發過來的請求
                -》管理從節點
                -》管理元資料
            DataNode的功能:
                負責資料運輸、負責讀寫資料的功能
            ResourceManager的功能:
                負責叢集資源的管理和任務排程、處理使用者的請求、管理從節點
            NodeManager的功能:
                負責處理所有任務
        4個程序的啟動:
            sbin/hadoop-daemon.sh start namenode
            sbin/hadoop-daemon.sh start datenode
            sbin/yarn-daemon.sh start resourcemanager
            sbin/yarn-daemon.sh start nodemanager
            
    5.jar包提交執行在yarn上的執行流程
        1.使用者提交jar包,向resourcemanager請求提交任務
        2.resourcemanager接受任務,並隨機選擇一臺nodemanager啟動appmaster
        3.appmaster向resourcemanager請求資源
        4.resourcemanager分配資源,並將資源分配資訊返回給appmaster
        5.appmaster聯絡nodemanager啟動相關Task
            ps:Task:maptask的個數由資料塊的個數決定;
                               ruducetask的個數可以自己設定
                    每個task都會呼叫各自的方法:map方法的呼叫次數由資料的行數決定;
                                                                      reduce方法的呼叫次數由key的型別個數決定。
        6.執行的task時刻向appmaster彙報進度
        7.reduce task將執行結果返回給appmaster
        8.appmaster將結果返回給resourcemanager,並登出自己
        
    6.請描述MapReduce執行的五大過程,包含詳細的shuffle過程
        input
            1.讀取HDFS上檔案資料
            2.將資料轉成keyvalue形式,key是行偏移量,value是行內容
        map
            接收input的輸出
            根據分片的個數,啟動相應task
            每個map task對每條keyvalue呼叫map方法進行處理
        shuffle
            ->Map shuffle
                將map輸出的資料輸入環形緩衝區內
                在緩衝區進行分割槽,對每個分割槽進行排序
                達到閾值80%開始溢寫到磁碟,變成小檔案
                溢寫結束,將所有小檔案進行合併,並且對每個分割槽進行排序
                map task結束,通知appMaster
            ->reduce shuffle
                app master通知reduce,reduce去每個map task拉取屬於自己分割槽的資料。
                對屬於自己分割槽的資料進行合併,並排序
                對相同key進行分組
        reduce
            讀取shuffle的輸出,對每一種key,呼叫reduce方法進行處理
        output    
            將reduce的輸出寫入到hdfs中
    7.請寫出自定義資料型別時,需要繼承哪些類,以及實現的方法及其功能
                    ps:編寫MapReduce模板
                        Driver:
                            -》不繼承也不實現
                            -》繼承和實現  -官方推薦
                                extends Configured implements Tool
                            -》不繼承只實現 - 企業用的最多
                            implements Tool
         實現Writable/WritableComparable介面
        定義屬性,並生產對應get、set方法。獲取值和賦值
        write:序列化
        readFiled:反序列化
        compareTo:比較
        toString:轉換為String型別物件
        無參和有參構造方法:初始化構建
        hashCode和equals:比較驗證

    8.元資料:(描述資料的資料)
        元資料在哪裡?????:
            儲存在記憶體中,也儲存在磁碟(存放的檔案:fsimage)
        由誰來同步元資料:
            secondaryNameNode功能:
            輔助Namnode同步本地元資料
            fsimage(old) + edits = fsimage(new)