运维实操——hadoop大数据(上)安装、伪分布式部署、完全分布式部署、资源管理器部署

hadoop大数据的安装、伪分布式部署、完全分布式部署、资源管理器部署

1、什么是hadoop?

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统( Distributed File System),其中一个组件是HDFS(Hadoop Distributed File System)。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上,即性价比极高;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,允许以流的形式访问(streaming access)文件系统中的数据。

Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。Hadoop 最底部是 Hadoop Distributed File System(HDFS),它存储 Hadoop 集群中所有存储节点上的文件。HDFS的上一层是MapReduce 引擎,该引擎由 JobTrackers 和 TaskTrackers 组成。通过对Hadoop分布式计算平台最核心的分布式文件系统HDFS、MapReduce处理过程,以及数据仓库工具Hive和分布式数据库Hbase的介绍,基本涵盖了Hadoop分布式平台的所有技术核心 。

HDFS:
对外部客户机而言,HDFS就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件,等等。但是 HDFS 的架构采用master/slave架构,是基于一组特定的节点构建的,这些节点包括 NameNode(NN仅一个),它在 HDFS 内部提供元数据服务;DataNode(DN),它为 HDFS 提供存储块。由于仅存在一个 NameNode,因此这是 HDFS 1.x版本的一个缺点(单点失败)。在Hadoop 2.x版本可以存在两个NameNode,解决了单节点故障问题 。存储在 HDFS 中的文件被分成块,然后将这些块复制到多个DataNode中。块的大小(1.x版本默认为 64MB,2.x版本默认为128MB)和复制的块数量在创建文件时由客户机决定。由于块是128M的大小,那么如果小文件太多,会导致内存的负担很重。HDFS 内部的所有通信都基于标准的 TCP/IP 协议 。

想更容易的了解HDFS,可以看一组图解漫画,https://blog.csdn.net/lsziri/article/details/102503486

示意图如下,客户首先根据DFS找NN节点,NN节点根据客户的要求(文件分为128M的块,设置三个副本)建立DataNode 和块文件映射的元数据,然后NN节点根据距离的远近,把最近的DN地址告诉客户的HDFS系统,HDFS把数据以块的形式存书到DN1上,DN1收到的同时,还把文件发给DN2,DN2发给dn3。最后一个DN3节点都收到了,回馈给NN消息,已收到。一个块完成后,再来一遍传输下一个块

在这里插入图片描述

HDFS容错机制:
节点失败监测机制:DN每隔3秒向NN发送心跳信号,10分钟收不到,认为DN宕机。
通信故障监测机制:只要发送了数据,接收方就会返回确认码。
数据错误监测机制:在传输数据时,同时会发送总和校验码。

副本的存储也是有讲究的。假如第一个副本在第一个机架上存储;第二个副本不能和第一个副本在同一个机架上,也不能在同一个dn上,当然了,不是同一个机架,肯定不在同一个dn,假如第二个副本就放在了第二个机架;第三个副本要和第二个副本在同一个机架上,但不在同一个dn上,所以第三个副本放在了dn5;后面的第四个第五个副本就不做限制了

在这里插入图片描述

2、hadoop安装

实验总共准备五台虚拟机,
server1(172.25.77.1)、server5(172.25.77.5)做NN,分别分配2G内存
server2(172.25.77.2)、server3(172.25.77.3)、server4(172.25.77.4)做DN,分别分配1G内存
安装过程可以参考操作手册https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html

先开启server1,准备hadoop的压缩包和java的jdk压缩包
创建hadoop用户,切换为hadoop用户,解压jdk压缩包并做软连接方便使用,解压hadoop压缩包并做软连接方便使用
在这里插入图片描述
进入hadoop/etc/hadoop目录,修改环境变量env文件
在这里插入图片描述
指定java_home和hadoop_home
在这里插入图片描述
创建input目录,复制一些xml文件用作后面的输入测试,然后查找并显示dfs开头的每个匹配项,输出目录output。
在这里插入图片描述
查看输出了output目录
在这里插入图片描述

3、伪分布式部署

使用一台虚拟机server1既做NN也做DN
伪分布式:一台机器有多个节点放在一起,namenode(master)和datanode(存数据的)在一起,但是执行的分布式程序

进入hadoop/etc/hadoop目录,编辑hdfs-site.xml文件
在这里插入图片描述
先指定副本数量为1
在这里插入图片描述
编辑core-site.xml文件
在这里插入图片描述

指定hdfs的名称节点(NN)的ip,由于这里是伪分布式,主从都在一起,所以写localhost,端口为9000
在这里插入图片描述
因为主从都是自己,所以worker里面也写的localhost。建立ssh密钥
在这里插入图片描述
切换root用户给hadoop用户设置密码。切换为hadoop用户,把密钥给localhost,测试,可以免密登陆
在这里插入图片描述
进入软连接目录,初始化hdfs
在这里插入图片描述
成功初始化后,/tmp就有数据了,数据都是存放在/tmp的。开启dfs
在这里插入图片描述
类似于ps ax,java里面有jps命令可以查看开启进程,但是默认相对路径无法打开,所以修改家目录下的bash的环境变量文件,
在这里插入图片描述
把home/java/bin添加进去,
在这里插入图片描述
重新读取环境变量文件,现在使用jps可以看到DN和NN都启动了
在这里插入图片描述

网页访问172.25.77.1:9870,这里9870是hadoop默认的监听端口,9000是Namenode和Datanode的连接端口
在这里插入图片描述
创建虚拟目录/user/hadoop,该子目录的名字hadoop必须与操作用户hadoop一致
在这里插入图片描述
查看文件系统,已有虚拟目录/user/hadoop
在这里插入图片描述
从本地上传input目录到分布文件系统,查看
在这里插入图片描述
已有虚拟目录/user/hadoop/input
在这里插入图片描述
以单词数的方式输出为output目录
在这里插入图片描述
查看dfs有output目录了
在这里插入图片描述
现在删除本地的output文件,使用dfs查看output还是在的,因为已经上传到文件系统里了
在这里插入图片描述
下载output目录,本地就有了
在这里插入图片描述

4、完全分布式部署

再打开三台虚拟机server2、server3、server4,各分配1G内存,做DN
完全分布式,需要把NN(server1)和DN分开
server1修改etc/hadoop/hdfs-site.xml文件,
在这里插入图片描述
副本数改为2
在这里插入图片描述
server1修改etc/hadoop/core-site.xml 文件,由于是完全分布式,必须指定ip
在这里插入图片描述
worker文件中指定server2和server4是数据节点
在这里插入图片描述
server1安装nfs
在这里插入图片描述
编辑nfs策略,共享/home/hadoop目录,权限为读写,匿名用户uid和gid都是1000,对应hadoop用户。重启nfs
在这里插入图片描述
server2创建用户hadoop,安装nfs
在这里插入图片描述
server2测试,共享目录挂载到自己的/home/hadoop,切换hadoop用户,查看成功共享
在这里插入图片描述
server3创建用户hadoop,安装nfs
在这里插入图片描述
server3测试,共享目录挂载到自己的/home/hadoop,切换hadoop用户,查看成功共享
在这里插入图片描述
server1测试和server2、server3的免密
在这里插入图片描述
server1把之前的伪分布式的部署停掉,重新初始化完全分布式,因为使用nfs系统,所有节点的/home/hadoop都是同步修改过的,所以无需专门给server2和server3修改配置文件。
在这里插入图片描述
开启dfs,jps查看server1是NN节点,还有一个secondarynamenode是作为冷备的
在这里插入图片描述
jps查看server2是DN节点
在这里插入图片描述

jps查看server3是DN节点
在这里插入图片描述

网页查看server2、server3两个DN节点已经成功加入
在这里插入图片描述
创建虚拟目录/user/hadoop,上传input目录,单词数抓取,输出output目录
在这里插入图片描述
网页查看成功上传,部署完成
在这里插入图片描述
当我们想再添加一个DN节点(server4)到HDFS时,也很简单,首先server4安装nfs
在这里插入图片描述
server4创建hadoop用户,共享目录挂载到自己的/home/hadoop,切换hadoop用户,查看成功共享。修改worker文件,添加server4(所有节点的worker文件都跟着变动了,因为nfs)
在这里插入图片描述
server4开启DN节点,jps可以看到成功变为DN节点
在这里插入图片描述
网页查看,成功添加DN节点
在这里插入图片描述

5、资源管理器YARN – ResourceManager部署

负责全局的资源管理和任务调度,把整个集群当成计算资源池,只关注分配,不管应用,且不负责容错。

资源管理:
1 以前资源是每个节点分成一个个的Map slot和Reduce slot,现在是一个个Container,每个Container可以根据需要运行ApplicationMaster、Map、Reduce或者任意的程序
2以前的资源分配是静态的,目前是动态的,资源利用率更高
3Container是资源申请的单位,一个资源申请格式:<resource-name, priority, resource-requirement, number-of-containers>,
resource-name:主机名、机架名或*(代表任意机器), resource-requirement:目前只支持CPU和内存
4用户提交作业到ResourceManager,然后在某个NodeManager上分配一个Container来运行ApplicationMaster,ApplicationMaster再根据自身程序需要向ResourceManager申请资源
5YARN有一套Container的生命周期管理机制,而ApplicationMaster和其Container之间的管理是应用程序自己定义的
--------------------------------------------------------------------------------------------------------
任务调度:
1只关注资源的使用情况,根据需求合理分配资源
2Scheluer可以根据申请的需要,在特定的机器上申请特定的资源(ApplicationMaster负责申请资源时的数据本地化的考虑,ResourceManager将尽量满足其申请需求,在指定的机器上分配Container,从而减少数据移动)
在这里插入图片描述

server1编辑etc/hadoop/mapred-site.xml文件
在这里插入图片描述
添加下面语句,添加mapreduce模块,这里使用了一个hadoop_mapred_home变量,之后要看看是否指定了该变量
在这里插入图片描述
编辑yarn-site.xml文件
在这里插入图片描述
server1给DN添加nodemanage模块
在这里插入图片描述
编辑hadoop-env.xml变量定义文件
在这里插入图片描述
指定hadoop_mapred_home变量的路径
在这里插入图片描述
server1回到软连接目录,开启yarn,jps查看,server1是RM资源管理者
在这里插入图片描述
jps查看,server2多了NM节点管理角色
在这里插入图片描述
jps查看,server3多了NM节点管理角色
在这里插入图片描述
jps查看,server4多了NM节点管理角色
在这里插入图片描述
server1开启了8088端口
在这里插入图片描述
网页访问172.25.77.1:8088查看资源管理
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值