VMware之Hadoop完全分布式安装

1、 集群搭建形式

Hadoop环境搭建分为三种形式:单机模式、伪分布式模式、完全分布模式
(1)单机模式—— 在一台单机上运行,没有分布式文件系统,而是直接读写本地操作系统的文件系统。
(2)伪分布式—— 也是在一台单机上运行,但不同的是Java进程模仿分布式运行中的各类节点。即一台机器上,既当NameNode,又当DataNode,或者说既是JobTracker又是TaskTracker。没有所谓的在多台机器上进行真正的分布式计算,故称为“伪分布式”。
(3)完全分布式—— 真正的分布式,由3个及以上的实体机或者虚拟机组成的机群。一个Hadoop集群环境中,NameNode,SecondaryName和DataNode是需要分配在不同的节点上,也就需要三台服务器。
前两种模式一般用在开发或测试环境下,生产环境下都是搭建完全分布式模式。
从分布式存储的角度来说,集群中的节点由一个NameNode和若干个DataNode组成,另有一个SecondaryNameNode作为NameNode的备份。
从分布式应用的角度来说,集群中的节点由一个JobTracker和若干个TaskTracker组成。JobTracker负责任务的调度,TaskTracker负责并行执行任务。TaskTracker必须运行在DataNode上,这样便于数据的本地计算。JobTracker和NameNode则无须在同一台机器上。
2、环境
操作系统:CentOS7
机器:虚拟机3台,(master 192.168.1.101, slave1 192.168.1.102, slave2 192.168.1.103)
JDK:1.8.0_221(jdk-8u221-linux-x64.tar.gz)
Hadoop:2.9.2(http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.9.2/hadoop-2.9.2.tar.gz
3、 搭建步骤
(1) 每台机器安装&配置JDK
详见博客(https://blog.csdn.net/lnxcw/article/details/106336186
在这里插入图片描述
(2) 修改每台机器主机名(hostname)
hostnamectl set-hostname master (立即生效)
hostnamectl set-hostname slave1 (立即生效)
hostnamectl set-hostname slave2 (立即生效)
(3)修改每台机器/etc/hosts文件
(切换到root用户(获取管理员权限)
输入命令:$su –l root)

vi /etc/hosts

在这里插入图片描述
修改其中1台,然后scp到其它机器
scp 文件名 远程主机用户名@远程主机名或ip:存放路径

scp hosts root@192.168.1.102:/etc/
scp hosts root@192.168.1.103:/etc/

在这里插入图片描述
修改完之后,互ping其它机器,能互ping则说明修改OK
ping -c 3 slave1 (※ 3表示发送 3 个数据包)
在这里插入图片描述
(4) 配置ssh,实现无密码登录

无密码登录,效果也就是在master上,通过ssh slave1或者ssh slave2就可以登录对方机器,而不用输入密码。
1) 每台机器执行

ssh-keygen -t rsa

,接下来一路回车即可
执行ssh-keygen -t rsa主要是生成 密钥 和 密钥的存放路径
在这里插入图片描述
我们用的root用户,公钥私钥都会保存在~/.ssh下,所以要进入该目录

cd ~/.ssh

在这里插入图片描述
2) 在master上将公钥放到authorized_keys里,命令:

cat id_rsa.pub > authorized_keys

3) 将master上的authorized_keys放到其它机器上

scp authorized_keys root@hadoop02:~/.ssh/
scp authorized_keys root@hadoop03:~/.ssh/

4) 测试是否成功
在这里插入图片描述
(5)安装&配置Hadoop
详见博客(https://blog.csdn.net/lnxcw/article/details/106337081
1) 创建HDFS存储目录

cd /opt/hadoop-2.9.2
mkdir hdfs
cd hdfs
mkdir name data tmp

/opt/hadoop-2.9.2/hdfs/name --存储namenode文件 /opt/hadoop/hdfs/data --存储数据
/opt/hadoop-2.9.2/hdfs/tmp --存储临时文件
在这里插入图片描述
在这里插入图片描述
2)修改/opt/module/hadoop-2.9.2/etc/hadoop/hadoop-env.sh文件,设置JAVA_HOME为实际路径,否则启动集群时,会提示路径找不到
在这里插入图片描述
3)修改/opt/module/hadoop-2.9.2/etc/hadoop/yarn-env.sh文件,设置JAVA_HOME为实际路径
在这里插入图片描述
4)配置/opt/module/hadoop-2.9.2/etc/hadoop/core-site.xml
增加hadoop.tmp.dir 和 fs.default.name

<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-2.9.2/hdfs/tmp</value>
</property>
<!-- 指定HDFS中NameNode的地址 -->
<property>
        <name>fs.default.name</name>
        <value>hdfs://hadoop01:9000</value>
</property>

在这里插入图片描述
5)配置/opt/module/hadoop-2.9.2/etc/hadoop/hdfs-site.xml
dfs.replication:默认值3
dfs.permissions:默认值为true,设置为true有时候会遇到数据因为权限访问不了;设置为false可以不要检查权限就生成dfs上的文件

<property>
        <name>dfs.replication</name>
        <value>3</value>
</property>
<property>
        <name>dfs.name.dir</name>
        <value>/opt/module/hadoop-2.9.2/hdfs/name</value>
</property>
<property>
        <name>dfs.data.dir</name>
        <value>/opt/module/hadoop-2.9.2/hdfs/data</value>
</property>
<property>
        <name>dfs.permissions</name>
        <value>false</value>
</property>
<property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop03:50090</value>
</property>

在这里插入图片描述
6)配置/opt/module/hadoop-2.9.2/etc/hadoop/mapred-site.xml
mapreduce.framework.name:指定mapreduce运行在yarn平台,默认为local
mv mapred-site.xml.template mapred-site.xml
vi mapred-site.xml

<!-- 指定mr运行在yarn上 -->
<property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
</property>

在这里插入图片描述
7)配置/opt/module/hadoop-2.9.2/etc/hadoop/yarn-site.xml

yarn.resourcemanager.hostname:指定yarn的resourcemanager的地址

yarn.nodemanager.aux-services:reducer获取数据的方式

yarn.nodemanager.vmem-check-enabled:意思是忽略虚拟内存的检查,如果安装在虚拟机上,这个配置很有用,配上去之后后续操作不容易出问题。如果是在实体机上,并且内存够多,可以将这个配置去掉

<!-- reducer获取数据的方式 -->
<property>
       <name>yarn.nodemanager.aux-services</name>
       <value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
       <name>yarn.resourcemanager.hostname</name>
       <value>hadoop02</value>
</property>
<property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
</property>

(8) 配置/opt/module/hadoop-2.9.2/etc/hadoop/slaves文件,将里面的localhost删除,配置后内容如下:
在这里插入图片描述
9)copy整个/opt/module/目录到其它机器,并修改2和3的环境变量,将JDK和Hadoop路径添加进去
scp -r module root@slave1:/opt/
scp -r module root@slave2:/opt/
在这里插入图片描述
让修改后的文件生效:source /etc/profile
(6) 启动Hadoop
1) 启动之前需要格式化一下。因为hadoop01是namenode,hadoop02和hadoop03都是datanode,所以在master上运行

hadoop namenode -format

在这里插入图片描述格式化成功后,可以看到在/opt/module/hadoop-2.9.2/hdfs/name目录下多了一个current目录,而且该目录下有一系列文件,如下:
在这里插入图片描述2)执行启动(namenode只能在hadoop01上启动,因为配置在hadoop01上;datanode每个节点上都可以启动)
a.启动HDFS

sbin/start-dfs.sh
start-all.sh(谨慎)

b.启动yarn

sbin/start-yarn.sh

在这里插入图片描述在这里插入图片描述在这里插入图片描述
注意:Namenode和ResourceManger如果不是同一台机器,不能在NameNode上启动 yarn,应该在ResouceManager所在的机器上启动yarn。
(7)在win网上打开网页,查看HDFS管理页面 192.168.1.101:50070
在这里插入图片描述若无法访问,则查看是否关闭防火墙。
在这里插入图片描述
注:

(1)关闭nodemanager 、resourcemanager和historymanager
sbin/yarn-daemon.sh stop resourcemanager
sbin/yarn-daemon.sh stop nodemanager
sbin/mr-jobhistory-daemon.sh stop historyserver
(2)启动nodemanager、resourcemanager和historymanager
sbin/yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start nodemanager
sbin/mr-jobhistory-daemon.sh start historyserver

  • 5
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值