Hadoop集群搭建(三)_Hadoop集群搭建

本系列共三篇文章分别为 

Hadoop集群搭建(一)_Linux虚拟机环境安装 

Hadoop集群搭建(二)_Linux虚拟机环境配置

Hadoop集群搭建(三)_Hadoop集群搭建

集群整体配置如下: 

 

Hadoop101

Hadoop102

Hadoop103

HDFS

 

NameNode

DataNode

DataNode

SecondaryNameNode

DataNode

YARN

NodeManager

ResourceManager

NodeManager

NodeManager

这里以hadoop100 hadoop101 hadoop102为例

ResourceManager NameNode  SecondaryNameNode都比较废资源,所以不要配在一台电脑上

注意:NameNode和SecondaryNameNode不要安装在同一台服务器

注意:ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。

 

1.服务器配置

    1>修改主机名

(1)修改主机名称

sudo vim /etc/hostname

(2)配置主机名称映射,打开/etc/hosts

sudo vim /etc/hosts

添加如下内容

192.168.1.100 hadoop100

192.168.1.101 hadoop101

192.168.1.102 hadoop102

 

 

2>在/opt目录下创建文件夹

(1)在/opt目录下创建module(放安装好的程序)、software(放安装包)文件夹

sudo mkdir module

sudo mkdir software

(2)修改module、software文件夹的所有者

sudo mkdir /opt/module /opt/software

sudo chown jlu:jlu /opt/module /opt/software

 

在hadoop100下进行如下操作,配置完一台环境后直接把配好的东西分发到其他机子上

 

 2 安装JDK

  1. 将JDK安装包上传到Linux /opt/software目录下
  2. 解压JDK到/opt/module目录下

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

  1. 配置JDK环境变量,两种方式:

(1)新建/etc/profile.d/my_env.sh文件

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

添加如下内容

#JAVA_HOME

export JAVA_HOME=/opt/module/jdk1.8.0_212

export PATH=$PATH:$JAVA_HOME/bin

(2)保存退出,然后执行如下命令

source /etc/profile

  1. 测试JDK是否安装成功

java -version

如果能看到以下结果、则Java正常安装

java version "1.8.0_212"

  注意:重启(如果java -version可以用就不用重启)

sudo reboot

 

3.安装Hadoop

Hadoop下载地址:https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/

  1. 将hadoop安装包上传到/opt/software目录下 
  2. 解压安装文件到/opt/module下面

[jlu@hadoop101 software]$ tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/

  1. 查看是否解压成功

[jlu@hadoop101 software]$ ls /opt/module/

hadoop-3.1.3

  1. 将Hadoop添加到环境变量

(1)获取Hadoop安装路径

[jlu@hadoop101 hadoop-3.1.3]$

pwd /opt/module/hadoop-3.1.3

(2)打开/etc/profile.d/my_env.sh文件

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

 

my_env.sh文件修改为:

#JAVA_HOME

JAVA_HOME=/opt/module/jdk1.8.0_212

#HADOOP_HOME

HADOOP_HOME=/opt/module/hadoop-3.1.3

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

export PATH JAVA_HOME HADOOP_HOME

(3)保存后退出

:wq

(4)让修改后的文件生效

[jlu@ hadoop101 hadoop-3.1.3]$ source /etc/profile.d/my_env.sh

  1. 测试是否安装成功

[jlu@hadoop101 hadoop-3.1.3]$ hadoop version

Hadoop 3.1.3

  1. 并重启(如果Hadoop命令不能用再重启) 

[jlu@ hadoop101 hadoop-3.1.3]$ sudo reboot

   

4 SSH无密登录配置

1>生成公钥和私钥:

ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

2>将公钥拷贝到要免密登录的目标机器上

ssh-copy-id hadoop102

ssh-copy-id hadoop103

ssh-copy-id hadoop104

注意

还需要在hadoop102,had oop103采用jlu账号配置一下无密登录到hadoop101hadoop102、hadoop103服务器上。

如果还想实现root用户的免密登录,需要如下操作:

还需要在hadoop101采用root账号,配置一下无密登录到hadoop102hadoop103hadoop101

 

 

5 脚本

     1>编写集群分发脚本xsync  

(a)在/home/jlu目录下创建bin目录,并在bin目录下创建xsync文件

[jlu@hadoop101 hadoop] cd /home/atguigu

[jlu@hadoop101 ~] mkdir  bin

[jlu@hadoop101 bin] touch xsync

[jlu@hadoop101 bin] vim xsync

在该文件中编写如下代码

#!/bin/bash

#1. 判断参数个数

if [ $# -lt 1 ]

then

  echo Not Enough Arguement!

  exit;

fi

#2. 遍历集群所有机器

for host in hadoop101 hadoop102 hadoop103

do

  echo ====================  $host  ====================

  #3. 遍历所有目录,挨个发送

  for file in $@

  do

    #4 判断文件是否存在

    if [ -e $file ]

    then

      #5. 获取父目录

      pdir=$(cd -P $(dirname $file); pwd)

     //cd -p防止软链接

      #6. 获取当前文件的名称

      fname=$(basename $file)

      ssh $host "mkdir -p $pdir"

      rsync -av $pdir/$fname $host:$pdir

//host前指定为哪个用户可以省略,所以这里没写

    else

      echo $file does not exists!

    fi

  done

done

(b)修改脚本 xsync 具有执行权限

chmod +x xsync

(d)测试脚本

sudo xsync /bin/xsync

 

     
6 集群配置

(1)核心配置文件

配置core-site.xml

cd $HADOOP_HOME/etc/hadoop

vim core-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

 

<configuration>

<!--指定NameNode的地址 -->

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://hadoop101:8020</value>

</property>

 

<!--hadoop数据的存储目录-->

    <property>

        <name>hadoop.data.dir</name>

        <value>/opt/module/hadoop-3.1.3/data</value>

</property>

 

<!--兼容性配置,用于兼容后续的框架使用-->

<!--配置该jlu(superUser)允许通过代理访问的主机节点-->

    <property>

        <name>hadoop.proxyuser.atguigu.hosts</name>

        <value>*</value>

</property>

 

<!--配置该jlu(superUser)允许代理的用户所属组-->

    <property>

        <name>hadoop.proxyuser.jlu.groups</name>

        <value>*</value>

    </property>

</configuration>

(2)HDFS配置文件

配置hdfs-site.xml

vim hdfs-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

 

 

<configuration>

<!--NameNode数据的存储目录 这个路径在core里配置过 所以直接拿来用-->

 <property>

    <name>dfs.namenode.name.dir</name>

    <value>file://${hadoop.data.dir}/name</value>

  </property>

<!--DataNode 数据的存储目录-->

  <property>

    <name>dfs.datanode.data.dir</name>

    <value>file://${hadoop.data.dir}/data</value>

  </property>

<!--2nn数据的存储目录-->

    <property>

    <name>dfs.namenode.checkpoint.dir</name>

    <value>file://${hadoop.data.dir}/namesecondary</value>

  </property>

<!-- 兼容性配置-->

    <property>

    <name>dfs.client.datanode-restart.timeout</name>

    <value>30</value>

  </property>

<!--nn web端访问地址-->

<property>

    <name>dfs.namenode.http-address</name>

    <value>hadoop101:9870</value>

  </property>

<!-- 2nn web端访问地址-->

  <property>

    <name>dfs.namenode.secondary.http-address</name>

    <value>hadoop103:9868</value>

  </property>

</configuration>

(3)YARN配置文件

配置yarn-site.xml

vim yarn-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

 

<configuration>

<!-- Site specific YARN configuration properties -->

<!-- Reducer获取数据的方式 指定MapReduce走shuffle -->

<property>

                <name>yarn.nodemanager.aux-services</name>

                <value>mapreduce_shuffle</value>

</property>

 

<!--指定resourceManager的地址 相当于指定Yarn所在的主机-->

<property>

        <name>yarn.resourcemanager.hostname</name>

        <value>hadoop102</value>

    </property>

    <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>

 <!--日志功能打开-->

<property>

        <name>yarn.log-aggregation-enable</name>

        <value>true</value>

</property>

 

<!--设置日志的目录-->

    <property>  

        <name>yarn.log.server.url</name>  

        <value>http://hadoop101:19888/jobhistory/logs</value>  

    </property>

    <!-- 设置日志保存时间-->

<property>

        <name>yarn.log-aggregation.retain-seconds</name>

        <value>604800</value>

</property>

 <!--不检查虚拟内存-->

<property>

        <name>yarn.nodemanager.vmem-check-enabled</name>

        <value>false</value>

</property>

</configuration>

 

 

 

(4)MapReduce配置文件

配置mapred-site.xml

vim mapred-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

 

<configuration>

<!-- 指定MR运行在YARN上 -->

  <property>

    <name>mapreduce.framework.name</name>

    <value>yarn</value>

  </property>

<!-- 历史服务器端地址 -->

<property>

    <name>mapreduce.jobhistory.address</name>

    <value>hadoop101:10020</value>

</property>

 

<!-- 历史服务器web端地址 -->

<property>

    <name>mapreduce.jobhistory.webapp.address</name>

    <value>hadoop101:19888</value>

</property>

 

</configuration>

 

 

  (5) 在hadoop101向102 103 分发配置好的环境

  xsync  /etc/profile.d/my_env.sh

  xsync  /opt/module

  xsync  /opt/software

 

7 集群启动

1>.测试集群是否搭建成功

 (1)NN配置在101上,在101上格式化NN

hdfs namenode -format

 

(2)在hadoop101上启动NameNode

hdfs --daemon start namenode

完成后执行jps命令,看到如下结果(进程号可能不同):

3461 NameNode

(3)在hadoop102、hadoop103上执行如下命令

hdfs --daemon start datanode

 

  1. 群起集群

1. 配置workers(里面存储了现在有哪些节点的名称)

vim /opt/module/hadoop-3.1.3/etc/hadoop/workers

在该文件中增加如下内容:

hadoop101

hadoop102

hadoop103

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

同步所有节点配置文件

xsync  workers

 

start-dfs.sh/stop-dfs.sh  

(2)整体启动/停止YARN

start-yarn.sh/stop-yarn.sh

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值