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