目录
操作参考手册:
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html
一. Hadoop简介
1 hadoop的演变
Hadoop起源于Google的三大论文:
- GFS:Google的分布式文件系统Google File System
- MapReduce:Google的MapReduce开源分布式并行计算框架
- BigTable:一个大型的分布式数据库
演变关系:
GFS—->HDFS
Google MapReduce—->Hadoop MapReduce
BigTable—->HBase
Hadoop名字不是一个缩写,是Hadoop之父Doug Cutting儿子毛绒玩具象命名的
hadoop主流版本:
- Apache基金会hadoop
- Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称“CDH”)
- Hortonworks版本(Hortonworks Data Platform,简称“HDP”)
Hadoop的框架最核心的设计就是:HDFS和MapReduce。
- HDFS为海量的数据提供了存储。
- MapReduce为海量的数据提供了计算。
Hadoop框架
包括以下四个模块
:
Hadoop Common
: 这些是其他Hadoop模块所需的Java库和实用程序。这些库提供文件系统和操作系统级抽象,并包含启动Hadoop所需的Java文件和脚本。Hadoop YARN
: 这是一个用于作业调度和集群资源管理的框架。Hadoop Distributed File System (HDFS)
: 分布式文件系统,提供对应用程序数据的高吞吐量访问。Hadoop MapReduce
:这是基于YARN的用于并行处理大数据集的系统。
hadoop应用场景
:
- 在线旅游
- 移动数据
- 电子商务
- 能源开采与节能
- 基础架构管理
- 图像处理
- 诈骗检测
- IT安全
- 医疗保健
2 hadoop的简介
-
HDFS属于
Master与Slave结构
。一个集群中只有一个NameNode,可以有多个DataNode
。 -
HDFS存储机制保存了多个副本,当写入1T文件时,我们需要3T的存储,3T的网络流量带宽;系统提供容错机制,副本丢失或宕机可自动恢复,保证系统高可用性。
-
HDFS默认会将文件分割成block
。然后将block按键值对存储在HDFS上,并将键值对的映射存到内存中。如果小文件太多,会导致内存的负担很重。 -
HDFS采用的是
一次写入多次读取的文件访问模型
。一个文件经过创建、写入和关闭之后就不需要改变。这一假设简化了数据一致性问题,并且使高吞吐量的数据访问成为可能。 -
HDFS
存储理念
是以最少的钱买最烂的机器并实现最安全、难度高的分布式文件系统(高容错性低成本),HDFS认为机器故障是种常态,所以在设计时充分考虑到单个机器故障,单个磁盘故障,单个文件丢失等情况。 -
HDFS
容错机制
:
节点失败监测机制:DN每隔3秒向NN发送心跳信号,10分钟收不到,认为DN宕机。
通信故障监测机制:只要发送了数据,接收方就会返回确认码。
数据错误监测机制:在传输数据时,同时会发送总和校验码。
3 工作原理
Nn和Dn
工作原理:
Cliet向Namenode请求,Nn向cl返回Dn列表(Dn列表有顺序,校验数据的距离,根据距离排序),Nn知道所有节点的状态,Cl知道会以多大的block切分,设定副本数,Cl连接dn列表,(发送第一个block传输数据packet和dn列表),Nn接收block并保存dn列表数据,同步其他Dn节点(边接收边同步),Dn报告Block存储完成。
返回Dn列表顺序
-
Cl和Dn节点在同一台机器
,存储副本(默认3个),Nn返回的Dn列表顺序:本机–不同机架的不同Dn上----同机架的不同Dn上(down后,找本机架其他的Dn)其他的随机,只是控制前3 -
Cl和Dn节点不在同一台机器
:第一个副本随机,2,3副本一样
hdfs中文漫画
:https://blog.csdn.net/lsziri/article/details/102503486
节点故障/网络故障/数据块损坏
RM:resourcemanager
v1: jobTrack,不能过2000节点
v2:过2000节点
工作原理:
Cl向RM申请,任务队列,RM返回app所需资源路径,Cl需要的资源数据存储到HDFS,Cl申请运行App master,RM运行容器(分配资源)AM,AM拷贝HDFS中的job资源,AM向RM申请运行资源,RM会分配到下面的多个task中,实时汇总AM,AM持续监控job
完成任务后,申请释放资源,RM注销AM,释放容器资源
二. hadoop工作模式
1 伪分布式
实验环境:
主机名 | ip |
---|---|
vm1 | 172.25.28.11(2G) |
Nn和Dn不分离:
hadoop安装有jdk要求,不用rpm包,使用源码tar.gz
,
建立hadoop用户,解压缩jdk包,普通用户hadoop运行
hadoop和java作软链接,方便更新版本
编辑文件,修改java和hadoop的环境变量
新建input目录
将etc/hadoop中.xml 文件复制到input目录
Hadoop 配置为在非分布式模式下作为单个 Java 进程运行
,查找并显示给定正则表达式的每个匹配项
。 输出写入给定的输出目录 output,outpot不用创建,过滤dfs的关键字
。
查看output目录中的内容
Hadoop 也可以以伪分布式模式在单节点上运行
,其中每个 Hadoop 守护进程在单独的 Java 进程中运行。
编辑 etc/hadoop/hdfs-site.xml
文件,副本数为1
编辑etc/hadoop/core-site.xml 文件,分布式文件系统的master,主从都是自己
master和worker都是自己!!!
与localhost进行ssh免密
与localhost免密测试
查看生成的公钥和私钥
本地运行 MapReduce 作业
初始化文件系统
启动 NameNode
守护进程和 DataNode
守护进程
namenode启动master,datanode启动worker
当前master和worker都是本机vm1 !!!
数据存储位置:/tmp
jps:java进程查看
,代替ps ax
编辑java的环境变量
jps查看进程,其中secondnode表示当master的namenode down掉后,接管
由于hadoop的master和worker都是vm1,所以同时出现Namenode和DataNode
!!!
外部访问:
172.25.28.11:9870
9870:hadoop默认的监听端口
9000:Namenode和Datanode的连接端口
查看日志:
查看文件系统,此时没有内容:
两种方式:命令行和图形化
创建执行 MapReduce 作业所需的 HDFS 目录: 用户与当前id保持一致
ls
默认查看的是这个目录/user/haddop
将输入文件复制到分布式文件系统中
外部查看,存在(图形化)
本地查看(命令行)
单词数,
input,output
:和本地无关,分布式中的输入输出目录
本地查看
本地删除
此时查看,是分布式中的输入输出目录