搭建Hadoop本地模式、伪分布模式和全分布模式集群

目录

1、环境准备

1.1、服务器和软件准备

1.2、关闭防火墙

1.3、编辑hosts文件

1.4、安装jdk

1.5、上传安装包

2、Hadoop的目录结构

2.1、解压hadoop到/usr/local路径下

2.2、执行tree命令查看hadoop的树形结构

2.3、设置hadoop环境变量

3、Hadoop的主要脚本

4、搭建hadoop的本地模式

4.1、本地模式特点

4.2、本地模式部署

4.3、测试是否成功

5、搭建hadoop的伪分布模式

5.1、伪分布模式的特点

5.2、搭建伪分布模式

         5.2.1、主要配置参数如下表

5.2.2、部署

5.3、对NameNode进行格式化

5.4、启动hadoop

5.5、操作hdfs和yarn

6、免密码登录的原理和配置

6.1、免密码登录的原理

6.2、免密码登录的配置

6.3、验证配置是否成功

7、搭建全分布模式 

7.1、全分布模式特点

7.2、准备工作

 7.3、全分布式架构

7.3.1、主要配置参数如下表

7.3.2、部署

7.3.3、对namenode进行格式化

7.3.4、 把bigdata1的配置文件复制到bigdata2和bigdata3

7.3.5、启动hadoop集群

7.3.6、验证hadoop集群是否部署成功

1、环境准备

1.1、服务器和软件准备

服务器内存容量系统软件版本数量
linux4g100Gcentos8.0jdk1.85
hadoop2.7.3

这里我用的云服务器(大家可以在自己的电脑安装虚拟机,配置内存可以调整为2g,容量的话60G就行),不方便透露服务器的IP,所以3台服务器的IP分别是A、B、C 、E和F       

hadoop软件下载可以到对应的官网下载hadoop-2.7.3.tar.gz或者通过百度网盘去下载:

        链接:https://pan.baidu.com/s/1kg9gr9X5Sw1G7gGevvPHoA 
        提取码:732c

1.2、关闭防火墙

       永久关闭防火墙:

systemctl disable firewalld.service

1.3、编辑hosts文件

vi /etc/hosts

 将ip分别映射为bigdata1、bigdata2、bigdata3、bigdata4、bigdata5

A bigdata1
B bigdata2
C bigdata3
D bigdata4
E bigdata5

        将A、B、C、D、E分别改为自己的服务器IP(如果是云服务器,要用内网ip)

1.4、安装jdk

        在这儿就不在写安装jdk步骤了,安装jdk的博客有很多,大家可以根据文档自行安装(jdk 1.8版本即可)

1.5、上传安装包

       分别在5个服务器上传hadoop-2.7.3.tar.gz到/usr/local/tools路径下

cd /usr/local
mkdir tools

         将hadoop-2.7.3.tar.gz都上传到对应的路径下tools路径下

2、Hadoop的目录结构

2.1、解压hadoop到/usr/local路径下

cd /usr/local/tools
 tar -zxvf hadoop-2.7.3.tar.gz -C /usr/local/

2.2、执行tree命令查看hadoop的树形结构

cd /usr/local/hadoop-2.7.3
tree -d -L 3  hadoop-2.7.3/

执行后结果如下图:

       

2.3、设置hadoop环境变量

vi ~/.bash_profile

在文件中增加如下代码:

HADOOP_HOME=/usr/local/hadoop-2.7.3
export HADOOP_HOME


PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export PATH

增加完截图如下:

执行如下命令是配置生效

source ~/.bash_profile

执行hdfs + tab键,出现如下截图代表配置生效:

 注意:tree命令如果执行报错,需要安装tree依赖

依赖包下载可以通过百度网盘链接进行下载或者官网自行下载,下载完成后上传到/usr/local路径下

        链接:https://pan.baidu.com/s/1q7JisLGdv1lkVXs3aCIrpw 
        提取码:dikw 

然后执行如下命令:

cd /usr/local
rpm -ivh tree-1.6.0-10.el7.x86_64.rpm

3、Hadoop的主要脚本

#启动所有hadoop守护进程
sbin/start-all.sh
#用于启动namenode,datanode,secondarynamenode
sbin/start-dfs.sh
#用于启动nodemanager,resourcemanager
sbin/start-yarn.sh

停止的话start换为stop即可

#主要调用hdfs命令
sbin/hadoop-daemon.sh
#主要调用yarn命令,yarn-daemon.sh和yarn-daemons.sh均可用于启动nodemanage,resourcemanager
sbin/yarn-daemon.sh

 使用stop-dfs.sh和stop-yarn.sh关闭所有hadoop守护进程

4、搭建hadoop的本地模式

4.1、本地模式特点

  • 没有HDFS
  • 没有Yarn
  • 只能测试MapReduce程序, 作为一个普通的java程序
  • 处理本地的linux文件数据

 4.2、本地模式部署

        修改配置文件

cd /usr/local/hadoop-2.7.3/etc/hadoop
vi hadoop-env.sh

修改文件中的java  

export JAVA_HOME=/usr/local/jdk1.8.0_181

 4.3、测试是否成功

 mkdir /opt/temp
vim /opt/temp/data.txt

在文件中添加如下内容:

welcome to beijing
welcome to tianjin
beijing is very beautiful
cd /usr/local/hadoop-2.7.3/share/hadoop/mapreduce/
ls hadoop-mapreduce-examples-2.7.3.jar

截图如下:

 执行如下命令:

 hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /opt/temp /opt/output/wc

 执行截图如下:

进入 /opt/temp /opt/output/wc目录下

cd /opt/output/wc

有如下两个文件

 对每个单词的数量都进行了统计

 至此hadoop的本地模式就部署成功了

5、搭建hadoop的伪分布模式

5.1、伪分布模式的特点

  • 在单机上,模拟一个分布式的环境
  • 具备Hadoop的所有的功能 

         HDFS: NameNode、DataNode、SecondaryNameNode 

        Yarn: ResourceManager、NodeManager

  • 用于开发和测试

 5.2、搭建伪分布模式

5.2.1、主要配置参数如下表

参数文件配置参数参考值
hadoop-env.shJAVA_HOME/usr/local/jdk1.8.0_181
hdfs-site.xdfs.replication1
dfs.permissionsfalse
core-site.xmlfs.defaultFShdfs://<hostname>:9000
hadoop.tmp.dir/usr/local/hadoop-2.7.3/tmp
mapred-site.xmlmapreduce.framework.nameyarn
yarn-site.xmlyarn.resourcemanager.hostname<hostname>
yarn.nodemanager.aux-servicesmapreduce_shuffle

5.2.2、部署

  • 配置hadoop-env.sh,可以参考第4部分
  • 配置hdfs-site.xml 

 主要修改如下内容:

   进入到/usr/local/hadoop-2.7.3/etc/hadoop路径下:

cd /usr/local/hadoop-2.7.3/etc/hadoop
vi hdfs-site.xml
<!-- 数据块的冗余度,默认是3 -->
<!-- 一般来说,数据冗余度跟数据节点的个数一致,最大不超过3 -->
<property>
    <name>dfs.replication</name>
    <value>1</value>    
</property>

<!-- 禁用了HDFS的权限检查,暂时可以不配置 -->
<property>
    <name>dfs.permissions</name>
    <value>fales</value>    
</property>

 配置截图如下:

  • 配置core-site.xml
<!-- 配置nameNode的地址 -->
<!--9000是通信端口 -->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://bigdata1:9000</value>    
</property>

<!--HDFS对应的操作系统目录,默认是linux的tmp目录 -->

<property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/local/hadoop-2.7.3/tmp</value>    
</property>

 配置截图如下:

创建上面的/usr/local/hadoop-2.7.3/tmp路径

mkdir /usr/local/hadoop-2.7.3/tmp
  • 配置mapred-site.xml

 拷贝mapred-site.xml(默认是没有的)

cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
<!--配置Mapreduce运行的框架是Yarn-->
<!--默认没有,只为我们创建了templete文件-->
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>    
</property>

配置截图如下:

  •  修改yarn-site.xml
vi yarn-site.xml
<!--配置resourceManager的地址-->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>bigdata1</value>    
</property>

<!--Mapreduce运行的方式洗牌-->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>    
</property>

配置截图如下:

 

 5.3、对NameNode进行格式化
 

执行命令

hdfs namenode -format

 打印出如下截图,表示对NameNode进行格式化成功

 到   /usr/local/hadoop-2.7.3/tmp/路径下

执行tree命令,截图如下:

 5.4、启动hadoop

执行如下命令:

start-all.sh

启动是共计要输入4次密码,在你不输错的情况下

执行jps命令查看进程,截图如下:

5.5、操作hdfs和yarn

 创建路径:

cd /opt/temp
hdfs dfs -mkdir /input

把/opt/temp/data.txt文件上传到/input 目录下

hdfs dfs -put /opt/temp/data.txt /input

执行mapreduce任务

/usr/local/hadoop-2.7.3/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /input /opt/output/wc

运行截图如下:

也可以通过浏览器访问http://ip:8088/cluster可以看到任务执行的状态

执行如下命令查看统计结果:

hdfs dfs -cat /opt/output/wc/part-r-00000 

 统计结果如下图:

 至此,hadoop的伪分布模式就部署成功了

6、免密码登录的原理和配置

6.1、免密码登录的原理

 6.2、免密码登录的配置

在A服务器上执行如下命令,一直回车

ssh-keygen -t rsa

然后执行

ssh-copy-id -i .ssh/id_rsa.pub root@bigdata1

其他的服务器可以将bigdata1改为其他服务器,@后面是哪个服务器,就是将公钥拷贝到对应的服务器.ssh/authorized.keys文件中

执行过程中需要输入一次密码,截图如下:

6.3、验证配置是否成功

执行如下命令,关闭hadoop服务

stop-all.sh

执行过程中不在需要输入密码,证明配置成功

7、搭建全分布模式 

7.1、全分布模式特点

  • 真正的分布式环境,用于生产
  • 具备hadoop所有功能:hdfs yarn
  • 3台机器

7.2、准备工作

  •  关闭防火墙
  • 设置主机名:在每台服务器上边执行步骤1.3
  • 配置免密码登录:在每台服务器上执行
    ​ssh-keygen -t rsa

    然后执行分别执行

    ssh-copy-id -i .ssh/id_rsa.pub root@bigdata1
    ssh-copy-id -i .ssh/id_rsa.pub root@bigdata2
    ssh-copy-id -i .ssh/id_rsa.pub root@bigdata3
  • 安装jdk
  • 同步时间: 通过如下命令同步时间
    date -s 2022-05-15
  •  在其他两台服务器上配置hadoop的环境变量,按照步骤2.3执行即可

 7.3、全分布式架构

7.3.1、主要配置参数如下表

参数文件配置参数参考值
hadoop-env.shJAVA_HOME/usr/local/jdk1.8.0_181
hdfs-site.xmldfs.replication
dfs.permissionsfalse
core-site.xmlfs.defaultFShdfs://<hostname>:9000
hadoop.tmp.dir/usr/local/hadoop-2.7.3/tmp
mapred-site.xmlmapreduce.framework.nameyarn
yarn-site.xmlyarn.resourcemanager.hostname<hostname>
yarn.nodemanager.aux-servicesmapreduce_shuffle
slaves从节点地址

7.3.2、部署

上述列表中前5项按照伪分布的修改配置文件修改即可,记得按照上述列表修改后面的参数即可(注意每个服务器修改core-site.xml)

第6项从节点地址配置如下:

执行命令

cd /usr/local/hadoop-2.7.3/etc/hadoop
vi slaves

将两个从节点的ip地址或者ip的映射加入到文件中,如下图

 7.3.3、对namenode进行格式化

执行命令

hdfs namenode -format

7.3.4、 把bigdata1的配置文件复制到bigdata2和bigdata3

在bigdata1 服务器上分别执行如下命令:

scp -r /usr/local/hadoop-2.7.3/ root@bigdata2:/usr/local
scp -r /usr/local/hadoop-2.7.3/ root@bigdata3:/usr/local

7.3.5、启动hadoop集群

在bigdata1上边启动集群,执行如下命令

start-all.sh

 截图如下:

 bigdata1上边启动了namenode,bigdata2和bigdata3上启动了datanode

7.3.6、验证hadoop集群是否部署成功

在bigdata1服务器执行如下命令

hdfs dfs -put /opt/temp/data.txt /input
cd /usr/local/hadoop-2.7.3/share/hadoop/mapreduce

 执行mapreduce程序

hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /input /output/wc

注意:1、如果报如下错误:

 原因:可能是使用hadoop namenode -format格式化时格式化了多次造成那么spaceID不一致

解决方案:

  • 停止集群
stop-all.sh
  • 删除在hdfs中配置的data目录(即在core-site.xml中配置的hadoop.tmp.dir对应文件件)下面的所有数据;
rm -rf  /usr/local/hadoop-2.7.3/tmp/*
  • 重新格式化namenode
hdfs namenode -format
  • 重新启动hadoop集群
start-all.sh

2、如果报如下错误:

在yarn-root-resourcemanager-VM-0-26-centos.log日志下

解决方案:修改/etc/hosts文件,添加ip和对应的映射即可解决

ip VM-0-19-centos

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值