?
Hadoop開發(fā)實踐與性能調優(yōu)培訓課程
培訓特色
系統(tǒng)的講解Hadoop及主要周邊生態(tài)的基本原理,安裝,部署,維護及開發(fā)。偏重于部署維護方向,中間會對Linux,網(wǎng)絡,服務器硬件Raid等進行系統(tǒng)的學習和了解。力求讓學員全方位掌握Hadoop及相關的其他知識。了解Hadoop各生態(tài)的特點和應用場景。
目標收益
可獨立完成Hadoop的部署,運維,監(jiān)控及故障處理。獨立完成整體Hadoop從網(wǎng)絡到軟件層面的架構設計,Hadoop及周邊生態(tài)的性能優(yōu)化。
培訓對象
開始對Hadoop感興趣或已使用Hadoop,希望進行性能調優(yōu)或架構優(yōu)化。
學員基礎
需具備基本Linux操作系統(tǒng)安裝及常規(guī)命令行操作知識。
課程大綱
?
| 主題 | 
內(nèi)容 | 
| 
 Hadoop在云計算技術的作用和地位 
 | 
 傳統(tǒng)大規(guī)模數(shù)據(jù)分析存在的問題 
            Hadoop概述 
            Hadoop與分布式文件系統(tǒng)? 
            MapReduce的工作原理與機制? 
            Hadoop集群剖析? 
            Hadoop生態(tài)系統(tǒng) 
            Hadoop的行業(yè)應用案例分析 
            Hadoop在云計算和大數(shù)據(jù)的位置和關系 
            案例演示:阿里集團技術平臺,Hadoop在淘寶、支付寶的作用 
            電商眼中的Hadoop和推薦系統(tǒng)。 
            暴風數(shù)據(jù)平臺:Hadoop對于產(chǎn)品優(yōu)化的價值。 
            Hadoop對于趣游、熱酷等游戲公司的作用 
            移動大云項目(big cloud)中的Hadoop 
            聯(lián)通使用Hadoop/Hbase解決3G詳單查詢問題。 
 | 
| 
 Hadoop參數(shù)調優(yōu) 
 | 
 選擇適合hadoop的硬件配置 
            Hadoop配置項優(yōu)化 
            Hadoop配置優(yōu)化 - core-site.xml 
            Hadoop配置優(yōu)化 - HDFS 
            Hadoop配置優(yōu)化 - hdfs-site.xml 
            Hadoop配置優(yōu)化 - mapred-site.xml 
            Hadoop配置優(yōu)化 - 機架感知 
            網(wǎng)絡帶寬參數(shù)調優(yōu) 
            系統(tǒng)參數(shù)調優(yōu) 
            配置文件管理 
            嚴格控制root權限 
            Java的GC模式 
            選擇正確的JDK 
            hadoop作業(yè)調優(yōu) 
            Map side tuning設置 
            Map side設置 
            Linux操作系統(tǒng)優(yōu)化 
            其他配置和參數(shù)調優(yōu) 
            core-default.xml, 
            hdfs-default.xml, 
            mapred-default.xml。 
            mapred-site.xml 
            mapred.tasktracker.map.tasks.maximum 
            mapred.reduce.slowstart.completed.maps 
            mapred.fairscheduler.preemption 
            mapred.jobtracker.completeuserjobs.maximum 
            mapred.jobtracker.update.faulty.tracker.interval 
            mapred.jobtracker.max.blacklist.percent 
            案例演示:Hadoop硬件優(yōu)化 
            不是所有的硬件都合適拿來直接使用 
            安裝調優(yōu)的第一步服務器硬件的選型的竅門 
            如何選擇適合業(yè)務使用的CPU 
            內(nèi)存越大越好嗎?設置合理的的內(nèi)存配置 
            連接網(wǎng)絡的選擇和優(yōu)化 
            高速硬盤的選擇注意事項 
            硬盤為什么不做raid? 
            設置網(wǎng)絡的注意事項 
            中間結果壓縮對磁盤和網(wǎng)絡的優(yōu)化 
            機架感知,網(wǎng)絡和磁盤IO優(yōu)化作用,確定存儲的具體位置, 
            內(nèi)存參數(shù),map/reduce槽位數(shù)的計算方法。 
            對磁盤和網(wǎng)絡的優(yōu)化 
            Java工具使用,jstack使用 
            Sun和open之間的區(qū)別,JIT編譯器的使用 
            inux系統(tǒng)參數(shù)調優(yōu) 
            Linux監(jiān)控系統(tǒng)的使用 
            cacti, 
            ganglia 
            常用的linux排錯工具lsof,strace,iostat,vmstat,netstat... 
            常見異常現(xiàn)象級處理方法 
            網(wǎng)卡流量導致連接失敗 
            權限錯誤 
            主機名IP轉換錯誤 
            NN與DN namespaceID不一致 
            磁盤滿導致報錯 
            Jave heap size OOM 
 | 
| 
 精彩案例及故障解決方法解析 
 | 
 案例一:namenode被重新格式化,datanode無法連接 
            現(xiàn)象:namenode 中的namespaceID與datanode中的namespaceID不一致 
            案例二:硬盤損壞 
            現(xiàn)象:磁盤損壞導致datanode宕機 
            案例三:錯誤用戶啟動hadoop 
            現(xiàn)象:datanode啟動一段時間后宕機 
            案例四:tasktracker重啟后假死 
            現(xiàn)象:無報錯,但tasktracker不工作。 
            案例五:jobtracker無故宕機 
            現(xiàn)象:運行過程中jobtracker宕機 
            案例六:datanode無法注冊到namenode 
            現(xiàn)象:datanode啟動后到MBean這步掛起不再繼續(xù)。 
            案例七:tasktracker無法啟動,報權限錯誤 
            現(xiàn)象:tasktracker報文件夾創(chuàng)建的權限錯誤后直接退出。 
            案例八:主機名設置錯誤 
            現(xiàn)象:datanode 和tasktracker無法正常工作 
 | 
| 
 Hadoop組件詳解 
 | 
 Hadoop HDFS 基本結構 
            Hadoop HDFS 副本存放策略 
            Hadoop NameNode 詳解 
            Hadoop SecondaryNameNode 詳解 
            Hadoop DataNode 詳解 
            Hadoop JobTracker 詳解 
            Hadoop TaskTracker 詳解 
            案例演示:Hadoop Mapper類核心代碼 
            Hadoop Reduce類核心代碼 
            Hadoop 核心代碼 
 | 
| 
 Hadoop安裝和部署 
 | 
 Hadoop系統(tǒng)模塊組件概述 
            Hadoop試驗集群的部署結構 
            Hadoop 安裝依賴關系 
            Hadoop 生產(chǎn)環(huán)境的部署結構 
            Hadoop集群部署 
            Hadoop 高可用配置方法 
            Hadoop 集群簡單測試方法 
            Hadoop 集群異常Debug方法 
            案例演示:Hadoop安裝部署實驗 
            Red hat Linux基礎環(huán)境搭建 
            Hadoop 單機系統(tǒng)版本安裝配置 
            Hadoop 集群系統(tǒng)版本安裝和啟動配置 
            使用 Hadoop MapReduce Streaming 快速測試系統(tǒng) 
            Hadoopcore-site,hdfs-site,mapred-site 配置詳解 
 | 
| 
 Hadoop和傳統(tǒng)數(shù)據(jù)庫技術優(yōu)劣勢對比 
 | 
 Hadoop/Hive 對比 Oracle 在構建數(shù)據(jù)倉庫上的優(yōu)劣勢 
            Hadoop 如何和傳統(tǒng)IT系統(tǒng)配合完成原來不可能的任務 
            案例演示:Apache社區(qū)版本:Cloudera 版本、MapR版本、Intel版本、Oracle、Dell、HP版本 
 | 
| 
 編寫MapReduce高級程序 
 | 
 使用 Hadoop MapReduce Streaming 編程 
            MapReduce流程? 
            剖析一個MapReduce程序 
            基本MapReduceAPI 概念? 
            驅動代碼 Mapper、Reducer 
            Hadoop流 
            API 使用Eclipse進行快速開發(fā)? 
            新MapReduce API 
            MapReduce的優(yōu)化 
            MapReduce的任務調度 
            MapReduce編程實戰(zhàn) 
            如何利用其他Hadoop相關技術,包括Apache Hive, Apache Pig,Sqoop和Oozie等 
            滿足解決實際數(shù)據(jù)分析問題的高級Hadoop API 
            案例演示:Hadoop Streaming 和 Java MapReduce Api 差異。 
            MapReduce 實現(xiàn)數(shù)據(jù)庫功能 
            利用Combiners來減少中間數(shù)據(jù) 
            編寫Partitioner來優(yōu)化負載平衡 
            直接訪問Hadoop分布式文件系統(tǒng)(HDFS) 
            Hadoop的join操作 
            輔助排序在Reducer方的合并 
            定制Writables和WritableComparables 
            使用SequenceFiles和Avro文件保存二進制數(shù)據(jù) 
            創(chuàng)建InputFormats OutputFormats 
            Hadoop的二次排序 
            Hadoop的海量日志分析 
            在Map方的合并 
 | 
| 
 精彩案例及故障解決方法解析 
 | 
 案例一:控制map & reduce個數(shù) 
            現(xiàn)象:map個數(shù)取決于split個數(shù),如果源文件使用壓縮存儲,則不可分割,一個文件一個map。非壓縮文件使用默認block.size進行切分。對reduce因為是中間數(shù)據(jù),可以控制reduce數(shù)量。 
            案例二:壓縮中間數(shù)據(jù) 
            現(xiàn)象:job中間臨時數(shù)據(jù)量級大、網(wǎng)絡IO吞吐量大。 
            案例三:編程細節(jié),內(nèi)存溢出 
            現(xiàn)象:編程過程中,經(jīng)常遇到list、map、倒排表等大對象,如果作為局部變量,每次調用map或者reduce方法都初始化這些變量,很容易消耗掉JVM堆內(nèi)存,出現(xiàn)內(nèi)存溢出異常。 
            案例四:編程細節(jié),計數(shù)&日志打印 
            現(xiàn)象: System.out.println, System.err.println等日志打印過多會嚴重影響job性能,counter計數(shù)也會存在同樣的問題,同時也會造成本地磁盤使用量的急劇增長。 
            案例五: 作業(yè)調度 
            現(xiàn)象:集群上的job非常多時,會出現(xiàn)一些job一直等待,很長一段時間內(nèi)沒有開始運行。默認的任務調度器FIFO并不能滿足實際工作應用。 
            案例六:Combiner優(yōu)化 
            現(xiàn)象: map輸出數(shù)據(jù)量非常大,reduce input group遠小于reduce input group時,存在大量的網(wǎng)絡IO,這些IO中的一部分數(shù)據(jù)可以在本地做完合并,然后再進行reduce操作。 
 | 
| 
 使用Hive和Pig開發(fā)及技巧 
 | 
 Hive和Pig基礎? 
            Hive的作用和原理說明 
            Hadoop倉庫和傳統(tǒng)數(shù)據(jù)倉庫的協(xié)作關系 
            Hadoop/Hive倉庫數(shù)據(jù)數(shù)據(jù)流 
            Hive 部署和安裝 
            Hive Cli 的基本用法 
            HQL基本語法 
            使用Oozie的動機? 
            Oozie工作流定義格式? 
            案例演示:使用JDBC 連接Hive進行查詢和分析 
            使用正則表達式加載數(shù)據(jù) 
            HQL高級語法 
            編寫UDF函數(shù) 
            編寫UDAF自定義函數(shù) 
            使用Sqoop進行數(shù)據(jù)分析 
            使用oozie配置工作流 
            phpHiveAdmin 安裝和使用 
 |