基于云服务器配置Hadoop集群

1.实验描述

基于阿里云服务器端,进行 centos 的基础配置以及 hadoop 集群的搭建

2.实验环境

3 台阿里云服务器配置为:2 核 (vCPU) 8 GiB、操作系统为:CentOS 7.9 64 位
WinSCP(用于数据传输)、workbench(用于操作 Linux 系统)

3.实验过程

3.1实验准备

3.1.1 配置云服务器

进入阿里云官网,进入配置选择页面 ,并进行配置选择:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RAn4Z3B0-1678248548010)(D:\大数据工具箱\工具箱1\39李德铭\39李德铭Latex排版\figures\镜像.png)]

准备三台,配置相同即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CphghdOu-1678248548012)(D:\大数据工具箱\工具箱1\39李德铭\39李德铭Latex排版\figures\云服务器.jpg)]

3.1.1 下载 hadoop 压缩包

下载hadoop-2.7.3.tar.gz https://archive.apache.org/dist/hadoop/core/hadoop-2.7.3

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dWEeoKNX-1678248548013)(D:\大数据工具箱\工具箱1\39李德铭\39李德铭Latex排版\figures\hadoop下载.png)]

3.1实验过程

3.2.1 连接服务器
使用阿里云自带的 workbench 分别远程连接服务器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k0Z57Urn-1678248548014)(D:\大数据工具箱\工具箱1\39李德铭\39李德铭Latex排版\figures\远程连接.png)]

进入到如图所示页面即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QqUCCeOX-1678248548015)(D:\大数据工具箱\工具箱1\39李德铭\39李德铭Latex排版\figures\workbench页面.png)]

3.2.1 更改主机名
为了方便进行 hadoop 集群的规划,先将 3 台服务器分为一台主节点,两台副节点。
由于系统为 CentOS 7,可以直接在主节点下

vim / etc /hostname

将该节点名称改为 master,如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-awTBRwkH-1678248548015)(D:\大数据工具箱\工具箱1\39李德铭\39李德铭Latex排版\figures\master.png)]

同理,两个副节点的主机名分别设置为 slave1,slave2

利用 hostname 查看主机名是否更改成功

hostname

3.2.3 设置本地域名

设置本地域名这一步非常关键,ip 的本地域名信息配置不好,即有可能造成 Hadoop

启动出现问题,又有可能造成在使用 Hadoop 的 MapReduce 进行计算时报错。

修改/etc/hosts 文件,主节点需要修改,slave1、slave2 节点也需要修改

这里我是将私网与公网的 ip 都写进去了,方便后面在 web 上查看 hadoop 进程

分别在 master、slave1、slave2 节点上进行如下相同配置:

vim / etc / hosts

保留 localhost,并在下方分别写上 mater、slave1、slave2 的公、私网 ip 地址

如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fi9FOzzB-1678248548016)(D:\大数据工具箱\工具箱1\39李德铭\39李德铭Latex排版\figures\改域名.png)]

配置好后需要在各个节点上执行如下命令,测试是否相互 ping 得通, 如果 ping 不

通,后面就无法顺利配置成功

ping master −c 3
ping slave1 −c 3
ping slave2 −c 3

成功即如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-47tWR0BU-1678248548017)(D:\大数据工具箱\工具箱1\39李德铭\39李德铭Latex排版\figures\ping.png)]

3.2.3 设置本地域名

首先,分别在 master、slave1、slave2 上生成密钥(都要输入,连按 3 次 ENTER 即

可):

ssh−keygen −t rsa

然后在 master 节点上进行(若出现 yes/no,则输入 yes 即可):

ssh−copy−id slave1
ssh−copy−id slave2

在 slave1、slave2 节点上分别执行

#slave1
ssh−copy−id master
ssh−copy−id slave2

#slave2
ssh−copy−id master
ssh−copy−id slave1

完成后,分别在三个节点上尝试无密码登入:

ssh master
ssh slave1
ssh slave2

若进入时无需输入密码,则免密码登陆配置成功,如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tyTGdxea-1678248548018)(D:\大数据工具箱\工具箱1\39李德铭\39李德铭Latex排版\figures\免密码登录.png)]

3.2.5 配置JDK(该环节三个节点都需要进行相同的配置

直接 yum 安装 1.8.0 版本 openjdk

yum install java−1.8.0−openjdk*−y

查看版本

java −version

若出现版本号,则安装 java-1.8.0 成功,如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vu4ZhsI4-1678248548018)(D:\大数据工具箱\工具箱1\39李德铭\39李德铭Latex排版\figures\java版本.png)]

在使用 jdk 之前,还需要配置 jdk 环境变量,否则后面配置 hadoop 时会出现问题

使用命令查看 java 的安装位置

ls −l / etc / alternatives / java

如我的安装目录为:

/ usr / lib /jvm/java−1.8.0−openjdk −1.8.0.352. b08−2.el7_9.x86_64/jre / bin/ java

配置 java 的环境变量

vim / etc / profile
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar

export PATH=$PATH:$JAVA_HOME/bin

将以上三条路径插入到文本,如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C1q01TQO-1678248548019)(D:\大数据工具箱\工具箱1\39李德铭\39李德铭Latex排版\figures\java环境变量.png)]

添加后保存,并重新加载文件

source / etc / profile

slave1、slave2 节点也执行以上操作

3.2.6 hadoop集群配置

移动到 master 节点的根目录

cd ~

打开 WinSCP,连接 master 节点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mGGzIchF-1678248548020)(D:\大数据工具箱\工具箱1\39李德铭\39李德铭Latex排版\figures\WinSCP1.png)]

  • (主机名:master 节点的公网 ip 、用户名:root 、文件协议:SCP)即可连接

连接后把之前下载的 hadoop-2.7.3.tar.gz 文件,上传到云服务器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lfz5aUHq-1678248548020)(D:\大数据工具箱\工具箱1\39李德铭\39李德铭Latex排版\figures\WinSCP2.png)]

接下来对 master 节点进行如下操作

tar -zxvf hadoop-2.7.3.tar.gz -C /usr/local # 解压到/usr/local中
cd /usr/local/
mv ./hadoop-2.7.3/ ./hadoop # 将文件夹名改为hadoop

输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:

cd /usr/local/hadoop
./bin/hadoop version

如图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9RajoPGH-1678248548021)(D:\大数据工具箱\工具箱1\39李德铭\39李德铭Latex排版\figures\hadoop版本.png)]

添加 HADOOP_HOME 到系统环境变量

vim /etc/profile

在文件后面添加

export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r7PptlxA-1678248548021)(D:\大数据工具箱\工具箱1\39李德铭\39李德铭Latex排版\figures\hadoop环境变量.png)]

重新加载环境,并输出变量 HADOOP_HOME 验证

source /etc/profile
echo $HADOOP_HOME #验证

若输出值为(/usr/lcoal/hadoop)则配置成功

3.2.7 修改 hadoop 的配置文件

进入/usr/local/hadoop/etc/hadoop/可以看到如下配置文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-grVg5CwX-1678248548022)(D:\大数据工具箱\工具箱1\39李德铭\39李德铭Latex排版\figures\hadoop文件夹.png)]

(1)配置hadoop-env.sh

进入文件页面

vim hadoop-env.sh

文件头部中加入

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64

(2)配置slave

进入文件页面

vim slaves

删去原有的 localhost,将 slave1、slave2 添加进去,如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n1psfnHE-1678248548022)(D:\大数据工具箱\工具箱1\39李德铭\39李德铭Latex排版\figures\配置slaves.png)]

(3)配置core-site.xml

进入文件页面

vim core-site.xml

添加如下内容,在标签内添加

<property>
          <name>fs.defaultFS</name>
          <value>hdfs://master:9000</value>
          <description>The name of the default file system.</description>
      </property>
      <property>
          <name>hadoop.tmp.dir</name>
          <value>/usr/local/hadoop/tmp</value>
          <description>Abase for other temporary directories.</description>
  </property>

(4)配置hdfs-site.xml

进入文件页面

vim hdfs-site.xml

添加以下内容

  <property>
          <name>dfs.namenode.name.dir</name>
          <value>/usr/local/hadoop/tmp/dfs/name</value>
      </property>

      <property>
          <name>dfs.datanode.data.dir</name>
          <value>/usr/local/hadoop/tmp/dfs/data</value>
      </property>

      <property>
          <name>dfs.replication</name>
          <value>1</value>
      </property>


      <property>
          <name>dfs.permissions.enabled</name>
          <value>false</value>
          <description>If "true", enable permission checking in HDFS. If "false", permission checking is turned off, but all other behavior is unchanged. Switching from one parameter value to the other does not change the mode, owner or group of files or directories.</description>
      </property>
 <property>
                     <name>dfs.namenode.http.address</name>
                     <value>master:50070</value>
            </property>

(5)配置mapred-site.xml

先将 mapred-site.xml.template 改名为 mapred-site.xml

  mv mapred-site.xml.template mapred-site.xml
  vim mapred-site.xml #打开文件夹

添加以下内容

<property>
        <name>mapreduce.framework.name</name>
         <value>yarn</value>
         <description>The runtime framework for executing MapReduce jobs.Can be one of local, classic or yarn.</description>
     </property>
     <property>
         <name>mapreduce.jobtracker.http.address</name>
         <value>master:50030</value>
     </property>
     <property>
         <name>mapreduce.jobhisotry.address</name>
         <value>master:10020</value>
     </property>
     <property>
        <name>mapreduce.jobhistory.webapp.address</name>
         <value>master:19888</value>
     </property>
     <property>
         <name>mapreduce.jobhistory.done-dir</name>
         <value>/jobhistory/done</value>
     </property>
     <property>
         <name>mapreduce.jobhistory.intermediate-done-dir</name>
         <value>/jobhisotry/done_intermediate</value>
     </property>
     <property>
         <name>mapreduce.job.ubertask.enable</name>
         <value>true</value>
         <description>Whether to enable the small-jobs "ubertask" optimization,which runs "sufficiently small" jobs sequentially within a single JVM."Small" is defined by the following maxmaps, maxreduces, and maxbytes settings. Note that configurations for application masters also affect the "Small" definition - yarn.app.mapreduce.am.resource.mb must be larger than both mapreduce.map.memory.mb and mapreduce.reduce.memory.mb, and yarn.app.mapreduce.am.resource.cpu-vcores must be larger than both mapreduce.map.cpu.vcores and mapreduce.reduce.cpu.vcores to enable ubertask. Users may override this value.</description>
     </property>

(6)配置yarn-site.xml

打开文件夹

vim yarn-site.xml

添加以下内容

  <property>
          <name>yarn.resourcemanager.hostname</name>
           <value>master</value>
   </property>

  <property>
          <name>yarn.nodemanager.aux-services</name>
          <value>mapreduce_shuffle</value>
         <description>A comma separated list of services where service name should only contain a-zA-Z0-9_ and can not start with numbers</description>
     </property>

  <property>
          <name>yarn.resourcemanager.address</name>
          <value>master:18040</value>
      </property>



  <property>
          <name>yarn.resourcemanager.scheduler.address</name>
          <value>master:18030</value>
        </property>


  <property>
          <name>yarn.resourcemanager.resource-tracker.address</name>
          <value>master:18025</value>
      </property>


  <property>
          <name>yarn.resourcemanager.admin.address</name>
          <value>master:18141</value>
      </property>


  <property>
          <name>yarn.resourcemanager.webapp.address</name>
          <value>master:18088</value>
      </property>


  <property>
          <name>yarn.log-aggregation-enable</name>
          <value>true</value>
      </property>


  <property>
          <name>yarn.log-aggregation.retain-seconds</name>
          <value>86400</value>
      </property>


  <property>
          <name>yarn.log-aggregation.retain-check-interval-seconds</name>
          <value>86400</value>
      </property>


  <property>
          <name>yarn.nodemanager.remote-app-log-dir</name>
          <value>/tmp/logs</value>
      </property>

  <property>
          <name>yarn.nodemanager.remote-app-log-dir-suffix</name>
          <value>logs</value>
      </property>

到这里 master 就已经配置好了

(7)将服务器的配置分配

下面将该服务器的配置分发到 slave1、slave2 上去(建议压缩后再分发),在此使用压缩后分发的方法,不要再从slave节点上下载hadoop了

在 master 节点上执行

  cd /usr/local
  tar -zcvf ~/hadoop.master.tar.gz ./hadoop   
  cd ~
  scp ./hadoop.master.tar.gz slave1:/root/
  scp /etc/profile slave1:/etc/
  scp ./hadoop.master.tar.gz slave2:/root/
  scp /etc/profile slave2:/etc/  

在 slave1、2 节点上执行

tar -zxvf ~/hadoop.master.tar.gz -C /usr/local

在 slave1、2 上重新加载环境并检查验证

source /etc/profile
echo $HADOOP_HOME

HDFS NameNode 格式化(只要在 master 上执行即可)

$HADOOP_HOME/bin/hdfs namenode -format

看到下面的输出,表明hdfs格式化成功

INFO common.Storage: Storage directory /usr/local/hadoop/tmp/dfs/name has been successfully formatted.

启动前检查防火墙状态

systemctl status firewalld  #查看防火墙状态
systemctl disable firewalld #永久关闭防火墙

需要将防火墙关闭

4.启动hadoop

在master上执行

start-dfs.sh #启动dfs
start-yarn.sh #启动yarn
mr-jobhistory-daemon.sh start historyserver #启动历史进程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EugePsui-1678248548023)(D:\大数据工具箱\工具箱1\39李德铭\39李德铭Latex排版\figures\hadoop启动.png)]

hadoop 启动成功后分别在三个节点查看 jps

jps

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G7vYoUUy-1678248548024)(D:\大数据工具箱\工具箱1\39李德铭\39李德铭Latex排版\figures\masterjps.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-inTI3zq1-1678248548024)(D:\大数据工具箱\工具箱1\39李德铭\39李德铭Latex排版\figures\slave2jps.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nZrqgTo3-1678248548025)(D:\大数据工具箱\工具箱1\39李德铭\39李德铭Latex排版\figures\slave1jps.png)]

若如上图所示,则启动成功

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值