1. 大数据概论
1.1 大数据概念
常规软件指的是JAVAEE, MYSQL, SSM等这些技术 MYSQL只能存储500-1000W条数据, 再多的话检索效率特别慢. 大数据可以存储并处理亿级以上的数据
谈谈对大数据的理解, 海量数据的存储和海量数据的分析计算,简称存数据和检索数据
1.2 大数据特点(4V)
数据量非常大
数据产生的速度非常快
数据具有多样性
1.3 大数据应用场景
1.4 大数据部门业务流程分析
1.5 大数据部门组织结构(重点)
2. 从Hadoop框架讨论大数据生态
2.1 Hadoop是什么
2.2 Hadoop发展历史
2.3 Hadoop三大发型版本
学习时使用Apache版本, 但是公司一般使用Cloudera版本 也成为CDH版本. Apache版本对各个软件的版本兼容性需要自己核对并使用兼容版本. CDH版本是收费的, 但是Hadoop, Hbase, 等等软件都是统一的版本
2.4 Hadoop的优势(4高)
高可靠性: Hadoop内部维护了3个副本
高扩展性: 可以支持不宕机的动态扩展和下线
2.5 Hadoop组成(面试重点)
Hadoop1.X和Hadoop2.X的区别
MapReduce在1.x版本当中需要进行计算以及资源调度(分配CPU,内存等), 2.x版本中新增了YARN来做资源调度
2.5.1 HDFS架构概述
2.5.2 YARN框架概述
2.5.3 MapReduce架构概述
2.6 大数据技术生态体系
2.7 推荐系统框架图
3. Hadoop运行环境搭建(开发重点)
3.1 虚拟机环境准备
3.2 安装JDK
3.3安装Hadoop
3.4 Hadoop目录结构
4. Hadoop运行模式
4.1 本地运行模式
4.1.1 官方Grep案例
该案例的作用是, 统计input文件夹下我们的配置文件中, 满足我们输入的正则表达式的字符串的个数和字符串
第一步 在hadoop文件夹下创建一个input文件夹, 这是因为每一个hadoop都需要一个输入文件夹一个输出文件夹,目前我们创建了输入文件夹
第二步 把当前文件夹下的etc/hadoop/*.xml 拷贝到input下
第三步 执行share目录下的example程序, 指定要跑的程序是grep. 并指定一个输入input 一个输出output 文件夹 最后是一个正则… 这个output文件夹执行这个命令之前必须没有被创建, 否则会报异常
第四步 查看输出结果_SUCESS的大小是0, 它的意义就是告知我们本次执行成功或失败
查看part-r-00000
可以看到满足我们之前设置的正则的字符串输出到了该文件中
如果output已经存在了, 我们再运行程序会报错
4.1.2 官方WordCount案例
编辑wc.input文件是做数据的步骤, 要统计的world的个数就在这里面
执行程序时, 指定程序时wordcount 并指定输入输出文件夹
4.2 伪分布式运行模式
4.2.1 启动HDFS并运行MapReduce程序
使用分布式配置的时候, 必须指定hadoop-env.sh中的JAVA_HOME否则其他节点无法调用本节点.
见到env文件就要想着进去修改JAVA_HOME
配置完fs.defaultFS后, 本地运行模式就不能启动了, 这是因为本地运行模式的这个配置默认值是file:///, 这是用的file协议直接找的本地. 而伪分布式和完全分布式都用的是hdfs协议.
修改hadoop.tmp.dir, 如果不修改的话, 默认值是/tmp/hadoop-${user.name}路径下
注意如果用一台服务器搭建伪分布式的话, 需要把fs.defaultFS的值换成hdfs://localhost:9000, 要不然连接不上
默认值是3, 每个数据有3个副本. 我们使用伪分布式时,本身就是一台机器, 如果这里配置成3的话, 其实在本机也只保存一份文件, 3的意思是等到连接上集群了, 再别的节点上新增副本, 最多3份数据
如果是第二次格式化, 需要先删除data下的tmp临时文件与所有日志, 要不然都会格式化失败
如果我们配置了临时文件路径, 那就在配置的路径中, 日志文件在hadoop的路径的logs目录下
第二次格式化NameNode的步骤:
先停止NameNode和DataNode
删除data目录和logs目录
格式化NameNode再重新启动
如果是第二次格式化, 需要先删除data下的tmp临时文件与所有日志, 要不然都会格式化失败
如果我们配置了临时文件路径, 那就在配置的路径中, 日志文件在hadoop的路径的logs目录下
第二次格式化NameNode的步骤:
先停止NameNode和DataNode
删除data目录和logs目录
格式化NameNode再重新启动
运行mapreduce程序时, 直接写路径, 因为配置了文件存储在hdfs中, 就会去hdfs中找到文件, 同样, 输出也要输出到hdfs中
4.2.2 启动YARN并运行MapReduce程序
yarn目前最重要的两个组件NodeManager(单个节点的老大)与ResourceManager(所有节点的老大)
nodemanager 设置为MR的shuffle(洗牌模式)
mapreduce.framework.name默认是local本地, 我们把它改成yarn
8088端口yarn的web端, 查看mapreduce运行的程序, 查看mapreduce的进程
点击history查看历史记录会报错, 因为我们还没有启动历史服务进程
4.2.3 配置历史服务器
4.2.4 配置日志的聚集
在历史记录服务中点击logs, 能查看运行该MR job的所有日志信息
结束每个进程后都用jps命令查看一下是否真正关闭掉了
关闭历史服务
sbin/mr-jobhistory-daemon.sh stop historyserver
关闭nodemanager
sbin/yarn-daemon.sh stop nodemanager
关闭resourcemanager
sbin/yarn-daemon.sh stop resourcemanager
4.2.5 配置文件说明
4.3 完全分布式运行模式(开发重点)
4.3.1 虚拟机准备
与3.1一样, 一共配置4台hadoop001~hadoop004
4.3.2 编写集群分发脚本xsync
远程同步工具rsync
编写xsync脚本
4.3.3 集群配置
HDFS的NameNode和SecondaryNameNode要求不在一台节点上, 因为NameNode和SecondaryNameNode都是很耗费内存的
YARN的ResourceManager也是很耗费内存的, 所以它要避开HDFS的NameNode和SecondayNameNode
4.3.4 集群单点启动
需要先删除每台节点上的data和logs文件夹.
注意: 先格式化NameNode后hadoop namenode -format
我们没有配置ssh, 所以只能单独启动, 配置完ssh后就可以用一个命令启动集群了
下面是单独启动的命令. 先不用!
web端使用namenode所在节点的ip+端口进行访问
4.3.5 SSH无密登录配置
.ssh目录在/home/${user}/.ssh目录
本身在102, 但是还是要执行ssh-copy-id hadoop102一遍. 其实在我们本机, 使用ssh hadoop102 也是需要输入密码的
目前我们配置了atguigu账号在其他节点上的免密登录. 还需要配置root用户在其他节点上的免密登录
切换到root用户su root
在/root/.ssh目录下执行上述命令, 生成公钥私钥并发送到包括本机的三个节点上
4.3.6 群起集群
启动hdfs集群
启动yarn集群, 需要去指定的resourcemanager节点上去启动, 去其他节点上启动会报错
4.3.7 集群启动/停止方式总结
4.3.8 集群时间同步ntpd
4.3.9 crontab定时任务
5. Hadoop编译源码(面试重点)
5.1 前期准备工作
需要准备一个64位的CentOS, 编译源码可以使Hadoop变成64位的程序, 并且还可以自定义的加入一些功能
5.2 jar包安装
5.3 编译源码
6. 常见错误及解决方案