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