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