首页 > 其他分享 >Hadoop的完全分布式搭建

Hadoop的完全分布式搭建

时间:2023-06-07 18:45:09浏览次数:42  
标签:opt 配置文件 配置 hadoop module Hadoop 192.168 分布式 搭建

Hadoop分布式安装

集群规划

主机名 Hadoop10 Hadoop11 Hadoop12
网络 192.168.10.10 192.168.10.11 192.168.10.12
用户 hadoop
root
hadoop
root
hadoop
root
HDFS NameNode
DateNode
DateNode Secondary NameNode
DataNode
YARN NodeManager NodeManager
ResourceManager
NodeManager

1.CentOS 7虚拟机操作系统

安装虚拟机系统,省略

2.系统的基本配置

1)网络配置

第一步:网卡配置

使用 vi编辑器编辑系统的网卡配置文件,配置以下项目

  • 网卡的开机自启
  • 使用静态IP
  • 网关和DNS
vi /etc/sysconfig/network-scripts/ifcfg-ens33

修改内容如下:

ONBOOT="yes"
BOOTPROTO="static"

添加以下内容:

IPADDR=192.168.10.10
GATEWAY=192.168.10.2
DNS1=192.168.10.2

我们目前操作的机器是hadoop10,为其配置的IP地址是192.168.10.10,这需要和VMware软件的网卡配置保存IP域一样

Hosts主机映射文件配置

根据我们的集群规划,我们得知有3台主机,所以我们也知道3台主机的IP,那么可以事先将映射文件配置好

vi /etc/hosts

添加写入以下内容

192.168.10.10		hadoop10
192.168.10.11		hadoop11
192.168.10.12		hadoop12

重启网卡使配置生效

systemctl restart network

重启完之后可以检查

ip addr

观察对应的网卡IP是否正常

配置完网卡之后,就可以使用xshell等ssh工具进行连接操作,之后的操作全部都是远程完成

Windows对虚拟机SSH远程连接需要注意

首先网卡配置完成后就可以SSH连接了,使用IP地址即可,但是为保证连接的方便,一般我们在Windows中也是使用一个主机名来连接服务器,但是Windows并不认识我们的主机,所以同样需要配置Windows的hosts映射文件

修改文件C:\Windows\System32\drivers\etc

打开hosts文件,追加以下内容

192.168.10.10		hadoop10
192.168.10.11		hadoop11
192.168.10.12		hadoop12

VMware网卡配置

我们使用的是nat模式网卡,需要保证该网卡如下图所示

网卡配置

2)用户配置

新建用户

目前我们只有root用户,必须知道的原则是:root用户是一个非常敏感的用户,在对服务器进行操作的时候,非迫不得已,不得使用root用户

根据集群规划,创建新的用户,用户名为:hadoop

useradd hadoop

为其设置密码

passwd hadoop

输入需要的密码,两次,可以忽略警告

为新用户赋予sudo加权

hadoop用户配置sudo执行权限,方便使用

vi /etc/sudoers

修改/etc/sudoers文件,在%wheel这行下面添加一行,如下所示:

## Allow root to run any commands anywhere

root   ALL=(ALL)   ALL



## Allows people in group wheel to run all commands

%wheel  ALL=(ALL)  ALL

hadoop  ALL=(ALL)  NOPASSWD:ALL

追加的是这一行:

hadoop  ALL=(ALL)  NOPASSWD:ALL

注意:hadoop这一行不要直接放到root行下面,因为所有用户都属于wheel组,你先配置了hadoop具有免密功能,但是程序执行到%wheel行时,该功能又被覆盖回需要密码.所以hadoop要放到%wheel这行下面.

按ESC键,shift+:键,输入wq!强制保存

SSH连接须知

我们一开始使用的是root用户操作,在此之后,我们连接将只使用hadoop用户

关闭防火墙

注意:这只是为了我们学习方便,在实际的工作中绝对不可以,只能在防火墙配置需要放行的端口,而不能自接关闭防火墙

1.关闭防火墙的开机自启(为了以后不用做这一步)

sudo systemctl disable firewalld

2.关闭当前防火墙

sudo systemctl stop firewalld.service

3.配置JDK

1.准备两个文件夹

sudo mkdir /opt/software
sudo mkdir /opt/module
  • software文件夹用作我们资料的上传
  • module我们一些软件将安装在此目录

/opt目录只有root用户可以操作,所以我们上面创建文件夹使用了sudo加权

2.将文件夹的所有者赋予hadoop用户

sudo chown hadoop -R 777 /opt/software
sudo chown hadoop -R 777 /opt/module

3.上传JDK安装文件至/opt/module目录

4.解压JDK至/opt/module目录

tar -zxvf /opt/software/jdk-8u181-linux-x64.tar.gz -C /opt/module/

5.检查是否解压成功

注意,默认此时我们的jdk路径是:/opt/module/jdk1.5.0_181,这在配置环境变量是需要用到

6.配置jdk的环境变量

​ 1.新建我们自己的环境变量文件

sudo vi /etc/profile.d/my_env.sh

​ 2.写入以下内容

export JAVA_HOME=/opt/module/jdk1.8.0_181
export PATH=$PATH:$JAVA_HOME/bin

​ 3.刷新环境变量

source /etc/profile

7.检查

[hadoop@hadoop101 opt]$ java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

你可以将环境变量文件所有权赋予hadoop用户,这样的话以后更方便

:sudo chown hadoop -R /etc/profile.d/my_env.sh

4.安装配置Hadoop

1.解压hadoop压缩包至/opt/module

tar -zxvf /opt/software/hadoop-3.1.3.tar.gz -C /opt/module

2.配置Hadoop环境变量

编辑my_env.sh文件,追加写入以下内容:

export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:HADOOP_HOME/bin
export PATH=$PATH:HADOOP_HOME/sbin

3.刷新环境变量

4.检查

5.配置Hadoop分布式集群

Hadoop的配置文件分为两类

1.默认配置文件

2.自定义配置文件

默认的配置文件一般情况下是不能动的,里面存在几千行的配置,绝大多数的配置是默认即可的

一般情况下,用户对hadoop的配置修改都是对自定义配置文件进行操作,自定义配置文件的优先级更高,也就是说,自定义配置会覆盖默认配置

所以,默认的配置文件是兜底,你只需要在自定义配置文件中覆盖你需要修改的部分

自定义配置文件的作用就是覆盖默认配置文件的配置项

自定义配置文件在hadoop的安装目录下的./etc/hadoop中:

  • core-site.xml
  • hdfs-site.xml
  • yarn-site.xml
  • mapred-site.xml

这4个配置文件按照名称就告知了里面应该写何种配置,根据默认配置文件的理解,这4个自定义配置文件是空的

4个自定义配置文件一般情况下我们按照配置文件的文件名对里面需要修改的配置项分类,但是!这4个配置文件没有区别,也就是说,你把所有的配置内容写在其中一个配置文件中同样可以

配置集群

目前我们只有一台主机hadoop10,其他的两台还没有,但是这并不影响我们操作,我们就配置这一台,然后克隆出另外两台因为对于Hadoop的配置来说,集群所有的机器都是一致的

1.core-site.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
       <!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop10:8020</value>
    </property>

    <!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
    </property>

    <!-- 配置HDFS网页登录使用的静态用户为atguigu -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>jose</value>
    </property>
</configuration>

2.hdfs-site.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
<!-- nn web端访问地址-->
	<property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop10:9870</value>
    </property>
	<!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop12:9868</value>
    </property>
    <property>
 <!-- namenode 数据存放地址-->
     <name>dfs.namenode.name.dir</name>
     <value>/opt/module/hadoop-3.1.3/name</value>
   </property>
  <!--  datanode 数据存放地址-->
   <property>
     <name>dfs.datanode.data.dir</name>
     <value>/opt/module/hadoop-3.1.3/data</value>
   </property>
</configuration>

3.yarn-site.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->
<configuration>
<!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop11</value>
    </property>

    <!-- 环境变量的继承添加Maperd环境变量的继承(因为node节点上执行任务会创建容器,所以继承宿主机的环境变量配置) -->
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
    <!--运行所需要的服务,如果运行jar包没有报连接失败可以不用加-->
    <property>
       <name>yarn.application.classpath</name>
       <value>/opt/module/hadoop/etc/hadoop:/opt/module/hadoop/share/hadoop/common/lib/*:/opt/module/hadoop/share/hadoop/common/*:/opt/module/hadoop/share/hadoop/hdfs:/opt/module/hadoop/share/hadoop/hdfs/lib/*:/opt/module/hadoop/share/hadoop/hdfs/*:/opt/module/hadoop/share/hadoop/mapreduce/lib/*:/opt/module/hadoop/share/hadoop/mapreduce/*:/opt/module/hadoop/share/hadoop/yarn:/opt/module/hadoop/share/hadoop/yarn/lib/*:/opt/module/hadoop/share/hadoop/yarn/*</value>
    </property>
<!-- Site specific YARN configuration properties -->

</configuration>

4.mapred-site.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
<!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

</configuration>

works配置文件

存在路径同样是在./etc/hadoop中,该配置文件描述了集群要哪些机器

打开此文件

该文件内容如下:

hadoop10
hadoop11
hadoop12

该文件不允许存在任何空格和空行

配置Hadoop用户环境变量

编辑my_env.sh文件,追加写入以下内容:

# USER_PRO
export HDFS_NAMENODE_USER=hadoop
export HDFS_DATANODE_USER=hadoop
export HDFS_SECONDARYNAMENODE_USER=hadoop
export YARN_RESOURCEMANAGER_USER=hadoop
export YARN_NODEMANAGER_USER=hadoop

刷新环境变量

检查

6.后续集群的文件分发准备

因为在之后的集群中,多台机器经常需要保证某些文件的内容一致,那么就需要我们有一个文件同步的方案,在这里我们选择rsync做文件同步,相比scp更为高效

rsync是一个第三方软件,需要安装,我们选择yum来安装软件

配置yum

配置yum的镜像为清华源

sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
         -e 's|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.tuna.tsinghua.edu.cn|g' \
         -i.bak \
         /etc/yum.repos.d/CentOS-*.repo

生成新的缓存

yum makecache

安装rsync

安装命令:

sudo yum install rsync -y

如果你已经克隆了机器,那么所有机器都得做

创建分发脚本

rsync可以做到机器

1.在/home/hadoop/目录下创建bin目录

mkdir /home/hadoop/bin

2.在该目录下创建脚本文件:

touch /home/hadoop/bin/xsync

3.在该文件中写入以下内容:

#!/bin/bash
if [ $# -lt 1 ]
then
  echo Error:无效参数
  exit;
fi

for host in hadoop10 hadoop11 hadoop12
do
  echo ===========正在传输:$host=============
  for file in $@
  do
    if [ -e $file ]
    then
      pdir=$(cd -P $(dirname $file);pwd)
      fname=$(basename $file)
      ssh $host "mkdir -p $pdir"
      rsync -av $pdir/$fname $host:$pdir
    else
      echo Error:$file 不存在!
    fi
  done
done

4.为该脚本文件赋予可执行的权限:

chmod +x /home/hadoop/bin/xsync

如果脚本文件是你在Windows中编辑的,那么会存在一个问题,Windows的换行是\r\n,而Linux没有\r换行的概念,那么该脚本运行时可能报错,使用以下命令解决

sed 's/\r//' -i /home/hadoop/bin/xsync

7.克隆集群机器

我们目前只有一台hadoop10机器,而且配置都完成了,那么我们需要以此为母版克隆出hadoop11hadoop12

1.克隆主机

2.修改克隆出来的机器的ip地址

vi /etc/sysconfig/network-scripts/ifcfg-ens33

修改内容如下:

hadoop11:

将ifcfg-ens33文件内容IPADDR=192.168.10.10
修改为:
IPADDR=192.168.10.11

hadoop12:

将ifcfg-ens33文件内容IPADDR=192.168.10.10
修改为:
IPADDR=192.168.10.12

3.修改克隆出来的机器的主机名

vi /etc/hostname

修改内容如下:

hadoop11:

将hostname文件内容修改为:
hadoop11

hadoop12:

将hostname文件内容修改为:
hadoop12

因为克隆可能带来Mac地址的冲突而导致没有ip的情况

以下两种方式解决问题:

1.重新生成Mac地址

2.通过关闭网络管理来实现

​ 1.关闭

systemctl stop Network
systemctl disable NetworkManager

​ 2.更新网络配置

service network restart

8.集群系统的免密登录

hadoop10机器为例:

1.生成密钥

ssh-keygen -t rsa

直接多次回车即可

2.分发密钥(签发)

ssh-copy-id hadoop10
ssh-copy-id hadoop11
ssh-copy-id hadoop12

包括自己本身也要签发

签发时需要对方的密码和用户名,其实完整的命令是ssh-copy-id hadoop@hadoop102

因为你签发的时候使用的是hadoop用户名,而我们的三台机器都有相同的hadoop用户,使用用户名在上面的笔记中就省略了

以上操作三台机器都要操作

9.hadoop集群初始化

hadoop101执行

hdfs namenode -format

如果初始化失败,或者在后续中jps启动失败了,那么如何初始化

1.检查xml配置

2.删除所有生成文件

rm -rf /tmp/* /opt/module/hadoop-3.1.3/data /opt/module/hadoop-3.1.3/logs

该命令必须在所有机器上执行一遍

3.重新初始化

启动hdfs命令(hadoop10)

start-dfs.sh

启动yarn命令(hadoop12)

start-yarn.sh

4、查看进程

jps

hadoop10进程如下:

71600 Jps
71549 NodeManager
70863 DataNode
70782 NameNode

hadoop11进程如下:

71600 Jps
71195 ResourceManager
71549 NodeManager
70863 DataNode

hadoop12进程如下:

71600 Jps
71019 SecondaryNameNode
71549 NodeManager
70863 DataNode

5、访问管理页面

在浏览器输入:
主机名:9870

10、MapReduce 单词计数

先将所要计算的文件上传到 Hadoop

hadoop dfs -put /my.txt

计算单词

hadoop jar /opt/module/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /opt/txt/my.txt /out

查看文件

hdfs dfs -cat /user/root/out1.txt/part-r-00000

如果出现org.apache.hadoop.dfs.SafeModeException: Cannot delete/user/hadoop/input. Name node is in safe mode.

则是hadoop开启了安全模式,需要关闭,用以下语句(退出安全模式):

hadoop dfsadmin -safemode leave

标签:opt,配置文件,配置,hadoop,module,Hadoop,192.168,分布式,搭建
From: https://www.cnblogs.com/ruo1101/p/17464254.html

相关文章

  • 直播app开发搭建,web前端JS中的继承方式
    直播app开发搭建,web前端JS中的继承方式ES5//ES5中的写法一   functionPhone(color){    this.color=color;    this.show=function(){      console.log("你喜欢看的颜色是:"+this.color);    }  }  functionVivo(color......
  • vCenter下标准交换机迁移到分布式交换机
    一、在vCenter上创建分布式交换机可以创建默认端口组,或者后面手动创建 二、添加主机分配上行链路,选择未使用的物理适配器,建议每台分配两个冗余的物理网卡管理VMkernel适配器,这里先不迁移迁移虚拟机网络,这也先不迁移,点完成即可; 三,迁移标准交换机端口组到分布式交换......
  • 【Web IDE】code-server搭建记录
    起因最近因为越来越多极其繁琐的专业课,而我的游戏本我实在是背不动了。。。所以想在云端为iPad搭建一个开发环境,一个是解放一下自己的书包,一个是让自己的服务器发挥点作用。。环境TencentCloudUbuntu20.04LTS1H2G+1M搭建安装docker一类的就不再赘述了,完成上述步骤后,直接安装cod......
  • 【Python自学】环境搭建
    一、pycharm安装二、python安装打开http://www.python.org(这个是python官网)下载配置环境。点击上方downloads下载对应版本安装后通过【win+r】调出【运行】弹窗,输入“cmd”之后打开【命令提示符】,输入python只要出现“>>>”证明你安装成功了。当你看到“>>>”的时候......
  • 搭建博客须知
    title:搭建个人博客须知date:2022-08-2313:03:02top:1该Hexo博客所需的配置文件已经下好了,但是还需要配置Node.js和Git环境以及Hexo框架,基础的博客功能能够正常使用,比如创建的文章上传到服务器上,能够正常显示图片,但是显示图片的功能需要自己开启。图片显示的打开方法,打开......
  • 2023-06-07 搭建后端开发环境(新手篇)
    本文主要使用wampserver来搭建后端windows开发环境。wamp下载地址:https://sourceforge.net/projects/wampserver/files/WampServer%203/WampServer%203.0.0/注意:该wamp版本需要使用win7以上机器开发。我现在下载的是3.3.0版本的wamp,下载完后无脑next就行了,他会直接帮你装好一下......
  • RabbitMQ 集群环境搭建
    1.使用集群的原因最开始我们介绍了如何安装及运行RabbitMQ服务,不过这些是单机版的,无法满足目前真实应用的要求。如果RabbitMQ服务器遇到内存崩溃、机器掉电或者主板故障等情况,该怎么办?单台RabbitMQ服务器可以满足每秒1000条消息的吞吐量,那么如......
  • Redis哨兵模式搭建
    ##一:哨兵主要作用监控:监控redis主库及从库运行状态;通知:如果redis发生故障转移,可以通过邮件通知管理员;自动故障转移:一旦发现主库宕机,则在从库中通过选举新的master进行故障转移。##二:工作原理哨兵(sentinel)是一个分布式系统,你可以在一个架构中运行多个哨兵(sentinel)进程,......
  • 几种分布式文件系统的优缺点归纳与总结
    1、常用的分布式文件系统有以下几种:1.HadoopHDFS:HadoopDistributedFileSystem(HDFS)是ApacheHadoop生态系统的一部分,用于存储和处理大数据。2.Ceph:Ceph是一个开源的分布式存储系统,提供了高可用性、高性能和可扩展性。3.GlusterFS:GlusterFS是一个开源的分布式文件系统,提供......
  • Python | VSCode的Python编程环境搭建
    1、简介VScode是一款轻量化的代码编辑器,也是目前极为流行的适配性极强的写代码的工具,不仅仅可以用于C/C++代码项目的编写,还能够用于Python、java等其他语言。2、内容a、先下载安装Python的解释器b、安装VSCodec、安装Python相关的插件d、即可运行编译Python代码附:完整教程步骤......