课程简介
随着网络的迅速发展及深度普及,信息量增长速度极快,这些信息里又积累着大量的数据。预计到2020年,每年产生的数字信息将会有超过1/3的内容驻留在云平台中或借助云平台处理。我们需要对这些数据进行分析和处理,以获取更多有价值的信息。企事业单位如何高效地存储、管理和分析这些数据,这成了每个企事业单位不得不考虑的重要问题。如何快速提升单位内部技术员工的解决问题能力,已经成为了很多企业的必修课程。
目标收益
可独立完成Hadoop的部署,运维,监控及故障处理。独立完成整体Hadoop从网络到软件层面的架构设计,Hadoop及周边生态的性能优化。
培训对象
开始对Hadoop感兴趣或已使用Hadoop,希望进行性能调优或架构优化。
课程大纲
Hadoop在云计算技术的作用和地位 |
传统大规模数据分析存在的问题 Hadoop概述 Hadoop与分布式文件系统 MapReduce的工作原理与机制 Hadoop集群剖析 Hadoop生态系统 Hadoop的行业应用案例分析 Hadoop在云计算和大数据的位置和关系 案例演示:阿里集团技术平台,Hadoop在淘宝、支付宝的作用 电商眼中的Hadoop和推荐系统。 暴风数据平台:Hadoop对于产品优化的价值。 Hadoop对于趣游、热酷等游戏公司的作用 移动大云项目(big cloud)中的Hadoop 联通使用Hadoop/Hbase解决3G详单查询问题。 |
Hadoop参数调优 |
选择适合hadoop的硬件配置 Hadoop配置项优化 Hadoop配置优化 - core-site.xml Hadoop配置优化 - HDFS Hadoop配置优化 - hdfs-site.xml Hadoop配置优化 - mapred-site.xml Hadoop配置优化 - 机架感知 网络带宽参数调优 系统参数调优 配置文件管理 严格控制root权限 Java的GC模式 选择正确的JDK hadoop作业调优 Map side tuning设置 Map side设置 Linux操作系统优化 其他配置和参数调优 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硬件优化 不是所有的硬件都合适拿来直接使用 安装调优的第一步服务器硬件的选型的窍门 如何选择适合业务使用的CPU 内存越大越好吗?设置合理的的内存配置 连接网络的选择和优化 高速硬盘的选择注意事项 硬盘为什么不做raid? 设置网络的注意事项 中间结果压缩对磁盘和网络的优化 机架感知,网络和磁盘IO优化作用,确定存储的具体位置, 内存参数,map/reduce槽位数的计算方法。 对磁盘和网络的优化 Java工具使用,jstack使用 Sun和open之间的区别,JIT编译器的使用 inux系统参数调优 Linux监控系统的使用 cacti, ganglia 常用的linux排错工具lsof,strace,iostat,vmstat,netstat... 常见异常现象级处理方法 网卡流量导致连接失败 权限错误 主机名IP转换错误 NN与DN namespaceID不一致 磁盘满导致报错 Jave heap size OOM |
精彩案例及故障解决方法解析 |
案例一:namenode被重新格式化,datanode无法连接 现象:namenode 中的namespaceID与datanode中的namespaceID不一致 案例二:硬盘损坏 现象:磁盘损坏导致datanode宕机 案例三:错误用户启动hadoop 现象:datanode启动一段时间后宕机 案例四:tasktracker重启后假死 现象:无报错,但tasktracker不工作。 案例五:jobtracker无故宕机 现象:运行过程中jobtracker宕机 案例六:datanode无法注册到namenode 现象:datanode启动后到MBean这步挂起不再继续。 案例七:tasktracker无法启动,报权限错误 现象:tasktracker报文件夹创建的权限错误后直接退出。 案例八:主机名设置错误 现象:datanode 和tasktracker无法正常工作 |
Hadoop组件详解 |
Hadoop HDFS 基本结构 Hadoop HDFS 副本存放策略 Hadoop NameNode 详解 Hadoop SecondaryNameNode 详解 Hadoop DataNode 详解 Hadoop JobTracker 详解 Hadoop TaskTracker 详解 案例演示:Hadoop Mapper类核心代码 Hadoop Reduce类核心代码 Hadoop 核心代码 |
Hadoop安装和部署 |
Hadoop系统模块组件概述 Hadoop试验集群的部署结构 Hadoop 安装依赖关系 Hadoop 生产环境的部署结构 Hadoop集群部署 Hadoop 高可用配置方法 Hadoop 集群简单测试方法 Hadoop 集群异常Debug方法 案例演示:Hadoop安装部署实验 Red hat Linux基础环境搭建 Hadoop 单机系统版本安装配置 Hadoop 集群系统版本安装和启动配置 使用 Hadoop MapReduce Streaming 快速测试系统 Hadoopcore-site,hdfs-site,mapred-site 配置详解 |
Hadoop和传统数据库技术优劣势对比 |
Hadoop/Hive 对比 Oracle 在构建数据仓库上的优劣势 Hadoop 如何和传统IT系统配合完成原来不可能的任务 案例演示:Apache社区版本:Cloudera 版本、MapR版本、Intel版本、Oracle、Dell、HP版本 |
编写MapReduce高级程序 |
使用 Hadoop MapReduce Streaming 编程 MapReduce流程 剖析一个MapReduce程序 基本MapReduceAPI 概念 驱动代码 Mapper、Reducer Hadoop流 API 使用Eclipse进行快速开发 新MapReduce API MapReduce的优化 MapReduce的任务调度 MapReduce编程实战 如何利用其他Hadoop相关技术,包括Apache Hive, Apache Pig,Sqoop和Oozie等 满足解决实际数据分析问题的高级Hadoop API 案例演示:Hadoop Streaming 和 Java MapReduce Api 差异。 MapReduce 实现数据库功能 利用Combiners来减少中间数据 编写Partitioner来优化负载平衡 直接访问Hadoop分布式文件系统(HDFS) Hadoop的join操作 辅助排序在Reducer方的合并 定制Writables和WritableComparables 使用SequenceFiles和Avro文件保存二进制数据 创建InputFormats OutputFormats Hadoop的二次排序 Hadoop的海量日志分析 在Map方的合并 |
精彩案例及故障解决方法解析 |
案例一:控制map & reduce个数 现象:map个数取决于split个数,如果源文件使用压缩存储,则不可分割,一个文件一个map。非压缩文件使用默认block.size进行切分。对reduce因为是中间数据,可以控制reduce数量。 案例二:压缩中间数据 现象:job中间临时数据量级大、网络IO吞吐量大。 案例三:编程细节,内存溢出 现象:编程过程中,经常遇到list、map、倒排表等大对象,如果作为局部变量,每次调用map或者reduce方法都初始化这些变量,很容易消耗掉JVM堆内存,出现内存溢出异常。 案例四:编程细节,计数&日志打印 现象: System.out.println, System.err.println等日志打印过多会严重影响job性能,counter计数也会存在同样的问题,同时也会造成本地磁盘使用量的急剧增长。 案例五: 作业调度 现象:集群上的job非常多时,会出现一些job一直等待,很长一段时间内没有开始运行。默认的任务调度器FIFO并不能满足实际工作应用。 案例六:Combiner优化 现象: map输出数据量非常大,reduce input group远小于reduce input group时,存在大量的网络IO,这些IO中的一部分数据可以在本地做完合并,然后再进行reduce操作。 |
使用Hive和Pig开发及技巧 |
Hive和Pig基础 Hive的作用和原理说明 Hadoop仓库和传统数据仓库的协作关系 Hadoop/Hive仓库数据数据流 Hive 部署和安装 Hive Cli 的基本用法 HQL基本语法 使用Oozie的动机 Oozie工作流定义格式 案例演示:使用JDBC 连接Hive进行查询和分析 使用正则表达式加载数据 HQL高级语法 编写UDF函数 编写UDAF自定义函数 使用Sqoop进行数据分析 使用oozie配置工作流 phpHiveAdmin 安装和使用 |
Hadoop在云计算技术的作用和地位 传统大规模数据分析存在的问题 Hadoop概述 Hadoop与分布式文件系统 MapReduce的工作原理与机制 Hadoop集群剖析 Hadoop生态系统 Hadoop的行业应用案例分析 Hadoop在云计算和大数据的位置和关系 案例演示:阿里集团技术平台,Hadoop在淘宝、支付宝的作用 电商眼中的Hadoop和推荐系统。 暴风数据平台:Hadoop对于产品优化的价值。 Hadoop对于趣游、热酷等游戏公司的作用 移动大云项目(big cloud)中的Hadoop 联通使用Hadoop/Hbase解决3G详单查询问题。 |
Hadoop参数调优 选择适合hadoop的硬件配置 Hadoop配置项优化 Hadoop配置优化 - core-site.xml Hadoop配置优化 - HDFS Hadoop配置优化 - hdfs-site.xml Hadoop配置优化 - mapred-site.xml Hadoop配置优化 - 机架感知 网络带宽参数调优 系统参数调优 配置文件管理 严格控制root权限 Java的GC模式 选择正确的JDK hadoop作业调优 Map side tuning设置 Map side设置 Linux操作系统优化 其他配置和参数调优 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硬件优化 不是所有的硬件都合适拿来直接使用 安装调优的第一步服务器硬件的选型的窍门 如何选择适合业务使用的CPU 内存越大越好吗?设置合理的的内存配置 连接网络的选择和优化 高速硬盘的选择注意事项 硬盘为什么不做raid? 设置网络的注意事项 中间结果压缩对磁盘和网络的优化 机架感知,网络和磁盘IO优化作用,确定存储的具体位置, 内存参数,map/reduce槽位数的计算方法。 对磁盘和网络的优化 Java工具使用,jstack使用 Sun和open之间的区别,JIT编译器的使用 inux系统参数调优 Linux监控系统的使用 cacti, ganglia 常用的linux排错工具lsof,strace,iostat,vmstat,netstat... 常见异常现象级处理方法 网卡流量导致连接失败 权限错误 主机名IP转换错误 NN与DN namespaceID不一致 磁盘满导致报错 Jave heap size OOM |
精彩案例及故障解决方法解析 案例一:namenode被重新格式化,datanode无法连接 现象:namenode 中的namespaceID与datanode中的namespaceID不一致 案例二:硬盘损坏 现象:磁盘损坏导致datanode宕机 案例三:错误用户启动hadoop 现象:datanode启动一段时间后宕机 案例四:tasktracker重启后假死 现象:无报错,但tasktracker不工作。 案例五:jobtracker无故宕机 现象:运行过程中jobtracker宕机 案例六:datanode无法注册到namenode 现象:datanode启动后到MBean这步挂起不再继续。 案例七:tasktracker无法启动,报权限错误 现象:tasktracker报文件夹创建的权限错误后直接退出。 案例八:主机名设置错误 现象:datanode 和tasktracker无法正常工作 |
Hadoop组件详解 Hadoop HDFS 基本结构 Hadoop HDFS 副本存放策略 Hadoop NameNode 详解 Hadoop SecondaryNameNode 详解 Hadoop DataNode 详解 Hadoop JobTracker 详解 Hadoop TaskTracker 详解 案例演示:Hadoop Mapper类核心代码 Hadoop Reduce类核心代码 Hadoop 核心代码 |
Hadoop安装和部署 Hadoop系统模块组件概述 Hadoop试验集群的部署结构 Hadoop 安装依赖关系 Hadoop 生产环境的部署结构 Hadoop集群部署 Hadoop 高可用配置方法 Hadoop 集群简单测试方法 Hadoop 集群异常Debug方法 案例演示:Hadoop安装部署实验 Red hat Linux基础环境搭建 Hadoop 单机系统版本安装配置 Hadoop 集群系统版本安装和启动配置 使用 Hadoop MapReduce Streaming 快速测试系统 Hadoopcore-site,hdfs-site,mapred-site 配置详解 |
Hadoop和传统数据库技术优劣势对比 Hadoop/Hive 对比 Oracle 在构建数据仓库上的优劣势 Hadoop 如何和传统IT系统配合完成原来不可能的任务 案例演示:Apache社区版本:Cloudera 版本、MapR版本、Intel版本、Oracle、Dell、HP版本 |
编写MapReduce高级程序 使用 Hadoop MapReduce Streaming 编程 MapReduce流程 剖析一个MapReduce程序 基本MapReduceAPI 概念 驱动代码 Mapper、Reducer Hadoop流 API 使用Eclipse进行快速开发 新MapReduce API MapReduce的优化 MapReduce的任务调度 MapReduce编程实战 如何利用其他Hadoop相关技术,包括Apache Hive, Apache Pig,Sqoop和Oozie等 满足解决实际数据分析问题的高级Hadoop API 案例演示:Hadoop Streaming 和 Java MapReduce Api 差异。 MapReduce 实现数据库功能 利用Combiners来减少中间数据 编写Partitioner来优化负载平衡 直接访问Hadoop分布式文件系统(HDFS) Hadoop的join操作 辅助排序在Reducer方的合并 定制Writables和WritableComparables 使用SequenceFiles和Avro文件保存二进制数据 创建InputFormats OutputFormats Hadoop的二次排序 Hadoop的海量日志分析 在Map方的合并 |
精彩案例及故障解决方法解析 案例一:控制map & reduce个数 现象:map个数取决于split个数,如果源文件使用压缩存储,则不可分割,一个文件一个map。非压缩文件使用默认block.size进行切分。对reduce因为是中间数据,可以控制reduce数量。 案例二:压缩中间数据 现象:job中间临时数据量级大、网络IO吞吐量大。 案例三:编程细节,内存溢出 现象:编程过程中,经常遇到list、map、倒排表等大对象,如果作为局部变量,每次调用map或者reduce方法都初始化这些变量,很容易消耗掉JVM堆内存,出现内存溢出异常。 案例四:编程细节,计数&日志打印 现象: System.out.println, System.err.println等日志打印过多会严重影响job性能,counter计数也会存在同样的问题,同时也会造成本地磁盘使用量的急剧增长。 案例五: 作业调度 现象:集群上的job非常多时,会出现一些job一直等待,很长一段时间内没有开始运行。默认的任务调度器FIFO并不能满足实际工作应用。 案例六:Combiner优化 现象: map输出数据量非常大,reduce input group远小于reduce input group时,存在大量的网络IO,这些IO中的一部分数据可以在本地做完合并,然后再进行reduce操作。 |
使用Hive和Pig开发及技巧 Hive和Pig基础 Hive的作用和原理说明 Hadoop仓库和传统数据仓库的协作关系 Hadoop/Hive仓库数据数据流 Hive 部署和安装 Hive Cli 的基本用法 HQL基本语法 使用Oozie的动机 Oozie工作流定义格式 案例演示:使用JDBC 连接Hive进行查询和分析 使用正则表达式加载数据 HQL高级语法 编写UDF函数 编写UDAF自定义函数 使用Sqoop进行数据分析 使用oozie配置工作流 phpHiveAdmin 安装和使用 |