1.Hadoop前世今生
1)搜索引擎:网络爬虫+索引服务器(生成索引+检索)
2)Doung Cutting写了lucene包(生成索引+检索)
3)Nutch:网络爬虫+索引服务器(lucene封装)
4)2002年开源GFS论文,Doung Cutting写了HDFS模块
5)2004年谷歌开源了MapReduce论文,Doung Cutting写了MapReduce模块
6)Nutch0.9版本后将HDFS和MapReduce模块拆分出来,形成了一个大数据处理框架Hadoop
2.Hadoop概述
1)四大模块
common、hdfs、mapreduce、yarn
2)hafs(hadoop distributed file system):分布式文件系统
a.文件系统:文件管理+block块管理
单机文件系统:
windows:FAT16、FAT32、NTFS
linux:ext2/3/4、VFS
b.分布式文件系统
多个服务器存储文件
c.三大组件
<1>NameNode:
I.元数据:文件名、目录名、属性(生成时间、权限、副本)
II.文件名与block列表映射关系
III.block与DataNode列表映射关系
<2>DateNode:
block快数据、校验和编码
<3>SeondaryNameNode:
分担NameNode压力,合并编辑日志edis和镜像文件fsimage(因为合并操作需要占很大资源,影响客户端请求)
合并后将最终的镜像文件fsimage返回给NameNode进行处理
3)yarn:资源调度和任务管理
a.四大组件
ResourceManager(RM)、NodeManager(NM)、ApplicationMaster(AM)、Container
b.执行流程
<1>client连接RM提交作业,RM给client一个JobId(注:ApplicationMaster(AM)和ResourceScheduler)
<2>RM中的ApplicationMaster连接一个NM,让NM创建一个AM处理客户端请求
<3>AM连接RM中ApplicationMaster申请NodeManager
<4>AM去ResourceScheduler给client的作业申请资源(cpu、内存、磁盘、网络)
<5>AM连接NM,发送client job作业程序和申请资源(cpu、内存、磁盘、网络)
<6>NM启动Container进程运行job的不同任务
<7>Container进程运行状态实时反馈给AM
<8>AM反馈任务状态信息给RM中的ApplicationMaster
<9>client端可以连接RM或AM查询job的执行情况
注:NM启动后去RM上进行注册,会不断发送心跳,说明其存活状态
4)MapReduce:分而治之
a.概述
<1>将分布式计算作业拆分为两个阶段:Mapper和Reducer (Map阶段并行处理输入数据 Reduce阶段对Map结果进行汇总)
<2>Shuffer流程:连接Mapper和Reducer两个阶段
I.shuffle写入流程
Map Task任务将输出数据写到本地磁盘上
II.shuffle读取流程
Reduce Task任务从每个Map Task磁盘上远程读取数据信息
<3>使用场景:仅适合离线批处理,具有很好的容错性和扩展性,适合简单的批处理任务
<4>缺点:速度慢、系统开销大、各个task任务需要不断申请释放资源,过多使用磁盘导致效率低下等
b.执行流程
<1>输入文件切片
<2>mapper进程处理切片
<3>shuffle流程
<4>reducer进程聚合数据
<5>输出文件
3.Hadoop生态系统
1)Hadoop:分布式储存、分布式计算、资源调度与任务管理
hdfs、mapreduce、yarn、common
2)Lucene:索引检索工具包;Solr:索引服务器
3)Nutch:开源的搜索引擎
4)Hbase/Cassandra:基于谷歌的BigTable开源的列式存储的非关系行数据库
5)Hive:基于SQL的分布式计算引擎,同时是一个连接数据仓库的工具
pig:基于Pig Latin脚本的计算引擎
6)Thrift/Avro:RPC框架,用于网络通信
7)BigTop:项目测试、打包、部署
8)Oozie/Azakban:大数据的工作流框架(任务调度)
9)Flume/Chukwa/Scribe:数据收集框架
10)Whirr:部署为云服务的类库
11)sqoop:数据迁移工具
12)Zookeeper:分布式协调服务框架
13)HAMA:图计算框架
14)Mahout:机器学习框架
4.Hadoop环境搭建 下载:http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.14.0.tar.gz
1)三个环境
单机、伪分布式、分布式
2)三个分支
apache版本(Apache基金会)
cdh版本(cloudera公司)
hdp版本(HortOnWorks公司)
3)部署环境
服务器:VMWare虚拟机、Centos6.9操作系统
客户端:xshell
4)配置
a.设置静态IP
I.图形画界面
II.命令行
vim /etc/sysconfig/network-scripts/ifcfg-eth0
service network restart
b.设置主机名
I.暂时性
服务器重启后就会失效
hostname <主机名>
II.永久性
vim /etc/sysconfig/network
服务器重启后依然有效
c.主机名与IP映射关系
vim /etc/hosts
IP地址 <主机名>
注:本地DNS
5)hadoop安装配置
a.单机(仅仅适用于单机运行分布式计算作业)
直接执行mapreduce-examples.jar案例
b.为分布式(一个服务器上运行多个进程)
I.HDFS
<1>配置core-site.xml
fs.defaultFS
<2>配置hdfs-site.xml
dfs.replication
<3>格式化NameNode
作用:清空NameNode目录下的所有数据,生成目录结构,初始化一些信息到文件中
<4>启动HDFS各个过程
sbin/start-dfs.sh
或
sbin/hadoop-daemon.sh start namenode
sbin/hadoop-daemon.sh start datanode
sbin/hadoop-daemon.sh start secondarynamenode
<5>浏览器访问
http://<主机名>:50070
注:http协议端口号:50070;RPC tcp协议端口号:8020
II.YARN
<1>配置mapred-site.xml
<2>配置yarn-site.xml
<3>启动YARN进程:ResourceManager(RM)、NodeManager(NM)
sbin/start-yarn.sh
或
sbin/yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start nodemanager
<4>浏览器访问
http://<主机名>:8088
注:http协议端口号:8088;RPC tcp协议端口号:8032
c.分布式环境(多个服务器运行Hadoop各个进程)
参考《分布式环境搭建》
5.初始MapReduce
1)启动Hadoop服务器
sbin/start-all.sh
2)浏览器访问
http://node01:8088
3)各个指标
a.Cluster Metrics
集群指标:app(提交、排队、运行、完成)、Container个数、资源(内存、cpu)
b.Cluster Node Metrics
机器状态:active、decommissioning、decommissioned、lost、unhealthy、reboot
c.dr.who用户指标
dr.who用户:通过浏览器访问默认使用dr.who用户
配置:hadoop.http.staticuser.user:dr.who
d.作业指标
4)聚合日志
a.含义:
I.分布式计算作业放到NodeManager运行,日志信息放在NodeManager本地目录
yarn.nodemanager.log-dirs:${yarn.log.dir}/userlogs
II.通过配置将本地日志放到HDFS服务器上,即聚合日志的概念
b.配置yarn-site.xml
<!--启用日志聚合功能-->
<property>
<name>yarn.log-aggregation-enble</name>
<value>true</value>
</property>
<!--存放多长时间-->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>3600</value>
</property>
5)历史服务器
a.配置项
<!--RPC访问地址-->
mapreduce.jobhistory.address
<!--HTTP访问地址-->
mapreduce.jobhistory.webapp.address
b.启动/访问/停止
sbin/mr-jobhistory-daemon.sh start historyserver
yarn主界面跳转:http://<主机名>:19888
sbin/mr-jobhistory-daemon.sh stop historyserver
---恢复内容结束---